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



Teraz jest 15 lut 2026, o 21:23


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 22 lis 2014, o 13:27 
Offline
Użytkownik

Dołączył(a): 04 kwi 2014
Posty: 133
Pomógł: 4

Witam,
dziewczyna zaproponowała żeby na mikołajki podarować sobie prezenty z seri handmade, więc wymyśliłem, że zrobię jej lampkę biurkową(cierpi na jej brak:P) z pleksi na bazie diod RGB. Żeby było ciekawiej chcę dorzucić sterowanie lampki z pilota na podczerwień oraz napisać prosty program w C# na winddowsa, dzięki któremu będzie mogła sobie zaprogramować klawisze pilota pod odpowiednie programy świecenia, które sama będzie musiała sobie stworzyć.
Zabrałem się do pracy. Efektem jest udana próba uruchomienia odbierania sygnałów z pilota. Uruchomiłem programowy PWM na 3 pinach na timerze 0(tak jak w Bluebooku),a zmieniłem dla testów na Timer2.
Problem jaki napotkałem, jest związany z przerwaniami. Otóż odbiór RC5 odbywa się na Timerze1b (tak jak w BB- TIMSK|=(1<<TICIE1);, a programowy PWM na Timerze0 lub 2. Gdy odbiorę wciśnięcie odpowiedniego klawisza z pilota, jest wywoływana funkcja, która odpowiednio steruje PWM, przykładowo rozjaśnianie i ściemnianie jak w BB. Jeśli program wejdzie w tę pętlę, nie ma możliwości żeby uC odbrał następny kod klawisza, który wywołuje inną funkcję(jeśli jest to while(1), nie odbiorę żadnego syganłu. Dla testów przestawiłem żeby pętla wykonywała się 1 raz i po jej skończeniu odbiór RC5 działa znowu prawidłowo).
Próbowałem właśnie zmieniać timery od pwm(jest taka tabelka wektorów przerwań w atmedze, myślałem, że jest to jakiś rodzaj priorytetów(wiem, że w atmegach nie ma możliwości ustawiania priorytetów przerwań), ale nic to nie dało). Ustawiłem również przerwanie zwenętrzne INT0 od zbocza narastającego(wyjście od odbiornika podczerwieni podłączone pod PD2), w którym wywoływałem funkcję odbioru klawisza. Przerwanie zewnętrze działało, odbierałem prawidłowo sygnały z pilota, natomiast PWM przestał działać- dioda w ogóle się nie świeciła.
Czy ktoś mógłby mi podsunąć pomysł jak rozwiązać ten konflikt przerwań :?: :idea:
edit: Myślałem jeszcze żeby na timrze1 i np 2 włączyć sprzętowy pwm, który by sobie cały czas śmigał, a odbiór RC5 prznieść na Timer0. Czy jest coś takiego możliwe?
Jest jeszcze opcja żeby połączyć 2 atmegi między sobą po rs, na jednym obsługiwać RC5, wysyłać rozkazy do 2atmegi, która będzie sterowała PWM. Problem w tym, że ma to być lampka biurkowa, i rozbudowa płytki o dodatkową atmegę jest komplikująca konstrukcję, bo ma być ona jak najmniejsza. I tak mam mało czasu, więc układ planuję zmontować na płytce uniwersalnej i zamknąc w jakieś puzdrełko ;)
edit2 : 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  
PostNapisane: 22 lis 2014, o 15:32 
Offline
Moderator
Avatar użytkownika

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

bloniak91 napisał(a):
Czy ktoś mógłby mi podsunąć pomysł jak rozwiązać ten konflikt przerwań


Nie trzeba rozwiązywać żadnego konfliktu przerwań ... trzeba zacząć uczyć się pisać funkcje i programy w sposób nieblokujący ...

BB rozdział "Wstęp do systemów czasu rzeczywistego"


Autor postu otrzymał pochwałę

_________________
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: 22 lis 2014, o 17:40 
Offline
Użytkownik

Dołączył(a): 04 kwi 2014
Posty: 133
Pomógł: 4

Przeczytałem po raz pierwszy :roll:
W zastosowaniu do mojego projektu mam zrobić timer sprzętowy, który będzie moim fikcyjnym _delay_ms()? o to chodzi?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lis 2014, o 15:32 
Offline
Użytkownik

Dołączył(a): 04 kwi 2014
Posty: 133
Pomógł: 4

Okej, udało się!
funkcję zminiająca zmienną od pwm wsadziłem do timera i tyle. Dziękuje za podpowiedź :geek:



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 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