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.

90S2313 - transmisja podczerwieni kodu RC5

neos87 13 Wrz 2004 01:49 4159 15
  • #1 13 Wrz 2004 01:49
    neos87
    Poziom 10  

    Mam pytanie: jak zrealizować transmisję kodu RC5 używając procka 90S2313 i środowiska Bascom AVR?

    Próbowałem już to wykonać wg pomocy zamieszczonej w Bascomie AVR(komenda "Getrc5" i odbiornik podczerwieni odpowiednik TFMS5360).
    Sprawdzałem kilka pilotów telewizyjnych i brak reakcji. Może trzeba wykorzystać inne rozwiązanie niż w pomocy?

    Proszę o porady szczególnie tych którzy to realizowali

    za wszystko dziękuję

    pozdrawiam

    0 15
  • #2 13 Wrz 2004 09:15
    Johny_Szczecin
    Poziom 17  

    dokładnie tak jak mówisz, tylko, że musisz wszystko obsłużyć w przerwaniu - w nim dać tą instrukcję GETRC5, albo sprawdzać stan nozki INT1 albo INT0 programowo. W ustawieniach kompilatora musisz tez ustawić na której nożce jest podłączony odbiornik.

    0
  • #3 13 Wrz 2004 18:05
    neos87
    Poziom 10  

    Johny_Szczecin napisał:
    dokładnie tak jak mówisz, tylko, że musisz wszystko obsłużyć w przerwaniu - w nim dać tą instrukcję GETRC5, albo sprawdzać stan nozki INT1 albo INT0 programowo. W ustawieniach kompilatora musisz tez ustawić na której nożce jest podłączony odbiornik.


    Dzięki za dobre chęci, ale chyba pomyliły się Tobie Bacom'y i procesory.
    89C2051 owszem wykorzystuje przerwania INT0 lub INT1 przy odbiorze RC5, a w Bascom'ie 8051, w ustawieniach kompilatora, ustawia się nóżkę, do której jest podłączony odbiornik podczerwieni. Ale ja mówię o Bascom AVR i 90S2313. Tutaj sprawa jest troszeczkę inna - w pomocy nic nie jest mówione o przerwaniach INT oraz w przykładzie programu z pomocy też ich nie ma(przerwań).

    Chyba się nie mylę...?

    Jeśli się z czymś nie zgodzasz lub masz coś do dodania to proszę napisz

    pozdrawiam

    0
  • #4 13 Wrz 2004 20:03
    Johny_Szczecin
    Poziom 17  

    Dawno w Bascomie AVR nie robiłem - i faktycznie w ustawieniach kompilatora nie ma nic o nozce pod którą podłączasz odbiornik, ale należy ją zadeklarować poleceniem config rc5 - co zresztą pewnie korzystając z pomocy zrobiłeś.

    Jednak nadal problem jest w tym, że odbiór kodu musi zostać zainicjowany - i właśnie dlatego MUSISZ sprawdzać stan nogi programowo i wykryć zbocze opadające albo wykorzystać do tego przerwanie - może być nawet przerwanie od tego Timera0 (ustaw jako licznik wyzwalany zewn.) - opisanego w helpie, który służy do odmierzania czasu w tejże procedurze. W obsłudze przerwania zamieszczasz dopiero polecenie GETRC5.

    0
  • #5 13 Wrz 2004 20:14
    Owsik
    Poziom 22  

    Upewnij sie najpierw ze piloty z ktorych korzystasz nadaja w ogole w standardzie RC-5. Z tego co wiem w RC-5 nadaja np. piloty do urzadzen Philipsa :)

    0
  • #6 13 Wrz 2004 21:32
    zumek
    Poziom 39  

    Witam.
    Teraz moje 3 grosze.
    Jeśli korzystasz z przykładowego program RC5.bas to MUSI działać,bo u mnie działa.
    Istnieją 2 możliwości że program nie będzie działał,zakładając że hardware masz sprawne.
    1)Zadeklarowana częstotliwość procka różni się od faktycznej.
    2)Błąd w podłączeniu TFMS-a(np.zamienione końce układu lub podłączony pod zły pin)
    A rady dotyczące przerwań i timerów można schować między bajki.
    Bascom AVR sam wybiera timer0(dla 2313) ładuje odpowiednie dane(częstotliwość przerwań) i w tych przerwaniach informuje informuje procedure getrc5 że pora odczytać pin,który zadeklarowałeś przez config RC5 i tylko w przypadku nieprawidłowej częstotliwości(inna od zadeklarowanej częst. procka) nie można prawidłowo zinterpretować danych Z TFMS-a.A procedurę przerwania też oczywiście sam tworzy.

    To na tyle.

    Pzdr.
    Piotrek Sz.

    0
  • #7 13 Wrz 2004 23:06
    neos87
    Poziom 10  

    Johny_Szczecin napisał:
    Dawno w Bascomie AVR nie robiłem - i faktycznie w ustawieniach kompilatora nie ma nic o nozce pod którą podłączasz odbiornik, ale należy ją zadeklarować poleceniem config rc5 - co zresztą pewnie korzystając z pomocy zrobiłeś.

    Jednak nadal problem jest w tym, że odbiór kodu musi zostać zainicjowany - i właśnie dlatego MUSISZ sprawdzać stan nogi programowo i wykryć zbocze opadające albo wykorzystać do tego przerwanie - może być nawet przerwanie od tego Timera0 (ustaw jako licznik wyzwalany zewn.) - opisanego w helpie, który służy do odmierzania czasu w tejże procedurze. W obsłudze przerwania zamieszczasz dopiero polecenie GETRC5.


    Odczówam, że sensownie Piszesz, ponieważ po pierwszych próbach, faktycznie coś zaczyna działać. Nie do końca rozumiem co oznacza ustawienie Timera0 jako licznik wyzwalany zewnętrznie (interpretuje to w następujący sposób:na postoju Timer0 oczekuje na wyzwolenie - czyli nie był Enable;w momencie stanu niskiego na nóżce, uruchamia się procedura INT0, a w niej wyzwala Timer0 - Enable Timer0 - w ten spodób zostaje wyzwolony zewnętrznie). Napisałem pierwszy programik, który udowadnia, że odbiór jest możliwy(reaguje na sygnały z pilota). Wiem, że jest w nim masa błędów, ale Jakbyś był tak uprzejmy, Rzyć na niego okiem.
    Jeśli nie byłoby to problemem, proszę o króciutki programik, który wg Ciebie mógłby pokazywać adres i rozkaz z pilota. Oto mój programik:

    Dim Address As Byte , Command As Byte , A As Byte , B As Byte
    Config Timer0 = Timer , Prescale = 1
    Config Rc5 = Pind.2
    Enable Interrupts
    Enable Int0
    On Int0 Przerw
    On Timer0 Teraz
    Cls
    Lcd "Waiting for RC5"

    Do
    If A <> Address Then
    Cls
    Lcd "Adres: " ; Address
    Lowerline
    Lcd "Rozkaz: " ; Command
    End If
    If B <> Command Then
    Cls
    Lcd "Adres: " ; Address
    Lowerline
    Lcd "Rozkaz: " ; Command
    End If
    A = Address : B = Command
    Loop : End

    Przerw:
    Disable Int0
    Enable Timer0
    Enable Int0
    Return

    Teraz:
    Disable Timer0
    Getrc5(address , Command)
    Return

    0
  • #8 13 Wrz 2004 23:23
    neos87
    Poziom 10  

    zumek napisał:
    Witam.
    Teraz moje 3 grosze.
    Jeśli korzystasz z przykładowego program RC5.bas to MUSI działać,bo u mnie działa.
    Istnieją 2 możliwości że program nie będzie działał,zakładając że hardware masz sprawne.
    1)Zadeklarowana częstotliwość procka różni się od faktycznej.
    2)Błąd w podłączeniu TFMS-a(np.zamienione końce układu lub podłączony pod zły pin)
    A rady dotyczące przerwań i timerów można schować między bajki.
    Bascom AVR sam wybiera timer0(dla 2313) ładuje odpowiednie dane(częstotliwość przerwań) i w tych przerwaniach informuje informuje procedure getrc5 że pora odczytać pin,który zadeklarowałeś przez config RC5 i tylko w przypadku nieprawidłowej częstotliwości(inna od zadeklarowanej częst. procka) nie można prawidłowo zinterpretować danych Z TFMS-a.A procedurę przerwania też oczywiście sam tworzy.

    To na tyle.

    Pzdr.
    Piotrek Sz.


    Korzystam z niego(RC5.bas) i próbowałem 4 różne piloty. Odbiorniczek podłączyłem wg helpa (na moim odbiorniczku jest napisane:TSOP.1736). Testuję na avt3500. Totalny brak reakcji. Rezonator kwarcowy 4MHz - powinien być zgodny? W ostateczności podejmę się i wymienię go na nowy.

    Dzięki za sensowną poradę
    pozdrawiam

    0
  • #9 14 Wrz 2004 09:53
    Johny_Szczecin
    Poziom 17  

    Mi chodzilo o coś bardziej jak to:

    On Int0 przerwanie_int0
    Config rc5 pin*.*
    Enable Int0
    Enable Interrupts

    ......kod programu




    przerwanie_int0:
    Disable Int0
    Getrc5(adress,command)
    Enable Int0
    Return

    :arrow: Zumek
    nie wiem czy widzisz, że w programie w samplach obsluga w przerwaniu zostala wlasnie zastapiona nieustannym sprawdzanieem nozki pod ktora jest podpiety odbiornik, a nie powinno byc tak, ze program caly czas zajmuje sie tylko ta jedna rzecza. Uwierz mi ze obsluga w przerwaniu jest bardzo przyjemna. 8)

    0
  • #10 14 Wrz 2004 09:59
    mzielin
    Poziom 22  

    adam87 - Odbiorniki i piloty mogą pracować na różnych częstotliwościach w granicach 34-38kHz. Twój TSOP pracuje (jest dostrojony) na 36 kHz. Musisz sprawdzić na jakiej pracują piloty. Może po prostu nie pasować.
    Polecam oscyloskop z kalibrowaną podstawą czasu.

    P.S. Do prób oprogramowania podłączyłem nadajnik (tj. klucz diody LED) bezpośrednio do wejścia procka. 100% że tor transmisji jest pewny.

    0
  • #11 14 Wrz 2004 15:04
    zumek
    Poziom 39  

    Johny_Szczecin napisał:
    Mi chodzilo o coś bardziej jak to:

    On Int0 przerwanie_int0
    Config rc5 pin*.*
    Enable Int0
    Enable Interrupts
    ......kod programu
    przerwanie_int0:
    Disable Int0
    Getrc5(adress,command)
    Enable Int0
    Return

    :arrow: Zumek
    nie wiem
    ...
    Uwierz mi ze obsluga w przerwaniu jest bardzo przyjemna. 8)


    :arrow: Kolego Johny_Szczecin
    Ja o tym wiem bardzo dobrze i osobiście obsługe RC5 powierzam wyłącznie przerwaniom,tylko że w tym przypadku opisałem jak dokładnie działa przykład RC5.bas i nic pozatym.

    Pozdrawiam

    Piotrk Sz.

    0
  • #12 14 Wrz 2004 16:06
    Johny_Szczecin
    Poziom 17  

    No to jak tak to w porządku, myślałem że w ogóle przerwanie zewn. włożyłeś między bajki :P

    0
  • #13 15 Wrz 2004 18:20
    neos87
    Poziom 10  

    Dzięki za sensowne porady, które dotąd napływały. Niestety wciąż nie znalazłem przyczyny nie reagowania procka na napływ RC5.

    Zrezygnowałem z wszelkich pilotów i podłączyłem bezpośrednio dwa procki tak, że jeden wysyła a drugi odbiera kod RC5. Zrzuciłem na nie gotowe programy z helpa, dotyczące komend "GETRC5" i "RC5SEND" i nadal nic.

    W czymś tkwi problem, może gdzieś w ustawieniach Bascom'a. Może to(mój) Bascom(version 1.11.7.4) źle kompiluje Getrc5.

    JEŚLI KTOŚ MA JAKIŚ POMYSŁ, BARDZO PROSZĘ O POMOC

    Pozdrawiam

    0
  • #14 03 Maj 2010 11:02
    Janusz_kk
    Poziom 15  

    neos87 napisał:
    Dzięki za sensowne porady, które dotąd napływały. Niestety wciąż nie znalazłem przyczyny nie reagowania procka na napływ RC5.

    Zrezygnowałem z wszelkich pilotów i podłączyłem bezpośrednio dwa procki tak, że jeden wysyła a drugi odbiera kod RC5. Zrzuciłem na nie gotowe programy z helpa, dotyczące komend "GETRC5" i "RC5SEND" i nadal nic.

    W czymś tkwi problem, może gdzieś w ustawieniach Bascom'a. Może to(mój) Bascom(version 1.11.7.4) źle kompiluje Getrc5.

    JEŚLI KTOŚ MA JAKIŚ POMYSŁ, BARDZO PROSZĘ O POMOC


    Niestety mam to samo nowy bascom avr procek 2313 i wyswietlacz LCD i to samo, nie działa. Częstotliwość kwarcu się zgadza a nic nie odbiera, próbowałem ręcznie czy reaguje na przerwanie i nic, coś bascom kopie te przerwania, bo sam lcd chodzi bez zarzutu a odbiornik RC5 wysyła impulsy. Zrobiłem obsługę przerwania i tam dalem zapalanie diody swiecącej i nic, procesor nie wchodził w obsługę chociaż miał wszysko załaczone, mam dwie sztuki i obie nie działają, co ciekawe załadowany wsad USB-rs działa, czyli procki dobre.
    Jak zamiast 2313 podłączyłem 89s51 to rc5 działa, a juest ten sam odbiornik, programator, nawet kwarc 4Mhz. Inna sprawa że odbiera mi ten sam kod coś mam jeszcze nakopane.

    pozdr
    Janusz

    0
  • #15 03 Maj 2010 11:14
    sp3ots
    Poziom 35  

    Witam !
    Janusz, załącz schemat i kod programu.
    Napisałeś 2313, i trzeba się domyślać czy to jest AT90S2313 czy ATTiny2313 ?
    Pozdrawiam. Stefan

    0
  • #16 04 Maj 2010 22:03
    Janusz_kk
    Poziom 15  

    sp3ots napisał:
    Witam !
    Janusz, załącz schemat i kod programu.
    Napisałeś 2313, i trzeba się domyślać czy to jest AT90S2313 czy ATTiny2313 ?
    Pozdrawiam. Stefan


    Nie to był AT90S2313, ale co to ma za znaczenie?
    Program to przykład z bascoma podłączenie procka i odbiornika tak samo, kwarc 4M +kondesatory 22p a odbiornik na INT0. Kwarc generował, zresztą lcd działa tak więc program chodzi, ale przerwań nie obsługuje mimo że były załączone.
    Dałem diodę zieloną do przerwania aby ją włączał jak tam wejdzie i nic, to samo na 89S8252 chodzi bez problemu, inna sprawa że ta procedura getrc5 coś ten moj pliot niezbyt dobrze obsługuje bo dostaję ten sam kod komendy niezależnie jaki guzik nacisnę, pilot oczywiście sprawny bo tel się dobrze steruje.

    Janusz

    0