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



Teraz jest 30 gru 2024, o 00:34


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 18 ] 
Autor Wiadomość
PostNapisane: 9 wrz 2016, o 23:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2015
Posty: 188
Pomógł: 10

Z racji tego, że jest to mój pierwszy post, na początku pragnę przywitać się z wszystkimi użytkownikami forum.

Trafiam do Was z małym problemem. Otóż postanowiłem zbudować układ prezentujący różne wariacje ledowe. Każdy efekt jest prezentowany na ośmiu diodach. Docelowo całość będzie napędzać MałaMegi8.

Program napisany. Obecnie faza testowania i tu napotkałem problem z klawiszem. Podczas zmiany efektu dziwnie się zachowuje. Bardzo topornie i mało precyzyjnie. Trzeba naciskać kilka razy.

Czy jest na to jakaś mądra rada?

Obrazek

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 wrz 2016, o 23:40 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

Nie działa jak powinno, bo program czeka na zakończenie migania, czyli w tej chwili nic do niego nie dociera.

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 wrz 2016, o 00:40 
Offline
Użytkownik

Dołączył(a): 29 lip 2014
Posty: 195
Pomógł: 44

Witam,

Tak jak kolega Harry napisał, masz program napisany liniowo, generując efekty na LED-ach blokujesz uC w tych funkcjach. Widzę, że masz BB, przeczytaj rozdział "Projekt wielozadaniowy" i zainteresuj się zwłaszcza timerami programowymi. Spróbuj może na początek napisać program obsługujący jedną diodę LED, której częstotliwość migania będziesz zmieniał przyciskiem, ale uwaga: w sposób całkowicie nieblokujący, bez użyci jakiegokolwiek delay-a. Pytaj, jeśli będziesz miał z tym problemy.

Pozdrawiam, QuadMan.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 wrz 2016, o 08:00 
Offline
Użytkownik

Dołączył(a): 05 lut 2014
Posty: 252
Lokalizacja: obok Częstochowy
Pomógł: 14

Właśnie kończę podobny program. Klawisz realizowałem na PCINT. Ale z racji tego, że nie byłem do końca zadowolony z jego działania dolutowałem odbiornik podczerwieni i teraz jest OK. Z pilotem to dopiero można poszaleć i obsługę "drgań styków" mam z automatu zrealizowaną.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 wrz 2016, o 11:12 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2015
Posty: 188
Pomógł: 10

Aha chyba już rozumiem. Muszę w jakiś sposób napisać przerwanie zewnętrzne (od przycisku), które przerwie pracę programu głównego. Licznik zinkrementuje się i wszystko od nowa



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 wrz 2016, o 11:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 lut 2013
Posty: 600
Pomógł: 47

Zajrzyj tutaj powinno rozwiązać problem z blokującym kodem.
http://mirekk36.blogspot.com/2012/10/obsuga-klawiszy-zwoka-czasowa-cd3.html?m=1

------------------------ [ Dodano po: 9 minutach ]

Pozatym w Bluebook rozdział 8.4 wstęp do systemów czasu rzeczywistego masz opisane to zagadnienie bardzo szczegółowo. Zerknij tam.

_________________
https://www.instagram.com/myfirstquadcopter/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 wrz 2016, o 12:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Draxter32 napisał(a):
Czy jest na to jakaś mądra rada?

Przede wszystkim należy zapewnić prawidłowe zasilanie twojemu mikrokontrolerowi. Z twojego schematu wynika, że brakuje zasilania na nóżce AVCC oraz filtracji. Proponuję poczytać:
http://mirekk36.blogspot.co.uk/2012/04/mikrokontroler-prawidowe-zasilanie.html

------------------------ [ Dodano po: 2 minutach ]

Brakuje też rezystora 10k na nóżce Reset. ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 wrz 2016, o 12:39 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2015
Posty: 159
Lokalizacja: Kościerzyna
Pomógł: 9

Może się nie znam ale gdzie w kodzie jest:

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

_________________
BlueBook II czytam i popijam soczek z kubeczka...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 wrz 2016, o 12:46 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

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

można napisać:
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: 10 wrz 2016, o 12:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2015
Posty: 159
Lokalizacja: Kościerzyna
Pomógł: 9

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

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


Dzięki za wyjaśnienie, teraz wiem coś nowego :)

_________________
BlueBook II czytam i popijam soczek z kubeczka...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 wrz 2016, o 14:16 
Offline
Użytkownik

