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



Teraz jest 27 mar 2026, o 12:16


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 
Autor Wiadomość
PostNapisane: 3 kwi 2015, o 22:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lut 2013
Posty: 158
Lokalizacja: KTT
Pomógł: 1

Witam szanownych Forumowiczów,


Od dobrych kilku dni męczę się z programem do pilota IR. Postanowiłem przerobić kod z BlueBooka pod procka Tiny25, gdyż chcę to zmieścić w malutkiej obudowie (na 2 lub 3 przyciski). Myślałem, że kod przerobiłem prawidłowo, jednak pilot trochę dziwnie się zachowuje.
Może coś mi umknęło, ze względu na niewielkie doświadczenie, dlatego piszę na forum. Może, któryś z kolegów rzuci trochę światła na moje szare komórki:)

No ale do rzeczy:
Pilot na procku ATtiny25, taktowany wewnętrznym zegarem 8MHz

pojawiły się 2 problemy:
1. zbyt krótkie opóźnienia generowane przez funkcję "czekaj_us". Połówki bitów zamiast ok 889us, trwają 200-300us.

2. ramka RC5 wysyłana jest nie za każdym wciśnięciem przycisku (co 10-20 wcisniecie przycisku wysyła ramkę)

Schemat pilota:
Obrazek

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


Zamieniłem tu funkcje działania timerów (TIMER0 do odmierzania opóźnień, TIMER1 do generowania nośnej).

pilot wysyła taką ramkę:
Obrazek

I tu ujawnia się pierwszy problem - czasy trwania połówek bitów są rzędu 200-300us, sporo za mało
Nie jest to raczej problem z taktowaniem procka, gdyż częstotliwość nośnej jest ok 36kHz (mierzone multimetrem)


Drugi problem pojawia się... (nie zawsze)
O dziwo, jak do układu podłączony jest programator, to przy każdym wciśnięciu przycisku, pilot wysyła ramkę/ramki. Jeśli podłącze tylko zasilanie, to co 10-20 wciśnięcie powoduje wysyłanie ramki.

Będę wdzięczny jeśli ktoś pomoże mi w tym temacie, bo mi skończyły się pomysły.

Jeśli któryś z kolegów chciałby się przeprowadzić próby na "żywym organizmie" to mogę mu wysłać zmontowany przeze mnie układzik
Obrazek

_________________
Gordon



Ostatnio edytowano 3 kwi 2015, o 23:03 przez gordon10, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 kwi 2015, o 23:02 
Offline
Moderator
Avatar użytkownika

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

gordon10 napisał(a):
No ale do rzeczy:
Pilot na procku ATtiny25, taktowany wewnętrznym zegarem 8MHz

No gdybym ja miał takie efekty to pierwsze co ... to podejrzewałbym, że jednak coś skopałem np z fusebitami. Ty piszesz, że ustawiłeś na 8MHz. Wszystkie inne rzeczy ładnie pokazałeś - ale może jednak pokazałbyś jak masz ustawione fusebity po ich odczytaniu w MkAvrCalculator ?

_________________
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: 3 kwi 2015, o 23:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lut 2013
Posty: 158
Lokalizacja: KTT
Pomógł: 1

Jeśli chodzi o Fusy, to praktycznie odznaczyłem tylko "wewnetrzny podział zegaza przez 8" CKDIV8

------------------------ [ Dodano po: 4 minutach ]

Jeśli z taktowaniem byłoby coś nie tak, to nośna też raczej by miała zupełnie inną częstotliwość.... a tu jest w okolicy 36kHz, dziwna sprawa.

------------------------ [ Dodano po: 22 minutach ]

Dla czystego sumienia sprawdziłem jeszcze raz fusebity

ObrazekObrazek

_________________
Gordon



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2015, o 00:08 
Offline
Moderator
Avatar użytkownika

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

gordon10 napisał(a):
Jeśli z taktowaniem byłoby coś nie tak, to nośna też raczej by miała zupełnie inną częstotliwość.... a tu jest w okolicy 36kHz, dziwna sprawa.

