Gast
#4196022
Hallo zusammen,
ich habe in meinem Programm was komisches festgestellt:
mehrere Interrupts können gleichzeitig auftreten, daher habe sie auch
unterschiedliche Prioritäten.
Mit dem Oszilloskop und durch toggeln von verschiedenen Outputs, habe
ich festgestellt das manche ISRs zweimal hintereinander ausgeführt
werden, aber immer nur wenn zwei Interrupts gleichzeitig oder kurz
nacheinander auftreten und immer nur die ISR der Interrupt mit der höhen
Priorität wird zweimal ausgeführt:
Normalerweise soll der Ablauf so sein:
- Interrupt A (Prio=3) tritt auf
- ISR wird ausgeführt
- Out1 wird gesetzt
- Interrupt B (Prio 7) tritt auf
- ISR wird ausgeführt
- Out2 wird gesetzt
- ISR B Tut was
- Out2 wird gelöscht
- ISR A tut was
- Out 1 wird gelöscht
Aber nach dem Oszi ist der Ablauf so:
- Interrupt A (Prio=3) tritt auf
- ISR wird ausgeführt
- Out1 wird gesetzt
- Interrupt B (Prio 7) tritt auf
- ISR wird ausgeführt
- Out2 wird gesetzt
- ISR B Tut was
- Out2 wird gelöscht
- Pause von etwa 3 us
- Out2 wird gesetzt
- ISR B Tut was
- Out2 wird gelöscht
- ISR A tut was
- Out 1 wird gelöscht
Das gilt auch nicht nur für einen Interrupt (z.B. Timerx) sondern auch
für ext Interrupt.
Hat jemand Ahnung an was das liegen kann?