PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit Timer2 bei AtMega644



sebi87
28.09.2011, 21:18
Hallo Leute,

wie in der Überschrift schon geschrieben habe ich Probleme mit dem Timer2 des AtMega644. Mit Timer0 und Timer1 komme ich zurrecht und wenn ich Timer2 verwenden möchte verzweifel ich, da dieser nicht macht was er soll.

Muss ich hier irgendetwas spezielles beachten?

Hier mal ein kleines Beispiel (PWM auf TImer1 und Timer2)
Timer1 geht problemlos; Timer2 zwei macht einfach nix, mit Oszi überprüft :-(


int main(void)
{
// OC1A auf Ausgang
DDRD = (1 << PD5 ) | (1 << PD7 ); //ATMega644

TCCR1A = (1<<COM1A1) | (1<<WGM11);
TCCR1B = (1<<WGM12) | (1<<CS10);

TCCR2A = (1<<WGM21) | (1<<WGM20) | (1<<COM2A1) ;
TCCR2B = (1<<WGM22) | (1<<CS20) ;


OCR1A = 0x10;
OCR2A = 0x10 ;

while (1) {}
}

über eine Hilfe wäre ich sehr Dankbar

markusj
28.09.2011, 22:21
Du hast Timer 1 auf 9-Bit FastPWM (TOP=0x1FF) konfiguriert und Timer 2 auf 8-Bit FastPWM (TOP=OCR2A) konfiguriert. Du willst für Timer 2 vermutlich einen Konstanten TOP-Wert von 0xFF, dazu darf WGM22 aber nicht gesetzt sein.

mfG
Markus

sebi87
28.09.2011, 22:28
Das ist nur ein Beispiel. Ich will den Timer für etwas anderes nutzen. Habe aber wie beschrieben das Problem das ich den Timer gar nicht zum laufen bekomme.

sternst
28.09.2011, 22:57
Das ist nur ein Beispiel. Ich will den Timer für etwas anderes nutzen. Habe aber wie beschrieben das Problem das ich den Timer gar nicht zum laufen bekomme.Der Grund, warum du bei deinem Beispiel auf dem Oszi nichts siehst, wurde dir genannt (OCR2A=TOP). Warum es bei deinem "etwas anderes nutzen" nicht geht, kann dir mit den bisherigen Infos nur ein Hellseher sagen.

sebi87
29.09.2011, 08:58
Hallo,

ok der Beitrag war etwas unqualifiziret. Ich hab das Beispiel gepostet, weil ich das zum Spielen mit dem Timer2 genutzt habe.

@markusj: Wenn ich das WGM22 nicht setzte funktioniert das so wie ich es wollte, muss ich irgendwie übersehen haben das ich da im falschen Mode bin.

Danke