Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 19 kwi 2024, o 02:17


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 17 ] 
Autor Wiadomość
PostNapisane: 29 gru 2016, o 02:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 21 sie 2014
Posty: 90
Pomógł: 0

Czołem!

Przerabiam rozdział i dekodowaniu IR. Próbowałem napisać obsługę pilota, który posiadam na podstawie informacji w książce. Oczywiście - nie działa. Standard. No dobra, najpierw opiszę pilot, za chwilę pytania.

Pilot zbadany dzięki jednej z bibliotek z GB.

Header 9000 4500
zero 590 590
jeden 590 1640

po nagłówku występuje w kolejności: 8bit - same zera, następnie 8 bit - same jedynki, następnie 8 bit kombinacja zer i jedynek, następnie 8 bit to samo co poprzednio tylko zanegowane. Na samym końcu pt_rail 590.

Tak wygląda ramka.

Pytanie nr 1: Jak mam to ugryźć w momencie ładowania do IrData? Przesuwać zawartość w prawo czy w lewo? Zmienna IrData powinna być typu uint32_t? Następnie rozbijanie tego wszystkiego na poszczególne, mniejsze zmienne. W książce mamy address i command. Tutaj sprawa się komplikuje - powołać zmienne np. address, address_neg, command, command_neg ? Jak możecie to napiszcie chociaż jak się za to zabrać bo ślęczę nad tym chyba już za długo.

Problem nr 2:
W kodzie mamy dwie zmienne step. 1. volatile uint8_t step deklarowaną w .c na samej górze oraz static uint8_t step w procedurze obsługi przerwania od CAPT. Czy tu nie ma konfliktu? W procedurze OVF jest jakaś zmienna step, w CAPT jest step.
Pomoże ktoś wyjaśnić? Jestem początkujący i nie do końca rozumiem jak to wszystko działa.
Pozdrawiam!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 gru 2016, o 08:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
Tak patrzę na wskazaną obsługę ISR(TIMER1_CAPT_vect) i nie widzę static uint8_t step.
O którym kodzie kolega pisze? ( w L03_analizator_IR na pewno nic takiego nie ma )
Obrazek

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 gru 2016, o 11:57 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 21 sie 2014
Posty: 90
Pomógł: 0

To kolega spojrzy na l01_odbiornik_SIRCS bo to na podstawie tego rozdziału próbuję napisać bibl. do mojego pilota.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 gru 2016, o 12:22 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27224
Lokalizacja: Szczecin
Pomógł: 1041

sp2ews napisał(a):
Problem nr 2:
W kodzie mamy dwie zmienne step. 1. volatile uint8_t step deklarowaną w .c na samej górze oraz static uint8_t step w procedurze obsługi przerwania od CAPT. Czy tu nie ma konfliktu? W procedurze OVF jest jakaś zmienna step, w CAPT jest step.
Pomoże ktoś wyjaśnić? Jestem początkujący i nie do końca rozumiem jak to wszystko działa.

No no ... nie jesteś taki początkujący skoro to dostrzegłeś ;) Nieźle !

rzeczywiście babol ....

ale spokojnie możesz, o ile sobie dobrze przypominam bo dawno to było, wykasować tę zmienną globalną step i usunąć jej zerowanie z przerwania OVF. Jak mówię o ile dobrze pamiętam na początku pisania procedury "jechałem" na zmiennej globalnej step, później jednak udało się wszystko co z nią trzeba robić zawrzeć w przerwaniu CAPT ... i tam też jest zerowana gdy trzeba. Tylko zapomniałem usunąć zdaje się tą globalną...

Oczywiście nie jest to żaden konflikt i nie powoduje to żadnych błędów, dlatego, że przypominam jak coś

ZMIENNE AUTOMATYCZNE czyli LOKALNE przykrywają nazwy zmiennych globalnych, a zatem procedura obsługi przerwania CAPT widzi tylko i wyłącznie swoją własną zmienną statyczną step. W ogóle nie widzi globalnej, której istnienie w tym momencie jest kompletnie bez sensu ...

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 gru 2016, o 13:18 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 21 sie 2014
Posty: 90
Pomógł: 0

mirekk36 napisał(a):
No no ... nie jesteś taki początkujący skoro to dostrzegłeś Nieźle !

He he, dzięki za słowa pocieszenia :D

Ale to wiele wyjaśnia bo już zacząłem zastanawiać się czy nie dekoduje mi poprawnie przez to, że step ma inną wartość niż w założeniu.
Dzięki.

