Forum: Mikrocontroller und Digitale Elektronik Soft-PWM: Ausgangsport während der Laufzeit ändern ?


von Thomas J. (rrurr)


Lesenswert?

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ß

von Fabian O. (xfr)


Lesenswert?

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 ...

von Thomas J. (rrurr)


Lesenswert?

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.

von Thomas J. (rrurr)


Lesenswert?

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
Noch kein Account? Hier anmelden.