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.
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
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;
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.
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)
Das Oszi krigt das mit. Wenn ich nur den IDLE-Mode wähle funktioniert ja alles, Auch im ADC-Mode.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.