Forum: Mikrocontroller und Digitale Elektronik ISR mit bestimmtem Code wird nicht ausgeführt


von Jonathan K. (Gast)


Lesenswert?

Hallo,

ich hatte mal ein seltsames Phänomen, bei dem durch Hinzufügen von 
weiterm Code zu einer ISR diese einfach nicht mehr ausgeführt wurde. Da 
ich den Probelcode nicht mehr habe hier ein Beispiel, wie es ungefähr 
aussah:
1
ISR (IRGENDWAS_vect) {
2
    if (++abc == 0)
3
        abc_ovfl = 1;
4
5
    if (++def == 0)
6
        def_ovfl = 1;
7
    
8
    if (irgendwas anderes) {
9
        // ...
10
    }
11
}

Das hatte so auch funktioniert, warum auch nicht. Dann habe ich
1
    if (++ghi == 0)
2
        ghi_ovfl = 1;
hinzugefügt und die ISR wurde nicht mehr ausgeführt. Gar nicht mehr. 
Habe ich bei abc, def oder ghi die if-Bedinungen sowie "xxx_ovfl = 1;" 
weggelassen, wurde die ISR wieder problemlos ausgeführt.

Warum ist das so? Warum beeinflusst der Code in der ISR, ob sie 
ausgeführt wird?

Danke schon mal

von Peter II (Gast)


Lesenswert?

Jonathan K. schrieb:
> Warum ist das so?

das gibt es nicht, du hast damit nur einen anderen Fehler bei mir im 
Code aufgedeckt.

von Bitflüsterer (Gast)


Lesenswert?

> ... ich hatte mal ...

Spekulationen über Verhalten von Code, der nicht vorliegt, sind 
zwecklos.

von holger (Gast)


Lesenswert?

>Warum ist das so? Warum beeinflusst der Code in der ISR, ob sie
>ausgeführt wird?

RAM übervoll ist die wahrscheinlichste Möglichkeit.

von Jonathan K. (Gast)


Lesenswert?

holger schrieb:
> RAM übervoll

Dann dürfste es auch nicht funktionieren, wenn ich eine if-Bedingung 
(wie im Starterpost beschrieben) weglasse.


Peter II schrieb:
> das gibt es nicht, du hast damit nur einen anderen Fehler bei mir im
> Code aufgedeckt.

Das wirds dann wohl sein ..

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.