PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mega16 PWM am OC2 über Timer2 - keine Ausgabe am Pin?



BlooD
22.07.2007, 10:44
Moin,

ich möchte mit dem Timer2 am ATMega16 die Helligkeit einer LED steuern. Eigentlich kein Problem - normalerweise.
Untenstehendes Programm soll den Timer entsprechend konfigutrieren. Zusätzlich hab ich noch ein umschalten des PD0 drin, damit ich in der Simulation auch was sehe.

Die Simulation im AVR Studio schaltet aber nur PIND des OC2 ein und aus, aber nicht PORTD. DDRD ist natürlich entsprechend gesetzt.

Fehler in der Simulation kann ich eigentlich ausschließen, denn der µC macht nix am PD7. Weiß jemand Rat?



int main(void) {

DDRD |= (1<<PD7 | 1<<PD0);


TCCR2 |= ( 1<<CS20 | 1<<WGM20 | 1<<WGM21 | 1<<COM21);
TCNT2=0x00;
OCR2 = 64;


while(1){
PORTD ^= (1<<PD0);
}


}

linux_80
22.07.2007, 11:29
Hallo,

ich weiss jetzt nicht ob ich das Problem verstanden habe, aber Du willst an PortD7 (IO-Register) sehen wenn der Timer den Ausgang umschaltet, im Simulator ?!

Ich würde sagen, das es schon so passt, wenn man das nur am PinD7 sieht, weil das auch der Eingang des Ports ist. Die Herrschaft über den Port hat ja der Timer, deshalb wird an PortD7 nix grossartig passieren :-k

s.o.
22.07.2007, 21:18
Es kann sein, dass ich mich irre, aber hast Du JTAG schon deaktiviert (Fuses)? Daran könnte es eventuell liegen.

linux_80
22.07.2007, 21:29
Hi s.o.

JTAG ist beim Mega16 (und 32) von PortC2-5

BlooD
22.07.2007, 21:58
Hmm du hast vollkommen recht, linux80...

Ich hätte schwören können, das ich bei nem anderen Programm mal den PORTD7 habe blinken sehen, ebenfalls mit PWM.

Und da meine LED vorhin dunkel blieb und ich kein Oszi habe bin ich davon ausgegangen, das irgendwas faul ist. Kurios ist, das ein einfaches einschalten des PD7 die LED leuchten lies - hardwaremäßig hab ich nix geändert und die Software ist auch wieder gleich wie vorhin --> Aber diesmal gehts.

Die Fuses waren auch die ganze Zeit okay.

Naja, vielen Dank jetzt gehts ja!