Hallo. Ich habe eine simple Schaltung mit einem Button und einer LED gebaut. Verkabelt ist alles richtig. Der Controller soll so lange schlafen, bis sich der Zustand des Knopfes von LOW auf HIGH ändert und dann die LED einmal blinken lassen. Das Problem: Der Interrupt wird nicht ausgelöst und somit wacht der Controller nicht auf. Wenn ich MCUCR auf 0 setze, wacht er auf. Allerdings möchte ich ja auf eine Änderung von LOW auf HIGH warten und nicht auf einen LOW-State. Weiß jemand, woran das liegt?
Daran, dass aus dem Power Down der Int0 nur auf Level aufweckt.
@Kim-Yannick Jürs (kim_yannick) >auf 0 setze, wacht er auf. Allerdings möchte ich ja auf eine Änderung >von LOW auf HIGH warten Pin Change Interrupt, das kann der "alte" ATmega16 nicht. > und nicht auf einen LOW-State. Das kann er. > Weiß jemand, woran das liegt? Alter Controller. Neuere Typen ala ATmega 88/328 etc. können das.
Besitzt der neuere Atmega16A dieses Feature? Wenn nicht, gibt es eine "Neuauflage" des Atmega16, sprich mit derselben Anzahl IO-Pins, Schnittstellen etc.?
@ Kim-Yannick Jürs (kim_yannick) >Besitzt der neuere Atmega16A dieses Feature? Nein. Der ist logisch identisch, hat nur einen kleineren Chip. > Wenn nicht, gibt es eine >"Neuauflage" des Atmega16, sprich mit derselben Anzahl IO-Pins, >Schnittstellen etc.? Viele. Such dir einen der neueren Typen in DIL40. ATmega164/324/644 & Co.
:
Bearbeitet durch User
Setz 'nen Pullup, leg' den Taster auf GND, stell' den Int0 auf Level, disable ihn in der ISR und enable ihn vor dem Sleep. Das ergibt ein ähnliches wie das gewünschte Verhalten.
MWS schrieb: > Setz 'nen Pullup, leg' den Taster auf GND, stell' den Int0 auf > Level, disable ihn in der ISR und enable ihn vor dem Sleep. Das ergibt > ein ähnliches wie das gewünschte Verhalten. Das Problem ist, dass ich dann an meiner "richtigen" Schaltung eine Menge ändern müsste. Das war nur ein kleines Beispiel. Wenn es mit dem Atmega644 funktioniert, würde ich ihn nehmen. Ist allerdings ziemlich teuer. Für den Preis bekommt man schon einige andere Sachen...
@ Kim-Yannick Jürs (kim_yannick) >Wenn es mit dem Atmega644 funktioniert, würde ich ihn nehmen. Ist >allerdings ziemlich teuer. Für den Preis bekommt man schon einige andere >Sachen... Dann nimm den kleinen ATmega164, der ist identisch, nur wie weniger Flash/RAM und damit billiger.
Weiß jemand, an welcher Stelle im Datenblatt definiert wird, ob der Pin Change Interrupt zum Aufwecken aus dem Power Down funktioniert oder nicht funktioniert? Ich finde einfach nichts.
:
Bearbeitet durch User
Kim-Yannick J. schrieb: > Weiß jemand, an welcher Stelle im Datenblatt definiert wird, ob der Pin > Change Interrupt zum Aufwecken aus dem Power Down funktioniert? Ich > finde einfach nichts. Such nochmal. Da ist eine Tabelle mit allen Sleepmodi und den jeweils möglichen Aufwachquellen.
Kim-Yannick J. schrieb: > Weiß jemand, an welcher Stelle im Datenblatt definiert wird Table 14. Active Clock Domains and Wake Up Sources in the Different Sleep Modes Notes: 3. Only INT2 or level interrupt INT1 and INT0.
Das heißt, mit INT2 würde es funktionieren? Dann brauche ich ja doch keinen neuen Controller.
Falk B. schrieb: > Pin Change Interrupt, das kann der "alte" ATmega16 nicht. Kim-Yannick J. schrieb: > Weiß jemand, an welcher Stelle im Datenblatt definiert wird, ob... Datenblatt unter 'External Interrupts' (bei mir S. 67,68): MCUCSR.ISC2 GICR.INT2 GIFR.INTF2
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.