Forum: Mikrocontroller und Digitale Elektronik PWM zu schnell (Modus 9, phasen- und frequenzkorrekt)


von Dirk Wiebel (Gast)


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

von Dirk Wiebel (Gast)


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

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.