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



Teraz jest 4 gru 2024, o 23:11


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 20 sie 2013, o 15:43 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 maja 2012
Posty: 174
Lokalizacja: Gliwice
Pomógł: 19

Cześć,

w ramach popołudniowej nudy wpadłem na pomysł napisania programu do obsługi stojącego wentylatora obsługiwanego pilotem IR. Program jest "prostacki". Napisałem go w najprostszy sposób, nie używając nawet timerów ( wiem że to woła o pomstę do nieba ale ale to wstępna wersja napisana na szybko, jak już wszystko zadziała tak jak chcę to zastąpię delaye timerami). Pilot działa na 36kHz i wysyła ramkę 24 bitów. Podłączyłem go do analizatora oraz do MKdekoder'a i takie ramki uzyskałem ( pilot ma tylko 3 buttony).

Przycisk włączający/przyspieszający wentylator :

Obrazek

Przyjąłem, że krótki impuls to zero a długi to jeden.

napisałem pierwsze dwie funkcje które odwzorowują czasu trwania impulsów, przerw i generują nośną (wiem że nośną można łatwo wygenerować na timerze, ale na chwilę obecną nie jest to problemem)

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


Potem przyszedł czas na bardzo prymitywny sposób wysłania ramki która włączy wentylator:

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



No i zgodnie z oczekiwaniem wentylator elegancko się włącza. Chciałem zmienić tą funkcję na coś typu send_data(ramka). No więc wziąłem się za pisanie:

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


zapisałem ramkę odpowiedzialną za włączenie wentylatora na postać binarną 0xb001100110011101000111010 oraz hex 0x333A3A.

Więc wysłałem ramkę w ten sposób send_data(0x333A3A). Niestety brak odzewu ze strony wentylatora. Analizator pokazuję taką ramkę :

Obrazek

z ramki tej wynika, że mniej więcej druga połowa ramki jest OK a pierwsza to praktycznie same "zera". Spróbowałem więc podzielić ramkę na połowy oraz lekko zmodyfikować funkcję wysyłającą

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


wysłałem ramkę w ten sposób :

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


i o dziwo zadziałało. Ramka na analizatorze wygląda identycznie jak ta z pilota. Doszliśmy do etapu w którym zadaje pytanie ;). Co jest nie tak w funkcji wysyłającej, że nie potrafi wysłać całej ramki tylko muszę dzielić ją na pół? Poniżej pełny 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.


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



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


Używam zestawu ATB GLS, atmegi32 ( chociaż nie powinno mieć to znaczenia w tym przypadku). Do obsługi wentylatora napisałem prościutki program na pc który wysyła stringi, które to z kolei sprawdza uC i odpowiednio reaguje.

trochę się rozpisałem ;)

pzdr Tomek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 sie 2013, o 16:00 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Myślę, że promocja do typu int miesza. Spróbuj tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 sie 2013, o 16:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 maja 2012
Posty: 174
Lokalizacja: Gliwice
Pomógł: 19

Niestety, ale analizator nie pokazuje żadnej różnicy. Jedyna zmiana jest taka, że ramka wyła się jakby dwa razy


Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 sie 2013, o 16:40 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

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


Autor postu otrzymał pochwałę

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 sie 2013, o 16:42 
Offline
Moderator
Avatar użytkownika

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

kilka dni temu był podobny problem na forum, inny kolega chciał nadawać ramkę do aparatu Nikon i też mu nie wychodziło ....

a okazało się, że wszystko pięknie ładnie - tylko zapomniał, że jeszcze trzeba słać NOŚNĄ ;)

a kolega o tym nie zapomniał czasem ? ;)

------------------------ [ Dodano po: 1 minucie ]

bo nie wiem co to są za makra LED_ON i LED_OF, ale jeśli tylko podające stan wysoki bądź niski na diodę - no to znaczy że AMBA wcięła koledze nośną ... i odbionik się niestety wypnie na taką zubożałą ramkę :(

_________________
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: 20 sie 2013, o 17:00 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 maja 2012
Posty: 174
Lokalizacja: Gliwice
Pomógł: 19

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



Krauser, ten drugi sposób zadziałał. Ramka w całości się wysyła. Dzięki wielkie!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 sie 2013, o 17:23 
Offline
Moderator
Avatar użytkownika

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

ok zbyt pobieżnie rzuciłem okiem - nastawiając się że nośną generuje się za pomocą sprzętowego timera w trybie CTC Toggle, no ale można i tak - jak widać ;) ważne że ruszyło

_________________
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: 20 sie 2013, o 17:32 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

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

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 sie 2013, o 21:07 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 maja 2012
Posty: 174
Lokalizacja: Gliwice
Pomógł: 19

Krauser, ten sposób również działa. Jeszcze raz wielkie dzięki. Już pozbyłem się delay'ów i programowego generowania nośnej. Książka w łapie, kilka minut i kod gotowy ;)


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


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


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  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 

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