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