PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RC5: eine Taste der Fernb., abwechselnd 2 verschiedene werte



MaN
02.09.2005, 13:59
Hi,

Ich versuche momentan einiges mit IR zu steuern (RC5)

ich benutze den code von Peter Fleury für RC5 decodieren.
(wenn's interessiert hier kann man's downloaden: http://homepage.sunrise.ch/mysunrise/peterfleury/avrgcc-examples.zip )

Jetzt ist mir aufgefallen, das wenn ich mehrmals auf die gleiche Taste auf der Fernbedienung drücke das abwechselnd 2 verschiedene Werte raus kommen.

Haben die beiden Werte irgend ein Zusammenhang? (kann man von einem wert durch eine bestimmte Rechnung auf den Anderen Wert kommen?)

oder sind es einfach 2 unterschiedliche Werte ohne Zusammenhang?

Wie kann ich das denn jetzt so Programmieren, das ich bei jedem drücken der Fernbedienungstaste im µc "reagieren" kann ohne das ich für jede Taste beide Werte speichere?

Gruß

MaN

MaN
02.09.2005, 14:22
scheint so als hätte ich meine Frage gerade selber geklärt:

wenn ich z.B. power drücke ergibt das einmal die Zahl 0x328C und einmal 0x3a8C

bei CH+ 0x3aa0 -- 0x32a0
bei vol+ 0x3a90 -- 0x3290


und immer so weiter.

Also ändert sich immer die 2. stelle entweder in 2 oder a.


Ich denke mal das ist dafür da das man erkennen kann ob man die Taste gedrückt hält oder neu gedrückt hat.

Aber wie kann ich jetzt die Zahl 0x328c in 0x3a8c umrechen?
reicht da einfach 0x328c + 0x0800 ?

SprinterSB
02.09.2005, 14:41
Ich denke mal das ist dafür da das man erkennen kann ob man die Taste gedrückt hält oder neu gedrückt hat.

Aber wie kann ich jetzt die Zahl 0x328c in 0x3a8c umrechen?
reicht da einfach 0x328c + 0x0800 ?

Genau: Um zu sehen, ob es der gleiche Testendruck ist (oder nur, weil zB das Signal kurzzeitig verdeckt war). RC5-Standard

Umrechnen kannst du mit ^ (XOR)

Bit kippen: a = b ^ 0x0800;
Bit setzen: a = b | 0x0800;
Bit Löschen: a = b & 0xf7ff;

MaN
02.09.2005, 14:47
was bedeutet bit kippen?

SprinterSB
02.09.2005, 15:00
Mit "kippen" meine ich toggeln, also auf 0 wenn's vorher 1 war und auf 1 wenn's vorher 0 war.
Plus (+) zu nehmen ist keine gute Idee, weil das nicht bitweise operiert. Für manche Werte setzt + zwar das Bit und - löscht es, aber bei nem Übertrag geht's in die Hose.

MaN
02.09.2005, 15:29
Viele Dank! sowas hab ich schon ewig gesucht :)