Forum: Projekte & Code sleep power-save Timer2 ext. Interrupt ASSR AS2 ATmega8 Assembler


von Bernhard S. (bernhard)


Angehängte Dateien:

Lesenswert?

Ein kleines Beispiel, wie ein 1MHz getakteter AVR (ATmega8), aus dem 
Sleep-Modus geweckt werden kann mit Timer2 und ext. Interrupt (Tasten).


Der 32khz Quarz (32,768kHz) taktet den Timer2 im Asynchronmodus und löst 
nach 1s einen Timer-Interrupt aus und weckt den AVR aus den Sleep-Modus.


Das gleiche passiert, wenn eine Taste betätigt wird (externer 
Interrupt).


LED grün: der µC arbeitet die LOOP-Schleife ab (erhöte Stromaufnahme)
LED gelb: Timer2 Interrupt ist aktiv
LED rot : ext. Interrupt ist aktiv

LED rot blinkt: unkorrekter Interrupt Aufruf


Programmablauf:
- LED Initialisierung + Test
- WDR Aktivierung
- Neustart per WDR
- Initialisierung TIMER - SLEEP - ext. Interrupt - Tasten
- SLEEP
- Loop-Schleife (100ms LED grün)


Ich habe bewußt alle Vorgänge etwas abgebremst, damit man nachvollziehen 
kann, wann und wo etwas passiert.

Strombedarf meines Exemplars bei 1MHz Takt:
ohne Sleep: 4,3 mA
IDLE:       2,3 mA
Power-slave:0,02mA

Würde der µC in der Loop-Schleife 100.000 Takte benötigen käme man auf 
einen durchschnittlichen Strombedarf von 0,4mA.

Für Hinweise bin ich sehr dankbar.


Bernhard

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
Noch kein Account? Hier anmelden.