Я получаю сброс сторожевого таймера в NodeMCU. Как навсегда отключить или остановить это?
Я использую NodeMCU для своего проекта. Сначала он работает нормально, но через несколько дней он часто сбрасывается из-за таймера сторожевого пса. Я также использовал метод Esp.wdtfeed ()
. Но это не работает. Не могли бы вы, пожалуйста, сказать мне, в чем именно проблема или какое-либо решение? Вот мой код:
void setup(void) {
ESP.wdtDisable();
ESP.wdtEnable(WDTO_8S);
Serial.begin(9600);
int n = WiFi.scanNetworks();
Serial.println("");
if (n == 0)
Serial.println("no networks found");
else {
for(int i=0;i<n;i++) {
if(WiFi.SSID(i)==ssid1) {
WiFi.begin(ssid1,password1);
ssid=ssid1;
} else if(WiFi.SSID(i)==ssid2) {
WiFi.begin(ssid2,password2);
ssid=ssid2;
} else if(WiFi.SSID(i)==ssid3) {
WiFi.begin(ssid3,password3);
ssid=ssid3;
}
}
}
display.init();
display.flipScreenVertically();
display.setFont(ArialMT_Plain_16);
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.drawStringMaxWidth(15,15, 128,"Display started");
display.display();
// Wait for connection
display.clear();
int j=0;
while(j<10) {
display.drawStringMaxWidth(15,15, 128,"connected to");
display.drawStringMaxWidth(15,32, 128,ssid);
display.display();
display.clear();
delay(1000);
j++;
}
display.drawStringMaxWidth(15,32, 128,"");
display.display();
Serial.print("Connected to ");
display.clear();
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
if (mdns.begin("esp8266WebForm", WiFi.localIP())) {
Serial.println("MDNS responder started");
}
server.onNotFound(handleNotFound);
server.begin();
Serial.print("Connect to http://esp8266WebForm.local or http://");
Serial.println(WiFi.localIP());
server.on("/", getvalues);
pinMode(buzzPin,OUTPUT);
pinMode(but,INPUT);
}
void loop(void) {
ESP.wdtFeed();
if((WiFi.status()== WL_DISCONNECTED)||(WiFi.status()==WL_CONNECTION_LOST)) {
display.drawStringMaxWidth(15,15, 128,"disconnected");
display.display();
int n = WiFi.scanNetworks();
Serial.println("");
if (n == 0)
Serial.println("no networks found");
else {
for(int i=0;i<n;i++) {
if(WiFi.SSID(i)==ssid1) {
WiFi.begin(ssid1,password1);
ssid=ssid1;
} else if(WiFi.SSID(i)==ssid2) {
WiFi.begin(ssid2,password2);
ssid=ssid2;
} else if(WiFi.SSID(i)==ssid3) {
WiFi.begin(ssid3,password3);
ssid=ssid3;
}
}
int j=0;
display.clear();
while(j<10) {
display.drawStringMaxWidth(15,15, 128,"connected to");
display.drawStringMaxWidth(15,32, 128,ssid);
display.display();
display.clear();
delay(1000);
j++;
}
display.clear();
display.drawStringMaxWidth(15,32, 128,"");
display.display();
}
}
getvalues();
delay(20000);
}
@rahul bommaraju, 👍0
Обсуждение2 ответа
вот мой способ сначала найти ошибку 1.прокомментируйте сторожевого пса из кода. 2.отладьте поток кода и найдите, что он поражен. Отладка в том смысле, что поместите "Serial.print()" между вашим кодом, где вы чувствуете себя застрявшим, но здесь не отключайте своего сторожевого пса.
Спустя долгое время я увидел этот вопрос и подумал о том, чтобы ответить, так как я обнаружил проблему в то время, но не опубликовал ее здесь.
После долгой отладки я узнал, что есть строка, которую я инициализирую данными, полученными с сайта, который был переполнен за пределами памяти NodeMCU. из-за чего он выдал исключение сторожевого пса, поэтому, пожалуйста, правильно управляйте памятью, так как NodeMCU не может выполнять обработку данных и все такое.
- ESP8266 не подключается к Wi-Fi
- WebSocketsServer.h: No such file or directory
- Каково использование зарезервированных контактов и контактов SDD2, SDD3 NodeMCU?
- Как получить текущий уровень сигнала WiFi?
- Обнаружение ESP8266 в сети
- NodeMCU продолжает отключаться
- Соединение сетей Wi-Fi на nodemcu: как настроить esp8266 в качестве расширителя Wi-Fi, простейший случай
- Как добиться быстрой и надежной связи между NodeMCU?
Скорее всего, вы получите некоторые комментарии по плечевой кости (например, работаете ли вы в определенной автомобильной компании). Серьезно, похоже, что сторожевой пес обнаружил проблему с вашим кодом или оборудованием. Вместо того, чтобы побеждать сторожевую собаку, большинство людей здесь предложат вам найти причину (почему ваш код не смог "пнуть собаку")., @st2000
Не могли бы вы опубликовать вывод об ошибке с консоли?, @MatsK