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.
Level/Pegel: Interrupt-Anforderung ist aktiv, so lange der Pegel anliegt.
Der Levelinterrupt löst aus, wenn ein vorbestimmter Level anliegt. Gerne auch mehrfach..... Darum heißt er Levelinterrupt.
Als Interrupt, der auf eine Änderung reagiert, kann ich den also nicht setzen?
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.
Würde gerne vermeiden, dass nach einem kurzen Ping der Interrupt gleich 5-fach anschlägt.
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.
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.
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.