ESP8266 taster entprellen in Interruptroutine

OP #5585479
Lesenswert?
• ▲
▼
Hallo zusammen,

ich habe in meinem Sketch ein Interrupt eingebaut welcher bei einer 
Tastenäderung aufgerufen wird. ich habe in der Interruptroutine ein 
delay(100) eingebaut um den Taster zu entprellen.

Sobald das delay in der Interruptrotine aber drin ist, spielt der ESP 
verrückt und gibt jede menge Zeichen aus, startet nicht richtig.
Darf mann kein delay Befehl in einer Interrupt Routine einbauen?
1
//Sub Interrupt  Change
2

3
  void wechsel(){
4
    zustandalt = digitalRead(reedpin);
5
    delay(100);
6

7
  if (zustandalt==HIGH){
8
    aufzaehler++;
9
    Serial.print("Interrupt->auf->" );
10
    Serial.println(aufzaehler);
11
    
12
  }
13
  if (zustandalt==LOW){
14
    zuzaehler++;
15
    Serial.print("Interrupt->zu->" );
16
    Serial.println(zuzaehler);
17
  
18
  }
19
    
20
  }
Gast #5585745
Lesenswert?
• ▲
▼
Das funktioniert aus zwei Gründen nicht:

1) Die Firmware soll für maximal 20ms unterbrochen werden, sonst kommt 
es zu Kommunikationsfehlern. In der Praxis gehen 50ms.

2) Der Quelltext von delay() enthält einen Aufruf von yield(), was 
wiederum die Firmware des ESP ausführt. Diese wurde aber nicht dafür 
vorgesehen, aus einer ISR heraus aufgerufen zu werden.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.