PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mal wieder PWM Probleme.....



x8r
17.05.2007, 16:20
Hi,
ich möchte ein PWM signal mit folgendem code erzeugen.
Aber leider habe ich die ganze Zeit nur 5V anliegen, anstatt (zum Test) abwechselnd 0V und 5V. Woran könnte das liegen?

$regfile = "m8def.dat"
$crystal = 1000000

Config Pinb.1 = Output

Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1



Do
Compare1a = 1024
Wait 2
Compare1a = 0
Wait 2
Loop



Schonmal Danke für eure Hilfe!
Gruß
Jan

Jon
17.05.2007, 16:54
Lässt sich das direkte PWM-Signal wirklich als Spannung messen?
Soweit ich weiß nicht.

jon

x8r
17.05.2007, 17:03
Ich meß es ja hinter einem tiefpassfilter.
Aber bei compare1A=0 muss er eine Spannung von 0V haben, da er ja keinen high pegel hat.
Könnte es vllt an Config Pinb.1 = Output liegen?
Gruß
Jan

Jon
17.05.2007, 17:21
Nur so am Rande: Der "End" Befehl fehlt. O:)
Es sollte eigentlich "Config Portb.1 = Output" heißen, sollte aber auch nicht soo viel ausmachen.
Vielleicht hilft es auch etwas das "Config..." nach der PWM Initialisierung zu schreiben. Glaube ich aber kaum.

jon

x8r
17.05.2007, 17:29
das ist nur ein kleiner Teil aus dem code den ich rauskopiert habe. Die restlichen 6kB habe ich nicht mitgepostet...
Daran könnte es liegen, ich versuchs mal.
Gruß
Jan

x8r
17.05.2007, 19:47
so, ich habe noch ein bisschen rumprobiert, aber es funktioniert leider immernoch nicht.
Allerdings bekomme ich die Fehlermeldung "Can't find HW-register [DDR1",
wenn ich "config Pinb.1=Output" durch "config Portb.1=Output" ersetze.
Ich benutze das erste mal PWM, muss ich evtl irgendwelche fusebits verändern oder so?
Gruß
Jan

Jon
17.05.2007, 19:57
Fusebits musst du keine umstellen.
"Config Pinx.y = Output" stimmt doch. Da habe ich mich vertan.
Hat der Timer1 des ATMega8 eine 10bit Auflösung? Schau das nochmal im Datenblatt nach.
Probiere mal anstatt dem Tiefpass eine LED anzuschließen. Leuchtet die heller, bzw. dunkler, dann funktioniert das mit dem PWM. Dann hast du im Tiefpass einen Fehler.

jon

x8r
17.05.2007, 20:17
Laut Datenblatt kann der timer1 10bit. Ich habs mit 8bit versucht, es funzt auch nicht.
Mit dem LED test komme ich zum gleichen ergebnis, es liegen die ganze zeit volle 5V an.
Habt ihr irgendeine Vermutung?
Gruß
Jan

x8r
17.05.2007, 20:28
so, ich habe den Fehler gefunden......
Ich habe dem compare1a 1024 und 0 zugeordnet.
1024 ist kein gültiger 10bit Wert, es geht ja von 0 bis 1023.... so ein doofer Fehler. Mit 1023 funktioniert es. *freu*
Danke für eure Hilfe!
Gruß
Jan