Forum: Mikrocontroller und Digitale Elektronik ATmega48 Powersave


von georg d (Gast)


Lesenswert?

Hallo,
ich baue gerade mit dem ATmega48 eine Uhr. Ich nutze den Timer 2  um im
Power-save-mode richtig Strom zu sparen. Das dumme ist nur das er dann
nur noch mit 1/16 der Frequenz arbeitet. Das Heist die Uhr nur aller
16s weiterzählt, sobald ich ihn in der main-Schleife in Power-down
schicke. Wenn ich das nicht mache läuts normal.

Hat jemand eine Erklärung dafür?

Ich arbeite mit einen 32,768kHz Quarz, einem Preteiler von 8 und komme
so auf 16 Interrupts je Sekunde um noch die Tastatur abzufragen.

von Aleksej (Gast)


Lesenswert?

Was fuer einen Preteiler verwendest du denn - Timer/Counter Prescaler
oder Clock Prescaler? Kann schon moeglich sein, dass du den zweiten
Preteiler auch aktiviert hast...
Und es steht ja auch im Datenblatt, dass Timer2 Output Compare
Interrupt im PowerSave Modus auch aktiv ist, das heisst, dass du auf
jeden Fall diese Frequenz vergroessern kannst

von georg d (Gast)


Lesenswert?

Ich arbeite mit dem Timer Precaler. Die PWM arbeitet auch richtig. Die
brauch ich für den LCD-CLK nur der Interrupt kommt nur so selten.
hier meine Timereistellung:
  TCCR2A = (1<<COM2A1)|(1<<COM2A0)|(1<<WGM21)|(1<<WGM20);  //0;
  TCCR2B = (1<<CS21);//Timer 0 mit CLK/8 = 16Hz
  TIMSK2 = (1<<TOIE2);
  OCR2A = 0x80;

von Aleksej (Gast)


Lesenswert?

Und was steht im CLKPR?

von georg d (Gast)


Angehängte Dateien:

Lesenswert?

Das CLKPR ist 0x0. Der PIN OC2A arbeitet ja auch richtig mit exakt16,000
Hz und 50% dutycikle (laut Dienst-Oszi), nur der interrupt kommt nur mit
0,9 Hz. Diese Frequenz hängt auch noch von der Größe der
Interruptseviceroutine ab.
ich hänge mal das mini Testprogram an.

von Aleksej (Gast)


Lesenswert?

Keine Ahnung, soll eigentlich alles in Ordnung sein. Bist du sicher,
dass es wirklich 16 Hz sind? Ist es moeglich, dass du diese PORTB
=0x01; ... PORTB =0x00; irgendie verpasst? Die sind doch relativ kurz
(400us bei 16Hz also 64ms)

von georg d (Gast)


Lesenswert?

Das Oszi krigt das mit. Wenn ich nur den IDLE-Mode wähle funktioniert ja
alles, Auch im ADC-Mode.

von Aleksej (Gast)


Lesenswert?

Im Datenblatt habe ich nichts gefunden, also es steht ja gar nicht fest,
wie lange mega48 braucht, um aus diesem Powersave Modus aufzuwachen.
Kann natuerlich sein, dass es einiges dauert.

von georg d (Gast)


Lesenswert?

Ich hab das Problem jetzt gelößt.
Ich muß den Timer 2 im asynchonen Mode mit dem externen Quarz laufen
lassen, also ASSR=0x20. Die Clocksource aber vom internen RC-Oszilator.
Dann klapt es :-) und der Controller brauch bei 3V nur 8µA. Die ganze
Uhr mit LCDisplay und Treiber nur 10µA :-))

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.