PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mega32 PWM was mach ich falsch ?



Ceos
17.07.2008, 15:18
ISR(SIG_OUTPUT_COMPARE0)
{
OCR0 = 125;
}

int main()
{
sei();
// DDRD = (1<<PB3);
// Vertippt
DDRB = (1<<PB3);
TIMSK = (1<<OCIE0);
TCCR0 = (1<<WGM00) || (1<<WGM01) || (1<<COM00) || (1<<COM01) || (1<<CS00)||(1<<CS01);
OCR0 = 125;
while(1);
return 0;
}


aber ich bekomme kein signal an PB3/oc0

linux_80
17.07.2008, 15:21
Hi,

so auf den ersten Blcik würde ich sagen das falsche DDR erwischt ?

Und OCIE2 in TIMSK ist, wie schon vermuten lässt, für den Timer 2 !

Ceos
17.07.2008, 15:24
ja ne,sryy beim eintippen vertippt, iss DDRB

ja sorry hab mich vertan, habs vor dem post noch auf timer2 versucht, gleiches ergebnis

interrupt KOMMT, aber der pin bleibt dauerhaft LOW

linux_80
17.07.2008, 15:32
Wie schnell taktet der AVR?

Teiler ist auf 64, dH. alle 64 AVR-Takte zählt der Timer eins weiter...

Die ISR wird ja hier eigentlich (noch) nicht gebraucht.

Ceos
17.07.2008, 15:34
8MHz, aber was hat das damit zu tun ?! der pin sollte THEORETISCH immer die polarität wechseln COM00 COM01 aber er tut es einfach nicht .. ist PB3 denn auch der richtige ? ich versteh echt nich was ich falsch mache

linux_80
17.07.2008, 16:02
aah,
jetzt hab ichs gesehen, die Oders zwischen den einzelnen Bits sind falsch !

da darf nur ein | sein, nicht so ||
bei TCCR0
#-o

Ceos
17.07.2008, 16:05
neee oder hab ich so gepennt ??? moment.... ok .... build ..... burn ... .... .... .... .... .... .... ... *kopf anheb* *mit hand aushol* *in großem bogen hand richtung sitrn bewegen* WATSCH .... dein smilie asgt eigentlich genau dasselbe :p

DANKE