Gast
#4041185
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