Hallo, ich habe das Problem, dass ich die Kombination aus einer Empfangsroutine für RC5-Code und einem Timer in Bascom nicht zum laufen bekomme. Der jetzige Code sieht so aus: '############################################################## $regfile = "m8def.dat" $crystal = 3686400 $baud = 57600 Ddrd = &B11111111 Ddrb = &B11111111 Config Timer2 = Timer , Prescale = 8 On Timer2 Timer_irq Enable Timer2 Enable Interrupts Config Rc5 = Pinc.5 Dim Zaehler As Byte Dim Address As Byte , Command As Byte Dim I As Byte Dim Led1 As Byte Dim Led2 As Byte Dim Led3 As Byte Dim D1 As Byte Dim D2 As Byte Dim D3 As Byte Dim D4 As Byte Dim D5 As Byte Dim D6 As Byte Dim D2_1 As Byte Dim D4_1 As Byte Dim D6_1 As Byte Zaehler = 0 Do 'Incr Zaehler Getrc5(address , Command) If Command = 16 Then Zaehler = Zaehler + 1 Elseif Command = 144 Then Zaehler = Zaehler + 1 Elseif Command = 17 Then Zaehler = Zaehler - 1 Elseif Command = 145 Then Zaehler = Zaehler - 1 End If 'Print Zaehler ; " " ; Led1 ; " " ; Led2 ; " " ; Led3 D1 = Zaehler 'aktueller Zählwert D2_1 = Zaehler - 40 '40 subtrahieren, weil in 6er-Schritten bis 240 D2 = Not D2_1 'Wert invertieren -> LED wird dunkler D3 = Zaehler - 80 D4_1 = Zaehler - 120 D4 = Not D4_1 D5 = Zaehler - 160 D6_1 = Zaehler - 200 D6 = Not D6_1 If Zaehler <= 40 Then Led1 = 240 Led2 = D1 * 6 Led3 = 0 Else If Zaehler <= 80 Then Led1 = D2 * 6 Led2 = 240 Led3 = 0 Else If Zaehler <= 120 Then Led1 = 0 Led2 = 240 Led3 = D3 * 6 Else If Zaehler <= 160 Then Led1 = 0 Led2 = D4 * 6 Led3 = 240 Else If Zaehler <= 200 Then Led1 = D5 * 6 Led2 = 0 Led3 = 240 Else If Zaehler <= 240 Then Led1 = 240 Led2 = 0 Led3 = D6 * 6 Else If Zaehler > 240 Then 'Restwert von 15 (255-240) "abschneiden" Led1 = 240 Led2 = 0 Led3 = 0 'LED bleibt dunkel End If End If End If End If End If End If End If Loop Timer_irq: 'Timer-Interrupt Timer2 = 237 I = I + 1 If I = 240 Then I = 0 End If If I >= Led1 Then Portd.0 = 0 Portd.1 = 0 Portd.2 = 0 Portd.3 = 0 Portd.4 = 0 Portd.5 = 0 End If If I < Led1 Then Portd.0 = 1 Portd.1 = 1 Portd.2 = 1 Portd.3 = 1 Portd.4 = 1 Portd.5 = 1 End If If I >= Led2 Then Portd.6 = 0 Portd.7 = 0 Portb.0 = 0 Portb.1 = 0 Portb.2 = 0 Portb.3 = 0 End If If I < Led2 Then Portd.6 = 1 Portd.7 = 1 Portb.0 = 1 Portb.1 = 1 Portb.2 = 1 Portb.3 = 1 End If If I >= Led3 Then Portb.4 = 0 Portb.5 = 0 Portc.0 = 0 Portc.1 = 0 Portc.2 = 0 Portc.3 = 0 End If If I < Led3 Then Portb.4 = 1 Portb.5 = 1 Portc.0 = 1 Portc.1 = 1 Portc.2 = 1 Portc.3 = 1 End If Return End '############################################################## Leider macht der µC bei diesem Programm gar nichts, zumindest nichts Offensichtliches. Ich habe schon rausgefunden, dass Timer0 nicht funktionieren kann, weil dieser intern von "GetRC5" verwendet wird. Deshalb Timer2, leider mit dem gleichen Effekt wie bei Timer0. Wenn ich den Timer ganz entferne und mir den RC5-Code von der Fernbedienung auf einem Terminalprogramm anschaue, dann funktioniert es so wie es soll, aber sobald der Timer drin ist passiert gar nichts mehr. Ich habe auch schon versucht die Geschwindigkeit für den Timer runter zu setzen, leider auch erfolglos. Wenn mir da jemand weiterhelfen kann, wäre ich sehr dankbar. Grüße Enrico
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.