OC0A Toggle on Compare Match

OP #4622077
Lesenswert?
• ▲
▼
Hallo Forum,
Bei meinem Atmega328 soll der OC0A (PD6) Pin bei einem Compare Match 
togglen, tut dies allerding nicht. Kann mal jemand drüber schauen welche 
Bits ich hier falsch setze?
1
DDRD = 0xff;
2
OCR0A = 180;
3
TCCR0A |= (1<<COM0A0) | (WGM01);
4
TCCR0B |= (1<<CS02) | (1<<CS00);

Comparematch mit 100Hz bei 18.432Mhz.

Ich steh grad aufm Schlauch...

Vielen Dank schonmal.
Grüße
Gast #4622081
Lesenswert?
• ▲
▼
Hallo,

wo lernt man denn so etwas unübersichtliches hinzuschreiben ?
1
DDRD = 0xff;
2
OCR0A = 180;
Wer soll das für Dich überprüfen ?

Wer setzt die Zählerregister für dich auf die passenden Werte?
(Firma: matzetronics) #4623251
Lesenswert?
• ▲
▼
Tobias N. schrieb:
> Wieso ist das so?

In der Arduino Welt wird der Timer0 erstmal zur Erzeugung der millis() 
benutzt und ist deswegen schon programmiert, bevor dein Programm 
überhaupt aufgerufen wird.
https://arduino-info.wikispaces.com/Timers-Arduino
Mit dem = statt |= setzt du komplett neue Werte in die Timer Register, 
statt nur mit den schon gesetzten zu verodern - deswegen klappts jetzt. 
Allerdings gehen die millis() nun nicht mehr.

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