So Problem ist einfach verschwunden, fragt bitte nicht warum.
Das Programm wurde überholt, aber die PWM ruckelt komigerweise,
und wenn ich aus der PWM das program mwechsel bleiben die RGBs stehen.
Langsam überleg ich schon es einfach in die Tonne zu werfen, aber ist ist ja so gut wie fertig.Code:$regfile = "m16def.dat" $framesize = 32 $swstack = 32 $hwstack = 40 $crystal = 16000000 $baud = 9600 Waitms 50 'Einschwingzeit '//////////Ports Konfigurieren\\\\\\\\\\ Config Porta = Output 'M1 Config Portc = Output 'M2 Config Portd.6 = Output 'RGB-Rot Config Portd.3 = Input 'TSOP Porta.4 = 1 'Enable1 active = low Portc.4 = 1 Enable1 Alias Porta.4 Enable2 Alias Portc.4 Portd.6 = 1 'RGB Led ausschalten Portc.7 = 1 Portc.6 = 1 '//////////Timer konfigurieren, Vorteiler auf 1\\\\\\\\\\ Config Timer0 = Timer , Prescale = 1 '//////////RC5 konfigurieren mit Timer 2\\\\\\\\\\ Config Rc5 = Pind.3 , Timer = 2 '/////////Sub Deklarieren\\\\\\\\\\\\\ Declare Sub Wait_and_get(byval Ms As Byte) '//////////Definiere den Interrupthandler\\\\\\\\\\ On Ovf0 Tim0_isr Enable Interrupts Enable Timer0 'Timer einschalten Dim R1 As Byte ' In diese Variablen muss man Dim G1 As Byte ' im Hauptprogram die gewnschten Dim B1 As Byte ' Ausgabewerte laden Dim Z As Word 'Zļæ½ler Dim Ri1 As Byte 'Hilfsregister Dim Gi1 As Byte Dim Bi1 As Byte '//////////Variablen fr Hauptprogramm\\\\\\\\\\ Dim A As Byte 'Schleifenvariable RGBs Z = 0 G1 = 0 R1 = 0 B1 = 0 Dim I As Byte 'Schleifenvariable Lauflicht Dim I2 As Byte 'Schleifenvariable Lauflicht Dim I3 As Byte 'Schleifenvariable Lauflicht Dim Ir_address As Byte Dim Ir_command As Byte Wait 1 '//////////Einstellungen\\\\\\\\\\ Const Freilauf = 20 'Lauflicht Freilaufzeit 'Normaldurchlauf = 2 'Anzahl der Standarddurchlļæ½fe '//////////Hauptprogramm <Start>\\\\\\\\\\ Waitms 200 Print "Starte Hauptprogramm" Standby: Do Call Wait_and_get(5) 'Dļæ½mchen drehen und auf Befehl warten Loop '//////////Hauptprogramm <Ende>\\\\\\\\\\ 'Programm1: RGB LEDs Programm1: Do 'Rot For A = 0 To 254 Incr R1 Call Wait_and_get(0) Next Call Wait_and_get(10) For A = 0 To 254 Decr R1 Call Wait_and_get(0) Next 'Grn For A = 0 To 254 Incr G1 Call Wait_and_get(0) Next Call Wait_and_get(10) For A = 0 To 254 Decr G1 Call Wait_and_get(0) Next 'Blau For A = 0 To 254 Incr B1 Call Wait_and_get(0) Next Call Wait_and_get(10) For A = 0 To 254 Decr B1 Call Wait_and_get(0) Next 'Blau/Grn For A = 0 To 254 Incr B1 Incr G1 Call Wait_and_get(0) Next Call Wait_and_get(10) For A = 0 To 254 Decr B1 Decr G1 Call Wait_and_get(0) Next 'Blau/Rot For A = 0 To 254 Incr B1 Incr R1 Call Wait_and_get(0) Next Call Wait_and_get(10) For A = 0 To 254 Decr B1 Decr R1 Call Wait_and_get(0) Next 'Grn/Rot For A = 0 To 254 Incr G1 Incr R1 Call Wait_and_get(0) Next Call Wait_and_get(10) For A = 0 To 254 Decr G1 Decr R1 Call Wait_and_get(0) Next 'Grn/Rot/Blau For A = 0 To 254 Incr G1 Incr R1 Incr B1 Call Wait_and_get(0) Next Call Wait_and_get(10) For A = 0 To 254 Decr G1 Decr R1 Decr B1 Call Wait_and_get(0) Next Loop 'ende des 1. programms 'Programm2: Lauflicht Programm2: Do For I = 0 To 15 Porta = I Enable1 = 0 Call Wait_and_get(Freilauf) Enable1 = 1 Next I For I = 0 To 11 Portc = I Enable2 = 0 Call Wait_and_get(Freilauf) Enable2 = 1 Next I Call Wait_and_get(0) Loop 'ende des 2. programms 'Programm3: Lauflicht2 Programm3: Do For I = 0 To 15 Porta = I Enable1 = 0 Waitms 10 Enable1 = 1 Next I For I = 0 To 11 Portc = I Enable2 = 0 Waitms 10 Enable2 = 1 Next I Call Wait_and_get(0) Loop 'ende lauflicht 2 Programmr: R1 = 255 Goto Standby '/////////////////Funktion zum RC5 empfangen und warten\\\\\\\\\\\\\\\ 'Sub zum empfangen und warten Sub Wait_and_get(byval Ms As Integer) Getrc5(ir_address , Ir_command) 'Empfangen 'Wenn was empfangen dann reagieren If Ir_address = 0 Then Ir_command = Ir_command And &B01111111 'entfernt das togglebit If Ir_command = 17 Then Goto Programm1 If Ir_command = 18 Then Goto Programm2 If Ir_command = 19 Then Goto Programm3 If Ir_command = 20 Then Goto Programmr ' If Ir_command = irgendwas Then Goto Standby End If Waitms Ms 'warten End Sub '//////////Interupthandler Timer0 <Start>\\\\\\\\\\ Tim0_isr: If Z = 0 Then 'Gewnschte Ausgabewerte an Ri1 = R1 'Hilfsregister bergeben Gi1 = G1 Bi1 = B1 Z = 255 End If Z = Z - 1 'PWM Kanļæ½e 'RGB LEDs If Ri1 > 0 Then Portd.6 = 0 Else Portd.6 = 1 End If Decr Ri1 If Ri1 = 255 Then Ri1 = 0 If Gi1 > 0 Then Portc.7 = 0 Else Portc.7 = 1 End If Decr Gi1 If Gi1 = 255 Then Gi1 = 0 If Bi1 > 0 Then Portc.6 = 0 Else Portc.6 = 1 End If Decr Bi1 If Bi1 = 255 Then Bi1 = 0 Return '//////////Interupthandler Timer0 <Ende>\\\\\\\\\\
Hier mal der Schaltplan, kann es sein das es an den transen liegt?
War schonmal einer kaputt.
http://dastefan.da.funpic.de/Srv/sch.JPG







Zitieren

Lesezeichen