Einfache Hilfsgeräte wie ein Küchen-Timer sollten möglichst jahrelang mit einer
Batterie funktionieren. Der ATtiny202 ist dafür geeignet, weil er mit seinem
Ultra Low Power (ULP) RC-Oszillator mit 32,768 kHz betrieben werden kann. Laut
Datenblatt braucht der Controller bei 32 kHz und 3 V nur noch 10 µA. Die
Frequenzgenauigkeit wird mit 3% angegeben, was für einfache Aufgaben ausreicht.
Wenn es um präzise Zeiterfassung geht, kann beim Tiny3216 auch ein Uhrenquarz
mit 32,768 kHz angeschlossen werden.
Der Tiny3216 hat die beiden Anschlüsse TOSC1 und TOSC2 (B3, B2) zum Anschluss eines externen Uhrenquarzes mit 32,768 kHz. Um ihn zu aktivieren, muss man den Quarzoszillator im Register CLKCTRL_XOSC32KCTRLA einschalten. Zusätzlich müssen zwei kleinen Kondensatoren mit ca. 12 pF angeschlossen werden. Der Oszillator kann dann den Takt für einen Timer liefern oder auch den Controller-Takt, wie es im Beispiel gemacht wurde.
//32Xtal3216 Rechteck an PA7,
Clock Out 32,768 kHz an PB5, 14 µA
#include <avr/io.h>
int main(void) {
_PROTECTED_WRITE
(CLKCTRL_XOSC32KCTRLA,1); //Uhrenquarz
_PROTECTED_WRITE
(CLKCTRL_MCLKCTRLA, 128+2 ); //OUT, 32 kHz
_PROTECTED_WRITE
(CLKCTRL_MCLKCTRLB, 0); // Kein Vorteiler
PORTA.DIR = 255;
PORTB.DIR = 255;
PORTC.DIR = 255;
while (1){
PORTA.OUTTGL = 128; //4096
Hz an PA7
}
}
Wichtig ist, dass man alle nicht benutzen Ports in den Ausgangszustand oder als Eingang mit Pullup schaltet, weil offene Eingänge unkontrollierte Zustände annehmen können und dabei mehr Strom brauchen. In diesem Fall wurde ein Strom von 14 µA gemessen.
Das Programm toggelt den Port PA7 und teilt dabei den Takt durch 8. Man findet hier also quarzgenaue 4096 Hz. Zusätzlich wird die Taktfrequenz an CLKOUT (PB5) geführt.
Der Controller kann insgesamt zwischen vier Taktquellen umschalten: 20 MHz intern, 32 kHz intern, 32 kHz mit Quarz oder externer Clock-Eingang EXTCLK. Beim Start läuft zunächst der in den Fuses angegebene Oszillator, in diesem Fall mit 20 MHz. Dann schaltet das Programm den Uhrenquarz-Oszillator ein. Erst wenn dieser stabil läuft wird auf 32 kHz umgeschaltet.