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
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.