dass freut mich :)
Druckbare Version
dass freut mich :)
Mist PWM geht nicht wirklich.
Rot fadert hoch und er tut nichts.. paar Sekunden spter startet er einfach neu.
Am RS232 kommt dann sowas an:
LR Befehl
Starte Hauptprogramm
IR
Bricht er vielleicht zusammen?
Das Teil macht mich langsam bekloppt.
Zudem wollte ich gerade die
Waitms 20 in Programm 2 mit Call Wait_and_get(20) ersetzen (um halt auch wrend der Programmausfhrung das Programm wechseln zu knnen), dann luft das Lauflicht bis zur Hlfte und das wars.
Jedesmal jedoch anders.
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