Forum: Mikrocontroller und Digitale Elektronik Sinus erzeugen mit Timer - +5V bis -5V


von Robert (Gast)


Lesenswert?

Hallo!

Ich will ohne externe Beschaltung zum Ansteuern eines kleinen 
Schrittmotors zwei Sinus-Verläufe mit einem Timer und möglichst hoher 
PWM-Frequenz erzeugen. Als Referenzpunkt nehme ich einen Portipn. In der 
oberen Halbwelle ist dieser Pin auf Masse, die PWM arbeitet normal. In 
der unteren Halbwelle ist der PIN auf +5V (high), die PWM müsste jetzt 
invertiert laufen. Also entweder mit COMxA0 auf 1 oder mit Werten in der 
Form 255, 215, ..., 0, 215, 255.

Knackpunkt ist der Wechsel von oberer auf untere Halbwelle (oder 
andersrum). Da die Frequenz des Sinus von einem anderen Interrupt 
gesteuert wird wird der Wert des OCRx-Registers bzw. des COMxA0 Flags 
nicht synchron übernommen sondern erst beim nächsten TxOVF oder 
Compare-Match. Da ich aber in dem Interrupt den Portpin schon ändern 
muss habe ich beim Umschalten immer irgendwelche ungewünschten Impulse 
in meinem Sinus! Die der PWM-Timer ohne Vorteiler läuft möchte ich es 
eigentlich vermeiden extra dessen Interrupt nutzen. Der ganze Quatsch 
wäre schon längst erledigt wenn das COMxA0 Flag SOFORT ausgewertet würde 
bzw. wenn das Force Output Compare auch im PWM-Modus funktionieren 
würde...

Grüße
Robert

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.