Interrupt Priorität AVR

Gast #1639126
Lesenswert?

Hallo,

ich habe einen Atmega8.
Dabei habe ich mehrere Interrupts. Gemäß der Interrupt Tabelle 
(Datenblatt) ist der INT0 das höchstwertige Interrupt.
Gleichzeitig gibt es in meinem Programm jedoch noch ein Compare Match, 
welches höher priorisiert ist (für mein Programm, jedoch nicht in der 
Tabelle).
Das Compare Match schaltet lediglich einen Port um, mehr nicht.
Nun habe ich aber das Problem, das beim Auftreten von INT0 und falls zur 
gleichen Zeit der Port abgeschaltet werden soll, INT0 ausgeführt wird 
und der Port zu spät abgeschaltet wird.
Das Compare Match wäre hier zeitkritischer.
Meine Frage, wie löst man das?
In der INT0 Interrupt Routine das Flag abfragen, ob das Compare Match 
gesetzt ist und den einen Befehl (Port abschalten) dort machen, 
Interrupt Flag löschen, oder gibt es bessere Lösungen?

Danke.

Grüße
Mandy
Gast #1639154
Lesenswert?

Die Compare-match-Funktion der der Timer kann auch unabhängig von der 
CPU die PWM Ausgänge beeinflussen. Man hat da aber ein paar 
einschränkungen bei der Wahl der Pins usw.

Sonst halt geschachelte Interrupts, oder gar keine andern Interrupts 
nutzen und die anderen Dinge per Polling erledigen.
Geschachtele Interrupts müssen dabei nicht unbedingt schneller sein, als 
wenn man die ISRs wirklich auf das absolute Minimum reduziert.
Gast #1639225
Lesenswert?

Falk Brunner schrieb:
> Und warum braucht man dazu einen Interrupt? Das kann die Hardware
> allein, das ist ja der Witz an den OCRx Pins .. .

Ok, da müsste ich das Layout ändern, wäre aber eine saubere Lösung.
Wenn ich dann zusätzlich das Compare Match wieder deaktivieren will (was 
nicht sehr zeitkritisch ist), könnte ich ja die ISR Compare Match 
trotzdem noch ausführen lassen, zum deaktivieren oder?
Die Hardware ändert meinen Pin dann trotzdem direkt beim Compare Match, 
richtig?

Grüße
Mandy
#1639232
Lesenswert?

@  Mandy (Gast)

>Wenn ich dann zusätzlich das Compare Match wieder deaktivieren will (was
>nicht sehr zeitkritisch ist), könnte ich ja die ISR Compare Match
>trotzdem noch ausführen lassen, zum deaktivieren oder?

Ja.

>Die Hardware ändert meinen Pin dann trotzdem direkt beim Compare Match,
>richtig?

Ja.

MFG
Falk

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren