mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Mega128 friert ein


Autor: I. L. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

was geschieht im Controller (AVR) wenn die Interrupts zu schnell 
hintereinander rein kommen. Das Programm bleibt stehen, und dann?




Gruß Knut

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da bleibt nichts stehen, es kann aber so scheinen.

Wenn eine Interruptroutine beendet ist, wird genau eine Instruktion aus 
dem Hauptprogramm erledigt, und dann wird entdeckt, dass ein Interrupt 
anliegt und der betreffende Interrupt angesprungen.  Dadurch kann es so 
aussehen, als würde die CPU stehen, das tut sie aber nur (fast) in Bezug 
auf Dein Hauptprogramm.

Autor: Peter R. (pnu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Programm bleibt nicht stehen. Es gibt da eine Prioritätsreihenfolge:

Auf jeden Fall drängt sich die Routine des int mit der höchsten 
Priorität noch vorne und wird abgearbeitet. Diese endet mit reti und 
rücksetzen des dazugehörigen int-flag.
Dann kommt der niedrigere int, der schon wartet, an die Reihe. Das 
Warten erkennt man am int-flag.
Wenn kein int-flag ansteht, geht es in die Grundroutine zurück.

Diese Warteschlange kann schon mal etwas länger werden, der 
Programmierer muss halt Sorge tragen, dass irgendwann das Grundprogramm 
wieder erreicht wird.

Wenn z.B. ein Int auf ein Signal wartet, ohne dass dieses kommt, "hängt 
sich der Kontroller auf" und arbeitet scheinbar nicht mehr. (Er ist ja 
voll mit dem Warten beschäftigt).

Der sogenannte watchdog ist für den Fall vorgesehen, dass längere zeit 
die Grundroutine nicht ereicht wird. Dann macht er gewaltsam ein Reset, 
und das Programm beginnt ganz von vorne.

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.