El monitor serial de Esp8266 no funciona

El problema es el siguiente; cuando intento utilizar el monitor serial con mi nodeMcu me sale este mensaje raro, independientemente del programa que le cargue.

--------------- CUT HERE FOR EXCEPTION DECODER ---------------

 ets Jan  8 2013,rst cause:2, boot mode:(3,4)

load 0x4010f000, len 3424, room 16 
tail 0
chksum 0x2e
load 0x3fff20b8, len 40, room 8 
tail 0
chksum 0x2b
csum 0x2b
v00042060
~ld
⸮a⸮n⸮r⸮⸮n|⸮l⸮l`bbrl⸮nb⸮nl`⸮rl⸮l⸮⸮ISR not in IRAM!

User exception (panic/abort/assert)
--------------- CUT HERE FOR EXCEPTION DECODER ---------------

Abort called

>>>stack>>>

ctx: cont
sp: 3fffff80 end: 3fffffd0 offset: 0010
3fffff90:  0001c200 0000001c 000000ff 402022d9  
3fffffa0:  3fffdad0 00000000 3ffee57c 40201087  
3fffffb0:  3fffdad0 00000000 3ffee57c 402019c8  
3fffffc0:  feefeffe feefeffe 3fffdab0 40100d95  
<<<stack<<<

--------------- CUT HERE FOR EXCEPTION DECODER ---------------

He trasladado su tema de una categoría de idioma inglés del foro a la categoría International > Español @navaro2004.

En adelante por favor usar la categoría apropiada a la lengua en que queráis publicar. Esto es importante para el uso responsable del foro, y esta explicado aquí la guía "How to get the best out of this forum".
Este guía contiene mucha información útil. Por favor leer.

De antemano, muchas gracias por cooperar.

Si sale ese "mensaje raro" entonces el "monitor serial" si funciona, de otro modo no saldría mensaje alguno.

Hay algún error en tu código y si no lo adjuntas no podremos saber cual es.

Por favor, adjunta el código de acuerdo a las Normas del Foro en Español, punto 7. También usa la opción "Autoformato" del menú "Herramientas" de la IDE antes de copiar el código así nos facilitas su lectura.

Este es el codigo que le estoy cargando al NodeMCU

int distancia = 0;
byte n = 0;
unsigned long millisPrebios = 0;
unsigned long t = 0;

void setup() {
  Serial.begin(9600);
  pinMode(16, INPUT);
  attachInterrupt(digitalPinToInterrupt(16), distance, CHANGE);

}

void loop() {
  distancia = t*58;
  Serial.print("Distancia: ");
  Serial.print(distancia);
  Serial.println("cm");
}

void distance() {
  unsigned long millisActuales = millis();
  if (n == 1) {
    t = millisActuales - millisPrebios;
    millisPrebios = millisActuales;
    n = 0;
  }
  n++;
}

Esta mal como defines la interrupción en un Nodemcu ESP8266

Debe ser asi

ICACHE_RAM_ATTR void distance() {
  unsigned long millisActuales = millis();
  if (n == 1) {
    t = millisActuales - millisPrebios;
    millisPrebios = millisActuales;
    n = 0;
  }
  n++;
}

Segun lo que lei ICACHE_RAM_ATTR está obsoleto asi que esto debería ser mejor

int distancia = 0;
byte n = 0;
unsigned long millisPrebios = 0;
unsigned long t = 0;

void setup() {
  Serial.begin(9600);
  pinMode(16, INPUT);
  attachInterrupt(digitalPinToInterrupt(16), distance, CHANGE);

}

void loop() {
  distancia = t*58;
  Serial.printf("Distancia: %3.1f cm\n", distancia);
  // Serial.print(distancia);
  // Serial.println("cm");
}

IRAM_ATTR void distance() {
  unsigned long millisActuales = millis();
  if (n == 1) {
    t = millisActuales - millisPrebios;
    millisPrebios = millisActuales;
    n = 0;
  }
  n++;
}

Si fue la solucion, muchas gracias!!!

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.