Änderungen

Aus Hackerspace Ffm
Wechseln zu: Navigation, Suche

ArduinoVariablePWMFrequenz

731 Byte hinzugefügt, 20:36, 2. Nov. 2017
Die bits COM1A0:1, COM1B0:1 und COM1C0:1 kontrollieren das Verhalten der Output Compare Pins OCnA, OCnB und OCnC (Stehen in den Pinoutdiagrammen) .
Stehen die bits auf 0, arbeitet der Port normal und unsere anderen Einstellungen haben keinen Effekt. Wir wählen hier 1 0 für inverting. Alles weitere später.
 
[[Datei:COMnx0-1.PNG]]
 
Also pin OC1A (pin 11) auf inverting mode und am Ende WGM01:11.
<pre>TCCR1A = 0b11000010;</pre>
Und dann WGM12:13 und den prescaler auf 1 (kein prescaler).
<pre>TCCR1B = 0b00011001;</pre>
 
Das Timerregister TCNTn wird bei jedem Takt von BOTTOM 0 um den Wert 1 nach oben gezählt. Erreicht der Inhalt den Wert TOP, startet er wieder mit BOTTOM.
Wie in der Tabelle zu sehen können wir TOP über das 16 bit Register ICRn festlegen.
Damit legen wir unsere Auflösung, Frequenz und Periodendauer fest.
Frequenz: 20.000 Hz
Auflösung: 800 Takte (16.000.000 / 20.000)
Periodendauer: 5 ns (1 / 20.000)
<pre>ICR1 = 800;</pre>
 
Der Duty Cycle wird über das Register OCRnx festgelegt.
<pre>OCR1A = 200;</pre>
688
Bearbeitungen