A co do pierwszej części problemu. Skoro do zapisania mamy 32 bity to zmienna pomocnicza IrData chyba też powinna mieć 32 bity?
W BB w rozdziale o RC5 mieliśmy IrData = IrData << 1 oraz IrData |= 0x0001. W SIRCS mamy odwrotnie: IrData = IrData >> 1 oraz IrData |= 0x8000. Rozumiem, że to zależy od tego w jakiej kolejności nadlatują bity (czy od najstarszego do najmłodszego - RC5, czy odwrotnie - SIRCS) ale jak zatem to rozwiązać w standardzie mojego pilota? Bo coś mi się wydaje, że tu leży mój błąd.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 gru 2016, o 13:30 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27224
Lokalizacja: Szczecin
Pomógł: 1041

sp2ews napisał(a):
A co do pierwszej części problemu. Skoro do zapisania mamy 32 bity to zmienna pomocnicza IrData chyba też powinna mieć 32 bity?
W BB w rozdziale o RC5 mieliśmy IrData = IrData << 1 oraz IrData |= 0x0001. W SIRCS mamy odwrotnie: IrData = IrData >> 1 oraz IrData |= 0x8000. Rozumiem, że to zależy od tego w jakiej kolejności nadlatują bity (czy od najstarszego do najmłodszego - RC5, czy odwrotnie - SIRCS) ale jak zatem to rozwiązać w standardzie mojego pilota? Bo coś mi się wydaje, że tu leży mój błąd.

sprawdź czy przypadkiem pierwsze 16 bitów to nie jest PRE_DATA_BITS, które są zawsze takie same dla każdej ramki a jeśli tak to je może pomijaj w kodzie i łap tylko ostatnie 16 bitów

zresztą sprawdź sobie przykład kodu z pilotem SAMSUNGA to może tam znajdziesz natchnienie ;) jak podejść do swojego pilota

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 gru 2016, o 13:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 21 sie 2014
Posty: 90
Pomógł: 0

mirekk36 napisał(a):
sprawdź czy przypadkiem pierwsze 16 bitów to nie jest PRE_DATA_BITS, które są zawsze takie same dla każdej ramki a jeśli tak to je może pomijaj w kodzie i łap tylko ostatnie 16 bitów

Tak właśnie jest. Pierwsze 8 bitów to za każdym razem 0, drugi bajt to zawsze 0xff; Później jest bajt z jakąś kombinacją a ostatni to ten sam co poprzednio tylko zanegowany.

Poszukam tego Szajsunga...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 gru 2016, o 13:59 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27224
Lokalizacja: Szczecin
Pomógł: 1041

sp2ews napisał(a):
Tak właśnie jest. Pierwsze 8 bitów to za każdym razem 0, drugi bajt to zawsze 0xff; Później jest bajt z jakąś kombinacją a ostatni to ten sam co poprzednio tylko zanegowany.

No to jak mówię poczytaj dalej książkę bo opisuję przykład SMASUNGA i to o czym piszesz jakby IDEALNIE pasuje ;) Specjalnie na tę okazję opisałem odbieranie kilku różnych pilotów

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 gru 2016, o 14:32 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 21 sie 2014
Posty: 90
Pomógł: 0

OK!
Chyba faktycznie mój pilot to jakiś Samsungowaty stwór. Zaraz się dobiorę do tego rozdziału.
I sprawa ostatnia, dotycząca kolejności "wskakiwania" bitów:
ObrazekObrazek

Na wykresie samsunga widzimy z lewej strony LSB (młodsze) a z prawej MSB (starsze). Czyli musimy ładować bity z lewej do prawej - od młodszego do starszego.
Na RC5 z lewej jest MSB a z prawej LSB czyli ładujemy z prawej do lewej. zawsze od LSB do MSB. Czy dobrze rozumem?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 gru 2016, o 17:06 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27224
Lokalizacja: Szczecin
Pomógł: 1041

sp2ews napisał(a):
zawsze od LSB do MSB. Czy dobrze rozumem?

A niby dlaczego "zawsze" od MSB ? ;) myślisz ... tzn masz taką cichą nadzieję, że tu jest jakiś standard ? ;) to cię zmartwię - tu jest totalnie wolna amerykanka - każdy producent robi jak mu się żywnie spodoba ;) ... Akurat w standardzie RC5 opracowanym przez philipsa jest zawsze tak samo - ale RC5 za to np jakaś firma od telewizorów o nazwie"HauWei Dzong Bździong" ... z Korei może sobie wymyślić własny standard - a kto jej zabroni ;)

Co lepsze taka firma "HauWei Dzong Bździong" może do swoich telewizorów robić ramkę całkiem inną niż np do swoich magnetowidów czy odtwarzaczy Blurej ;) ... i nie chodzi tu tylko o firmy Bździong Dzong .... nawet w Sony w różnych swoich urządzeniach stosuje całkowicie czasem różne ramki ... tzn akurat Sony opiera się najczęściej albo i w 100% na kodowaniu typu SPace które opisałem w książce ale to nie oznacza, że ramki do różnych urządzeń nie mogą być inne ;) i są - TO jest świat pilotów - dlatego na www.lirc.org/remotes - jak poszukasz to znajdziesz na dzień dzisiejszy setki tysięcy pilotów - jak myślisz dlaczego ? ;) i prawie każdy nadaje inaczej

