Hallo, wie schon im Betreff beschrieben möchte ich meinen Mega164 effizient betreiben und wenn nichts zutun ist schlafen legen. Das Programm ist recht einfach und wartet nur ob an INT0 ein "Rising Edge Interrupt" ausgelöst wird und reagiert dann entsprechend. Sobald alles abgearbeitet worden ist soll er wieder schlafen gehen. Die Einschränkung liegt hier wohl am Timer1 der im FastPWM Mode betrieben wird und niemals abgeschalten werden soll! Laut Datenblatt (Full, S.43 Table7-1) kommt hier wohl nur der Idle Mode in Frage? Bei allen anderen kann ich nicht auf "Rising Edge" triggern bzw. wird sogar der Clock für den Timer abgeschaltet. Jetzt stellt sich mir noch die Frage wie das mit den WakeUp Sources aussieht? Wacht er durch irgendwelche Interrupts durch Timer1 (FastPWM) auf, oder kann ich das auf INT0 begrenzen? Bzw. läuft PWM weiter wenn er sich aktiv im Idle-Mode befindet? Vielen Dank e-Ra
@ Elias R. (e-ra) >Laut Datenblatt (Full, S.43 Table7-1) kommt hier wohl nur der Idle Mode >in Frage? Ja. >Jetzt stellt sich mir noch die Frage wie das mit den WakeUp Sources >aussieht? Siehe Interrupt. >Wacht er durch irgendwelche Interrupts durch Timer1 (FastPWM) >auf, Kann man einstellen. > oder kann ich das auf INT0 begrenzen? Ja. > Bzw. läuft PWM weiter wenn er >sich aktiv im Idle-Mode befindet? Sicher, siehe Sleep Mode. MfG Falk
Hallo, und wie kann ich das genau auf INT0 begrenzen? Reicht es einfach keine andere ISR als meine "Rising Edge Interrupt" (INT0_vect) ISR im Code zu verwenden? Oder muss ich irgendwelche Register beschreiben aus denen dann folgt bei welchem Event er aufwachen soll. Vielen Dank e-Ra
@ Elias R. (e-ra) >Reicht es einfach keine andere ISR als meine "Rising Edge Interrupt" >(INT0_vect) ISR im Code zu verwenden? ja. MFg Falk
Hallo, funktioniert soweit alles, danke! Rein aus Interesse: Was passiert wenn ich zwei oder mehrere ISR's verwende? Aus Idle Mode kann er ja nich nur durch INT0 aufwachen. In welche ISR wird dann gesprungen? Gruß e-Ra
@ Elias R. (e-ra) >kann er ja nich nur durch INT0 aufwachen. In welche ISR wird dann >gesprungen? ISR0? Nach dem Aufwachen wird der Interrupt bearbeitet, welcher das Aufwachen ausgelöst hat. Danach geht es normal im Hauptprogramm weiter. MfG Falk
Hallo, ich dachte das ist komplexer....aber das ist ja nun wirklich schön gelöst. Vielen Dank für die Antworten, schönes Bergfest! e-Ra
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.