Forum: Mikrocontroller und Digitale Elektronik FastPWM Mode 14 OC1B disconnect?


von Michael (Gast)


Lesenswert?

Hallo,

ich betreibe meinen Mega16 (mit F_CPU = 16MHz) im FastPWM Mode 14.

Hier die zugehörigen Einstellungen:
1
// Timer1 initialisieren
2
TCCR1A = (1<<COM1A0)|(1<<WGM11); 
3
TCCR1B = (1<<WGM12)|(1<<WGM13)|(1<<CS10);  
4
ICR1 = 204;    // Toggle-Wert für 78kHz
5
OCR1A = 102;    // Duty-Cycle 50%

Soweit funktioniert alles und ich becomme an OC1A(PD5) auch schön meine 
PWM
Allerdings benötige ich den Pin OC1B(PD4) als normalen Portpin.

Anhand der Tabelle im Datenblatt kann ich mit COM1A1 und COM1A0 hier 
nicht viel einstellen.

Gibt es eine Möglichkeit mein Vorhaben zu realisieren?


Viele Grüße
Michi

von Falk B. (falk)


Lesenswert?

@  Michael (Gast)

>Anhand der Tabelle im Datenblatt kann ich mit COM1A1 und COM1A0 hier
>nicht viel einstellen.

Wie wäre es mit 00? Denn COM1A1/0 hat mit WGMx nix zu tun.
RTFM.

MFG
Falk

von Jonathan S. (joni-st) Benutzerseite


Lesenswert?

Klar. Du musst TCCR.OC1B1:0 (oder so) nur auf "disconnect" stellen. Dann 
ist der Pin nicht mehr mit dem Timer verbunden und Du kannst ihn als 
normalen Portpin benutzen. Schau einfach mal im Datenblatt nach!


Gruss
Jonathan

von André W. (sefiroth)


Lesenswert?

Hi.

Ich verstehe Dein Problem nicht ganz... Mit (1<<COM1A0) weist Du den Pin 
OC1A(PD5) dem Timer zu. Das hat aber doch nichts mit Pin OC1B(PD4) zu 
tun. Solange Du die Bits COM1B0 und COM1B1 in Ruhe lässt bleibt PD4 ein 
ganz normaler IO-Pin.

Gruß,
André

von H.Joachim S. (crazyhorse)


Lesenswert?

Tja, beim AVR kannst die du Sonderfunktionen nicht auf einen beliebigen 
Pin routen.

Michael schrieb:
> Allerdings benötige ich den Pin OC1B(PD4) als normalen Portpin.

Ja und? Wo ist das Problem?

von Jonathan S. (joni-st) Benutzerseite


Lesenswert?

Jonathan Strobl schrieb:
> TCCR.OC1B1:0

Sorry, es ist COM1B1:0...

von Michael (Gast)


Lesenswert?

Hey,

danke für die vielen Antworten.
Ich hatte beim Lesen des Datenblattes einen Knoten im Kopf. Bin davon 
ausgegangen dass jeweils beide Portpins gekoppelt sind und somit nicht 
getrennt angesteuert werden können. Dies hat sich nun geklärt. Ein 
weitergrund für meine Frage war, dass ich an OC1A eben meine PWM bekomme 
aber OC1B/PD4 keinerlei Reaktion zeigt.

Habe deswegen auch nochmal den Timer komplett abgeschaltet um nur den 
Portpin zu testen. Jedoch ohne Erfolg(PD4 als Ausgang und auf high 
geschaltet). Messen kann ich am Port aber nur 0V.

Gibt es irgendeinen Grund wieso gerade dieser Pin keine Reaktion zeigt?
Ich habe keinerlei externe Komponenten an dem Port.

Grüße
Michi

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.