PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bascom Erweiterte RC5 Codes mit BASCOM senden



Searcher
26.06.2013, 19:38
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


'################################################# ########################################
'### ###
'### 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


'################################################# ########################################
'### ###
'### 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