-
-
Also die 500kHz wären tatsächlich deine PWM-Frequenz. Die Frequenz misst man ja über eine Periode, da ist es dann völlig egal, wie die High/Low-Zeiten verteilt sind. Hier findest du nen schönen Artikel drüber.
Der Timer im Tiny zählt von 0 bis OCR1C (z.B. 127). In das Register OCR1A lädst du deinen Wert. Möchtest du 75% High-Pegel, dann ist das 127*0,75 = 95,25 = 95.
Der Timer fängt jetzt bei 0 an, hoch zu zählen. Der Output-Pin OC1A ist High. Erreicht der Timer nun die 95, so schaltet der Pin auf Low. Der Timer zählt jetzt noch bis 127, der Pin bleibt Low.
Nachdem der Timer den Wert 127 erreicht hat, setzt er sich auf 0 zurück und der Pin wird wieder High gesetzt.
Du siehst: Die Frequenz bleibt immer gleich, denn der Timer zählt immer bis 127. Nur der Duty-Cycle wird verändert, denn das ist der Sinn der PWM.
Möchtest du jetzt eine Frequenz von 20kHz, dann musst du die Formel umstellen (aber richtig!):
fpwm = ftck / (ocr1c + 1) -> ohne Quadrat!
ocr1c = (ftck / fpwm) - 1
ocr1c = (64.000 / 20) - 1 = 3199
Dieser Wert liegt über den max. möglich 255, d.h. du musst dir jetzt noch Gedanken über den Prescaler machen.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen