PWM zu schnell (Modus 9, phasen- und frequenzkorrekt)

Gast #353002
Lesenswert?

Hallo,

bin gerade dabei, einen kleinen Frequenzgenerator auf Basis eines
Tiny2313 zu bauen. Überlegung war, PWM-Mode 9 (phase and frequency
correct mode) des Timers 1 zu nutzen. Dabei ist OCR1A mein TOP-Wert,
mit diesem kann ich also die Frequenz einstellen. OCR1B ist der
Vergleichswert, an dem OC1B umgeschaltet wird. Damit kann ich das
Tastverhältnis bestimmen. Hier die Initialisierung:

TCCR1A |= (1<<COM1B1)|(1<<WGM10);  // Mode9, Phasenkorrekt
TCCR1B |= (1<<WGM13)|(1<<CS11)|(1<<CS10);
                   // 1/1024, TOP=OCR1A, VERH.=OCR1A/OCR1B
freq=1; // 1Hz

OCR1A = (20000000/(2*(1024*freq))); // TOP-Wert, regelt Frequenz
OCR1B = (OCR1A/2);  // regelt Tastverhältnis, hier 1:1

Soweit klappt auch alles, aber mit meinem 20MHz-Quarz (1. Wert in der
Formel bei OCR1A) scheint mir das alles um den Faktor 10 zu schnell zu
laufen. Habe leider kein Oszi, die LED blinkt deutlich zu schnell.

Findet jemand meinen Denkfehler? Bin auch schon mehrmals vom
Schreibtisch aufgestanden, stehe aber immer noch auf der Leitung.


Sommer-Sonntagsgrüße,

Dirk
Gast #353003
Lesenswert?

Oerks, das war mal wieder ein Zahlendreher:

TCCR1B |= (1<<WGM13)|(1<<CS12)|(1<<CS10);

ist für 1/1024 richtig, ich hatte vorhin

TCCR1B |= (1<<WGM13)|(1<<CS11)|(1<<CS10);

also 1/64 gewählt.

Danke trotzdem an alle sich-den-Kopf-zerbrechenden...

Gruß,
Dirk

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