logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

90S2313 i Bascom AVR - jak zrealizować transmisję RC5 z odbiornikiem TFMS5360?

neos87 13 Wrz 2004 01:49 4483 15
REKLAMA
  • #1 849606
    neos87
    Poziom 11  
    Posty: 25
    Pomógł: 1
    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
  • REKLAMA
  • #2 849760
    Johny_Szczecin
    Poziom 17  
    Posty: 325
    Pomógł: 1
    Ocena: 9
    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.
  • REKLAMA
  • #3 850735
    neos87
    Poziom 11  
    Posty: 25
    Pomógł: 1
    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
  • #4 850951
    Johny_Szczecin
    Poziom 17  
    Posty: 325
    Pomógł: 1
    Ocena: 9
    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.
  • #5 850976
    Owsik
    Poziom 22  
    Posty: 591
    Pomógł: 12
    Ocena: 30
    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 :)
  • #6 851165
    zumek
    Poziom 39  
    Posty: 3352
    Pomógł: 695
    Ocena: 52
    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.
  • REKLAMA
  • #7 851477
    neos87
    Poziom 11  
    Posty: 25
    Pomógł: 1
    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
  • #8 851519
    neos87
    Poziom 11  
    Posty: 25
    Pomógł: 1
    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
  • #9 852146
    Johny_Szczecin
    Poziom 17  
    Posty: 325
    Pomógł: 1
    Ocena: 9
    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)
  • #10 852148
    mzielin
    Poziom 22  
    Posty: 483
    Pomógł: 31
    Ocena: 16
    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.
  • #11 852747
    zumek
    Poziom 39  
    Posty: 3352
    Pomógł: 695
    Ocena: 52
    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.
  • #12 852857
    Johny_Szczecin
    Poziom 17  
    Posty: 325
    Pomógł: 1
    Ocena: 9
    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
  • REKLAMA
  • #13 855079
    neos87
    Poziom 11  
    Posty: 25
    Pomógł: 1
    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
  • #14 8028902
    Janusz_kk
    Poziom 39  
    Posty: 5867
    Pomógł: 228
    Ocena: 1478
    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
  • #15 8028963
    sp3ots
    Poziom 38  
    Posty: 3072
    Pomógł: 524
    Ocena: 674
    Witam !
    Janusz, załącz schemat i kod programu.
    Napisałeś 2313, i trzeba się domyślać czy to jest AT90S2313 czy ATTiny2313 ?
    Pozdrawiam. Stefan
  • #16 8036009
    Janusz_kk
    Poziom 39  
    Posty: 5867
    Pomógł: 228
    Ocena: 1478
    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

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy realizacji transmisji kodu RC5 za pomocą mikrokontrolera AT90S2313 i środowiska Bascom AVR z wykorzystaniem odbiornika podczerwieni TFMS5360 (TSOP1736). Problemem jest brak reakcji procesora na sygnały RC5 z pilotów, mimo stosowania przykładowych programów z Bascom AVR, w tym komendy GETRC5. Użytkownicy wskazują, że w Bascom AVR konfiguracja odbioru RC5 wymaga deklaracji pinu odbiornika poleceniem "Config RC5", a obsługa sygnału odbywa się w przerwaniach generowanych przez timer0, który jest automatycznie konfigurowany przez Bascom. Zalecane jest sprawdzenie zgodności częstotliwości rezonatora kwarcowego (4 MHz) z deklaracją w programie oraz poprawności podłączenia odbiornika do odpowiedniego pinu (INT0). Wskazano, że piloty muszą nadawać w standardzie RC5 (np. piloty Philipsa), a odbiornik TSOP1736 jest dostrojony do 36 kHz, co może powodować niezgodności z pilotami pracującymi na innych częstotliwościach. Próby bezpośredniej komunikacji między dwoma mikrokontrolerami (jeden nadaje, drugi odbiera RC5) również nie przyniosły efektu, co sugeruje możliwe błędy w konfiguracji Bascom lub w obsłudze przerwań. Jeden z użytkowników zauważył, że na mikrokontrolerze 89S51 program działa poprawnie, co wskazuje na specyfikę obsługi przerwań w AT90S2313. Podkreślono, że Bascom AVR sam tworzy procedury przerwań dla RC5 i timer0, więc użytkownik nie musi ich ręcznie implementować. Zalecane jest użycie oscyloskopu do weryfikacji sygnału IR oraz dokładne sprawdzenie sprzętu i konfiguracji oprogramowania.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA