www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik bascom avr: timer interrupt priorität


Autor: nummernschalter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

weiß jemand, wie bascom avr die Interruptpriorisierung umsetzt?

z.B.: wenn bereits der Timer0-Interrupt abgearbeitet wird und während 
dessen Timer2 überläuft - was passiert dann ?

1.)Wird zuerst die ISR0 fertiggestellt und dann ISR2 aufgerufen oder
2.)wird ISR0 unterbrochen, ISR2 abgearbeitet, ISR0 fortgesetzt ?

Im 1.Fall, was passiert in der Wartezeit bis zum Ende von ISR0 ? Wird 
Timer2 angehalten oder läuft er weiter ?

Danke schonmal.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt bei den AVRs keine Interrupt-Prioritäten. Da kann auch BASCOM 
nichts dran ändern. Grundsätzlich sind Interrupt Handler beim AVR nicht 
unterbrechbar, d.h. wenn während der Ausführung eines Interrupt Handlers 
ein anderer Interrupt auftritt, dann muss dieser warten, bis der andere 
fertig ist. Man kann zwar Interrupt-Handler unterbrechbar machen, 
allerdings ist das nur in ganz wenigen Ausnahmefällen sinnvoll. Generell 
gilt: Interrupt Handler so kurz wie möglich, dann gibts i.d.R. auch 
keine Kollisionen.

EDIT:
Angehalten wird ein Timer grundsätzlich nur dann, wenn seine Taktquelle 
auf "Off" gesetzt wird, und das geht nur durch löschen der CS-Bits. Kein 
Interrupt-Ereignis kann einen Timer anhalten.

Autor: Anonymous (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
(It doesn't matter which compiler you are using, Basic, C or assembler).

By default the interrupts are not nested. When an interrupt is
executed, all other interrupts (if any) are disabled automatically.
When the interrupt terminates, the other interrupts are automatically
enabled again. When the interrupts are enabled again, if there are
pending interrupts, the order of their execution is the order you can
see in the datasheet of the AVR "Interrupt/Interrupt Vectors in ....).
The interrupt vector with the lower address in the program memory has
the higher priority.

You can have nested interrupts if you use the assembly instruction SEI
in your interrupt service routine. If a second interrupt occurs while
the first interrupt is executed then the first interrupt will be
interrupted and the second interrupt will be serviced. When the second
interrupt is over, the execution will go back to the first interrupt
service routine. If you use nested interrupts make sure the stack
is big enough. Nested interrupts are an advanced topic and are difficult
to debug. (Don't use them).

Autor: bas_ratte (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Xmega soll das können kommt nächstes Jahr aufen Markt.

Autor: Rahul Der trollige (rahul)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bas_ratte wrote:
> Xmega soll das können kommt nächstes Jahr aufen Markt.

8051er können das schon seit Jahr(zehnt)en...

Autor: nummernschalter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo nochmal.

Offensichtlich beeinflussen sich die Interrupts derart, daß man genau 
überlegen muß, welche Aufgaben man den ISR's überträgt. Und vor allem, 
ob man mehrere Timer gleichzeitig laufen läßt. Dummerweise gehen dann 
immer einige Daten verloren. Arrgghh ! Solche Probleme hattee ich in 
meinen Z8-Projekten nie, denn da kann man (wie auch beim 8051) alle 
Unterbrechungsanforderungen wunderbar priorisieren und erhält exakte 
Ergebnisse. Nun ja, sicherlich spielt auch die ausschließliche 
Verwendung von Assembler ein gewichtige Rolle.

Wie dem auch sein, Danke an Alle.

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.