ESP8266 taster entprellen in Interruptroutine

OP #5585479
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
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

Eine eigene Frage? Dieser Thread ist über 8 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.