Hallo an alle, habe mich durch das Soft-PWM-Tutorial geschlagen (http://www.mikrocontroller.net/articles/Soft-PWM) und bin nun an einen Punkt gelangt, an dem ich gerne mehr als nur einen 8-Bit-Port als Ausgang ansprechen würde. Standardmäßig wird in der 3. Version der Implementierung Port "B" als Ausgang genutzt.("#define PWM_PORT PORTB" und "#define PWM_DDR DDRB") Ich würde nun gern währen der Laufzeit den Port gern mal auf Port "D" ändern. Hat jemand einen Ansatz, wie ich das umsetzten kann? Ich habe es schon mit lokalen Variablen versucht, aber nie wirklich verstanden, die ich die Konstanten richtig ersetze bzw. die globale Variable richtig initialisiere. Gruß
So müsste es gehen:
1 | static volatile uint8_t* pwm_port = &PORTB; |
2 | #define PWM_PORT (*pwm_port)
|
3 | |
4 | // Port ändern zur Laufzeit
|
5 | pwm_port = &PORTD; |
Du kannst aber sogar zwei Ports auf einmal bedienen, wenn Du das Programm an den in den Kommentaren beschriebenen Stellen erweiterst. Dann brauchst Du nichts umschalten ...
Deine Lösung hat leider nicht funktioniert. Und im Code finde ich zwar die Kommentare " // zusätzliche PWM-Ports hier setzen", jedoch kann ich mir nicht ganz vorstellen, wie diese zusätzliche PWM-Ports ausehen bzw. wie diese gesetzt werden.
Okay, muss mich korrigieren, dein Codeschnipsel funktioniert doch... war gestern etwas zu spät ;-) Dank dir für deine Hilfe!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.