chodzi też tak na prawdę o to aby przypadkiem nie pogryzły się urządzenia X producenta S z urządzeniami Y producenta T ;) albo jak producent X produkuje urządzenia od dziesiątek lat i coraz inne modele to też chce żeby przypadkiem stare piloty nie pogryzły się z nowymi bo może dojść do katastrofy - jak to w lotnictwie :lol:

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 gru 2016, o 18:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 21 sie 2014
Posty: 90
Pomógł: 0

To skąd wiadomo jak wbijać zdekodowane bity do zmiennej takiej jak IrData? Skąd wiedzieć czy w prawo czy w lewo? Jeżeli znajdę w śmietniku pilota marki "Pang Ping Pong Portfel Wsiąk" Z azjatyckimi krzaczkami zamiast liter, uda mi się bez problemu określić rodzaj kodowania (space, pulse...) ale nie wiadomo czy podaje bity od LSB czy od MSB... I co wtedy zrobić? :) Na czuja? Metodą prób i błędów czy jest jakiś patent?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 gru 2016, o 18:56 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27224
Lokalizacja: Szczecin
Pomógł: 1041

sp2ews napisał(a):
Na czuja? Metodą prób i błędów czy jest jakiś patent?


Patent jest prosty - zdekodować sobie po kolei ramki wszystkich pilota "Pang Ping Pong Portfel Wsiąk" i porównać jak zmieniają się bity - czy to problem ? Masz narzędzie przecież nawet w GB do analizy a jak chcesz jeszcze lepsze to proszę ;)

http://atnel.pl/mk2decoder-ir.html

Jeśli masz w ogóle taki pilot jak pisałeś wyżej że dane przesyłane są w jednym bajcie to już w ogóle zero problemu ;) wtedy to nawet "RYBKA" czy będziesz je wsuwał od lewej do prawej czy odwrotnie ;)

gdzie tu jakiś problem ? ;) gdy już masz zdekodowane ramki - tzn no owszem jest - trzeba chwilę albo i kilka chwil posiedzieć i pogłówkować którą metodą to najlepiej zrobić

a NAJLEPSZY patent to po prostu użyć konkretnego sprawdzonego pilota np RC5 gdzie masz sprzętowy TOGGLE bit - zamiast bawić się w odzysk

no chyba, że musimy się dostosować do jakiegoś istniejącego większego systemu gdzie nie można pozbyć się pilota marki "Pang Ping Pong Portfel Wsiąk" ;) wtedy jak wyżej

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 gru 2016, o 23:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 21 sie 2014
Posty: 90
Pomógł: 0

NIe no, w tym przypadku nie ma, faktycznie, żadnego problemu. Poprostu wkurza mnie jak się czegoś uczę i nie wiem jak działa któryś z elementów układanki :)
Dzięki za wyjaśnienia, sporo dały mi do myślenia :) Co do Mk Decodera - już mam, tylko muszę programator zmienić.
Pozdrawiam!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sty 2017, o 11:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 21 sie 2014
Posty: 90
Pomógł: 0

Udało się wszystko pięknie, troszkę inaczej niż w książce ale też działa :-) . I o to chodziło - teraz już wreszcie wiem jak to działa! Dzięki za pomoc. :-)

Wysłane z mojego G620S-L01 przy użyciu Tapatalka



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sty 2017, o 11:22 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27224
Lokalizacja: Szczecin
Pomógł: 1041

sp2ews napisał(a):
Udało się wszystko pięknie, troszkę inaczej niż w książce ale też działa

No dokładnie o to mi chodziło, żeby w książce pokazać drogę a myślę, że na tej podstawie każdy już będzie w stanie tak zmodyfikować kod czy napisać po swojemu, żeby ogarnąć dowolnego pilota ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sty 2017, o 16:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 21 sie 2014
Posty: 90
Pomógł: 0

Teraz wydaje mi się to wszystko proste jak drut :) Grunt to "zaskoczyć" jak to dokładnie działa.
Zrobiłem sobie nawet własnego pilota na stykówce z własnym autorskim standardem :D Jaja niesamowite bo wszystko działa :D
Pozdrawiam serdecznie, dzięki wielkie za cierpliwość.
Zabieram się za kolejne tematy.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sty 2017, o 16:37 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27224
Lokalizacja: Szczecin
Pomógł: 1041

gratulacje ! i powodzenia w świecie podczerwieni ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 17 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO