Gast
#3024431
Hi, ich verstehe die Sinus-PWM auf einem uC nicht wirklich und möchte euch um Hilfe bitten. Die normale PWM auf einem uC meine ich verstanden zu haben: Der Counter zählt mit jedem Takt hoch (Prescaler auf 1 gesetzt). Sobald der Counter mit dem Vergleichswert übereinstimmt, wird der Ausgang gesetzt. Über den Vergleichswert kann ich also das Duty Cycle einstellen. Bei einer Sinus-PWM wird ein Sinussignal mit einem hochfrequenten Dreieckssignal verglichen, woraus sich das pulse pattern am Ausgang ergibt. Jetzt frage ich mich, wie das auf einem uC realisiert wird. Der Sinus wird ja in einer Lookup Tabelle (Array) abgelegt. Aber wie genau geht es weiter? Ich bin mir sicher, dass das zuvor geschriebene zusammengesetzt irgendwie die Lösung ist. Aber so ganz erschließt es sich mir noch nicht :D Ich glaube, dass der aktuelle Sinuswert in das OCRn-Register geschrieben wird?!? Hier mal der prinzipielle Ablauf (wie ich es mir vorstelle): 1. Irgendein_Wert = Sinus_Array(1) 2. OCRn-Register = Irgendein_Wert 3. Jetzt nutzen wir die PWM Funktion des uC. Wenn ein Match erreicht ist, setze Ausgang 4. Irgendein_Wert_next = Sinus_Array(2) 5. OCRn-Register = Irgendein_Wert_next 6. siehe 3. usw. usf. Verstehe ich das richtig? Gruß, Alex PS: Vielen Dank für eure Hilfe
