ESP32, как сбросить контакты GPIO, используемые с PCNT, чтобы их также можно было использовать для выхода EXT1 из глубокого сна? - PullRequest
0 голосов
/ 23 января 2019

Я настраиваю 4 gpio pins в качестве счетчиков импульсов для считывания датчиков потока жидкости с эффектом Холла, что работает нормально, но когда я пытаюсь использовать те же самые контакты для пробуждения из глубокого сна, сон немедленно прекращается. Если я не настрою контакты для PCNT, глубокий сон будет работать как положено.

Я даже дошел до того, что установил флаг в памяти RTC, чтобы он спал в течение 5 секунд, просыпался и не настраивал PCNT, прежде чем пытаться вернуться в спящий режим. Он все еще просыпается сразу после второго сна, поэтому, что бы там ни было, эти булавки сохраняются в глубоком сне.

Есть ли способ восстановить состояние этих выводов по умолчанию без сброса всего устройства?

1 Ответ

0 голосов
/ 28 января 2019

Ответ таков: задайте для обоих элементов * _gpio_num pcnt_config_t значение PCNT_PIN_NOT_USED и снова вызовите pcnt_unit_config:

pcnt_config_t pcnt_config = {
    .pulse_gpio_num = PCNT_PIN_NOT_USED,
    .ctrl_gpio_num = PCNT_PIN_NOT_USED,
    .channel = PCNT_CHANNEL_0;
}
pcnt_unit_config(&pcnt_config);
...