Differences

This shows you the differences between two versions of the page.

Link to this comparison view

avrtheremin:innereien [2011/04/17 23:40]
lilafisch created
avrtheremin:innereien [2011/04/19 16:53] (current)
bsx PWM math
Line 9: Line 9:
 === Mittelung === === Mittelung ===
 Zum glaetten des Rauschens des ADWandlers. Zum glaetten des Rauschens des ADWandlers.
 +
 +=== PWM ===
 +Die Erzeugung der Töne erfolgt mittels eines PWM-Verfahrens. Es werden Rechtecke mit variabler Frequenz ausgegeben um damit eine dreieckige Wellenform zu erzeugen (siehe [[http://​www.nerdkits.com/​videos/​theremin_with_ir_distance_sensor/​]]).
 +Die Frequenz des Dreiecks lässt sich folgendermassen berechnen:
 +
 +f<​sub>​Dreieck</​sub>​ := f<​sub>​Basis</​sub>/​n<​sub>​Schritte</​sub>​
 +
 +Wobei n<​sub>​Schritte</​sub>​ die Anzahl der Schritte ist, die gebraucht wird um ein Dreieck komplett abzubilden. Dazu teilen wir einfach 65535 durch die Schrittweite (welche durch die Position der linken Hand festgelegt wird) und multiplizieren das Ergebnis mit 2 (wir müssen von 0 bis 65535 und wieder zurück bis 0 zählen).
 +
 +f<​sub>​Basis</​sub>​ ist die Basisfrequenz der PWM-Rechtecke. Diese berechnet sich wie folgt:
 +
 +f<​sub>​Basis</​sub>​ := f<​sub>​clk</​sub>/​N*(1 + TOP) (-> Datenblatt 15.9.3 Fast PWM Mode)
 +
 +Wir verwenden eine CPU-Frequenz (f<​sub>​clk</​sub>​) von 16MHz, einen Prescaler (N) von 1 und ein TOP-Value von 255. Damit ergibt sich eine Basisfrequenz von 62500Hz (16000000Hz/​256).
 +
 +Um z.B. den Ton a zu erzeugen (440Hz) brauchen wir also eine Schrittweite von 923:
 +
 +  * 65535/923*2 = 142 Schritte
 +  * 62500Hz/142 = 440Hz