Gast
#3765773
Hallo, ich möchte gerne mit Hilfe des Timer 1 vom ATmega32 mit 16MHz ein PWM-Signal mit einer Frequenz von 800kHz ausgeben, mit variablem Dutycycle. Meine Idee war, die TCCR1A,B-Register folgendermaßen einzustellen: - kein Prescaler -> 20 Takte entsprechen 1,25us und somit genau meiner gewünschten Frequenz - Mode of Operation: CTC, mit TOP = ICR1, wobei ICR1 = 19 (Also: Springe bei 19 wieder auf 0. Details im ATmega32-Datenblatt auf Seite 109) - und dann wollte ich Werte zwischen ~1 und ~18 ins OCR1A schreiben, um verschiedene Dutycycles zu erreichen (über CompareMatch), die mir über den Pin PD5 (OC1A) ausgegeben werden. Hier der Code innerhalb meiner Funktion:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
Ergebnis: Der Timer zählt periodisch bis zu meinem gewünschten im ICR1 angegebenen Wert, allerdings bekomme ich am OC1A keinerlei PWM-Output. Meine Vermutung: Da ich ja im CTC-Modus arbeite, ist so eine PWM evtl. gar nicht möglich? Aber wie gehts dann? Ich freue mich auf alle Tipps. Bin schon seit Stunden am rätseln.. :(
