ESP8266 restart after the second request to the server (Exception 9)

0

I am new to this community, and I look forward to your help with this issue. I have communication between two ESP8266 modules. One of these as a Server/Access-Point and the other as a Client. The configuration and connection between these two modules are satisfactory, and part of the communication as well. However, after the Client makes the first request (Begin and GET), and the server responds, for the second Client/Server request, the Client restarts with the next message or exception.

Exception (9):
epc1=0x40207204 epc2=0x00000000 epc3=0x00000000 excvaddr=0x0036006a depc=0x00000000

That is, the first request to the server's root is answered, but the second to /data causes the mentioned restart on the Client.

After reviewing the stack exception decoder, I find that the code (9) means 9: LoadStoreAlignmentCause Load or store to an unaligned address.

Then, I've tried different solutions for this issue

  • erase all flash content
  • http.end()
  • change the macro delay() for delayMicroseconds()
  • and a few more

But nothing works yet.

Please, help me with this issue. The codes of the server and Client are:

The client:

#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#define LED_PIN 2

const char* ssid     = "Mi_Servidor";
const char* password = "";
const char* host = "http://192.168.4.1";
int counter=1, httpCode=0;

HTTPClient http;

void peticion (int httpCode){
  String mensaje;
  if(httpCode == 200) {
    mensaje = http.getString();
    Serial.println(mensaje);
    } 
    else {
      Serial.print("[HTTP] GET... failed, no connection or no HTTP server\n");
    }
}

void setup() {
  pinMode(LED_PIN, OUTPUT);
  Serial.begin(115200);
  delay(10);
  Serial.print("Conectando a ");
  Serial.println(ssid);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
 
  Serial.println("WiFi conectada"); 
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  
}

void loop(){
  counter++;
  int modulo=counter%2;

  if(WiFi.status() != WL_CONNECTED){
    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
    }
  }
  else{
    Serial.print("[HTTP] begin...\n");
  
    if(modulo==0) http.begin("192.168.4.1", 80);   //HTTp   
    else http.begin("192.168.4.1", 80, "/data");   //HTTp
    
    httpCode = http.GET();
        
    Serial.print("httpCode: ");  //JJ
    Serial.println(httpCode);  //JJ
    
    peticion(httpCode);
    delay(20);     
    }
  Serial.println("End Loop!");
}

And the server:

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

#define LED_PIN 2

void handle_datos();

const char WiFiClave[] = "";  //Sin clave
const char AP_Nombre[] = "Mi_Servidor";
int val;
String MiMessage = "Message to transmit:\n\r";

ESP8266WebServer server(80);

void handle_data() {
  server.send(200, "text/plain", MiMessage);
  delay(1000);
  }

void handle_root() {
  server.send(200, "text/plain", "Mi_root");
  delay(1000);
  }

void setup() {
  pinMode(LED_PIN, OUTPUT);
  Serial.begin(115200);
  pinMode(LED_PIN, OUTPUT);
  digitalWrite(LED_PIN, LOW);
  WiFi.mode(WIFI_AP);
  WiFi.softAP(AP_Nombre, WiFiClave); 
  server.on("/data", handle_data); 
  server.on("/", handle_root); 
  server.begin();

//  for (int i = 0; i <= 3999; i++) {
//    MiMessage.concat(String(i));
//    MiMessage.concat(";");
//  }
  Serial.println();
  Serial.println(MiMessage); 

  Serial.println("\nServidor ready... ");
}

void loop() {
  server.handleClient();
  delay(100);
}

Thanks in advance

exception
server
client
esp8266
restart
asked on Stack Overflow Aug 11, 2020 by John Jairo Cabrera Lopez • edited Aug 17, 2020 by Dhruv Vanjari

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0