ESP8266 and interrupt - exception...
Posted: Mon Aug 24, 2020 7:11 am
Hi all, I'm new here and I'm also new to the ESP8266.
I have a NodeMCU board and I'm triynd to follow an example but it's not working for me...
I receive an exception.
Someone could help me please?
Tha code is here
And I have two situations:
the first: the counter is not counting...
The second problem is that if I add the WIFI functions and try to build a server, i receive exeptions and the program abort with a lot of memory address informations...
Where is the problem?
Thanks in advance
I have a NodeMCU board and I'm triynd to follow an example but it's not working for me...
I receive an exception.
Someone could help me please?
Tha code is here
Code: Select all
#include <ESP8266WiFi.h>
volatile byte impulsi;
//unsigned int litriPerOra; // Calcolo dei litri all'ora
const byte sensoreFlusso = D2; // Si riferisce al pin a cui è collegato il sensore, il flussometro
unsigned long tempoPrecedente; // Utile per calcolare il tempo
unsigned long impulsiContati;
float litri; // Litri contati
void ICACHE_RAM_ATTR flusso() { // Funzione di interrupt
impulsi++; // quando questa funzione viene chiamata vuol dire che il flussometro ha fatto un giro e gli impulsi vengono incrementati
}
void setup() {
Serial.begin(115200);
delay(10);
pinMode(sensoreFlusso, INPUT); // il pin D1, nel quale entra l'onda quadra in uscita dal flussometro, è un input per arduino che deve contare gli impulsi e trasformarli in litri
attachInterrupt(digitalPinToInterrupt(sensoreFlusso), flusso, RISING);
Serial.println();
tempoPrecedente = millis();
}
void loop() {
// Controlla se il client è connesso
if(millis() - tempoPrecedente > 1000) {
//noInterrupts();
// la funzione millis() restituisce i millisecondi passati dall'inizio del programma
tempoPrecedente = millis(); // Aggiorna il tempo
impulsiContati += impulsi;
//litriPerOra = (impulsi * 60 / 8.34); // (Frequenza impulsi x 60 min) / 8.34 (dati forniti dal costruttore nella scheda tecnica)
impulsi = 0; // Resetta il contatore
//Serial.print(litriPerOra, DEC); // Stampa i litri all'ora
//Serial.print(" L/ora");
Serial.print(" Impulsi Contati: ");
Serial.print(impulsiContati);
litri = impulsiContati*1.0/500; //Secondo i dati del costruttore vengono conteggiati 500 impulsi a litro
Serial.print(" Litri Contati: ");
Serial.println(litri);
//interrupts();
}
}
And I have two situations:
the first: the counter is not counting...
Code: Select all
Impulsi Contati: 0 Litri Contati: 0.00
Impulsi Contati: 0 Litri Contati: 0.00
Impulsi Contati: 0 Litri Contati: 0.00
Impulsi Contati: 0 Litri Contati: 0.00
Impulsi Contati: 0 Litri Contati: 0.00
Impulsi Contati: 0 Litri Contati: 0.00
Impulsi Contati: 0 Litri Contati: 0.00
Impulsi Contati: 0 Litri Contati: 0.00
Impulsi Contati: 0 Litri Contati: 0.00
Impulsi Contati: 0 Litri Contati: 0.00
Impulsi Contati: 0 Litri Contati: 0.00
Impulsi Contati: 0 Litri Contati: 0.00
Impulsi Contati: 0 Litri Contati: 0.00
The second problem is that if I add the WIFI functions and try to build a server, i receive exeptions and the program abort with a lot of memory address informations...
Where is the problem?
Thanks in advance