16Bit Timer - Will einfach nicht.

Gast #778053
Lesenswert?

Hi,

ich bekomm den 16Bit Timer (Timer1) vom ATmega128 einfach nicht zum 
laufen.

Ziel ist eine Variable Timereinstellung über den OCR- Wert
im Bereich 9...1000
1
TCCR1B |= (1<<CS11) | (1<<WGM21);    
2
TIMSK      |=   (1<<OCIE1A);
3

4
if( setPeriod < 9)
5
    setPeriod = 9;
6

7
OCR1A  =   setPeriod; // OCR2 = T * (FCPU / prescaler)

Mit einem 8-Bitter tut es...
1
TCCR2 |=   (1<<CS11) | (1<<WGM21); //Prescale 8
2
TIMSK      |=   (1<<OCIE2);
3

4
if( setPeriod < 9)
5
    setPeriod = 9;
6
OCR2  =   setPeriod; // OCR2 = T * (FCPU / prescaler)

Fehler:
Wenn ich den 16Bit timer benutze, bleibt mein restliches System stehen.
Ich seh einfach nicht den Fehler?? Ist irgend etwas an den Einstellungen 
Falsch??

Gruß
#778059
Lesenswert?

> TCCR1B |= (1<<CS11) | (1<<WGM21);
WGM21 gehört zu Timer 2. Bitte bring so was nicht durcheinander. Die 
WGM-Bits des 16-Bit-Timers stehen auf zwei Register verteilt! Es gibt 
auch noch TCCR1A... Blick ins Datenblatt sollte helfen. Was definitiv 
nicht hilft, ist einfaches kopieren von Code für einen 8-Bit-Timer.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren