Hi Leuts, ich bin nun mal ein Einsteiger, deshalb stelle ich vielleicht eine doofe Frage, aber ich bin ja lernbereit :-) Ich muss für eine Motorsteuerung ein PWM Signal erzeugen. Ok, mit den AVR´s geht das ja relativ einfach über den PWM Mode vom Timer 1. Aber ich will ja lernen und eine eigene Routine zum Erzeugen von PWM-Signalen schreiben. Üblicherweise nehme ich dazu eine Zähler, zähle hoch und wieder runter, .... Aber der Timer 1 bietet mir ja eine Auflösung von 16 bit (PWM nur 8,9 oder 10 Bit). Was spricht dagegen, die beiden Compare-Interrupts des Timers 1 zu nutzen ? Also Timer 1 bestimmt die Frequenz des Signals. Er zählt von 0 bis zum Comparewert und wird automatisch zurückgesetzt. In der Compate-Interruptroutine für CompareA setzte ich das PWM Signal zurück. Damit bestimme ich die Frequenz des Signals. Compare B benutze ich für die Impulsbreite. D.h. in der entsprechenden Interruptroutine setze ich das PWM Signal auf 1. Wenn also der Timer anfängt zu zählen und den Comparewert B erreicht (der kleiner sein muss als der Wert CompareA), dann wird das Signal gesetzt. Beim erreichen von CompareA wird das Signal gelöscht und der Timer setzt sich automatisch zurück. Sollte dies nicht auch ein brauchbares PWM-Signal geben ? Greetings Karlheinz
Viele Wege führen nach Rom. Du kannst eine PWM auch vollständig in Software machen. Aber das jemand eine Motorspannung mit 16 Bit einstellen will, sehe ich zum ersten mal. 8 Bit sollten allemal reichen. Peter
Na wie gesagt, mir fehlt da ein wenig die erfahrung mit PWM. Ich denke halt generell, bei 16 Bit habe ich eine höhere Auflösung als bei 8 Bit, kann also feiner dran rumspielen. Ist ja nur so zum testen .... Greetings Karlheinz
Hi! Vorsicht mit CTC-Betrieb. Wenn ich es recht verstanden habe wird schon beim 1.Compareereignis zurückgesetzt(sofern eingestellt)Wenn möglich ohne CTC und in CompareA-ISR Timer1 auf 0 setzen. MFG Uwe
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.