Forum: Mikrocontroller und Digitale Elektronik Atmega88, Timer2 und PD3


von Tom M. (tom1358)


Lesenswert?

Hallo,

ich habe hier gerade ein kleines Problem mit Timer2 und PD3 auf einem 
Atmega88:

An Port D sind Taster und Kontrolleds angeschlossen:
+5V-R470-LED-PDx-Taster-GND

Im Wechsel werden die Taster abgefragt, entprellt und der LED-Status 
wiederhergestellt bzw. nach Tastendruck angepasst.

Soweit funktioniert das auch wunderbar. Sobald ich allerdings Timer 2 
initialisiere,
kann ich PD3 nicht mehr als Ausgang benutzen. Der Pin bleibt high, 
unabhängig vom Eintrag in PORTD. Als Eingang konfiguriert werden 
Tastendrücke weiterhin erkannt.


TCCR2A = (1<<COM2B1)|(1<<COM2B0); // Mode 0 (Normal)
TCCR2B = (1<<CS20);                 // Clk/1 (488Hz PWM)
OCR2A = 255;
OCR2B = 1;
TIMSK2 = (1<<OCIE2B);

Ich vermute, dass das mit "OC2B, Output Compare Match output" zu tun 
hat. Im Datenblatt steht:
The PD3 pin can serve as an external output for the Timer/Counter0 
Compare Match B. The PD3 pin has to be configured as an output (DDD3 set 
(one)) to serve this function. The OC2B pin is also the output pin for 
the PWM mode timer
function.

Heißt das jetzt, dass PD3 prinzipiell nicht als Ausgang verwendbar ist, 
sobald ich Timer2 benutze? Ich bin jetzt seit einer gefühlten Ewigkeit 
dabei das Datenblatt zu wälzen, und habe die ganze Zeit das Gefühl die 
entscheidende Stelle zu überlesen.

Tom

von Frigi (Gast)


Lesenswert?

Tom M. schrieb:
> OCR2B = 1;

Der macht genau das!

von Stefan E. (sternst)


Lesenswert?

Tom M. schrieb:
> Heißt das jetzt, dass PD3 prinzipiell nicht als Ausgang verwendbar ist,
> sobald ich Timer2 benutze?

Nur wenn du den Timer explizit anweist, den Pin zu benutzen.
1
TCCR2A = (1<<COM2B1)|(1<<COM2B0);

von AVR (Gast)


Lesenswert?

Lies mal was COM2Bn = 0b11 macht. Pwm an PD3!

von Tom M. (tom1358)


Lesenswert?

Argh! Der Wald und die Bäume!

Bits 5:4 – COM2B1:0: Compare match output B mode
These bits control the Output Compare pin (OC2B) behavior. If one or 
both of the COM2B1:0 bits are set, the OC2B output overrides the normal 
port functionality of the I/O pin it is connected to.

Da hab ich mich durch meinen eigenen Kommentar erfolgreich verrannt.

Danke fürs Zaunpfahlprügeln! :)

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.