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

AVR AT90S2313 i RC5: jak odbierać sygnał IR i przypisać przyciski do kanałów w Bascom

segal 01 Mar 2004 11:21 9035 42
Najlepsze odpowiedzi

Jak w Bascomie odbierać sygnał RC5 z odbiornika IR na AT90S2313 podłączonego do INT0/PIND.2 i przypisywać przyciski pilota do wyjść?

Odbiór RC5 na AT90S2313 zrobisz przez `Config Rc5 = Pind.2`, podłączenie odbiornika do `INT0/PIND.2`, włączenie `Enable Interrupts` i odczyt w pętli przez `Getrc5(Address, Command)`; przykładowy działający kod był podany właśnie dla `Pind.2` [#530504][#544819] Jeśli chcesz wyświetlać lub wykorzystywać konkretne przyciski, sprawdzaj wartości `Address` i `Command`, a bit toggle wyczyść maską `Command = Command And &B01111111` [#530504][#544819] W przykładzie, gdy nic nie jest odebrane, zmienne mają wartość `255`, więc można to traktować jako brak kodu [#544819] Jeśli nie działa, najpierw sprawdź, czy pilot faktycznie nadaje w RC5 i czy odbiornik IR podaje poprawny sygnał; dla pilotów spoza RC5 trzeba pisać własną procedurę [#530504][#545086][#545624] Warto też nie używać tej samej nazwy dla deklaracji `Config Rc5` i etykiety procedury, bo to mogło powodować błąd [#539727]
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA
  • #1 525967
    segal
    Poziom 16  
    Posty: 268
    Pomógł: 6
    Ocena: 33
    Potrzebuje zrobic 5-cio kanalowe zdalne sterowanie typu zalacz-wylacz, karzdy kanal osobno na 90s2313. nie wiem jak skonfigurowac np.pind.0 aby odbieral transmisje z odbiornika IR i reagowal na komunikaty transmisji ir tzn. przypisanie jakiegos przycisku ktoremus kanalowi. narazie ucze sie bascom'a i prosil bym o pomoc w plikach bas. z gory wielkie dzieki !!!
  • REKLAMA
  • #2 526045
    crazy_phisic
    VIP Zasłużony dla elektroda
    Posty: 2244
    Pomógł: 278
    Ocena: 130
    poszukaj na forum bylo juz o obsludze pilotow w kodzie rc5...
  • #3 526388
    BoskiDialer
    Poziom 34  
    Posty: 1530
    Pomógł: 353
    Ocena: 42
    Sprubój wykorzystać sprzętowy UART.. możesz zrobić taki podzia bajtu:
    bit 0 stan jaki ma przyjąć konkretna linia
    bit 1-3 wybór konkretnego pinu
    bit 4-6 wybór konkretnego układu
    bit 7 a no niewiem.. bit parzystości...
    i jusz możesz zrobić taką małą sieć.. jeden pilot... 8 odbiorników.. każdy może mieć wyprowadzone 8 pinów.. jak hcesz to porusze ten temat u siebie na kompie i postaram sie zrobić jakieś przykładowe programy....
  • #4 526489
    segal
    Poziom 16  
    Posty: 268
    Pomógł: 6
    Ocena: 33
    nie wiem jeszcze jak sie uaktywnia UART. jezeli mozesz to prosze o kilka przykladow. a wyjsc wystarczy 5.
  • REKLAMA
  • #5 527859
    BoskiDialer
    Poziom 34  
    Posty: 1530
    Pomógł: 353
    Ocena: 42
    .. mam kłopot.. a właściwie kilka.. niemam procesorka żeby przetestować COKOLWIEK... mam tesz kłopot z ustawieniem UART'a (tesz niemam na czym testować)... sam bende robił pilota itp.. ale aktualnie jak niemam procków to niemam co sie męczyć...

    Sory...
  • #6 528223
    segal
    Poziom 16  
    Posty: 268
    Pomógł: 6
    Ocena: 33
    a jak zobrazowac na wyswietlaczu 2*16 kod np.rc5. probowalem polecenia GETRC5 i jakos mi nie wychodzi.
  • #7 528280
    crazy_phisic
    VIP Zasłużony dla elektroda
    Posty: 2244
    Pomógł: 278
    Ocena: 130
    tutaj masz przepisany program z Edw + pewne modyfikacje
    moze on natchnie cie do dalszych eksperymentów
    powinien dzialac, nie sprawdzony na avr tylko na '51...
    pamietaj o podlaczeniu odbiornika do wejscia int0
    pozdrawiam

    dim kod as byte
    dim komenda as byte, adres as byte
    'reset tcon.0 - jesli bez tego nie zadziala, odznacz
    config lcd =16*2
    on int0 odbior
    enable int0
    enable interrupts
    cls
    lcd "czekam na kod"
    cursor off
    do
    if kod =1 then
    disable int0
    locate 2,1
    lcd " kom:";komenda;"adr:";adres
    kod=0
    enable int0
    end if
    loop

    odbior:
    getrc5(adres,komenda)
    kod=1
    return
  • #8 529777
    segal
    Poziom 16  
    Posty: 268
    Pomógł: 6
    Ocena: 33
    po malej modyfikacji wyglada to tak:

    Dim Kod As Byte
    Dim Komenda As Byte , Adres As Byte
    Config Rc5 = Pind.2
    On Int0 Rc5
    Enable Int0
    Enable Interrupts
    Cls
    Lcd "czekam na kod"
    Cursor Off
    Do
    If Kod = 1 Then
    Disable Int0
    Locate 2 , 1
    Lcd " kom:" ; Komenda ; "adr:" ; Adres
    Kod = 0
    Enable Int0
    End If
    Loop

    Rc5:
    Getrc5(adres , Komenda)
    Kod = 1
    Return

    ale nie dziala. polecenie reset tcon w avr'ach jest bledne. nie mam pojecia co dalej zrobic.
  • REKLAMA
  • #9 529793
    W.K
    Poziom 15  
    Posty: 139
    Pomógł: 1
    BoskiDialer napisał:
    .. mam kłopot.. a właściwie kilka.. niemam procesorka żeby przetestować COKOLWIEK... mam też kłopot z ustawieniem UART'a (też niemam na czym testować)... sam bende robił pilota itp.. ale aktualnie jak niemam procków to niemam co się męczyć...

    Sory...

    To po co włączasz się do tematu?
  • #10 530143
    crazy_phisic
    VIP Zasłużony dla elektroda
    Posty: 2244
    Pomógł: 278
    Ocena: 130
    nie wiem czy testowales procedure rc5 z helpa, moze ona podpowie ci jak to zrobic, osobiscie nie pisalem obslugi rc5 na avr ale jak bedziesz mial jeszcze problemy to nie ma problemow aby poeksperymentowac ;) zajrzyj do helpa moze ci pomoze...
  • #11 530466
    segal
    Poziom 16  
    Posty: 268
    Pomógł: 6
    Ocena: 33
    w helpie jest procedura PRINT na UART. zamiast slowa pirnt wstawilem LCD i tak nie chodzi.
  • #12 530504
    euromatic
    Poziom 21  
    Posty: 422
    Pomógł: 17
    Ocena: 14
    '-------------------------------------------------------------------
    ' RC5.BAS
    ' (c) 1999-2003 MCS Electronics
    ' based on Atmel AVR410 application note
    '-------------------------------------------------------------------
    'use byte library for smaller code
    $lib "mcsbyte.lbx"

    'This example shows how to decode RC5 remote control signals
    'with a SFH506-35 IR receiver.

    'Connect to input to PIND.2 for this example
    'The GETRC5 function uses TIMER0 and the TIMER0 interrupt.
    'The TIMER0 settings are restored however so only the interrupt can not
    'be used anymore for other tasks


    'tell the compiler which pin we want to use for the receiver input

    Config Rc5 = Pind.2

    'the interrupt routine is inserted automatic but we need to make it occur
    'so enable the interrupts
    Enable Interrupts
    Cls
    'reserve space for variables
    Dim Address As Byte , Command As Byte
    Lcd "czekam na RC5"

    Do
    'now check if a key on the remote is pressed
    'Note that at startup all pins are set for INPUT
    'so we dont set the direction here
    'If the pins is used for other input just unremark the next line
    'Config Pind.2 = Input
    Getrc5(address , Command)

    'we check for the TV address and that is 0
    If Address = 0 Then

    'clear the toggle bit
    'the toggle bit toggles on each new received command
    'toggle bit is bit 7. Extended RC5 bit is in bit 6
    Command = Command And &B01111111
    Cls
    Lcd Address ; " " ; Command
    End If
    Loop
    End

    jest gotowiec, radzę na nim poeksperymentować.
    Jeżeli nic nie odbierze to proszę sprawdzić prawidłowość funkcjonowania układu od strony elektrycznej, czy są impulsy na wyjściu z odbiornika podczerwieni
    jeżeli są to prawdopodobnie pilot nie pracuje w systemie RC5
  • #13 531653
    segal
    Poziom 16  
    Posty: 268
    Pomógł: 6
    Ocena: 33
    dzieki za gotowca. i dalej bu bu!!!
    piloty sa z tv LG i tunera PHILIPS tak ze to jest RC5, natomiast moze byc problem z odbiornikiem IR. z wygladu jest to SFH506 ale nie wiem czy 36kHz moze jakis inny. czy sa jakies inne Hz? i jak je sprawdzic. podejrzewam ze to moze byc caly problem.
  • #14 532039
    crazy_phisic
    VIP Zasłużony dla elektroda
    Posty: 2244
    Pomógł: 278
    Ocena: 130
    na stronie glownej jest tester pilotow, jesli ioda zacznie mrugac to wszystko ok z czujnikiem i czeka cie dalsze zmaganie z softm, w innym wypadku zmiana czujnika... i na wszelki wypadek zasilaj tester z 5V ;) bo nie do konca jestem przekonany czy 9V to dobre rozwiazanie
    pozdrawiam
  • #15 532416
    segal
    Poziom 16  
    Posty: 268
    Pomógł: 6
    Ocena: 33
    wedlug schematu dioda led mruga. uzywalem tego wczesniej jako testera pilotow. zasilanie mialem 5V. moze podac 9V?
  • #16 534881
    segal
    Poziom 16  
    Posty: 268
    Pomógł: 6
    Ocena: 33
    czy ktos ma jeszcze jakies propozycje ???
  • #17 537217
    crazy_phisic
    VIP Zasłużony dla elektroda
    Posty: 2244
    Pomógł: 278
    Ocena: 130
    podeslij schemat, byc moze tam tkwi problem....
  • #18 537542
    segal
    Poziom 16  
    Posty: 268
    Pomógł: 6
    Ocena: 33
    schemat jest prosty. wejscie IR jest podlaczone bezposrednio do PIND.2 , do pod port B podlaczony jest LCD 2*16. poza tym nic wiecej jeszcze ma. narazie musze zobrazowac kod RC5 zeby moc dalej cos wywalczyc. pozniej danemu rozkazowi przypisze wyjscie z portu B.
  • REKLAMA
  • #19 537658
    crazy_phisic
    VIP Zasłużony dla elektroda
    Posty: 2244
    Pomógł: 278
    Ocena: 130
    a pind.2 jest podciagniety do + zasilania? na wszelki wypadek wstaw 10K
  • #20 537783
    segal
    Poziom 16  
    Posty: 268
    Pomógł: 6
    Ocena: 33
    byl juz wstawiany opornik. taka sugestia : a moze trzeba wyjscie z modulu SFH wzmocnic lub zanegowac za pomoca jakiegos tranzystora?
  • #21 538001
    crazy_phisic
    VIP Zasłużony dla elektroda
    Posty: 2244
    Pomógł: 278
    Ocena: 130
    sygnal jest z modulu jest ok, mam inne pytanie, czy uklad wogule cokolwiek robi ( tekst na lcd) czy tylko jest problem z rc5?
  • #22 538442
    segal
    Poziom 16  
    Posty: 268
    Pomógł: 6
    Ocena: 33
    tekst na LCD jest ok. problem jest tylko z RC5.
  • #23 539611
    bolek
    Poziom 35  
    Posty: 4099
    Pomógł: 86
    Ocena: 299
    deklarujesz dwie zmienne do których przypisujesz w obsłudze przerwania od RC5 adres i komende i później te dwie zmienne wyświetlasz na lcd jak każde inne... musi chodzić.--- nic na lcd Ci sie nie pojawia?!
    wklej tu program, popatrzymy
  • #24 539727
    crazy_phisic
    VIP Zasłużony dla elektroda
    Posty: 2244
    Pomógł: 278
    Ocena: 130
    przejrzalem jeszcze raz listing programu i zauwazylem iz w deklaracji:
    Config Rc5 = Pind.2
    On Int0 Rc5
    uzywaz rc5 do oznaczenia dwoch roznych rzeczy...
    zdeklarowales pin jako rc5 oraz procedure obslugi jako rc5 moze w tym tkwi blad?
  • #25 540021
    segal
    Poziom 16  
    Posty: 268
    Pomógł: 6
    Ocena: 33
    zauwazylem to tez. poprawilem i dalej nic !!!
  • #26 542497
    bolek
    Poziom 35  
    Posty: 4099
    Pomógł: 86
    Ocena: 299
    poogladaj to, może cie naprowadzi- nie wiem czy działa, napisałem to dawno temu w dodatku na 51
    a może brakuje ci czegos takiego jak "reset tcon.0"??
    Załączniki:
    • rc.txt (2.48 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #27 542989
    THoTH
    Poziom 16  
    Posty: 270
    Pomógł: 8
    Ocena: 23
    mam takie pytanie a'propos hardware'u - czy moglbym uzyc diody z Pluginu Igora :] , polaczonej przez max232 i bezposrednio do 2313 ??
    Czy wtedy byblyb w stanie odczytac jakikolwiek kod RC5???
    i potem oczywiscie obrobic !
  • #28 543709
    crazy_phisic
    VIP Zasłużony dla elektroda
    Posty: 2244
    Pomógł: 278
    Ocena: 130
    w pluginie Igora o ile mi wiadomo wykozystywany jest czujnik o ktorym mowimy i nie potrzebny jest max aby podlaczyc go do avr-ka, a do odczytu kodu w zaleznosci od tego w jakim jezyku programujesz mozna to zrobic jedna komenda (bascom) lub napisac wlasna procedure...
    -> segal ... dzisiaj mam troszke czasu i zobacze czy da rade zmusic mojego 2313 do wspolpracu z pilotami ;) o wynikach napisze wieczorkiem. pozdrawiam
  • #29 544223
    segal
    Poziom 16  
    Posty: 268
    Pomógł: 6
    Ocena: 33
    jestem teraz w pracy, ale rano w domu napisalem cos i widac reakcje avr'ka na piloty. jak bede w chacie to podesle co stworzylem. w karzdym razie jest juz jakis postep.
  • #30 544575
    segal
    Poziom 16  
    Posty: 268
    Pomógł: 6
    Ocena: 33
    napisalem cos takiego:

    Config Rc5 = Pind.2
    Config Portb = Output
    Dim Address As Byte
    Dim Command As Byte
    Address = 0
    Command = 0
    Enable Interrupts
    Enable Int0

    Do
    Waitms 20
    Getrc5(address , Command)
    If Address > 1 Then
    Cls
    Lcd Address ; ":" ; Command
    Cursor Noblink
    End If
    Loop
    End

    na wyswietlaczu mam:
    255:255
    przy nacisnieciu na pilot cyferki mrugaja, ale tak ze nic nie widac. w karzdym razie teraz widac ze avr reaguje na pilota. moze to w czyms pomoze.

