Forum: Mikrocontroller und Digitale Elektronik ATmega 8 Timer 2 Timing Probleme


von Andi (Gast)


Lesenswert?

Servus ihr lieben,

betreibe nen Atmega 8 mit nem externen Quartz und hab da ein Timing 
Problem mit dem Timer 2 er soll im Grunde genommen jede Sekunde einen 
Wert ausgeben aber irgendwie brauch er knapp 2 Sekunden dafür.

Hab schon alles kontrolliert aber komm irgendwie nicht dahinter. 
Vielleicht hat ja einer von euch nen Ratschlag.

Hier mal das Stück Code in welchem der Timer 2 initalisiert wird:
1
//4***Interrupt TIMER2 init*********************************************************************
2
TCNT2 = 0;                  //Anfangszählerstand = 0
3
4
TCCR2 = (1<<CS22) | (1<<CS21) | (1<<CS20);        //Prescaler von 1024 auswählen
5
/*  CPU-Takt = 12.000.000Hz    Prescaler = 1024
6
  Zeit bis overflow = CPU-Takt/Prescaler  =  12.000.000HZ / 1024 = 11.718Hz
7
*/
8
9
OCR2 = 117;                //Zähler zählt bis 117
10
/*  Zeit bis overflow = 11718Hz    Zählwert = 117
11
  Zeit bis Interrupt = 11718Hz / 117 = 100,16Hz ~ 100Hz
12
  1s / 100 = 0,01s = 10ms
13
*/
14
15
TIMSK |= (1<<OCIE2);            //Interrupt aktivieren

und hier die ISR:
1
ISR (TIMER2_COMP_vect)
2
{
3
4
counter_T2 ++;
5
6
if (counter_T2 == 10)    //Jede Sekunde
7
8
{
9
10
lcd();
11
12
counter_T2 = 0;
13
14
}
15
16
}

die Fuses sehen wie folgt aus:

High = 0xDF
Low  = 0xDD
Lock = 0xFF

Die Fuses bereiten mir noch ziehmlich Kopfzerbrechen, gibt ja tausend 
mögliche Einstellungen ;)

Bin über jede Hilfe sehr dankbar

Gruß Andi

von spess53 (Gast)


Lesenswert?

Hi

Du musst mit den WGM-Bits CTC einstellen. Jetzt läuft dein Timer einfach 
bis $FF und fängt dann wieder von vorn an. Dazwischen kommt dein 
Interrupt.

MfG Spess

von Andi (Gast)


Lesenswert?

Hey ich danke dir,

genau das war der Fehler einfach das

(1<<WGM21) dazu und schon läufts :)

Einfach Spitze!

Gruß Andi

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.