Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Mikro wieża Denon RCD-M33 + pilot RC-999 jaki protokół IR?

sword74 27 Gru 2007 19:44 2777 6
  • #1 27 Gru 2007 19:44
    sword74
    Poziom 9  

    Cześć,

    Orientuje się może ktoś jaki jest zaimplementowany protokół IR w mikro wieży Denon'a RCD-M33 (pilot RC-999)? Przekopałem sieć ale nie mogę tego namierzyć ;/

    http://www.denon.pl/site/frames_main.php?main=prod&ver=&MID=3&sub=3&action=detail&Pid=248

    Oscyloskop będę miał pod ręką dopiero za kilka dni i do tego czasu nie ruszę z robotą jak nie znajdę tej informacji.

    Pozdrawiam,
    sword

    0 6
  • #2 31 Gru 2007 19:48
    Nawigator
    Poziom 33  

    To my też poczekamy, pilot nietypowy.
    Pzdr. N.

    0
  • #3 01 Sty 2008 17:36
    sword74
    Poziom 9  

    Nie mam jeszcze oscyloskopu ale ściągnąłem ramkę przez kartę dźwiękową i wygląda tak jak w załączniku.

    Każda komenda jest wysyłana 3 razy (transmisja + dwie powtórki), w załączonym pliku zapisany jest rozkaz 'volume up' (bez powtórzeń).

    Cała ramka ma ok. 23ms

    Jutro potestuję na oscyloskopie cyfrowym to będę wiedział coś więcej. Tymczasem próbowałem dopasować coś z tych protokołów ale dokładnie takiego samego nie widzę:

    http://www.sbprojects.com/knowledge/ir/ir.htm

    Chociaż może trochę podobny do JVC bez AGC i podział czasu inny

    "0" -> 1.05ms -> 1/3
    "1" -> 2.10ms -> 1/6

    Wychodzi mi na oko 350us na jednostkę czasową.

    Nie wiem też jaka jest nośna, odbiera niby na TSOP1736 ale nie jestem pewny czy nie zbiera tego z okolicy 36kHz(?). Sprawdzę dokładniej jak podepnę jakąś fotodiodę.

    Pozdrawiam,
    sword

    0
  • #4 02 Sty 2008 11:06
    sword74
    Poziom 9  

    Ciąg dalszy testów:

    Czasówki potwierdzone na oscyloskopie przy czym te wartości nie są jakieś super deterministyczne, np. szerokość aktywnego impulsu 350us waha się +/-10us.

    Dekodowanie ramki, rozkaz Power ON (1 naciśnięcie generuje 3 paczki):

    1 - 0 0 1 1 0 0 0 0 1 0 1 1 0 0 0 0
    2 - 0 0 1 1 0 1 1 1 0 1 0 0 1 1 1 1
    3 - 0 0 1 1 0 0 0 0 1 0 1 1 0 0 0 0

    Jak widać jedna paczka składa się z 16 bitów, a w drugim powtórzeniu ostatnie 11 bitów jest zanegowane.

    Pierwszy bit będzie bitem startu i zawsze jest "0".

    Przy przytrzymaniu klawisza (repetycja) nic się nie zmienia, każda następna paczka leci z negacją jak wyżej i jest wysyłana po czasie 40ms od zakończenia poprzedniej.

    Po bicie startu lecą pewnie 4 bity adresu, a potem dane:

    1 - 0 0 1 1 0 0 0 0 1 0 1 1 0 0 0 0

    Pozdrawiam,
    sword

    0
  • #6 02 Sty 2008 14:58
    sword74
    Poziom 9  

    Spoko, dzięki za dodatkowe informacje. Myślę, że to co już mam wystarczy mi do napisania nadajnika. Samo szczegółowe rozpracowanie protokołu w moim wypadku nie jest koniczne, odczytam kody klawiszy i zachowam w tablicy.

    Chcę zrobić jakiś zewnętrzny moduł na procku, który będzie służył jako porządna funkcja 'sleep' z długotrwałym wyciszaniem dźwięku. Ta wbudowana po prostu odcina dźwięk i wyłącza sprzęt (z klikiem przekaźnika) co jest - co najmniej - irytujące. Zamiast zasypiać zastanawiam się kiedy mi to pstryknie ;)

    Pozdrawiam,
    sword

    0
  • #7 05 Sty 2008 15:43
    sword74
    Poziom 9  

    Nadajnik ramki mam już gotowy, udało mi się ustalić jeszcze kilka szczegółów:

    - nośna 38kHz, wypełnienie/duty cycle 66% (stan aktywny "1" trwa dłużej)
    - czas pomiędzy powtórzeniami paczki jest liczony od rozpoczęcia poprzedniej, a nie jej zakończenia i wynosi 67ms - czyli każda następna paczka jest wystawiana po tym czasie niezależnie od zmiennej długości takiej paczki.
    - ostatni 16 bit nie może nieść informacji ponieważ nie ma kolejnego zbocza i nie można odróżnić czy jest to "1" czy "0", zakładam wiec, że jest to bit stopu i jest zawsze "0"
    - na ramkę składają się 3 paczki w tym druga ma zanegowane ostatnie 11 bitów (to znaczy jak pisałem wyżej, ostatni bit nie jest chyba negowany)

    Czyli paczka wyglądała by ostatecznie tak:

    0 0110 01011001000 0

    start adres dane stop

    Cała ramka:

    00110010110010000 <67ms> 00110101001101110 <67ms> 00110010110010000

    (czas 67ms liczony od bity startu do bitu startu)

    Reszta informacji odnośnie czasów i długości bitów jakie podawałem jest poprawna.

    Nadajnik napisany jest na PICa, jakby kogoś interesowało to mogę się podzielić kodem (cały automat wysyłający ramkę zaimplementowany jest na przerwaniach - kod nieblokujący);

    Pozdawiam,
    sword

    0