Soft-PWM: Ausgangsport während der Laufzeit ändern ?

OP #3036771
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ß
#3036785
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 ...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren