ISR not in IRAM

Hallo zusammen,

bin bei Arduino absoluter Anfänger und hab mal eine Steuerung mit einem PIR, LPD etc mit einem ESP8266-ESP12F zusammen gebaut. Hierfür habe ich eine Vorlage aus dem Internet genommen

[url=https://randomnerdtutorials.com/esp8266-multisensor-shield-with-node-red/[/url]

Soweit hat auch alles funktioniert nur:
Wenn ich das serielle Monitoring aufrufe kommt aber:

u. a. ISR not in IRAM

kann mir jemand sagen, was das bedeutet?

Gruß und ein THx im voraus.
Falke07

Dein Link funktioniert nicht.
Vermutlich fehlt da im Code das Attribut ICACHE_RAM_ATTR für die ISR.

Irgendwie hat der TO zufällig das letzte ] von den URL Code-Tags entfernt. Egal, hier seine Vorlage: ESP8266 Multisensor Shield with Node-RED | Random Nerd Tutorials

@ TO:
Kannst Du mal die komplette Fehlermeldungen hier reinkopieren? Vielleicht wird dann einiges klar. Hast Du alle 3 Libs installiert?

Für komplette Fehlermeldungen in der Arduino-IDE: Datei > Voreinstellungen > Ausführliche Ausgabe während: Kompilierung anhaken.

Gruß, Jürgen

Hallo,

anbei die Fehlermeldung aus dem Monitoring

12:15:54.612 -> {$$⸮⸮|⸮$⸮| ⸮l⸮c|ǃ⸮e⸮s⸮c⸮c⸮⸮og⸮$g'⸮⸮⸮ bx⸮⸮${$sdp⸮g⸮ ISR not in IRAM!
12:15:54.695 ->
12:15:54.695 -> User exception (panic/abort/assert)
12:15:54.695 -> Abort called
12:15:54.695 ->
12:15:54.695 -> >>>stack>>>
12:15:54.695 ->
12:15:54.695 -> ctx: cont
12:15:54.695 -> sp: 3ffffee0 end: 3fffffc0 offset: 0000
12:15:54.695 -> 3ffffee0: 40100268 00000001 00000000 00000100
12:15:54.695 -> 3ffffef0: 000000fe 00000000 00000000 00000000
12:15:54.695 -> 3fffff00: 00000000 00000000 00000000 00ff0000
12:15:54.695 -> 3fffff10: 5ffffe00 5ffffe00 3ffef474 00000000
12:15:54.695 -> 3fffff20: 00000001 00000005 3ffee644 40205252
12:15:54.695 -> 3fffff30: 4010046a 4020629d ffffffff 40205268
12:15:54.695 -> 3fffff40: 3fffdad0 00000001 3ffee644 402057ad
12:15:54.695 -> 3fffff50: 00000000 00000001 3ffee608 40203ecc
12:15:54.695 -> 3fffff60: 00000000 00000001 3ffee4ac 3ffee684
12:15:54.695 -> 3fffff70: 3fffdad0 00000000 3ffee644 4020585c
12:15:54.695 -> 3fffff80: 3fffdad0 00000000 3ffee644 4020132e
12:15:54.695 -> 3fffff90: feefeffe feefeffe feefeffe feefeffe
12:15:54.695 -> 3fffffa0: feefeffe feefeffe 3ffee644 40204c70
12:15:54.695 -> 3fffffb0: feefeffe feefeffe 3ffe84f4 40100ead
12:15:54.695 -> <<<stack<<<
12:15:54.695 ->
12:15:54.695 -> ets Jan 8 2013,rst cause:2, boot mode:(3,6)
12:15:54.695 ->
12:15:54.695 -> load 0x4010f000, len 1384, room 16
12:15:54.695 -> tail 8
12:15:54.695 -> chksum 0x2d
12:15:54.695 -> csum 0x2d
12:15:54.695 -> vbc204a9b
12:15:54.695 -> ~ld
12:15:54.695 -> ISR not in IRAM!
12:15:54.695 ->
12:15:54.695 -> User exception (panic/abort/assert)
12:15:54.695 -> Abort called
12:15:54.695 ->
12:15:54.695 -> >>>stack>>>

Das ist sowieso schlechter Code, den man nicht nachmachen sollte.
Serial.println und client.publish in der ISR.

Und wie Microbahner schon richtig vermutete muss es heißen:

void ICACHE_RAM_ATTR detectsMovement()

Gruß Tommy

Edit: Eigentlich braucht man auch überhaupt keinen Interrupt, wenn das Ereignis übers Netz versendet wird. Das ist nicht zeitkritisch im ms Bereich.

Hallo,

ok, nun läuft alles.

THx für die schnelle Hilfe an alle.

Noch eine Frage:
Du hast gesagt, schlechter Code, macht man nicht in der ISR.
Ok, ich bin mit Arduino absoluter Anfänger und möchte natürlich mit dem neuesten Stand der Programmierung/Befehle beginnen. Hast Du evtl. einen Link, wo ich die aktuellen Befehle bekomme. Evtl. ein Tutorial für Beginner?

Den über google auf der Suche nach einem Anfängerprojekt bin ich eben auf das gestoßen, von dem Code du abräst (Bin froh darüber, so lerne ich dazu)
Ich bin mit dem von mir genannten Beispiel dann ja wohl auf einen alten Gaul aufgesessen und möchte es natürlich richtig machen; nur wie erkennt ein Anfänger, dass das Script Fehler hat oder alt ist?

SY
Falke07

Das hat nichts mit alt oder neu zu tun. Nicht alles, was im Netz veröffentlicht wird, spiegelt unbedingt gute Kenntnisse wieder.

Zum Nachschlagen: die Arduino-Referenz

Gruß Tommy

Edit: Der ESP8266 ist kein Arduino (lässt sich aber mit der Arduino-IDE programmieren). Da sind ein paar Sachen etwas anders. Für grundlegende Beispiele schaue mal bei Fips vorbei.
Interruptroutinen sollen so schnell wie möglich fertig sein, da sie andere Interrupts blockieren. Man braucht aber nur selten Interrupts bei den einfachen Sachen.

hallo,

super, damit kann ich viel anfange.

Thx für die Hiffestellung.

SY
Falke07