PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PWM Programm funktioniert nicht:-(



dremler
09.11.2006, 12:15
Halloich wollte mich jetzt an die PWM heranwagen....dazu habe ich das Programm von eurer wiki seite hier genommen und entsprechend meinen bedürfnissen abgeändert......nur leider funktioniert es nun nicht......wo liegt der fehler?

' Hardware PWM mit Timer1

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

Config Pind.5 = Output

Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 1

Do
Compare1a = 205
Loop

End

meine Änderungen:
-Taktfrequenz angepasst
-ausgabe pin geändert
-den 2. ausgang entfernt...

ich hoffe ihr könnt mir helfen.....

milkbubi
09.11.2006, 13:57
Woran erkennst du, dass es nicht funktioniert. Geht die LED an oder nicht.
Wenn ja probier mal extreme werte wie 1 oder 254 für compare.

dremler
09.11.2006, 14:16
die betreffende led geht gar nicht an......

hab jetzt noch etwas hinzugefügt:



' Hardware PWM mit Timer1

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

Config Pind.5 = Output

Portd.5 = 1
Waitms 15
Portd.5 = 0

Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 1

Do
Compare1a = 1
Loop

End

mit

Portd.5 = 1
Waitms 15
Portd.5 = 0

lasse ich die led kurz aufleuchten was auch funktioniert........die led und der ausgang funktionieren also-->es muss am programm liegen

kolisson
09.11.2006, 18:35
also wenn es sich um einen mega8 handelt, denke ich, dass du mit portd.5 nicht weiter kommst. meines erachtens musst du den ausgang für timer 1a auf pin 15 = pb1 = oc1a erwarten.

gruss

kolisson
09.11.2006, 18:41
und übrigens mit prescale = 1 haste ne ziemlich hohe frequenz. versuch zunächst mal prescale 1024.

dremler
09.11.2006, 19:20
ach soooooo dann ist das die HARDWARE PWM und nicht software seitig......aha..........wie mache ich das dann softwareseitig sodass ich einen beliebigen pin ansteuern kann? kann mir da einer ein (komentiertes) beispielprogramm schreiben? wäre nett!

mfg

kolisson
09.11.2006, 21:53
vielleicht mit toogle oder pulsout

milkbubi
10.11.2006, 10:09
Das war ein bisschen komplizierter, hab da aber mal irgendwo ein Bsp. Code gefunden für eine RGB beleuchtung über Software PWM, das war glaub ich auch hier irgendwo => SUFU Softwarepwm

mfg milkbubi

kolisson
10.11.2006, 10:35
ich denke, ne einfache pwm müsste sich so ergeben:

config porta.1 as output
dim zaehler as byte '<- wichtig, dass es byte ist
dim trigger as byte

do
if zaehler > trigger then set porta.1 else reset porta.1
zaehler = zaehler +1
loop


***** das ist zwar nich frequenzstabil, sollte aber ein pwm-signal erzeugen, dessen h-time vom wert trigger gesteuert wird.
wichtig ist, dass zaehler als byte definiert ist, damit es nach 255 überläuft und wieder auf null springt.

gruss

kolisson
10.11.2006, 10:39
achso ... vergessen ... zum anfang sollte man trigger noch nen wert zuweisen.. vielleich 120
gruss

Jigger
10.11.2006, 19:48
was heißt denn am Anfang?

kolisson
10.11.2006, 20:12
also nochmal meine idee mit dem anfang

config porta.1 as output
dim zaehler as byte '<- wichtig, dass es byte ist
dim trigger as byte

trigger=127

do
if zaehler > trigger then set porta.1 else reset porta.1
zaehler = zaehler +1
loop


jetzt habe ich dem trigger auch nen wert zugewiesen. das hatte ich in dem ersten posting vergessen. in deinem ursprünglichen beispiel nimmst du ja pind.5 also änderst du mein porta.1 in portd.5 und du hast ne art pwm.