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



Teraz jest 15 lis 2024, o 14:03


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 21 maja 2016, o 11:44 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 paź 2014
Posty: 385
Lokalizacja: Śląsk
Pomógł: 0

Witam mam problem z kodem:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Mam tu klawisze i diody LED które migają ale gdy migają to blokują przyciski, wiem że chodzi o delay'e ale nie wiem jak to rozwiązać. Pomoże ktoś?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 maja 2016, o 12:27 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 kwi 2013
Posty: 418
Lokalizacja: Rzeszów
Pomógł: 102

Najlepiej używać przerwań zewnętrznych i/lub timer'a, ale w sposób "liniowy" również jest to wykonalne.

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łę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 maja 2016, o 12:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 paź 2014
Posty: 385
Lokalizacja: Śląsk
Pomógł: 0

Działa tylko raz i potem już nie reagują jak można to proszę bardziej zrozumiale pisać jeszcze nie rozumie wszystkiego.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 maja 2016, o 14:30 
Offline
Użytkownik
Avatar użytkownika

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

Witam,
Może od tego zacząć.

W Twoim kodzie, używasz pętli for.
Blokuje ona wszystko dopóty dopóki zmienna "i", nie przekroczy 16.
Tak więc 16 x 100ms=1,6 s.
Pomyśl nad sposobem - albo wykorzystać funkcję nie blokującą, albo obsłużyć klawisze z nóżek z przerwaniem.
Do zwiększania zmiennej "i" możesz użyć timer np programowy, który będzie wystawiał co 100ms flagę.
Jezeli flaga, wykonaj coś i wyzeruj flagę.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 maja 2016, o 14:33 
Offline
Użytkownik
Avatar użytkownika

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

Proponowałbym Ci poczytać o timerach programowych.
Zobacz jak to można rozwiązać z wykorzystaniem timera Timer0 (zwróć uwagę, że nie wykorzystuję żadnych delay'ów) tylko dwa timery programowe:
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łę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 maja 2016, o 19:37 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 paź 2014
Posty: 385
Lokalizacja: Śląsk
Pomógł: 0

Kolega anshar jak zwykle daje najlepsze rady z kodem i opisem łapatologicznym :) :) Już się biore za analizę kodu.
Pozdrawiam.



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

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