różne kody tego samego przycisku pilota
różne kody tego samego przycisku pilota
słuchajcie, mam drobny zgryz. otóż mam pilota z tego zestawu co na fotce, pracuje on w RC5 i mam pytanie:
czemu przy każdorazowym naciskaniu przycisku zmienia się komenda wysyłana z owego pilota?
nie są to bardzo różne komendy tylko dwie na przemian dla danego przycisku. na przykład dla przycisku V> (ten niebieski w prawo) są komendy 144 i 16 które się zmieniają co naciśnięcie.
czemu przy każdorazowym naciskaniu przycisku zmienia się komenda wysyłana z owego pilota?
nie są to bardzo różne komendy tylko dwie na przemian dla danego przycisku. na przykład dla przycisku V> (ten niebieski w prawo) są komendy 144 i 16 które się zmieniają co naciśnięcie.
-
marcin1326
- -
- Posty: 10
- Rejestracja: 13 cze 2007, 14:59
- Lokalizacja: Kraków
- Kontakt:
To jest ta sama komenda. Zmienia się tylko tak zwany "togglebit". Wklep sobie do kalkulatora choćby windowsowego liczby 16 i 144 a zobaczysz że różnią się one tylko jednym bitem.
Zapewne Twój odbiornik przyłącza ten togglebit do komendy. Należy go albo programowo ignorować albo wykorzystać fakt że jest on zmieniany na przeciwny przy każdym wciśnięciu przycisku.
Zapewne Twój odbiornik przyłącza ten togglebit do komendy. Należy go albo programowo ignorować albo wykorzystać fakt że jest on zmieniany na przeciwny przy każdym wciśnięciu przycisku.
-
marcin1326
- -
- Posty: 10
- Rejestracja: 13 cze 2007, 14:59
- Lokalizacja: Kraków
- Kontakt:
rzeczywiście masz rację. Najlepiej by było jakbyś podesłał jakąś dokumentacje tego sterownika. ale...
Zauważ też że 16 binarnie to także 00010000
natomiast 144 to 10010000
komenda w kodzie RC5 składa się z sześciu bitów, natomiast bajt ma 8 bitów, więc pewnie ktoś chcąc wykorzystać cały bajt dodaje togglebit jako MSB (czyli po ludzku na początku)
Więc tak na moje oko wystarczy ignorować tylko MSB.
PS. Zapewne naciskasz przycisk "volume+", spróbuj nacisnąć np. "program -", powinno wyskoczyć 33 i 161.
zajrzyj też tu: http://www.sbprojects.com/knowledge/ir/rc5.htm
Zauważ też że 16 binarnie to także 00010000
natomiast 144 to 10010000
komenda w kodzie RC5 składa się z sześciu bitów, natomiast bajt ma 8 bitów, więc pewnie ktoś chcąc wykorzystać cały bajt dodaje togglebit jako MSB (czyli po ludzku na początku)
Więc tak na moje oko wystarczy ignorować tylko MSB.
PS. Zapewne naciskasz przycisk "volume+", spróbuj nacisnąć np. "program -", powinno wyskoczyć 33 i 161.
zajrzyj też tu: http://www.sbprojects.com/knowledge/ir/rc5.htm
zgadza się i jedno i drugie. natomiast przy projekcie jaki zamierzam realizować najzwyczajniej napiszę na przykład:marcin1326 pisze:PS. Zapewne naciskasz przycisk "volume+", spróbuj nacisnąć np. "program -", powinno wyskoczyć 33 i 161.
Kod: Zaznacz cały
If command=16 or command=144 then
....
....
....
End ifEDIT:
wystarczy napisać:
Kod: Zaznacz cały
shift command , left , 3-
marcin1326
- -
- Posty: 10
- Rejestracja: 13 cze 2007, 14:59
- Lokalizacja: Kraków
- Kontakt:
-
marcin1326
- -
- Posty: 10
- Rejestracja: 13 cze 2007, 14:59
- Lokalizacja: Kraków
- Kontakt:
Nie łatwiej użyć AND?
Kod: Zaznacz cały
...
command = command AND &B00111111
...
IF command = 16 THEN
...
END IF
...
istnieje, sprawdziłem, przycisk nie ma wpływu na działanie, znaczy nie uruchamia układu. tak więc shift jak najbardziej daje radę.marcin1326 pisze:Przy shiftowaniu tracisz jeszcze bit MSB komendy, co spowoduje, że układ będzie reagował niepotrzebnie na przycisk o numerze bitowo 110000 czyli 48, o ile taki istnieje na pilocie.
-
keruseykaryu
Zależy jak sobie to kompilator zapisze. Jedno pewne jest: And jest bardziej czytelne, po kilku dniach będziesz się zastanawiał po co Ci ten Shift był.sta pisze:Nie ma to tutaj wielkiego znaczenia ale instrukcja shift powinna być szybsza
Oj, się kolega rozpędził. Jak już to tylko 7 bit wypadałoby maskować. Na bicie szóstym jest przesyłany ExtRC5 bit. http://www.sbprojects.com/knowledge/ir/rc5.htmmarcing pisze:command = command AND &B00111111