Atmega328 Timer2/RTC Problem

Gast #4041185
Lesenswert?

Hallo,

Ich habe Timer/Counter2 des Atmega328 als asynchronen Counter 
konfiguriert. Als Test toggle ich in der Overflow ISR einen Pin an dem 
eine LED hängt.
Da der Controller sonst nichts zu tun hat "schläft" er die meiste Zeit 
(SLEEP_MODE_PWR_SAVE). Um den Stromverbrauch zu minimieren habe ich 
alles abgeschaltet was nicht benötigt wird (BOD, ADC usw.).
Mit meinem Wald und Wiesen Multimeter kann ich den Stromverbrauch im 
Ruhezustand nicht mehr ordentlich messen (zeigt 1uV an bei 2mV 
Messbereich) und wenn die LED an ist mess ich ein paar Milliampere. Das 
scheint alles super zu funktionieren.
Jetzt zu meinem Problem. Den Prescaler von Timer/Counter2 habe ich auf 
128 eingestellt (TCCR2B = (1<<CS20)|(1<<CS22);). Die ISR scheint aber 
nur alle 2 Sekunden aufgerufen zu werden da die LED nur alle 2 Sekunden 
getoggled wird.
Probeweise hab ich den Prescaler auf 64 gestellt und siehe da ich die 
LED blinkt mit 0,5 Hz (wird jede Sekunde getoggled). Ich verstehe aber 
nicht warum das so ist. Eigentlich sollte bei einem 8bit Counter ein 
Prescaler von 128 eine Interruptfrequenz von 1Hz erzeugen.
Den 32,768kHz Takt habe ich von einem externen RTC (DS3232) mit 
Taktausgang einfach an den entsprechenden Oszillatoreingang des Atmega 
angehängt (X2). Die Frequenz dieses Signals habe ich mit dem Oszilloskop 
überprüft.
Wird ein solches Signal irgendwie anders gezählt als wenn ein Quarz 
zwischen X1 und X2 hängt? An X2 hängt wie gesagt der Takt und X1 ist 
offen.

Ich habe leider keinen Uhrenquarz hier sonst könnte ich mir die Frage 
wohl leicht selbst beantworten aber vielleicht hat das ja schonmal einer 
von euch so gemacht.

LG
Dominik
#4041385
Lesenswert?

Vermutlich ist die Einspeisung des Takts nicht richtig. Im ASSR – 
Asynchronous Status Register gibt es das Bit EXCLK, das zu setzen ist, 
wenn, statt Uhrenquarz, der Takt extern eingespeist wird, laut 
Datenblatt ist der Takt dann aber an TOSC1 anzuschließen:

• Bit 6 – EXCLK: Enable External Clock Input
When EXCLK is written to one, and asynchronous clock is selected, the 
external clock input buffer is enabled and
an external clock can be input on Timer Oscillator 1 (TOSC1) pin instead 
of a 32kHz crystal. Writing to EXCLK
should be done before asynchronous operation is selected. Note that the 
crystal Oscillator will only run when this
bit is zero.

Mit freundlichen Grüßen - Martin

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren