Servus.
Ich stehe hier vor einem Phänomen, welches ich mir nicht ganz erklären kann.
Ich habe lange rumgedockert und gesucht um nun endlich eine RC5 IR Fernbedieung auswerten zu können.
Als Controllerboard verwende ich das RN-Control.
Programmiere mit BASCOM.
IR Fernbedienung: Phillips
Empfänger: Keine Ahnung. Hab ich aus einem Technisat Reciever ausgebaut.
Der funktionierende Polling basierte Code:
Code:
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600
Config Rc5 = Pina.1
Enable Interrupts
Dim Address As Byte , Command As Byte
Print "Waiting for RC5..."
Sound Portd.7 , 400 , 450 'BEEP
Sound Portd.7 , 400 , 250 'BEEP
Sound Portd.7 , 400 , 450 'BEEP
Do
Getrc5(address , Command)
Command = Command And &B01111111
If Address < 255 Then
Print Address ; " " ; Command
End If
Loop
End
Der Code funktioniert vom feinsten.
Dieser oben gezeigte Code, war eig. nur um die generelle Funktionalität zu testen. Also: Zwekc erfüllt.
Da das Polling aber überaus unschön und unpraktikabel ist, wollte ich das ganze Interrupt gesteuert umsetzen. ... Dies ist mein bisheriger Code:
Code:
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600
$lib "mcsbyte.lbx"
Config Rc5 = Pind.3
On Int0 Int0_int
Enable Int0
Enable Interrupts
Dim Address As Byte , Command As Byte , Rc5_flag As Bit
Sound Portd.7 , 400 , 450 'BEEP
Sound Portd.7 , 400 , 250 'BEEP
Sound Portd.7 , 400 , 450 'BEEP
Do
Print "Hallo"
Waitms 1000
Loop
End
'Lesen der RC5 Codes
Int0_int: 'Interrupt Handler For Int1
Disable Int0
Address = 0
Command = 0
Getrc5(address , Command)
Command = Command And &B01111111
Print Address ; " " ; Command
Enable Int0
Return
Hier funktioniert so ziemlich garnichts. In der Mail ist ein Print eingebaut, welcher jede Sekune "Hallo" sagt.
Wenn das Programm startet funktioniert die Ausgabe durch Print auch. Sobald einmal die IR Fernbedienung betätigt wird, scheint sich alles wegzuhängen.
Es wird keine Ausgabe des Empfangs getätigt. Das Programm springt nicht mehr in die Mainschleife zurück.
Hat da wer ne Idee woran das liegen könnte?
Lesezeichen