| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste  Überarbeitung | Vorhergehende Überarbeitung | 
| projects:4e4th:4e4th:start:msp430g2553_experimente [2025-08-16 16:06]  – [PWM-Signal am RC-Glied] Zeichung durchh eigene ersetzt. mka | projects:4e4th:4e4th:start:msp430g2553_experimente [2025-08-16 16:20] (aktuell)  – [Schrittmotor] Bildquelle angegeben, wiki, CC. mka | 
|---|
| So ein PWM (Puls Width Modulation) ist eine feine Sache. Man braucht dazu einen Zähler (timer), Register, um Zählerstände zu vergleichen, und einen Portpin, den man an- und ausschalten kann. In unserer MCU ist das bereits eingebaut. | So ein PWM (Puls Width Modulation) ist eine feine Sache. Man braucht dazu einen Zähler (timer), Register, um Zählerstände zu vergleichen, und einen Portpin, den man an- und ausschalten kann. In unserer MCU ist das bereits eingebaut. | 
 |  | 
| {{ :projects:4e4th:4e4th:start:msp430g2553_experimente:updowm_pwm.jpg?300|PWM mit timer A erzeugen}}Der Timer TA1 kann im //up/down-modus// betrieben werden. Dabei zählt der timer von NULL bis zu dem Wert ''T'' im Register TA1CCR0 hoch, und ab da wieder runter. Unterwegs trifft der Zähler dabei den Vergleichswert ''V'' im Register TA1CCR2. Dabei wird dann jedesmal ein Flag getoggelt. Macht man ''V'' halb so groß wie ''T'', bekommt man ein Tastverhältnis von 50%. Nun braucht man nur noch dieses Flag an den Portpin zu übertragen, schon hat man sein PWM-Signal. Da der Timer unabhängig vom Programm im Hintergrund läuft und auch die Übertragung des Flags an den Port von der Hardware gemacht wird, braucht man sich nicht mehr darum zu kümmern. Sobald der Timer gestartet wurde, läuft das automatisch endlos ab, bis man den Timer wieder anhält.  | {{ :projects:4e4th:4e4th:start:msp430g2553_experimente:updowm_pwm.jpg?300|PWM mit timer A erzeugen}}Der Timer TA1 kann im //up/down-modus// betrieben werden. Dabei zählt der timer von NULL bis zu dem Wert ''T'' im Register TA1CCR0 hoch, und ab da wieder runter. Unterwegs trifft der Zähler dabei den Vergleichswert ''V'' im Register TA1CCR2. Dabei wird dann jedesmal ein Flag getoggelt. Macht man ''V'' halb so groß wie ''T'', bekommt man ein Tastverhältnis von 50%. Nun braucht man nur noch dieses Flag an den Portpin zu übertragen, schon hat man sein PWM-Signal.((Abb.: Zitat aus dem Hndbuch.)) Da der Timer unabhängig vom Programm im Hintergrund läuft und auch die Übertragung des Flags an den Port von der Hardware gemacht wird, braucht man sich nicht mehr darum zu kümmern. Sobald der Timer gestartet wurde, läuft das automatisch endlos ab, bis man den Timer wieder anhält.  | 
 |  | 
| Das wurde im SWEEP benutzt. Da werden einfach nur der Timer und der Portpin konfiguriert, die Zählerwerte gesetzt, das PWM gestartet und dann gewartet, derweil PWM läuft und die Rechteckwelle am P2.2 macht. Dann wird T und V  verkleinert und das Ganze beginnt von vorn. So 'sweept' man durch die PWM-Frequenzen. Dabei ist es schön, dass die beteiligten Register des Timers wie Variablen gelesen und geschrieben werden können.  | Das wurde im SWEEP benutzt. Da werden einfach nur der Timer und der Portpin konfiguriert, die Zählerwerte gesetzt, das PWM gestartet und dann gewartet, derweil PWM läuft und die Rechteckwelle am P2.2 macht. Dann wird T und V  verkleinert und das Ganze beginnt von vorn. So 'sweept' man durch die PWM-Frequenzen. Dabei ist es schön, dass die beteiligten Register des Timers wie Variablen gelesen und geschrieben werden können.  | 
| Wer sowas noch nicht so kennt, mag hier mal schauen, da hab ich das mal vorexerziert:\\ | Wer sowas noch nicht so kennt, mag hier mal schauen, da hab ich das mal vorexerziert:\\ | 
| [[projects:4e4th:4e4th:start:msp430g2553_experimente:TimerA_und_Port_P2_Block_Schema]] | [[projects:4e4th:4e4th:start:msp430g2553_experimente:TimerA_und_Port_P2_Block_Schema]] | 
|   |  | 
|   | [[https://www.ti.com/lit/pdf/slau144|Handbuch]] zur MCU | 
 |  | 
 |  | 
| Und hier ist mein [[projects:4e4th:4e4th:start:msp430g2553_experimente:Schrittmotor|Forthprogramm für den Schrittmotor]]. Damit werden in experimenteller Weise die Antriebe des [[http://en.wikipedia.org/wiki/Stepper_motor|Steppers]] realisiert, die im englischsprachigen Wikipedia erklärt sind. (Im deutschen Wiki war es leider nicht so verständlich dargelegt.)   | Und hier ist mein [[projects:4e4th:4e4th:start:msp430g2553_experimente:Schrittmotor|Forthprogramm für den Schrittmotor]]. Damit werden in experimenteller Weise die Antriebe des [[http://en.wikipedia.org/wiki/Stepper_motor|Steppers]] realisiert, die im englischsprachigen Wikipedia erklärt sind. (Im deutschen Wiki war es leider nicht so verständlich dargelegt.)   | 
 |  | 
|   | (Abb.: Misan2010 - Own work; CC BY 3.0; [[https://en.wikipedia.org/wiki/Stepper_motor#/media/File:Drive.png]]) | 
 |  | 
 |  |