Nach der BASCOM-Hilfe (Version 2.0.7.5) können mit RC5sendExt erweiterte Codes von 64 bis 127 gesendet werden.
Nachdem ich aus der Hilfe nicht schlau wurde, es bei mir auch nicht auf Anhieb funktionierte und nicht die richtige Stelle im Internet fand, bin ich schließlich nach einigem Probieren zu folgenden Programmen gelangt:
Sendeprogramm
Code:
'#########################################################################################
'### ###
'### RC5-SENDEXT_V01.BAS ###
'### Demo zum Senden der RC5 extended Codes (Code 64 bis 127) ###
'### ###
'### Programm sendet Codes von 0 bis 127 an Adresse 1 ###
'### HW Aufbau analog wie in der Bascom Hilfe bei RC5send (RC5sendEXT) beschrieben ###
'### (!!! OC1A Pin als Output konfigurieren und dort die Sendediode anschließen !!!) ###
'### ###
'### IDE: Bascom Demo Version 2.0.7.5 ###
'### Author: Searcher (User im www.roboternetzt.de) ###
'### ###
'#########################################################################################
$regfile = "ATtiny24.DAT"
$framesize = 32
$swstack = 32
$hwstack = 36
$crystal = 8000000
Dim I As Byte 'Schleifenvariable
Dim Address As Byte 'Geräteadresse
Dim Commandcode As Byte 'RC5 Code
Config Porta.6 = Output 'IR SendeLED via Transistor an OC1A
Do
For I = 0 To 127
Address = 1
Commandcode = I
'Wenn Command größer 63 wird, lösche Bit 6 für extended RC5 Codes. Toggle Bit (Bit 5) wird hier immer auf 0 gesetzt)
If Commandcode > 63 Then Rc5sendext &B10000000 , Address , Commandcode Else Rc5sendext &B11000000 , Address , Commandcode
Waitms 250 'Wartezeit um gesendeten Wert am Empfänger zu kontrollieren
Next I
Loop
End 'end program
Anscheinend muß das Bit 6 für Bank Switching "zu Fuß" gesetzt werden. RC5sendExt erkennt nicht automatisch, daß der zu sendende Code größer 63 ist und aktualisiert das Bit nicht automatisch.
Empfängerprogramm
Code:
'#########################################################################################
'### ###
'### RC5-REC_V01.BAS ###
'### Empfängerprogramm zum RC5-SENDEXT_V01.BAS ###
'### ###
'### Programm empfängt die RC5 Codes von 0 bis 127 gesendet von RC5-SENDEXT_V01.BAS ###
'### Empfangenen Werte werden über Software UART an einen PC zur Kontrolle gegeben ###
'### HW Aufbau analog wie in der Bascom Hilfe bei GetRC5 beschrieben ###
'### ###
'### IDE: Bascom Demo Version 2.0.7.5 ###
'### Author: Searcher (User im www.roboternetzt.de) ###
'### ###
'#########################################################################################
$regfile = "ATtiny44.DAT" 'tatsächlicher µC im HW Aufbau war ATtiny44A
$framesize = 32
$swstack = 32
$hwstack = 36
$crystal = 8000000
Dim Address As Byte
Dim Commandcode As Byte
Config Rc5 = Pinb.2 , Wait = 2000 'TSOP an PB2
Enable Interrupts
Open "coma.3:4800,8,n,1" For Output As #1 'Software UART an PA3 zur Ausgabe der Werte am PC
Print #1 , "Waiting for RC5..." 'Lebenszeichen an PC schicken
Do
'Getrc5 empfängt auch die extended RC5 Codes
Getrc5(address , Commandcode)
If Address <> 255 Then 'wenn kein RC5 Signal anliegt, ist Address mit 255 belegt
Commandcode = Commandcode And &B01111111
Print #1 , Address ; "," ; Commandcode 'Empfangene Werte an PC schicken
End If
Loop
End 'end program
Falls jemand eine andere Lösung hat, wäre ich daran sehr interessiert.
Gruß
Searcher
Lesezeichen