PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RC5 auf LCD, kleines Verständisproblem



Olle_Filzlaus
28.11.2005, 22:04
Hallo,

ich habe das Beispielprogramm von Bascom bissel umgeändert damit es die RC5 Daten auf dem LCD Display ausgibt. funktioniert auch ganz gut.

nur eine kleine Sache verstehe ich nicht.

Ich gebe die Adresse und das Commando aus. Die Adresse ist jedesmal 0 und das Commando wechselt immer.

z.B. erstes mal die taste drücken gibt er den Wert 139 aus. zweites mal die Taste drücken gibt er die 11 aus. nochmal drücken wieder die 139.

warum das?? ich dachte die fernbedienung sendet auf jeder taste einen bestimmten code. nicht zwei.
weil das ist schlecht wenn man was steuern will und muss immer zweimal drücken.

hier mein beispielprgramm:



'******************************************
'* Atmega8 mit 8MHz Quarz *
'* Grundlage RC5 Empfang *
'******************************************

'************************************************* ******************************

$regfile "m8def.dat"
$crystal = 8000000

Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.4 , Db6 = Portd.5 , Db7 = Portd.6 , E = Portd.2 , Rs = Portd.0
Config Lcdbus = 4
Config Lcd = 16 * 2


$lib "mcsbyte.lbx"

Config Rc5 = Pinc.0

'************************************************* ******************************

Enable Interrupts

Dim Address As Byte , Command As Byte

Cursor Off
Cls
Lcd "Waiting for RC5."

Do
Getrc5(address , Command)

If Address = 0 Then
Command = Command And &B10111111
Locate 2 , 1
Lcd "Adr:" ; Address ; " Cmd:" ; Command ; " "
End If

Loop
End



thx for help

Arno

Marco78
28.11.2005, 23:01
Der RC5-Code arbeitet mit einem Togglebit.
Dieses Bit wechselt nach jedem Tastendruck.
Wenn du dauerhaft die 1 drücken würdest, und dein fernseher 999 Programmplätze hätte, wärst du schnell auf Programmplatz 111 weil das dauerhafte drücken von mehrmaligen drücken nicht unterschieden wurde.

Kurz gesagt, das ist richtig so.
Das löschen mit And &B10111111 funktionierte bei mir auch nicht.
Ich habe einfach wenn Command größer als 127 war -127 gerechnet.
Somit ergibt es immer den zugeordneten Wert für die Taste.

linux_80
28.11.2005, 23:09
Hallo,

das Togglebit ist auch eine Stelle weiter !
mit &B01111111 sollte es gehen.

Olle_Filzlaus
29.11.2005, 12:16
ok, das habe ich jetzt verstanden.

@linux_80: mit der kleinen anpassung funktioniert das jetzt super.

habe gestern einfach ne kleine abfrage gemacht, wenn er über 100 war habe ich den wert nicht angenommen, war zwar doof weil ich meistens zwei mal drücken müsste, aber ging.

nur deine kleine anpassung ist ja richtig super, der gleiche wert bei jedem tastendruck.

supi und danke

Arno