mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Interrupt Priorität AVR


Autor: Mandy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Da Dieter (dieter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du genau weißt, was du tust, kannst du verschachtelte Interrupts 
zulassen.

http://www.mikrocontroller.net/articles/AVR-GCC-Tu...

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Mandy (Gast)

>Das Compare Match schaltet lediglich einen Port um, mehr nicht.

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

MfG
Falk

Autor: Mandy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.