Gast
#285067
Hallo! Als Anfänger bzw. Umsteiger von PICs bin ich gerade dabei, die "fabelhafte Welt der AVRs" kennenzulernen ;) Jetzt wollte ich einen Art Miniuhr basteln, die einfach bei jeder Sekunde um 1 hochzählt. Der verwendete AVR ist ein ATmega8, der externe Oszillator ist ein 4MHz Quarzoszi. in main() setze ich RCCR0 auf 5 (Prescaler auf 1024) und TIMSK auf 1 (Timer aktiv) in SIGNAL (SIG_OVERFLOW0) lasse ich eine Variable, die mit volatile deklariert wurde hochzählen. Wenn sie 16 erreicht, wirds sie anschließend wieder auf 0 gesetzt und gleichzeitig eine zweite Variable hochgezählt. Am Ende des IRQs wird zusätzlich TCNT0 auf 11 gesetzt. Somit sollte jede Sekunde (mit -0,06% Abweichung) hochgezählt werden. Leider weicht das Ganze leider auf 16 Sekunden -1s ab. Wisst ihr Rat? Chris