Zitat Zitat von Felix G
Bei einem Interrupt (gut Deutsch Unterbruch) wird das aktuelle Programm SOFORT unterbrochen.
Sofort geht nicht, der AVR kann schließlich nicht einfach einen Maschinenbefehl abbrechen, den er gerade abarbeiten soll. Auf den Interrupt reagiert er also erst, wenn er mit seinem aktuellen Befehl fertig ist.
Entscheident hierbei ist das Verständnis des Wortes Anweisung/Befehl. Beim einem AtMega kann eine Anweisung die mehrere Takte dauert sehr wohl von einem Interrupt unterbrochen werden. Das kann zu sehr hässlichen Effekte führen. In solchen Fälle verbietet man die Interrupts vor dem Befehl und erlaubt sie danach wieder. Außerdem nennt sich das Critical Section und hört sich wichtig an.
Eine Anweisung die nur einen Takt benötigt kann allerdings wirklich nicht unterbrochen werden


Es gibt Programme die nur auf Ereignisse reagieren, die Interrupts auslösen. Man könnte fast sagen, die ereignisgesteuert sind. Die "Hauptschleife" bei diesen Programmen ist leer.

Gruß

Jens