Forum: Mikrocontroller und Digitale Elektronik OC2-Pin (ATMega8) macht nicht das was er soll


von Jan S. (spongebob)


Lesenswert?

Moin!
Ich versuche gerade mit dem ATMega8 ein PWM-Signal mit dem Timer2 zu 
erzeugen. Also Meine Schaltung besteht eigentlich nur aus einem Quarz, 
paar Kondensatoren und dem ISP Interface. Naja so wie ich das hier im 
Forum in einigen Diskussionen gelesen habe, stört das ISP interface beim 
PWM eigentlich nicht. Aber mein PWM kommt nicht mal, wenn ich das 
Programmierdingens abstöpsel.
Ich habe auch ein Compare-Interrupt aktiviert und der Interrupthandler 
wird auch aufgerufen, nur der doofe PWM-Pin (OC2) macht irgendwie nix.

Hier noch mal den Code, mit dem ich den Timer initialisiere:
1
void PWM_init(void)    //Timer/Counter0 is used
2
{
3
  TCCR2 |= ((1<<WGM21)|(1<<WGM20));  //Fast PWM
4
  TCCR2 |= (1<<COM21);  //Clear OC2 on compare (non-inverting)
5
  TCCR2 |= (1<<CS20);    //No prescaling (CLK/1)
6
  TIMSK |= (1<<OCIE2);  //enable Interrupt on compare
7
  TCNT2 = 0x00;      //Set countervalue to zero
8
  OCR2 = 0x0f;      //Initialize Compare value
9
}

Ich hoffe Ihr könnt mit meinen Angaben was anfangen und ich hab nur 
einen dummen Fehler übersehen.

Grüße Jan

von Ingo (Gast)


Lesenswert?

Du hast die Pins nicht als Ausgang gesetzt ;)

von Jan S. (spongebob)


Lesenswert?

Oh man... DANKE!
Auf so einen Dummen Fehler und so eine schnelle Antwort hab ich gehofft 
;-)

Grüße
Jan

von Stefan (Gast)


Lesenswert?

Das ist aber gemein. Denn beim UART brauche ich den TxD Pin nicht auf 
Ausgang zu konfigurieren.

von Karl H. (kbuchegg)


Lesenswert?

Stefan schrieb:
> Das ist aber gemein. Denn beim UART brauche ich den TxD Pin nicht auf
> Ausgang zu konfigurieren.

LOL.
Ja das ist eine 'Falle'.
Dann auch beim besten Willen fällt mir nichts ein, warum man einen 
Pullup-Widerstand mittels PWM laufend zu und abschalten sollte :-)
Aber: sollte man das jemals brauchen - man kann es machen.

von Ingo (Gast)


Lesenswert?

Im ernst, da kommt der geschaltete Pullup raus? Ich dachte eher nichts, 
weil die PWM Stufe nur auf den Ausgang geschaltet wird, wenn es ein 
Ausgang ist.

von Spess53 (Gast)


Lesenswert?

Hi

>Dann auch beim besten Willen fällt mir nichts ein, warum man einen
Pullup-Widerstand mittels PWM laufend zu und abschalten sollte :-)

Da wird kein Pull-Up-Widerstand gestaltet. das Signal geht ohne Umweg 
über das Port-Register direkt an den Pin.

>Im ernst, da kommt der geschaltete Pullup raus?

Nein.

MfG Spess

von c-hater (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:

> Dann auch beim besten Willen fällt mir nichts ein, warum man einen
> Pullup-Widerstand mittels PWM laufend zu und abschalten sollte :-)

Mir auch nicht.

> Aber: sollte man das jemals brauchen - man kann es machen.

Nö. Wenn der Timer die Kontrolle über den Pin hat, ist nix mit Pullup. 
Dann geht nur drive oder high-Z.

Und das ist auch gut so. Wäre es anders, hätte ich sicher schon diverse 
Leistungshalbleiter in blaue Wölkchen verwandelt. Ich meine: Noch 
wesentlich mehr als so schon. ;o)

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.