PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Suche Code für Mega128 (PWM mit OC3A)



31.03.2009, 21:28
Hallo,
hat jemand ein Stückchen bascom Code für mich. Ich muss beim Mega128 über OC3A eine PWM Frequenz ausgeben.

Irgendwie gelingt es mir nicht mit diesem Code


Config Timer3 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up , Prescale = 1
Pwm1a = 100
do
loop

Wo ist der Fehler?

31.03.2009, 21:29
Hatte mich vertippt. Den Code meinte ich:


Config Timer3 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up , Prescale = 1
Pwm3a = 100
do
loop

Jaecko
31.03.2009, 21:32
Ist der jeweilige Pin als Ausgang gesetzt?

31.03.2009, 21:39
Ja das hab ich

Config Pine.4 = Output
pwmport Alias Porte.4

Jaecko
31.03.2009, 21:41
Schreib mal Config PortE.4 statt PinE.4.
Aus irgend nem Grund gibts da anscheinend nen Unterschied. Aber keine Ahnung warum. (Zumindest bei mir mag er Config Pinx.y nicht; nur Portx.y)

31.03.2009, 22:17
Nö, das mit dem Port stimmt schon. Wenn ich pwmport=1 eingebe geht motor ja an. Nur PWM geht nicht.

thewulf00
31.03.2009, 22:28
Probier bitte trotzdem mal PortE statt PinE. Viele sagen, dass nur PortE geht.

Jaecko
31.03.2009, 22:30
Evtl noch ne Möglichkeit: Beim M128 gibts doch irgendwie diesen M103-Kompatibilitätsmodus. Ist der evtl. noch ausgewählt? (bei den Fusebits)

31.03.2009, 22:43
Nein der stimmt auch! Es funktioniert ja auch alles, bis auf PWM an OC3A

Jaecko
31.03.2009, 22:53
Gehen die Kanäle 3B und 3C? (sofern Testbar)?
Wenn nein, dann stimmt irgendwo beim Setzen der Timer-Register nicht.
Hüpf mal in den Simulator, lass den mal bis nach die beiden Zeilen


Config Timer3 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up , Prescale = 1
Pwm3a = 100

laufen und schau mal im IO-Window nach, was die folgenden Register für Werte haben:
ETIMSK
TCCR3A
TCCR3B
TCCR3C

Evtl. findet sich da dann der "Schuldige" (Falscher Wert irgendwo)

31.03.2009, 23:52
Ich habs gefunden! Portverwechslung :oops: