hi,
nach einem kurzen Zwischenspiel:
https://www.roboternetz.de/phpBB2/ze...754&highlight=
schlich ich mich heute Abend in die Werkstatt und bastelte etwas weiter.
Die Welt der PWM`s erschließt sich mir nun langsam.
Nach vielem Lesen im Buch von Roland Walter, dem Netz, Datenblatt, einiger Beispielprogramme, sowie eurer tatkräftigen Hilfe konnte ich 3 LED´s aufeinanderfolgend mit unterschiedlicher Geschwindigkeit aufleuchten und ausfaden lassen \/
Anbei das kleine Programm, welches ich "verzapft" habe.
Falls Ihr Fehler entdecken könnt, lasst es mich bitte wissen.
Es sind mir noch nicht alle Aspekte meines "Geschreibsels" bis in´s letzte Detail klar.
Insbesondere die Register machen mir da noch etwas zu schaffen.
Es scheint ja eben dort sehr viele Kombinationen zu geben; je nachdem, welches Bit gerade gesetzt ist.
Deshalb habe ich mich auf die "Bascom-Variante" festgelegt (vorerst).
Code:
'Hardware PWM Lauflicht by Klingon77
'12.März 2009
$regfile = "m168def.dat" 'Compilerdefinition
$crystal = 16000000 'Quarzfrequenz
'PWM Ausgabepins
Rot Alias Ocr0a 'PD 6
Gruen Alias Ocr0b 'PD 5
Gelb Alias Ocr2b 'PD 3
'Laufvariablen für Farbwechsel (256 Stufen)
Dim Laufrot As Byte
Dim Laufgruen As Byte
Dim Laufgelb As Byte
'Pausenwert in "mS" während der Farbwechselschleifen (max: 65535 mS)
Dim Pauserot As Word
Dim Pausegruen As Word
Dim Pausegelb As Word
'Ports initialisieren:
Ddrb = &B00000000 'PB alle Eingang
Ddrc = &B00000000 'PC alle Eingang
Ddrd = &B01101000 'PD3, PD5 & PD 6 Ausgang; Rest Eingang
'Timer einstellen(Timer 0 & 2 sind 8-Bit Timer):
'
'Timer0 auf PWM stellen
'Timer0 PWM Ausgabe A(PD 6) & B (PD 5) einstellen
'Clear Down; LED wird mit höherem Variablenwert heller
'Vorteiler = 8
Config Timer0 = Pwm , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8
'Timer2 auf PWM stellen
'Timer2 PWM Ausgabe A(PD 3) einstellen
'Clear Down; LED wird mit höherem Variablenwert heller
'Vorteiler = 8
Config Timer2 = Pwm , Compare B Pwm = Clear Down , Prescale = 8
Enable Timer0 'Timer0 starten
Enable Timer2 'Timer2 starten
Do 'Endlosschleife: Beginn
Pauserot = 2 'Pausenzeit im roten Farbwechsel
Pausegruen = 4 'Pausenzeit im grünen Farbwechsel
Pausegelb = 6 'Pausenzeit im gelben Farbwechsel
'---------------------------------------------------
For Laufrot = 1 To 255 'PWM Wert hochzählen
Rot = Laufrot ' Ocr0a (PD 6) = Laufrot-Wert
Waitms Pauserot 'Pause für ROT entsprechend Variable
Next Laufrot 'Nächster "Step" in der Schleife
For Laufrot = 254 To 1 Step -1 'PWM Wert runterzählen
Rot = Laufrot ' Ocr0a (PD 6) = Laufrot-Wert
Waitms Pauserot 'Pause für ROT entsprechend Variable
Next Laufrot 'Nächster "Step" in der Schleife
'---------------------------------------------------
For Laufgruen = 1 To 255 'PWM Wert hochzählen
Gruen = Laufgruen ' Ocr0b (PD 5) = Laufgruen-Wert
Waitms Pausegruen 'Pause für GRÜN entsprechend Variable
Next Laufgruen 'Nächster "Step" in der Schleife
For Laufgruen = 254 To 1 Step -1 'PWM Wert runterzählen
Gruen = Laufgruen ' Ocr0b (PD 5) = Laufgruen-Wert
Waitms Pausegruen 'Pause für GRÜN entsprechend Variable
Next Laufgruen 'Nächster "Step" in der Schleife
'---------------------------------------------------
For Laufgelb = 1 To 255 'PWM Wert hochzählen
Gelb = Laufgelb ' Ocr2a (PD 3) = Laufgelb-Wert
Waitms Pausegelb 'Pause für GELB entsprechend Variable
Next Laufgelb 'Nächster "Step" in der Schleife
For Laufgelb = 254 To 1 Step -1 'PWM Wert runterzählen
Gelb = Laufgelb ' Ocr2a (PD 3) = Laufgelb-Wert
Waitms Pausegelb 'Pause für GELB entsprechend Variable
Next Laufgelb 'Nächster "Step" in der Schleife
'---------------------------------------------------
Loop 'Endlosschleife: zum Schleifenanfang
End 'Programmende (da Endlosschleife nicht benötigt)
Fotos gibt es leider noch keine, da meine Werkstatt zur Zeit aussieht wie ein Schlachtschiff nach der "Schlacht um Midway"
Wenn ich das Ganze etwas sauberer aufgebaut habe und mal wieder zum aufräumen komme werden sie prompt nachgelierfert.
Nochmals Dank für eure Hilfe bis hierher \/
liebe Grüße,
Klingon77
Nachtrag:
Den Threadtitel habe ich angepasst.
Falls jemand ähnliche Probleme hat, findet er auch was in der SUFU.
Lesezeichen