Forum: Mikrocontroller und Digitale Elektronik ATTiny2313 Timer0 interrupt


von habNeFrage (Gast)


Lesenswert?

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.

von spess53 (Gast)


Lesenswert?

Hi

>Jemand ne idee was ich falsch mach?

Deine Initialisierung passt eigentlich. Wahrscheinlich läuft dein 
Oszillator zu schnell.

MfG Spess

von lowlevel (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.