PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LED PWM / LED Fader - Testprog für RN-Control



Supafly
18.03.2009, 16:33
Aus reinen Test- bzw. Lernzwecken wäre es schön ein kleines LED Fader Prog für die RN-Control zu haben.

Dazu hat Uwe DK1KQ vor einer Weile schonmal was geschrieben, nämlich diesen Code hier, ich habe lediglich ein paar Sachen an die RN-Control angepasst.

Bei mir leuchtet die LED jedoch einfach nur auf, kein Fading. Was stimmt nicht??

### Korrigiert


$regfile = "m32def.dat"
$crystal = 16000000

Dim A As Word
Dim B As Word
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down , Prescale = 1

Config Pind.5 = Output

Do

For A = 255 To 10 Step -10
Pwm1a = A
Waitms 50
Next

For A = 10 To 255 Step 10
Pwm1a = A
Waitms 50
Next

Loop
End

Sauerbruch
18.03.2009, 19:57
Config Pinc.0 = Output

Hast Du das "nur so" übernommen, oder vielleicht doch die LED an den Port C.0 angeschlossen?
Beim Mega32 ist der OC1A-Ausgang nämlich der Port D.5...

Supafly
18.03.2009, 20:04
nein das habe ich geändert. pinc.0 ist die LED1 auf dem Board, pinc.7 ist LED8 ...

Sauerbruch
18.03.2009, 20:36
Okay - die LED hämgt also an D.5.
Stimmen denn die 16 MHz? Ansonsten könnten nämlich die vermeintlichen 50 Millisekunden sehr viel länger dauern, was Extrem-Zeitlupentempo zur Folge hätte...

Der Code sieht soweit ziemlich o.k. aus...

Im Zusammenhang mit dem Mega32 liest man hier öfter noch was über das JTAG-Fuse, das wohl öfter mal Ungemach bereitet. So ´ne druckreife Erklärung was das genau ist habe ich leider nicht parat, aber Du könntest das entsprechende FuseBit ja mal löschen (ist im Original-Zustand gesetzt).

So´n einfaches Programm, das die Zeiten und den Ausganspin checkt, hast Du schon versucht? Etwa so...

DDRD.5=1

Do
Toggle PortD.5
waitms 500
Loop

Mehr fällt mir im Moment auch nicht ein...

Supafly
19.03.2009, 02:39
die 16Mhz stimmen, ist doch wie gesagt die RN Control.

Habe es auch schon mit PortA1 etc. ausprobiert, ist das selbe. Auch egal was ich bei den ms einstelle, die LED leuchtet einfach nur normal.

Habe auch JTAG mal von disabled auf enabled umgestellt - kein effekt.

Sauerbruch
19.03.2009, 07:06
die 16Mhz stimmen, ist doch wie gesagt die RN Control.

Sorry - die kenn´ ich nicht. Ich hab´ ein etwas angestaubtes, aber herrlich großes Steckboard vom Flohmarkt :-)


Habe es auch schon mit PortA1 etc. ausprobiert, ist das selbe.

Aber jetzt muss ich noch mal ganz blöd fragen: Die LED ist schon an D.5, oder? Das ist nämlich der einzige Pin, an dem es funktionieren kann..

Supafly
19.03.2009, 12:23
oww jetzt funktioniert es! Um zu wissen warum es nur an D5 geht kenn ich mich noch nicht genug aus :( aber wie steuert man dann mehrere LEDs an?!

Sauerbruch
19.03.2009, 13:03
Na also - geht doch :-)

Beim Hardware-PWM zählt der Zähler immer rauf und runter. Wenn der Zähler den Wert im "Output-Compare"-Register (OCR) erreicht, wird ein bestimmter, definierter (!!) Pin getoggelt. Man kann zwar wählen, ob dieser Pin beim raufzählen auf High gesetzt und beim runterzählen auf Low gesetzt werden soll, oder eben umgekehrt (Compare = Clear Up bzw. Clear down). Aber welcher Pin getoggelt wird - das kann man nicht beeinflussen.

Dieser Pin ist beim Mega32 (Du ahnst es wahrscheinlich schon...) - D.5! :-)

Ein sehr gutes Kapitel zum Thema PWM findest Du hier:
https://www.roboternetz.de/wissen/index.php/Bascom_und_PWM

Viel Spaß noch beim rumexperimentieren!!

guenter1604
19.03.2009, 19:20
viele Kanäle unterschiedlich dimmen geht bedingt mit Software-PWM oder mit einem zusätzlichen PWM-Chip. Gute Erfahrungen hab ich mit dem PCA9635 gemacht

Klingon77
19.03.2009, 22:15
hi,

mit dem ATmega168 kannst du 6 Hardware PWM´s realisieren.

Reicht das?


liebe Grüße,

Klingon77