Forum: Compiler & IDEs Interruptvorrang


von saschisch (Gast)


Lesenswert?

Hallo Leute!

Ich schreibe ein Programm dass 2 Interrupts behandelt. Einmal zählt der
Timer0 bis zum Outputcompare Wert und löst dort dann einen Interrupt
aus. Der zweite ist der externe Interrupt. Das Problem ist jetzt, dass
ich nicht weiß ob der externe Interrupt den Outputcompareinterrupt
stört.

Es soll so funktionieren, dass ich eine GENAU eine bestimmte Zeit zähle
und während dessen die externen Interrupts zähle. d.h. wenn der externe
Interrupt den anderen stört ist das nicht gut.

Danke für eure Antwort

MfG

saschisch

von saschisch (Gast)


Angehängte Dateien:

Lesenswert?

hier der Quelltext

von Fritz G. (fritzg)


Lesenswert?

Wenn deine Interrupt-Routinen als ISR bzw. SIGNAL deklariert sind, dann
werden sie durch andere Interrupts nicht unterbrochen.
D.h. wenn du grad im Timerinterrupt bist wird der ext. Interrupt erst
dann ausgeführt, wenn die Timerinterruptroutine beendet ist. Was erst
dann ein Problem darstellt wenn während des Timerinterrupts mehr als
ein  externer Interrupt auftritt.

Umgekehrt ist es dasselbe, wenn in der ext.Interrupt-Routine der
Timerinterrupt mehr als einmal kommen sollte.
Aber das kannst du ja ausrechnen ob das vorkommen kann, die
Interrupt-Routinen sollten sowieso so kurz wie möglich sein.

Wenn eine Interrupt-Routine unterbrechbar sein soll, musst du sie mit
INTERRUPT statt SIGNAL deklarieren, bzw. bei der neuen avr-libc mit
einem komischen Konstrukt (siehe Doku).

von saschisch (Gast)


Lesenswert?

Danke!

Ich habe noch eine Frage, wird während des Interrupts(beim Ausführen)
der Timer0 gestoppt?

MfG

saschisch

von Fritz G. (fritzg)


Lesenswert?

Nein, der läuft weiter.

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.