• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Состояние GPIO при старте

Belerafon

New member
К Gpio 0 подключена оптопара, т.к. подтяжку нельзя делать к земле(не стартанет) то я сделал к +. Все работает, но при старте там проскакивает 0 и оптопара срабатывает. Как можно этого избежать не перенося оптопару на другой gpio?
 

enjoynering

Well-known member
GPIO0,2 - могут быть входами/выходами с ограничениями. В момент старта оба должны быть подтянуты к питанию. Во время програмирования GPIO2 становится выходом U1TXD откуда "валятся" неотключаемые сообщения о загрузке, а в режиме "программирования" - ответы внешнему UART. Все стартовые сообщения ROM-BIOS выводятся в оба UART порта GPIO1/U0TXD (см. ниже) и GPIO2/U1TXD на скорости 74880bps и «NL & CR». Основная скорость UART0/UART1 115200bps, а на 74880bps отправляется отладочная информация. Также сразу после старта модуля в течении ~30msec на GPIO0 выводится сигнал CLK с частотой 26MHz, пока не стартанет инициализация в SDK (очистка RAM, ожидания установки PLL на кварц в 26 МГц, включение таймеров и вывод сообщений в UART уже из кода SDK). В режиме "программирования" на GPIO0 всегда 26MHz. Так что будте осторожны, особенно если вы вешаете на эти пины управление газом для котла и тд.
 

Kulibin

New member
Приветствую!
Дополню пост снятыми логами GPIO для визуального понимания происходящего.
При подаче питания и рестарте модуль ведёт себя немного по разному. Так же не понял с GPIO15 каждый раз он ведёт себя по разному.
Консолидированно:
GPIO3, GPIO4, GPIO5, GPIO12, GPIO13, GPIO14 - Не увидел движняка:
GPIO1, GPIO2 - Передача отладки UART
GPIO0 - Высокая частота.
GPIO16 - при подаче питания на чип лог. 0 на 15 мкс, при ресете не увидел.
GPIO15 - непонятно.
Снятие логов производилось на плате NodeMCU 1.0 ESP-12E подключение к ПК по USB.
Загружена пустая прошивка:
PLATFORM: Espressif 8266 (2.6.2) > NodeMCU 1.0 (ESP-12E Module)
HARDWARE: ESP8266 80MHz, 80KB RAM, 4MB Flash
PACKAGES:
- framework-arduinoespressif8266 3.20704.0 (2.7.4)
- tool-esptool 1.413.0 (4.13)
- tool-esptoolpy 1.20800.0 (2.8.0)
- tool-mklittlefs 1.203.200522 (2.3)
- tool-mkspiffs 1.200.0 (2.0)
- toolchain-xtensa 2.40802.200502 (4.8.2)
 

Вложения

pvvx

Активный участник сообщества
Дополню пост снятыми логами GPIO для визуального понимания происходящего.
Это не поможет, т.к. анализируете не все состояния и варианты загрузки.
Тип загрузки определяется путем защелкивания значений всех GPIO в момент фронта на выводе RESET и некоторых из них уже по ходу выполнения кода в ROM.
Защелкнутые значения вы можете посмотреть в 16 битах Strapping регистра GPIO...

Свободных от типов загрузки GPIO у ESP8266 всего 2: GPIO4 и GPIO5. Вот только их вы и можете использовать.

Для использования остальных вам придется учитывать множество условий, до таких как емкость нагрузки на выводе. Если вы выставили GPIO как выход, то при перезагрузке его значение не сразу вернется в нормально-необходимое - будет защелкнуто или принято кодом ROM как не тот тип загрузки...
 

pvvx

Активный участник сообщества
@Kulibin - Кроме Arduino ESP8266 работает и как ESP8089 и там совсем другие назначения выводов -> всё зависит от начального состояния пинов...
И ваш 'анализатор' не показывает как переключаются внутренние "подтяжки" на пинах при загрузке для анализа что и как...
 
Сверху Снизу