Dołączył(a): 05 lut 2014
Posty: 252
Lokalizacja: obok Częstochowy
Pomógł: 14

Draxter32 napisał(a):
Aha chyba już rozumiem. Muszę w jakiś sposób napisać przerwanie zewnętrzne (od przycisku), które przerwie pracę programu głównego. Licznik zinkrementuje się i wszystko od nowa


Dokładnie. Zrób klawisz na przerwaniu INT. Ja robiłem na PCINT, bo miałem już płytkę zrobioną.
Można też taki program napisać na timerach tzw."nieblokujący". Ja jednak przy zabawie z diodami, wymyślaniu efektów preferuję dilaje, bo idzie łatwiej i intuicyjnie. Działanie pętli efektów zawsze można przerwać jakimś przerwaniem.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 wrz 2016, o 15:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

Ostatnio pisałem w temacie zegarka cyfrowego że delay lubi się mścić i polecam działać na timerach.

Wysłane z mojego LIVE przy użyciu Tapatalka

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 wrz 2016, o 16:18 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1967
Lokalizacja: Lipsko
Pomógł: 125

Rafał555 napisał(a):
Ja jednak przy zabawie z diodami, wymyślaniu efektów preferuję dilaje, bo idzie łatwiej i intuicyjnie. Działanie pętli efektów zawsze można przerwać jakimś przerwaniem.


Oooo kochany, proponuję jak najszybciej zmienić podejście, bo to się na tobie zemści. Jeśli Tak mówisz to jestem przekonamy na 100%, że jeszcze nie ogarnąłeś do końca timerów albo masz problem z dzieleniem zadań ;). Uwierz, czym szybciej zapomnisz o delay tym wcześniej będziesz pisał lepsze programy. Pewnie nie uwierzysz, ale w moich komercyjnych programach nie ma ani jednego delay ...i działają ;)

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 wrz 2016, o 17:34 
Offline
Użytkownik

Dołączył(a): 05 lut 2014
Posty: 252
Lokalizacja: obok Częstochowy
Pomógł: 14

Panowie. Nie zrozumcie mnie źle. Napisałem już kilka zabawek na "magic ledach" i same efekty najlepiej pisało mi się na delayach.
Projekty bardziej złożone oczywiście piszę nie blokująco. Moja centralka alarmowa to same timery w zasadzie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 wrz 2016, o 19:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

kolego "Draxter32",
Gdybyś się upierał przy twoim sposobie z pierwszego postu, to przynajmniej zmień wpis:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

na coś w tym stylu , - też będzie blokować ale trochę pomoże przy inkrementacji. I naprawdę warto pokombinować coś nie blokującego. ;)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

powinno trochę pomóc .


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 wrz 2016, o 22:00 
Offline
Użytkownik

Dołączył(a): 14 paź 2012
Posty: 43
Lokalizacja: Szczecin
Pomógł: 0

A dlaczego wszystkie funkcje coś teoretycznie zwracają- uint8_t push_btn(void) czy uint8_t efekt_xxx(void) ? powinno być
void push_btn(void) i void efekt_xxx(void).

Gdyby dana funkcja coś zwracała to np.
uint8_t button;
button=push_btn();

to wtedy miało by to sens.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 wrz 2016, o 07:48 
Offline
Użytkownik

Dołączył(a): 15 gru 2013
Posty: 213
Pomógł: 5

Witam.
Pozwolę się wtrącić w dyskusję,tak jak kolega SYLWEKK pisze
Cytuj:
Oooo kochany, proponuję jak najszybciej zmienić podejście, bo to się na tobie zemści. Jeśli Tak mówisz to jestem przekonamy na 100%, że jeszcze nie ogarnąłeś do końca timerów albo masz problem z dzieleniem zadań
.
Ja z doświadczenia ostatnich eksperymentów dowiedziałem się przede wszystkim od Mirka oraz HARRY że też mam taką dolegliwość.Zacisnąłem zęby procesorki na bok do łapek BB i...hura :D :lol: odkryłem nowy świat no i teraz to dopiero jazda :o .
Proponuje się dostosować do zaleceń kolegów oni naprawdę wiedzą co w trawie piszczy ;) .
Pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 paź 2016, o 21:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2015
Posty: 188
Pomógł: 10

Dziękuję @Daro69 za tymczasowe rozwiązanie.

Z całą pewnością doczytam o timerach i zacznę je implementować w moich projektach.
Dziękuję wszystkim za pomoc i wskazówki.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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