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

Jak wysyłać RC5 w BASCOM-8051 bez polecenia sendrc5?

Jacek1708 03 Sty 2007 17:55 2951 16
REKLAMA
  • #1 3400751
    Jacek1708
    Poziom 12  
    Posty: 111
    Pomógł: 4
    Ocena: 5
    Witam w nowym roku
    Temat był już poruszany kilkakrotnie na forum, lecz nie znalazłem konkretnego rozwiązania wysyłania RC5 . O ile w BASCOM AVR jest polecenie sendrc5 to w BASCOM-8051 niema.
    Przeglądając net znalazłem coś takiego: http://electro8051.free.fr/lpc28/lpc28.htm / wysyłanie i odbiór RC5 przez I2C
    Nie mogłem znaleźć tego układy u PHILIPSA , a dołączony opis jest po francusku, stąd moje pytanie:
    1 Czy ktoś spotkał się wcześniej z tym rozwiązaniem i jakie są efekty praktyczne?
    2 do czego służą piny 9 i 12 w/g schematu?
    3 na końcu strony można pobrać listing programu do obsługi tego układu. Czy może go ktoś przetłumaczyć na BASCOM 8051?
    P.S. układ można kupić tu : http://www.poltronic.com.pl
  • REKLAMA
  • #2 3403806
    anilion
    Poziom 15  
    Posty: 85
    Pomógł: 9
    Ocena: 6
    proponuje przesiąście na AVR , ja jestem zadowolony z tego kroku :)
  • REKLAMA
  • #3 3404026
    markosik20
    Poziom 33  
    Posty: 2261
    Pomógł: 208
    Ocena: 147
    Tyle czasu straciłeś na szukanie gotowca, że bez problemu z odrobiną chęci już miałbyś napisaną swoją procedurę do obsługi RC5. Czemu nie chce się wam chociaż trochę poznać to co wykorzystujecie w projektach.
    I nawet jak zdobędziesz kod źródłowy procedury obsługującej RC5 dla '51 to pojawi się zapewne kolejny problem z czymś innym , czego nia ma albo jest ale inne itd.
    Cytat:
    proponuje przesiąście na AVR , ja jestem zadowolony z tego kroku
    Tylko dlatego, że w BASCOM dla AVR są już gotowe procedury których nie ma w BASCOM-'51?? A jak będzie sytuacja odwrotna to co wtedy?? :)
  • #4 3406377
    Jacek1708
    Poziom 12  
    Posty: 111
    Pomógł: 4
    Ocena: 5
    Poco wyważać otwarte drzwi????
    Czekam na zamówione układy, jak dotrą to wymyślę coś sam i dam znać
    sposób z wysyłaniem RC5 przez I2c może być prostszy bo nie trzeba liczyć czasu impulsu i generować nośnej / może się mylę /
  • #5 3406437
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    hmm a po co wyważać otwarte drzwi - bierzesz sobie np ATtiny12 lub 13 lub 15 ;) robisz na nim odbiornik RC-5 a całą obsługę tzn wysyłanie i odbieranie kodów po I2C gdzie uC działa w trybie slave i po problemie ;)
  • #6 3406558
    markosik20
    Poziom 33  
    Posty: 2261
    Pomógł: 208
    Ocena: 147
    Cytat:
    sposób z wysyłaniem RC5 przez I2c może być prostszy bo nie trzeba liczyć czasu impulsu i generować nośnej / może się mylę

    Obsługa I2C to tyle samo kodu programu co nadawanie i odbiór kodu RC5.
    To zależy dla kogo prostsze, bo przy wykorzystaniu ASM można zrobić łatwo transmisję w kodzie RC5 (zresztą nie tylko w tym kodzie).
    Ktoś kto nie zna ASM'a (a co gorsze uP) to rzeczywiście liczenie czasów może być trudne.
    Nie wiem ile kosztuje ten LPC28 ale widzę , że nawet o dokumentację trudno (a w Poltronicu nie znalazłem :)).
    Rozumiem, że magistralę I2C masz opanowaną? :wink:
  • REKLAMA
  • #7 3406592
    Jacek1708
    Poziom 12  
    Posty: 111
    Pomógł: 4
    Ocena: 5
    W POLTRONICU jest SAA3028 za około 6 PLN
  • #8 3406618
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    no tak - ja chyba z 10 lat temu zrobiłem na 8051 oraz tym SAA3028 dekoder RC-5 ;) i b.ładnie działał ;) - a rzeczywiście jak mówi kolega markosik, jeśli nie umiesz asemblera a co gorsze nie chcesz się go nauczyć - to taki scalak jak ten SAA nie powinien stanowić dla ciebie problemu aby go nawet pod bascomem okiełznać ;)

    pozdr
  • #9 3406726
    Jacek1708
    Poziom 12  
    Posty: 111
    Pomógł: 4
    Ocena: 5
    Dla wyjaśnienia
    Zabawę z uC traktuję jak zabawę . Od nie dawna zacząłem przygodę z uC i na razie od BASOMA. Nie wykluczam nauki innych języków programowania, ale na to potrzeba czasu /a nie jest to moje jedyne zajęcie/. Bedę wdzięczny za wszystkie uwagi na temat tego SAA /jak w pierwszym poscie pytanie 2/
  • #10 3407103
    Arnold_S.
    Poziom 26  
    Posty: 883
    Pomógł: 49
    Ocena: 85
    Ostatnio się bawiłem z ATtiny26(8MHz) + dioda IR(sterowana przez tranzystor).

    Oto działający przykład w ASM. Zmniejszanie jasności w TV(stary Curtis).
    Oryginalny pilot działa z częstotliwością 38,46kHz(stąd takie, a nie inne czasy w poniższym programie).

    
    .INCLUDE "tn26def.inc"
    // Ustawienie Portu A jako wyjścia.
    	Ldi R16,128
    	Out DDRA,R16
    
    RJMP Petla_Glowna
    
    .macro Delay0		// Opóźnienie 6,5us.
    	LDI R19,17
    	Wait:			// Jeden obieg = 0,375us.
    		DEC R19
    	BRNE Wait
    .endm
    
    .macro HalfBit0		// Stan 0 przez 0,84ms.
    	LDI R17,132
    	Delay:
    		Delay0
    		DEC R17
    	BRNE Delay
    .endm
    
    .macro HalfBit1		// 32 Cykle 1-0-0-0. Razem 0,80ms
    	LDI R18,33
    	Mnoznik1: 
    		DEC R18
    		Cykl 
    		CPI R18,1
    	BRNE Mnoznik1	
    .endm
    
    .macro Cykl			// Stan 1(6,5us) i 0(19,5us).
    	Sbi PORTA,7
    	Delay0
    	Cbi PORTA,7
    	Delay0
    	Delay0
    	Delay0
    .endm
    
    .macro Bit1        // Wysłanie Bitu "1" przez diodę IR.
    	HalfBit0
    	HalfBit1
    .endm
    
    .macro Bit0       // Wysłanie Bitu "0" przez diodę.
    	HalfBit1
    	HalfBit0
    .endm
    
    .macro Odstep		// Odstęp między rozkazami(min.83ms).
    	LDI R18,52
    	Mnoznik2:
    	DEC R18
    		LDI R17,255
    		Delay:
    			Delay0
    			DEC R17
    		BRNE Delay
    	CPI R18,1
    	BRNE Mnoznik2
    .endm
    
    Petla_Glowna:
    //<===============_MAIN_=======================>
    
    // Rozkaz numer 19(Brightness-), adres 0(TV1).
    // Bity startowe:
    Bit1
    Bit1
    // Toggle bit:
    Bit0
    // Adres:
    Bit0
    Bit0
    Bit0
    Bit0
    Bit0
    // Komenda(zmniejszenie jasności):
    Bit0 
    Bit1 
    Bit0 
    Bit0 
    Bit1 
    Bit1 
    // Odstęp między rozkazami.
    Odstep
    //<=================_END_====================>
    RJMP Petla_Glowna


    Wszystko zgodnie z poradami na poniższych stronkach:
    http://www.sbprojects.com/knowledge/ir/rc5.htm
    http://www.ustr.net/infrared/infrared1.shtml

    Z tym, że nie do końca to tak działa jak piszą.
    "Toggle Bit" wcale nie musi się zmieniać(niby raz 0, raz 1) z każdym "naciśnięciem pilota".
    Okazuje się(przynajmniej w moim TV), że ToggleBit musi zawsze wynosić 0 przy kilku komendach pilota(np. jasność, kolor, volume), a przy pozostałych zawsze 1(np. wyłączenie TV, zmiana programów 0-9), bo inaczej telewizor nie reaguje na takie rozkazy.

    Czy również macie takie doświadczenia? :|
  • #11 3407258
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    ja odpowiedziałbym tobie tak - skoro u ciebie bit toggle działa w taki sposób jak opisałeś to znaczy poprostu tylko tyle, że jest to zmodyfikowany sposób wykorzystania standardu RC-5 i to wszystko. Nie ma czemu się dziwić - odmian różnych standardów jest mnóstwo ;) Np NEC wymyślił standard SPACE a teraz jest to chyba jeden z najczęściej uzywanych w różnych pilotach rodzajów kodowania - oczywiście każdy używa go na swój sposób - zmieniając czasy, nagłówki itp itd

    zobacz sobie na stronkę www.lirc.org/remotes tam masz dokładne opisy bardzo dużej ilości standadrów kodowania, bardzo przydatna stronka. Dzięki niej zrobiłem właśnie ostatnio pilota do swojego aparatu Olympus ;)

    pozdrawiam
  • REKLAMA
  • #12 3419990
    benedetto
    Poziom 13  
    Posty: 23
    Pomógł: 5
    Ocena: 1
    Znaczenie pinów 9 i 12 opisane są w datasheet'cie

    9 TimeOut Input, Low, GND when I2C Clock < 1Khz
    12 Repeat Input, Low, If 1,FFFF is returned if RC5 already read

    Proponuje obie podpiąć do VCC
  • #13 3431433
    Jacek1708
    Poziom 12  
    Posty: 111
    Pomógł: 4
    Ocena: 5
    Pomysł z SAA upadł na razie ponieważ urządzenie do którego próbuję dorobić sterowanie oryginalnie sterowane jest pilotem z układem PT2222
    Jak rozumiem z PDF sygnał z pilota nadawany jest tak:
    1. sygnał inicjujący początek transmisji 9ms przerwa 4,5ms/2,25ms
    2. sygnał adresowy 8 bit + 8 bit odwrotne = 18 - 36 ms
    3. sygnał danych 8 bit + 8 bit odwrotne = 27ms zawsze
    Pomóżcie mi to zrozumieć czy dobrze myślę .
    Długość drugiego sygnału zależy od zawartości danych 8x1 = 18ms + 8x0 = 9ms razem 27ms / skąd max. 36ms i min 18ms ?
    Czym jest ten 2 sygnał? / w tabeli PDF podane są bity w zależniści od przyciśniętego przycisku jak rozumiem jest to 3 sygnał/
    II. sygnał nośnej jest w stosunku 1/3 . Czy ma to znaczenie przy budowaniu generatora / łatwiej zrobić wypełnienie 50%/
    Załączniki:
    • 2222.pdf (669.88 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #15 3431495
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    no i widzisz kolego autorze? wracasz do punktu wyjścia - a nie mówiłem, żeby wziąć się za asemblera w końcu? może już nadszedł na to czas skoro nie możesz sobie poradzić z zewn układami pomocniczymi bo nie są one zawsze dostępne do każdego standardu tak jak dla RC-5...

    ... opisałeś może i nieudolnie do końca jakiś tam standard kodowania IR ... napisałeś też:
    Cytat:
    "Pomóżcie mi to zrozumieć czy dobrze myślę"


    ... może to smutne ale powiem tak troszkę w przenośni - "w Bascomie tego nie zrozumiesz",
    a asemblerze na pewno ci się to uda ( w C również ;) )

    naprawdę warto pójść dalej i poznać choć troszkę asemblera ;) - gorąco polecam

    pozdrawiam
  • #16 3431732
    Jacek1708
    Poziom 12  
    Posty: 111
    Pomógł: 4
    Ocena: 5
    Przepraszam ale czegoś nie zrozumiałem
    Jaki związek ma język programowania z kodowaniem informacji przesyłanych drogą IR?
    1=1 prawda 1=0 fałsz
  • #17 3432024
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    ok, przepraszam, kolega teedd zwrócił mi już uwagę, może to ja źle się wyraziłem.... chodziło mi o to, że o wiele prościej można sobie poradzić z tym problemem w asemblerze nie angażując ani jednego zewnętrznego układu do konwersji typu IR - ale może się mylę (to przecież tylko moja subiektywna ocena)

    pozdrawiam

