PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Timer1 beim Mega128 initialisieren



ceekay
08.08.2006, 19:55
Hallo,
ich habe beim mega128 Timer0 bereits in Betrieb.
Zum Beispiel so....

TCCR0 = 0;
TCCR0 = _BV(WGM01) |_BV(CS01) | _BV(CS00) | _BV(CS02);
OCR0 = 156;
TCNT0 = 0;
TIFR = _BV(OCF0);
TIMSK = _BV(OCIE0);

Die Interruptroutine funktioniert auch wunderbar.

Nur würde ich lieber den 16 Bit Timer verwenden. Zwecks höherer Auflösung und bis zu 3 Compare Werten. Nur blicke ich bei Timer1 durch das Datenblatt nicht ganz durch.

Könnte mir jemand mal ein Beispiel geben wie ich Timer1 initialisieren kann?
Dann könnte ich das nachvollziehen.

Vielen Dank im Voraus

ceekay
08.08.2006, 20:52
Konnte es doch selbst lösen.

hab mir die "iom128.h" und das Datenblatt nochmal zur Brust genommen :-)

Für alle die es interessiert wie der Timer1 initialisiert wird:

TCCR1A = 0; //Normal Mode
TCCR1B = _BV(CS10) | _BV(CS12); //Prescaler auf 1024
TCCR1C = 0;
TCNT1L = 0; //Timer zurück setzen
TCNT1H = 0; //Timer zurück setzen


OCR1AH = 00111101;
OCR1AL = 00001001; //entpricht 15625

TIMSK = _BV (OCIE1A); //CompareA Interrupt zulassen



Leider hab ich noch nicht rausbekommen wie ich den CTC Mode verwenden kann, damit der Zähler beim Compare Match automatisch zurück gesetzt wird. Zur Zeit setze ich ihn noch manuell in der Interruptroutine zurück.

Vielleicht weiß das ja jemand