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
Probiere einmal statt bis 16 nur bis 15 zählen zu lassen, dann sollte es ungefähr passen, ob das nur 0,06% sind wage ich zu bezweifeln.
Hallo! Die Lösung von Hubert funktioniert ;) Der Fehler sitzt halt meistens doch davor... Anbei ist der Ausschnit vom Code. Nicht schön, funktioniert aber. Viele Grüße Chris
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.