Hallo, ich hab probleme mit dem internen Takt (1MHz) einen interrupt zu erzeugen. und zwar will ich alle 1ms einen Interrupt, um dann sekunden rauf zuzählen. dies funktioniert allerdings überhaupt nicht, die frequenz ist viel zuhoch(nach 1 stunde laufzeit sind >1,5h vergangen). initalisierung-code: #include <avr/io.h> #include <avr/interrupt.h> TCCR0A = (1<<WGM01); TCCR0B |= (1<<CS01); OCR0A = 125-1; TIMSK |= (1<<OCIE0A); sei(); Interrupt: ISR (TIMER0_COMPA_vect) { millisekunden++; if(millisekunden==1000) { millisekunden=0; taktStatus=!taktStatus; sekunde++; } } Jemand ne idee was ich falsch mach? danke im vorraus.
Hi
>Jemand ne idee was ich falsch mach?
Deine Initialisierung passt eigentlich. Wahrscheinlich läuft dein
Oszillator zu schnell.
MfG Spess
Musst mal bei ATMEL schauen. Wenn du den internen Oszillator verwendest kannst du ihn zwischen 0,75 - 1,5 mal Takt kalibrieren (soweit ich mich erinnere). Ganz genau bekommst du das natürlich nur mit externem Quarz hin.
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.