www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR Interupts - kurze Frage


Autor: annemarie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Liebes Forum,

Ohne besondere Softwarekonstrukte kann ja ein AVR zunächst mal keine 
kaskadierten Interupts. Mir geht es um zwei Ints, die ich nutzen will

1) Timer-Overflow
2) Pinchange-Int (Flanke)

Ich möchte nur gerne wissen, ob ich ABSOLUT SICHER(!) sein kann, dass, 
wenn gerade der EINE Interupt bearbeitet wird, der jeweils andere 
zuverlässig vorgemerkt wird und dann danach dessen ISR angesprungen 
wird. Kann es Situationen geben, wo das nicht zutrifft?


Gruss
Anne

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich möchte nur gerne wissen, ob ich ABSOLUT SICHER(!) sein kann, dass,
>wenn gerade der EINE Interupt bearbeitet wird, der jeweils andere
>zuverlässig vorgemerkt wird und dann danach dessen ISR angesprungen
wird.

Kannst du. Es steht sogar im Datenblatt, dass dabei der bereits 
bearbeitete ISR zuende bearbeitet wird. Danach wird EIN (asm) Befehl vom 
Hauptprogramm ausgeführt, bevor der nächste (priorität) anstehende 
Interrupt bedient wird.

>Kann es Situationen geben, wo das nicht zutrifft?

Ja, wenn du vorher das "Merkerflag" des Interrupts durch Schreiben einer 
EINS löschst.

Autor: annemarie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Lippy, very good!

Anne

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

Bewertung
0 lesenswert
nicht lesenswert
Matthias Lipinsky wrote:
>>Kann es Situationen geben, wo das nicht zutrifft?
>
> Ja, wenn du vorher das "Merkerflag" des Interrupts durch Schreiben einer
> EINS löschst.
Und wenn während der Bearbeitung des ersten Interrupts ein anderes 
Interrupt-Ereignis mehrfach auftritt. Da es für jeden Interrupt nur ein 
Flag gibt, kann natürlich jeweils immer nur ein Ereignis festgehalten 
werden.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Kachel-Heinz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Interrupt

Richtig, aber in den 50er Jahren habe ich mal gelernt, dass man im 
ganzen Satz antworten sollte anstatt einfach nur ein Wort (auch wenn es 
sachlich richtig ist) hinzurülpsen, wenn man ernstgenommen werden 
möchte. Soviel Zeit muss sein.

KH

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
annemarie wrote:
> Liebes Forum,
>
> Ohne besondere Softwarekonstrukte kann ja ein AVR zunächst mal keine
> kaskadierten Interupts. Mir geht es um zwei Ints, die ich nutzen will
>
> 1) Timer-Overflow
> 2) Pinchange-Int (Flanke)
>
> Ich möchte nur gerne wissen, ob ich ABSOLUT SICHER(!) sein kann, dass,
> wenn gerade der EINE Interupt bearbeitet wird, der jeweils andere
> zuverlässig vorgemerkt wird und dann danach dessen ISR angesprungen
> wird. Kann es Situationen geben, wo das nicht zutrifft?

Es ist wie folgt: Es gibt beim AVR eine Vektor-Tabelle, hierbei ist die 
Prioritaet absteigend, das heisst Interrupts mit einer kleineren 
Vektornummer sind hoeher in ihrer Prioritaet. Vorgemerkt wird immer nur 
ein Interrupt. Werden nun waehrend der Ausfuehrung Deines ISR zwei 
unterschiedliche Interrupts vorgemerkt, wird zunaechst ein Befehl des 
Hauptprogramms ausgefuehrt (um Aushungern zu vermeiden) und dann wird 
erst der Interrupt mit der niedrigeren Vektornummer bearbeitet, da 
kannst Du Dir sicher sein. Das steht aber auch alles im Datenblatt.

Gruss,
Michael

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Kachel-Heinz (Gast)

>Richtig, aber in den 50er Jahren habe ich mal gelernt, dass man im
>ganzen Satz antworten sollte anstatt einfach nur ein Wort (auch wenn es

Dann solltest du mal 50 Jahre technische Entwicklung und 20 Jahre 
Netzkultur aufholen um festzustellen, dass das ein Link auf einen 
Artikel ist.

>sachlich richtig ist) hinzurülpsen, wenn man ernstgenommen werden
>möchte. Soviel Zeit muss sein.

Ich hab mir sogar die Zeit genommen, den verlinkten Artikel weitläufig 
zu üerarbeiten und zu erweitern. Soviel dazu.

MFG
Falk

Autor: annemarie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>20 Jahre Netzkultur...

Netz und Kultur in einem Wort, das ist ja grausig.
Ist das nicht ein Widerspruch in sich...?

;-)
Anne

Autor: AVRFan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>[zwischen zwei Interrupts]
>ein Befehl des Hauptprogramms ausgefuehrt (um Aushungern zu vermeiden)

Für das "eine Hauptprogramm-Instruktion nach jedem Interrupt, bevor ein 
weiterer vorgemerkter Interrupt angesprungen wird" gibt es einen sehr 
speziellen Grund: Es ermöglicht einen Single-Step-Betrieb des 
Controllers, z. B. für Debuggingzwecke.

Das funktioniert so: Man benötigt einen freien externen Interrupt, z. B. 
INT0, der auf Pegeltriggerung konfiguriert wird.  Ans Ende des 
Interrupthandlers schreibt man zwei Schleifen, mit denen ein 
/zweifacher Pegelwechsel/ abgewartet wird.  Der Handler wird also erst 
verlassen, wenn der Pegel am Ext-Int-Pin von "Ativ" nach "Ruhe" und 
wieder zurück nach "Aktiv" gewechselt hat.  Dann passiert das 
Gewünschte: genau eine Instruktion des Hauptprogramms wird abgearbeitet 
und danach sofort wieder der Ext-Interrupthandler angesprungen.  An den 
Anfang dieses Handlers können beliebige Testroutinen geschrieben werden, 
z. B. zur Ausgabe von Registerinhalten etc.

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.