Partage
  • Partager sur Facebook
  • Partager sur Twitter

Plantage NodeMCU v3

    12 octobre 2021 à 12:15:47

    Bonjour,

    en voulant nettoyer l'EEPROM de mon nodemcu avec ce code

    #include <EEPROM.h>  
    
    void setup() {
      EEPROM.begin(512);
      // write a 0 to all 512 bytes of the EEPROM
      for (int i = 0; i < 512; i++) {
        EEPROM.write(i, 0);
      }
      EEPROM.end();
    }
    
    void loop() {
    }

    je pense avoir fait planté quelque chose, quand je téléverse un autre code sur la carte en tentant d'accéder à une donnée dans la mémoire,  j'ai le droit à ce message non stop dans la console, la cartte redémarrant à chaque fois

    --------------- CUT HERE FOR EXCEPTION DECODER ---------------
    
    Soft WDT reset
    
    >>>stack>>>
    
    ctx: cont
    sp: 3ffffc70 end: 3fffffc0 offset: 01a0
    3ffffe10:  00ffffff 0101a8c0 000005dc 40204187  
    3ffffe20:  32356a64 00000000 007e8000 4020888d  
    3ffffe30:  323541a7 00000080 3ffffee0 4020692a  
    3ffffe40:  00001198 000000b4 3ffef0d4 3fff0320  
    3ffffe50:  00000000 3ffeeaa8 3ffeeaa8 402061cc  
    3ffffe60:  402061c0 3ffeeaa8 3ffe861c 40206555  
    3ffffe70:  00000000 3ffeeaa8 3ffffec0 402065b1  
    3ffffe80:  3fff0355 3ffeeaa8 3ffffec0 4020163c  
    3ffffe90:  00000000 00000006 00000020 40100a53  
    3ffffea0:  00000000 00000006 3ffeea0c 4020d06c  
    3ffffeb0:  00000000 00000006 3ffeea0c 40203943  
    3ffffec0:  3ffeea3c 3ffffee0 0000012b 40205db6  
    3ffffed0:  00000000 00000006 3ffeea0c 40203b00  
    3ffffee0:  3fff0300 007f007f 802095b8 40003600  
    3ffffef0:  00001178 80000001 00000000 3fff0320  
    3fffff00:  80000005 3fff0000 3ffee928 80210867  
    3fffff10:  000036b5 3fff0354 82fee928 40200036  
    3fffff20:  3ffeea70 81000001 3ffe00b5 40205aef  
    3fffff30:  81feea70 4023ea67 3fff0320 40205b07  
    3fffff40:  3ffeea70 00000200 3ffefc7c 40203dce  
    3fffff50:  40203f1c 00ffffff 402095b8 402095a4  
    3fffff60:  402099d0 53455200 41445445 80004154  
    3fffff70:  40209b38 0101a8c0 feefeffe feefeffe  
    3fffff80:  3fff0320 00000000 feefeffe feefeffe  
    3fffff90:  feefeffe feefeffe feefeffe 3ffeebd8  
    3fffffa0:  3fffdad0 00000000 3ffeeb98 40207a7c  
    3fffffb0:  feefeffe feefeffe 3ffe84f8 40100d0d  
    <<<stack<<<
    

    impossible de trouver une solution pour régler le problème, j'ai tenté de flasher la carte mais sans résultat. Voilà le code que je tente d'utiliser :

    #include <ESP8266WiFi.h>
    #include <ESP8266WebServer.h>
    #include <Adafruit_NeoPixel.h>
    #include <EEPROM.h>
    
    #define EEPROM_SIZE 256
    #define EEPROM_DATA1_ID 0
    #define EEPROM_DATA2_ID 11
    
    #define PIN D3
    #define N_LEDS 20
    
    char ssid[] = "wifiSSID";
    char password[] = "password";
    String data1;
    String data2;
    
    IPAddress local_ip(192,168,1,1);
    IPAddress gateway(192,168,1,1);
    IPAddress subnet(255,255,255,0);
    
    Adafruit_NeoPixel pixels = Adafruit_NeoPixel(N_LEDS, PIN, NEO_GBR+NEO_KHZ800);
    ESP8266WebServer server(80);
    
    void setup() {
      // put your setup code here, to run once:
      EEPROM.begin(EEPROM_SIZE);
      Serial.begin(9600);
      pixels.begin();
    
      WiFi.softAP(ssid, password);
      WiFi.softAPConfig(local_ip, gateway, subnet);
    
      server.on("/", handle_OnConnect);
      
      server.begin();
    
      EEPROM.get(EEPROM_DATA1_ID, data1);
      EEPROM.get(EEPROM_DATA2_ID, data2);
    }

    Comment régler mon problème ?

    Merci d'avance pour votre aide ;)

    • Partager sur Facebook
    • Partager sur Twitter
      13 octobre 2021 à 16:09:07

      Bonjour,

      Ton code doit rendre la main régulièrement au firmware de l'ESP8266, en appelant delay(), yield() ou en laissant le processeur sortir de la fonction loop(), pour que l'ESP puisse gérer le WiFi. Si par exemple une boucle ou une fonction dure trop longtemps, un watchdog redémarre l'ESP, avec l'erreur que tu as indiqué 'Soft WDT reset".

      Le problème pourrait venir du contenu de la fonction loop(), que tu n'as pas incluse dans le code.

      Tu peux ajouter des traces série (par exemple avec Serial.println) entre tes lignes de code pour savoir où ça bloque.

      Il existe également un plugin pour l'IDE Arduino, qui permet de décoder les exceptions générées par l'ESP: https://github.com/me-no-dev/EspExceptionDecoder qui pourrait indiquer dans quelle fonction le code s'est arrêté.

      • Partager sur Facebook
      • Partager sur Twitter

      Plantage NodeMCU v3

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      • Editeur
      • Markdown