Hi, Kann mir jemand weiterhelfen: Suche ein Codebeispiel für die Initailisierung des Power-Save Modus (aufwecken übder Timer) für den Atmega48. Für eure Hilfe Danke ich! Faller
In c benötige ich das Programm. Den Befehl für schlafen gehen habe ich: set_sleep_mode(SLEEP_MODE_PWR_SAVE); sleep_mode(); Aber zuvor muss ich den Timer2 initialisieren damit er nach eine rbestimmten zeit wieder aufwacht. Wie mache ich das? Danke für die Hilfe!! Gruß Fabian
Aus den Tabellen 8-1 und 8-2 im Datenblatt raussuchen welcher Sleepmode geeignet ist ("wake-up sources", Tab 8 -1), den modus einstellen (SMCR, aber die C-Compiler haben sogar extra Funktionen), das SE Bit im SMCR setzen (bzw. C-funkt...) und den sleep befehl ausführen
oh, da war ich zu langsam :( schau mal da: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Die_Timer.2FCounter_des_AVR http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Programmieren_mit_Interrupts ..das hast du doch bestimmt schon mal gesehen, oder? ;)
Hi, Danke für die Hilfe- ich bin Anfänger und komme leider gar nicht klar mit der Interupt Erklärung für den Timer2. Was muss ich beachten?
Habe den Code zum initialsieren des Interrupts gefunden: Geht aber irgendwie nicht!! void timer2 (void) { TIMSK2 |= _BV(TOIE1); //Timer Overflow Interrupt enable TCNT2 = 0; //Rücksetzen des Timers TCCR2B = _BV(CS10) | _BV(CS11); sei(); }
Hast Du überhaupt einen externen Uhrenquarz an den Oszillatoranschlüssen von Timer 2? Ohne den geht das nämlich nicht... Und Du musst natürlich einen Interrupt Handler schreiben für den Timer2-Overflow-Interrupt, sonst gibts jedes mal nen Reset.
ach ja, und Du musst natürlich den Timer 2 auch so konfigurieren, dass er mit dem externen Takt (also asynchron) arbeitet. Dazu muss das Bit AS2 im ASSR-Register entsprechend gesetzt werden.
> Wie mache ich so einen Handler?
Das steht alles im Tutorial.
Aber wie gesagt: Ohne externen Uhrenquarz an TOSC1 und 2 oder einen
externen Takt an TOSC1 (EXCLK-Bit in ASSR gesetzt) gehts nicht, weil der
Hauptoszillator im Power Save Modus deaktiviert ist und dementsprechend
der Timer 2 dann auch nicht läuft.
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.