bin hier frisch eingestiegen in die Arduino Welt und versuche Impulse
eines Reedkontaktes mit dem
NodeMCU V3.3 ESP8266 ESP-12E
oder dem
ESP8266 ESP-12 ESP12 WeMos D1 Mini
zu zählen. Soweit bin ich aber nicht gekommen.
Die ersten Fingerübungen waren erfolgreich, wenn ich aber
zB den Code von
oder
compiliere und hochlade, bricht der Sketch mit dem
"attachInterrupt"
ins Essen und startet neu (og Code angepasst mit debug code).
Anderen lustigen Code aus den Beispielen im IDE macht er ohne Mucken.
Die Serielle Konsole sieht so aus:
Verschiedene Boards habe ich auch ausprobiert. ESp8266
Arduino IDE 1.8.13 nochmal frisch installiert, Pakete aktualisiert.
Wo bin ich falsch abgebogen?
als Anfänger kannst du es nicht wissen. Aber der Beispielcode auf Electronic Wings ist ein sauschlechtes Beispiel.
In einer Interrupt-Service-Routine kurz ISR sollte man niemals Ausgaben auf die serielle Schnittstelle machen.
In dem Beispiel ist das der Programmteil
Programme nennen sich ja auch Quellcode. Für so einen Programm habe ich den Namen "Quälkot" ;-)))
Ich habe jetzt längere Zeit gesucht bin aber noch nicht fündig geworden.
Es scheint eine Menge "Tutorials" zu geben die serielle Ausgaben in der ISR machen.
Das ist ganz schlechte Programmierpraxis.
Darüber hinaus benötigt man auf dem ESP8266 / ESP32 das IRAM_ATTR sonst gibt es solche crashs
viele Grüße Stefan
Dann auf die Idee kommen, dass es einen EXCEPTION DECODER geben muss.
Diesen könntest du in die Arduino IDE integrieren.
Dieser macht die Meldung dann lesbar(er)
vielen Dank für Deine schnelle Antwort. Leider komme ich mit dem Code aus
auch nicht weiter:
void blink() {
state = !state;
}
Selbst wenn die Interrupt Routinen nur ein "i++" machen, bleibt die Situation die gleiche. Wenn das wirklich ein Problem bei der Ausführung des Code wäre, sollte es ja laufen, bis der Interrupt ausgeführt wird. Es bricht aber vorher ab.
danke für Deine Antwort.
Wenn die im Arduino Tutorial genannten Codeschnipsel nicht
funktionieren, gehe ich davon aus, das Problem liegt nicht am Code.
Stimmst Du dem zu?
Muss ich ggf noch andere Pakete zusätzlich installieren?
Gerne baue ich das ELF nochmal und post hier die Ausgabe des Decoders.
Ganz ehrlich - Interrupts werden von Einsteigern oftmals falsch und vor allem unnötig eingesetzt. Bevor man mit Interrupts arbeitet, sollte man sich erstmal tief mit der Materie befasst haben. In den meisten Fällen wo hier danach gefragt wird, braucht man sie gar nicht. Auch für das Abfragen eines Reed-kontaktes dürften sie in >99% der Fälle überflüssig sein.
Interrupts sind nicht einfach nur 'Funktionen' wie alle anderen auch. Da steckt wesentlich mehr dahinter, und wenn man das nicht versteht, machen sie nur Ärger.
Also erstmal versuchen ohne Interrupts auszukommen. Das geht fast immer .
Für einen Einsteiger wäre es erstmal viel wichtiger das blockadefrei Programmieren zu lernen. Dann werden die Fälle wo Interrupts interessant werden schonmal vieeeel weniger.
hat das Problem gelöst. Antwort ist so trivial, man konnte (ich hab) sie fast überlesen.
Der Beispielcode passt nicht, hat er ja auch geschrieben, es braucht offensichtlich ein
void IRAM_ATTR IntCallback(){
Vielen Dank an Stefan für die konstruktive Hilfe auf eine sehr konkrete Frage hier.