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



Teraz jest 24 sty 2026, o 01:31


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 7 sty 2014, o 02:40 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 68
Pomógł: 0

Witam.
Ostatnio stalem sie posiadaczem zielonej ksiazki ktora z uporem maniaka wertuje. Przeczytalem pare razy rozdzialy dotyczace nadawania w podczerwieni lecz pojawil sie problem z ktorym nie moge sobie poradzic. Kupilem chwile temu zarowki ledowe rgb do podswietlenia sufitu ktorym steruje maly pilocik. Chcialbym aby mozna bylo sterowac tym podswietleniem z mojego urzadzenia stad najpierw zlapalem przykladowe czasy pilota po czym chce je powielic w swoim urzadzeniu(atmega16, taktowanie 8Mhz wew, wrzystkie kondensatory filtrujace, cewki itp sa).

Przechodzac do sedna tak wyglada zlapany kod pilota wlaczania podswietlenia
Obrazek

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Oto kod programu

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


A tak wyglada ramka po tym jak zostala wyslana przez uc (dwa razy za dlugi czas w porownianiu do oryginalu)
Obrazek

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Aby potwierdzic, ze w uc fusy itp sa dobrze ustawione tak wyglada ramka generowana przez przycisniecie przycisku 1(sony_send Mirka)
Obrazek

Poczatkowo probowalem obliczac modulo 2 z miejsca polozenia w indeksu w tablicy ale jest to czasochlonna operacja dlatego przerzucilem sie na whila w korym na moje oko nie powinno byc juz zadnych dodatkowych opoznien. 0 indeks z tab[] to nozna, kolejny to przerwa, nastepny znowu nosna. Jednak to nie dziala jak powinno tylko dlaczego ?

Jak opanuje wydawalo by sie banalny sposob wysylania ramek to przejde do optymalizacji i robienia tego jak Space przewiduje z troska o cenna pamiec uc, negacja ostatnich bitow itp.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 sty 2014, o 10:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 sty 2013
Posty: 80
Lokalizacja: Trzciniec
Pomógł: 0

Dokładnie nie wiem dlaczego sposób z tabelą czasów nie działa. Być może związane jest to z czasem operacji na tabeli. Na wewnętrznym 8MHz pewnie po kilka us.
Mi zadziałało w ten sposób, że odczytałem z wykresu czasy dla 0 i 1 a następnie przeliczyłem czasy z wykresu i dopiero tak otrzymaną liczbę wysyłałem przez IR.
U mnie wygląda to tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Działa bardzo dobrze.
Dodatkowo Ci powiem, że na stronie http://lirc.sourceforge.net/remotes właśnie w ten sposób są podane wartości.
Pozdrawiam.

_________________
Zło dobrem zwyciężaj.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sty 2014, o 08:55 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 68
Pomógł: 0

Wczoraj caly wieczor spedzilem nad tym zagadnieniem i co prawda ramki do tv samsunga oraz podswietlenia z pilotem noname sa wysylane poprawnie przy uzyciu metody opisanej przez Mirka w ksiazce dla Sony ale dopiero po recznym odwroceniu kolejnosci bitow. Wchodze na strone z kodami pilotow a tam dla swojego pilota mam informacje
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


wiec dla przycisku 1 mam pre_data 0xE0E0(1110000011100000) ktore aby poprawnie zostaly wyslane musze zamienic na 0x707(0000011100000111), ten sam zabieg dla danych. Ponizej obecny kod
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Zastanawiam sie teraz jak przerobic powyzszy kod abym nie musial przy kazdym kodzie przycisku z witryny lirc zamieniac kolejnosci bitow (little-endian na big-endian) ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sty 2014, o 09:07 
Offline
Moderator
Avatar użytkownika

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

gomes napisał(a):
mam pre_data 0xE0E0(1110000011100000) ktore aby poprawnie zostaly wyslane musze zamienic na 0x707(0000011100000111)


to wcale nie jest oznaka zamiany little- na big-endian albo odwrotnie

tu po prostu masz odwróconą kolejność nadawania bitów w ramach bajtu --> więc pewnie coś pokiełbasiłeś w nadawaniu pojedynczych bajtów ;) ... spróbuj odwrotnie czyli zamiast tak:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


to zrobić tak:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
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: 9 sty 2014, o 15:26 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 68
Pomógł: 0

Mirku,
moglbys wytlumaczyc dlaczego proponujesz
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
a nie
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Z szybkiej analizy nic sensownego mi nie wychodzi :(
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sty 2014, o 17:01 
Offline
Moderator
Avatar użytkownika

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

pewnie bo ty zwróciłeś uwagę tylko że w IF() się coś zmieniło, a rzuciłeś okiem na

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


tę linię ?

po prostu na szybko pokazałem ci jak można zmienić kolejność wysyłania bitów

------------------------ [ Dodano po: kilkunastu sekundach ]

aha - oczywiście nie mam na myśli

czy 0x80

czy 0x8000

czy może 0x80000000

to zależy ile bajtów chcesz wysłać

_________________
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: 9 sty 2014, o 18:01 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 68
Pomógł: 0

mirekk36 napisał(a):
pewnie bo ty zwróciłeś uwagę tylko że w IF() się coś zmieniło, a rzuciłeś okiem na

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


tę linię ?

oczywiscie zauwazylem zmiane kierunku przesuniecia bitowego ale, ze w pracy nie mialem za duzo czasu przyklad oczywiscie rozpisalem ze starym przesunieciem co slusznie zauwazyles :)
Teraz przetestowalem co sugerowales i wszystko smiga jak powinno.

Chcialbym w pokoju w ktorym znajduje sie nadajnik sterowac podczerwienia paroma urzadzeniami lecz przy obecnych 36 kHz zasieg jest slaby, dioda musi byc bezposrednio skierowana na odbiornik. Czy dolutowanie np 2 nastepnych diod spowoduje 'poprawe zasiegu' czy bedzie tylko przeszkadzal generujac wiecej odbic/przeklaman?
Na diodzie poprzez rezystor jak dobrze pamietam 25 ohm ustawilem prad 150mA(zasilanie 5v) ale niezbyt poprawiolo to moc nadawania. Nastepnym moim krokiem bedzie modyfikacja wypelnienia (w ksiazce bylo info, ze samsung pracuje na 37,9 kHz. Jakies porady bardziej doswiadczonych kolegow w tej kwestii ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sty 2014, o 20:03 
Offline
Moderator
Avatar użytkownika

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

sprobuj lekko zwiekszyc nosna

daj mnieszy rezystor ale najpierw powiedz czy diode ir sterujesz przez tranzystor ? czy moze popelniasz blad i sterujesz bezp z pinu procka.

tak dodatkowe diody tez moga zwiekszyc zasieg ale mysle ze jedna spokojnie wystarczy. A najlepiej pokaz schemat jak masz to podlaczone i jaki rezystor w bazie tranzystora no i jaki teanzystor ? ;)

_________________
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: 8 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 4 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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO