Forum: Mikrocontroller und Digitale Elektronik ATMEGA168 und CTC-Timer


von Waldemar F. (drhack)


Lesenswert?

Hallo Community,

ich baue gerade einen kleinen Timer für meinen Belichter und will einen 
Piezo am ATMEGA168 anschließen. Dazu will ich den Timer2 im CTC-Mode 
verwenden.

Init:
1
TCCR2A = (1<<COM1A0); // trigger pin
2
TCCR2B = (1<<WGM12) | (1<<CS12); // CTC-Mode / prescaler: 256
3
4
OCR2A = 128; // compare

Am Pin OC2A habe ich nun konstante 488,2Hz. µC läuft mit 16MHz und eine 
Änderung des CompareMatch Wertes OCR2A, bewirkt überhaupt keine Änderung 
der Ausgangsfrequenz. Woran liegt es? Ist überhaupt CTC mit Timer2 
möglich?

Gruß

von Johannes M. (johnny-m)


Lesenswert?

Du musst Dich für einen Timer entscheiden. Die Register TCCR2x und OCR2A 
gehören zu Timer 2, die Bezeichner für die Bits, die Du setzt (COM1A0, 
WGM12 und CS12), gehören aber zu Timer 1...

von Waldemar F. (drhack)


Lesenswert?

Oh, welche Bits muss ich denn setzen, damit Timer2 im CTC läuft und OC2A 
toggelt?

Gruß

von Johannes M. (johnny-m)


Lesenswert?

Waldemar F. wrote:
> Oh, welche Bits muss ich denn setzen, damit Timer2 im CTC läuft und OC2A
> toggelt?
----> Datenblatt...

von Waldemar F. (drhack)


Lesenswert?

Also, habe mal im Datenblatt gestöbert und angepasst.
1
TCCR2A = (1<<COM2A0); // toggle pin
2
TCCR2B = (1<<WGM22) | (1<<CS22) | (1<<CS21); // CTC / 256
3
OCR2A = 128;

Macht keinen Unterschied! Die Frequenz ist nun bei 122Hz "festgefroren" 
und lässt sich nicht über OCR2A verändern. Was kann sonst nicht stimmen?

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

WGM22 muß WGM21 heißen, und zwar in TCCR2A. Brille kaputt?

von Waldemar F. (drhack)


Lesenswert?

Alles klar, danke!
Anscheinend benötige ich wirklich eine Brille. Ich drucke mir erstmal 
das Datenblatt auf A1 aus...

Danke nochmal und Gruß

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.