• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

GPIO светодиод, маленькое сопротивление bootloader mode

CROSP

New member
Здравствуйте, почти закончил свой проект.
Вот под конец возникла такая проблема.
Как известно для того чтобы перевести контроллер в режим загрузки прошивки нужно замкнуть GPIO0 на землю кратковременно.
У меня в проекте нужно будет мигать светодиодом, точнее даже не мигать, а постоянно держать его включенным (диод, оптореле ...).
Собственно что я заметил и это вполне логично.
Так как при прямом падении напряжения на светодиоде достаточно маленькое сопротивление, то при включении светодиода который висит на GPIO0 контроллер переходит в режим бутлоадера
Вот лог

Код:
TCP: data received 76 bytes
MQTT: Received data on topic: /wh/home/hallway/communication/intercom
TYPE IS : command
Got COMMAND
NEXT IS PAIR VALUE
VALUE IS : on
OPEN INTERCOM
ets Jan 8 2013,rst cause:2, boot mode:(3,7)
load 0x40100000, len 29356, room 16
Видно что после включения светодиода контроллер перешел в режим boot mode.
Резистор для светодиода использую 1.2кОм.
НО несмотря на это контроллер продолжает функционировать в нормально режиме, отвечает на команды.

Вот мой код инициализации GPIO

Код:
#define REED_GPIO 2
#define REED_GPIO_MUX PERIPHS_IO_MUX_GPIO2_U
#define REED_GPIO_FUNC FUNC_GPIO2

#define BUTTON_GPIO 0
#define BUTTON_GPIO_MUX PERIPHS_IO_MUX_GPIO0_U
#define BUTTON_GPIO_FUNC FUNC_GPIO0

void ICACHE_FLASH_ATTR
gpio_init() {
    // Configure reed (relay)
    PIN_FUNC_SELECT(REED_GPIO_MUX, REED_GPIO_FUNC);
    GPIO_OUTPUT_SET(REED_GPIO, 0);
    // Configure button
    PIN_FUNC_SELECT(BUTTON_GPIO_MUX, BUTTON_GPIO_FUNC);
    GPIO_OUTPUT_SET(BUTTON_GPIO, 0);
}

void ICACHE_FLASH_ATTR open_intercom() {
    GPIO_OUTPUT_SET(REED_GPIO, 0);
    os_delay_us(DELAY_CLICK);
    GPIO_OUTPUT_SET(BUTTON_GPIO, 1);
    os_delay_us(DELAY_CLICK*2);
    close_intercom();
}
void ICACHE_FLASH_ATTR close_intercom() {
    GPIO_OUTPUT_SET(REED_GPIO, 1);
    os_delay_us(DELAY_CLICK);
    GPIO_OUTPUT_SET(BUTTON_GPIO, 0);
    os_delay_us(DELAY_CLICK);
}
Собственно вопроса всего два.
1. Как сделать чтобы контроллер не переходил в режим бута ?
2. И еще очень важный вопрос, правильно ли я работаю с GPIO, потому что делал по примеру, вроде работает, но есть проблема, при управлении GPIO он произвольно мигать начинает во время установки или выключения, а потом уже нормально становится , поэтому где-то накосячил
Спасибо
 
Последнее редактирование:

CROSP

New member

Единственное что так подключить, может как-то можно на программном уровне это отключить на время ?
 
Сверху Снизу