Podsumowanie tematu

✨ Dyskusja dotyczy problemu wysyłania sygnału RC5 w BASCOM-8051, gdzie nie ma wbudowanej funkcji sendrc5, dostępnej w BASCOM-AVR. Użytkownicy sugerują różne podejścia: napisanie własnej procedury w asemblerze, wykorzystanie zewnętrznego układu SAA3028 firmy Philips, który obsługuje RC5 przez magistralę I2C, lub zastosowanie mikrokontrolerów AVR (np. ATtiny12/13/15) jako pomocniczych urządzeń do nadawania i odbioru kodów RC5. Piny 9 i 12 układu SAA3028 pełnią funkcje TimeOut Input i Repeat Input i zaleca się ich podłączenie do VCC. Autor rozważa również alternatywne standardy kodowania IR, takie jak PT2222, złożone z sygnału inicjującego, adresowego i danych, co komplikuje implementację. Wskazano, że implementacja kodowania IR w asemblerze jest bardziej efektywna niż w BASCOM, zwłaszcza przy braku gotowych bibliotek dla 8051. Dyskusja podkreśla konieczność znajomości niskopoziomowego programowania i zrozumienia standardów transmisji IR, aby samodzielnie zaimplementować wysyłanie RC5 bez dedykowanych funkcji w BASCOM-8051.
Wygenerowane przez model językowy.
REKLAMA