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



Teraz jest 10 cze 2026, o 21:03


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 8 lis 2015, o 10:55 
Offline
Nowy

Dołączył(a): 18 lut 2015
Posty: 12
Pomógł: 0

Witam. Zbudowałem licznik punktów, który wykorzystam do tenisa stołowego. Proszę zobaczyć:


jakby coś to proszę cały link https://www.youtube.com/watch?v=1zJ-SnBeRm0&feature=youtu.be

Problem polega na tym, że jednorazowe naciśnięcie przycisku nie przełącza O RAZ tylko gdy przytrzymam, przełącza dalej(co widać przy cofaniu punktów setów). Jest to zrozumiałe z punktu widzenia programu. Nie zastosowałem w nim przerwań tylko zwykłe opóźnienia. Kod jest dość długi, więc nie będę go teraz umieszczał. Jak ktoś będzie chciał podejrzeć jakiś fragment to wkleję, ale liczę, że może uda mi się uzyskać pomoc bez tego.
Program po prostu załącza kolejne wyswietlacze LED i w trakcie załączania sprawdza jaka jest zmienna i wg niej przypisuje nań cyfre.
Działanie przycisków są opóźnione o 100ms, ze względu, że gdy tego nie było, to przełączało się o kilkadziesiąt punktów przy jednorazowym kliknięciu(pętla wykonywała się kilkadziesiąt razy), no i gdy przytrzyma się dłużej niż 100ms, to wskoczy drugi punkt, ale w tym czasie (tych 100ms) nie wykonuje się pętla główna i stąd to migotanie, przy przełączaniu.

Jak z tego wybrnąć, żeby licznik działał tak jak to zwykle działają, bez migotania i jednorazowe klikniecie to jeden punkt. Czy da się jakoś bez obsługi przerwań?? Pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lis 2015, o 12:00 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

Z filmu można wywnioskować, że napisałeś program w sposób totalnie blokujący. Idąc tą drogą daleko nie zajdziesz i co chilę będziesz miał problemy.

Wyświetlanie cyfr na wyświetlaczu powinieneś zrobić w przerwaniu a nie w pętli głównej. Tak wywnioskowałem z opisu. Wtedy unikniesz migania wyświetlacza nawet wtedy kiedy zablokujesz pętlę główną na dłuższy czas np. jakimś długim delayem. Delay niestety zablokuje pętle główną ale przerwania a tym samym wyświetlanie będzie działać bez problemu.
Robienie wyświetlacza multipleksowanego w pętli głównej a nie w przerwaniu to jakieś nieporozumienie.

Co do klawiszy to może najpierw przeczytaj te artykuły
http://mirekk36.blogspot.com/2012/10/dr ... ak-to.html
http://mirekk36.blogspot.com/2012/10/ob ... w-cd2.html
http://mirekk36.blogspot.com/2012/10/ob ... a-cd3.html

A zwłaszcza część drugą i trzecią.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lis 2015, o 12:41 
Offline
Moderator
Avatar użytkownika

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

viper303 napisał(a):
Czy da się jakoś bez obsługi przerwań??

Robienie multipleksowania bez przerwań to hmmm co tu dużo mówić - no to jest jakaś niedorzeczność kompletna :( Poza tym na filmiku jak na dłoni widać, że masz jakieś mega duchy na tym wyświetlaczu - czyli na innych cyfrach przebijają sąsiednie ... wygląda to okropnie niestety ...

Panie kolego - czas zabrać się za przerwania.

viper303 napisał(a):
Kod jest dość długi, więc nie będę go teraz umieszczał.

Masz rację, że nie umieszczasz bo tak NIGDY się nie robi ... i nie jest to złośliwość tylko motywowanie ciebie do tego aby zrobić to tak jak się należy.

_________________
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: 8 lis 2015, o 23:05 
Offline
Nowy

Dołączył(a): 18 lut 2015
Posty: 12
Pomógł: 0

heh, chciałem być sprytniejszy od Pana:D nie no po prostu jako adept jeszcze nie umiem myśleć jak kompilator(bo to mój pierwszy program), ale powoli się uczę:)pozdrawiam i biorę się za robotę:)



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