www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Interrupt Priorität der ATMEL AVR


Autor: A. Arndt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wie ist das eigentlich mit den Prioritäten der Interrupts, wenn ich z.B. 
mit UART-Interrupt arbeite, also Interrupt auslösen bei Eintreffen von 
Daten über den UART und ich lasse noch einen Timer laufen ?

Wenn diese Bedingung nun beide gleichzeit eintreffen..., also 
Dateneintreffen beim UART und ein Timer, z.B. 100ms-Takt ?

Gruss
A. Arndt

Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Timer Interrupt hat höhere Priorität als der UART.

Autor: Fabian B. (fabs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann wird die Prio durch die Reihenfolge der Vektoren vorgegeben. Schau 
mal ins Datenblatt, da steht die Liste.

Gruß
Fabian

Autor: A. Arndt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

dann geht mir also das Dateneingangssignal durch die Lappen...?

Vektoren, bin nur Hobbyelektroniker, was sollen die denn ??

Gruss
A. Arndt

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. Arndt wrote:

> dann geht mir also das Dateneingangssignal durch die Lappen...?

Nur, wenn deine ISR für den Timer unendlich lange braucht.  Wenn sie
kurz gehalten ist, dann beendet sie sich, und danach wird die ISR
der UART aufgerufen und kann ihr Zeichen verarbeiten.  Selbst falls
bereits das nächste Zeichen einläuft, tickt das ja derzeit gerade mal
erst seine ersten Bits ins Schieberegister, erst nach 8 bits wird von
da in den Empfängerpuffer übernommen.  Bei 9600 Bd dauert das stolze
ca. 1 ms, eine mittlere Unendlichkeit. ;-)

> Vektoren, bin nur Hobbyelektroniker, was sollen die denn ??

Die zeigen auf die ISR.

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn beide Interrupts zur gleichen Zeit eintreffen, dann kann natürlich 
eine Priorität helfen, doch wie wahrscheinlich ist dies ???

I.d.R. wird eine Priorität bei Nested Interrupts angewendet, d.h. wenn 
während eines laufenden Interrupts ein neuer Interrupt mit höherer 
Priorität aufläuft wird der laufende unterbrochen und der aktuelle 
bearbeitet. Nach der Abarbeitung wird dann der unterbrochene 
fortgesetzt.

Meines Wissens hat der AVR eine "feste" Prioritätenreihenfolge, das man 
diese durch die Reihenfolge im Code angeben kann wäre mir neu !!!

Aber wo liegt dein Problem? Wenn zwei oder mehr Interrupts auflaufen 
werden sie der Reihe nach abgearbeitet. Der Uart hat nicht umsonst einen 
Buffer in dem der Empfang einwenig gespeichert wird (man sollte 
natürlich nicht zu lange warten!)

Generell gilt :
In den Interrupt-Routinen nicht zuviel treiben, d.h. UART-Buffer nur 
auslesen, Timer nur auslesen bzw. neuen Wert schreiben mehr nicht. Die 
generelle Bearbeitung der Daten sollte durch das Timing der 
Main-Schleife  erfolgen.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

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.