No to bardzo dziwne

_________________
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: 4 kwi 2015, o 10:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lut 2013
Posty: 158
Lokalizacja: KTT
Pomógł: 1

No to czas posypać głowę popiołem.
Strzeliłem 'babola' ze hoho. Otóż tiny25 nie ma Timera 16-bitowego. Stąd to całe zamieszanie.
Jakieś zamieszanie w dokumentacjach miałem (ale obciach :oops: ). Ściągnąłem ze strony atmela od nowa a tam jak byk Timer0 8-bit i Timer1 8-bit. Trzeba będzie to jakoś przerobić.

_________________
Gordon



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2015, o 10:35 
Offline
Moderator
Avatar użytkownika

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

no i zagadka wyjasniona ;)

_________________
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: 4 kwi 2015, o 10:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lut 2013
Posty: 158
Lokalizacja: KTT
Pomógł: 1

mirekk36 napisał(a):
no i zagadka wyjasniona ;)


Jednak jak się napisze na forum, to człowiek sam zaczyna bardziej zastanawiać się nad tematem:)
A dzisiaj podczas święcenia jajek, usłyszałem jakiś głos: "człowieku sprawdź jeszcze PDF-a" :idea:

Pozostaje jednak jeszcze drugi problem.
Co zrobić, żeby za każdym wciśnięciem przycisku pilot wysyłał ramkę :?:
Podejrzewam, że to coś z portami.
W tiny 2313 INT0 jest na innym porcie niż przyciski, a w Tiny25 na tym samym... ale czy to ma znaczenie?

_________________
Gordon



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2015, o 16:45 
Offline
Moderator
Avatar użytkownika

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

No ma ogromne .. przesledz sekwencje przelaczania kierunkow i opdciagania pinow

_________________
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: 4 kwi 2015, o 18:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lut 2013
Posty: 158
Lokalizacja: KTT
Pomógł: 1

No właśnie muszę to sobie na spokojnie rozrysować na kartce i prześledzić stany na pinach.
Póki co zrobiłem taki manewr, że przyciski podłączyłem do masy, a ich obsługę dałem w pętli głównej.

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



Wtedy działa jak należy (za każdym wciśnięciem), ale zasilanie bateryjne raczej odpada...

Trochę jeszcze muszę dopracować funkcję opóźniającą bo to co na szybko wymyśliłem kiepsko działa...

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


O wiele bardziej wydłuża się czas trwania ZERA niż JEDYNKI na wyjściu odbiornika

Najlepiej działa po prostu (już bez żadnych przeliczeń) na żywca wpisanie 3 razy pod rząd linijki:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

i nie modyfikować tej funkcji.
Z tym że to mało uniwersalne i nieprofesjonalne rozwiązanie.

_________________
Gordon



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2015, o 21:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lut 2013
Posty: 158
Lokalizacja: KTT
Pomógł: 1

Może któryś z kolegów stworzył kiedyś funkcję opóźniającą ("mikrosekundową") z argumentem 16-bitowym, która wykorzystuje Timer 8-bitowy? Może mógłby się podzielić jakimś rozwiązaniem?
Będzie to dla mnie bardzo pomocne.

_________________
Gordon



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 kwi 2015, o 07:00 
Offline
Moderator
Avatar użytkownika

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

inkrementuj sobie zmienną w petli oczekujacej

_________________
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 kwi 2015, o 16:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lut 2013
Posty: 158
Lokalizacja: KTT
Pomógł: 1

Mirku, ale jak zrobić tą inkrementację w pętli oczekującej?
W warunku pętli nie bardzo, bo tam ciągle sprawdzana jest flaga wystąpienia porównania CompareMatch.
A w bloku instrukcji... nie wiem, może z jakimś IF-em :?: Tylko z jakim, bo mnie przyćmiło :?:
Proszę o kolejne koło ratunkowe:)

PS. a może inkrementować zmienną usekundy? i po prostu zrobić "starym indiańskim sposobem":
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Gordon



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: 12 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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