Здравствуйте, почти закончил свой проект.
Вот под конец возникла такая проблема.
Как известно для того чтобы перевести контроллер в режим загрузки прошивки нужно замкнуть GPIO0 на землю кратковременно.
У меня в проекте нужно будет мигать светодиодом, точнее даже не мигать, а постоянно держать его включенным (диод, оптореле ...).
Собственно что я заметил и это вполне логично.
Так как при прямом падении напряжения на светодиоде достаточно маленькое сопротивление, то при включении светодиода который висит на GPIO0 контроллер переходит в режим бутлоадера
Вот лог
Видно что после включения светодиода контроллер перешел в режим boot mode.
Резистор для светодиода использую 1.2кОм.
НО несмотря на это контроллер продолжает функционировать в нормально режиме, отвечает на команды.
Вот мой код инициализации GPIO
Собственно вопроса всего два.
1. Как сделать чтобы контроллер не переходил в режим бута ?
2. И еще очень важный вопрос, правильно ли я работаю с GPIO, потому что делал по примеру, вроде работает, но есть проблема, при управлении GPIO он произвольно мигать начинает во время установки или выключения, а потом уже нормально становится , поэтому где-то накосячил
Спасибо
Вот под конец возникла такая проблема.
Как известно для того чтобы перевести контроллер в режим загрузки прошивки нужно замкнуть 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
Резистор для светодиода использую 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 он произвольно мигать начинает во время установки или выключения, а потом уже нормально становится , поэтому где-то накосячил
Спасибо
Последнее редактирование: