mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Priorisierung der Interrupts änderbar?


Autor: Matthias K. (john_connor)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
kann die Priorität von Interrupts bei Atmel Mikrocontrollern geändert 
werden?
Im AVR-Tutorial dieser Webseite (welches sich auf den ATmega8 bezieht) 
steht :
„Wenn ein Interrupt auftritt, dann springt die Programmausführung an 
eine bestimmte Stelle im Programmspeicher. Diese Stellen sind festgelegt 
und können nicht geändert werden:“
Zumindest die Änderung der Priorisierung der Interrupts eines ATmega8 
Mikrocontrollers ist also NICHT möglich.
Im Datenblatt des ATmega128 habe ich nun einen interessanten Abschnitt 
gefunden:

The most typical and general program setup for the Reset and Interrupt 
Vector Addresses in ATmega128 is:

Address LabelsCode Comments
$0000 jmp RESET ; Reset Handler
$0002 jmp EXT_INT0 ; IRQ0 Handler
$0004 jmp EXT_INT1 ; IRQ1 Handler



Die Formulierung deutet für mich daraufhin dass die Adressen (und damit 
die Priorität der Interrupts?!) vertauscht werden können.

Meine Frage: Ist die Änderung der Priorisierung der Interrupts zumindest 
für den ATmega128 möglich?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Matthias Klatt schrieb:

> Meine Frage: Ist die Änderung der Priorisierung der Interrupts zumindest
> für den ATmega128 möglich?

Nein.
Die Adressen liegen fest und können nicht geändert werden.

Der Grund, warum man das Ganze ganz gerne mit Adressen schreibt
Address LabelsCode Comments
$0000 jmp RESET ; Reset Handler
$0002 jmp EXT_INT0 ; IRQ0 Handler
$0004 jmp EXT_INT1 ; IRQ1 Handler

besteht darin, dass man dann leicht Änderungen im Code machen kann, ohne 
groß aufpassen zu müssen. Gesetz den Fall du brauchst den IRQ0 nicht, 
dann löscht du einfach die Zeile raus
Address LabelsCode Comments
$0000 jmp RESET ; Reset Handler
$0004 jmp EXT_INT1 ; IRQ1 Handler

und alles stimmt trotzdem wieder

Autor: Uwe ... (uwegw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein. Die Formulierung bezieht sich darauf, dass sich bei der Verwendung 
eines Bootloaders die Adressen aller Interruptvektoren um die Größe des 
Bootloader-Bereiches verschieben. Die Reihenfolge bleibt also gleich.

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Meine Frage: Ist die Änderung der Priorisierung der Interrupts zumindest
>für den ATmega128 möglich?

Kurz und knapp : Nein.

Die Adressen, die im Falle eines Interrups angesprungen werden, sind 
fest verdrahtet und lassen sich nicht ändern.

Der Satz:
>The most typical and general program setup The most typical and general >program 
setup ...

bezieht sich wohl eher darauf, daß man an diese Speicherstellen auch was 
ganz anderes schreiben kann, wenn man genau weiß, was man tut.
Wobei die "Priorisierung" beim AVR sowieso nur dann zum Tragen kommt, 
wenn mehrere Interrupts gleichzeitig anstehen. Dann wird zuerst der mit 
der höchsten Priorität ausgeführt. Ansonsten gilt: first come, first 
serve.

Oliver

Autor: Matthias K. (john_connor)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
An alle:
Vielen Dank für die schnellen und verständlichen Antworten!

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.