Forum: Mikrocontroller und Digitale Elektronik Was ist ein Level Interrupt?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von justav (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

beschäftige mich gerade mit dem Anwenden der Stromsparmodi, die die AVRs 
so hergeben. Der Powerdown klingt sehr gut, insbesondere gefällt mir der 
Stromverbrauch.

Aber:
In der Doku heißt es, dass ich den AVR dann zum Beispiel mit einem 
Level-Interrupt an INT0 aufwecken kann.

Was ist denn der Unterschied zwischen einem "normalen" Interrupt, wie er 
durch einen Taster o.ä. mit Flankenerkennung ausgelöst würde und einem 
Level Interrupt? Bzw. was ist das überhaupt?

Danke für kurze Hilfe.

von (prx) A. K. (prx)


Bewertung
0 lesenswert
nicht lesenswert
Level/Pegel: Interrupt-Anforderung ist aktiv, so lange der Pegel 
anliegt.

von Arduino Fanboy D. (ufuf)


Bewertung
-1 lesenswert
nicht lesenswert
Der Levelinterrupt löst aus, wenn ein vorbestimmter Level anliegt.
Gerne auch mehrfach.....
Darum heißt er Levelinterrupt.

: Bearbeitet durch User
von justav (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Als Interrupt, der auf eine Änderung reagiert, kann ich den also nicht 
setzen?

von Carl D. (jcw2)


Bewertung
0 lesenswert
nicht lesenswert
Arduino F. schrieb:
> Der Levelinterrupt löst aus, wenn ein vorbestimmter Level anliegt.
> Gerne auch mehrfach.....
> Darum heißt er Levelinterrupt.

Und zur Erkennung eines Levels braucht man keinen Takt 
(->tiefererSchlaf),
für eine Flanke manchmal schon.

von justav (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Würde gerne vermeiden, dass nach einem kurzen Ping der Interrupt gleich 
5-fach anschlägt.

von (prx) A. K. (prx)


Bewertung
0 lesenswert
nicht lesenswert
Eine Sache kann verwirren: INT0/1 wecken nur im Level-Modus auf, nicht 
aber im Flankenmodus. Pin-Change hingegen weckt auf, obwohl das 
natürlich ein Flanken-Modus ist.

Das dürfte historische Gründe haben. Der Flanken-Interrupt von INT0/1 
ist synchron implementiert und benötigt einen Takt. Diese Eigenschaft 
wurde wohl aus Familienkompatbilität über die Jahre und Modelle 
gerettet. Die spätere Pin-Change Erkennung hingegen wurde von Anfang an 
so asynchron implementiert, damit ein Wakeup darüber möglich ist.

von Keks (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Bevor du den nicht abgearbeitet hast, kann der Interrupt nicht erneut 
auslösen. Um nach Abarbeitung weiteres Auslösen zu vermeiden, den 
Interrupt in der Service-Routine deaktivieren.

von justav (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Keks schrieb:
> Bevor du den nicht abgearbeitet hast, kann der Interrupt nicht
> erneut auslösen. Um nach Abarbeitung weiteres Auslösen zu vermeiden, den
> Interrupt in der Service-Routine deaktivieren.

Genial! Danke.

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]
  • [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.