Podsumowanie tematu

✨ Dyskusja dotyczy implementacji odbioru sygnału podczerwieni w standardzie RC5 na mikrokontrolerze AVR AT90S2313 z użyciem Bascoma. Autor potrzebuje sterowania pięcioma kanałami typu załącz-wyłącz, przypisując przyciski pilota do konkretnych wyjść portu. Wskazano konieczność podłączenia odbiornika IR (najczęściej SFH506-35) do pinu PIND.2 oraz wykorzystania funkcji GETRC5, która korzysta z TIMER0 i przerwań. Problemy obejmują brak poprawnego odczytu kodów (często wyświetlane wartości 255:255), możliwe błędy w konfiguracji przerwań i nazw procedur, a także wątpliwości co do kompatybilności pilotów (np. Sharp nie używa RC5). Zasugerowano testowanie z pilotami Philipsa lub LG, które nadają w standardzie RC5. Omówiono kwestie sprzętowe, takie jak podciąganie pinu wejściowego rezystorem 10k, filtrację zasilania odbiornika IR przez rezystor szeregowy i kondensator, a także ewentualną inwersję sygnału za pomocą tranzystora NPN. Wskazano, że procedura GETRC5 automatycznie dostosowuje timery do częstotliwości kwarcu, więc zmiana z 4 MHz na 10 MHz nie jest konieczna. Autor uzyskał częściową reakcję mikrokontrolera na pilot, lecz nadal występują problemy z poprawnym wyświetlaniem kodów. Wskazano również, że resetowanie rejestru TCON nie jest dostępne w AVR, co wymaga innego podejścia niż w układach 8051. Ostatecznie problem może leżeć w odbiorniku IR lub kompatybilności pilota. Dyskusja zawiera przykładowe fragmenty kodu Bascom do obsługi RC5 oraz sugestie dotyczące testów i konfiguracji sprzętowej.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA