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



Teraz jest 9 sty 2025, o 18:35


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 24 paź 2014, o 23:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 lut 2014
Posty: 123
Lokalizacja: Świętokrzyskie
Pomógł: 0

Witam

Napisałem kiedyś mały programik służący do załączania i wyłączania led za pomocą jednego przycisku z opóźnieniem, ale zrobiłem to używając "waitms". Chodziło mi o to aby led nie zaświecała się odrazu po naciśnięciu przycisku,tylko trzeba było go chwilę przytrzymać i dopiero się led zaświeciła. I to samo przy zgaszeniu led.

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


Chciałbym to zrobić teraz bez użycia waitms, ale za to z użyciem timera0 do odmierzenia czasu, ale coś mi nie wychodzi i nie odmierza czasu. Po naciśnięciu przycisku program miałby przeskoczyć do procedury odmierzającej czas, np. 3s, powrócić do pętli głównej, sprawdzić czy nadal przycisk wciśnięty i zaświecić led. To samo na odwrót.

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


Pomożecie mi to jakoś poprawić?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 paź 2014, o 00:57 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 lut 2014
Posty: 123
Lokalizacja: Świętokrzyskie
Pomógł: 0

Nie rozumiem tego.

Jak puszczony przycisk to nie będzie inkrementowana zmienna word.
Jak przycisk wciśnięty to ma się inkrementować, a jak nie to nie.

Ja zrobiłem to jeszcze tak jak ja to rozumuję a jak już wiesz ze mnie programista żaden, ale działa.
Ile czasu trzeba trzymać wciśnięty to tylko mógłbym zmierzyć stoperem, bo tego przeliczania też nie rozumiem, mimo że Panowie Górecki i Wiązania tłumaczyli to w swoich książkach.
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


A tak zrozumiałem to co mi napisałeś, ale nie wiem czy dobrze.
Jeśli możesz to wytłumacz mi z tym timerem jak to się przelicza i o co w tym chodzi bo z tych książek nic nie rozumiem, a niby napisane dla początkujących. Teraz muszę bardzo długo trzymać przycisk żeby się zaświeciła led.

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



Ostatnio edytowano 25 paź 2014, o 01:17 przez michał6201, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 paź 2014, o 01:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 lut 2014
Posty: 123
Lokalizacja: Świętokrzyskie
Pomógł: 0

Dziękuję Ci za kod.
Zmniejszyłem wartość zmiennej z 1000 do 125 żeby szybciej zmieniał się stan led, ale działa po puszczeniu przycisku, czyli nie wiemy kiedy doliczył do 125, póki nie puścimy przycisku. Można to jakoś odwrócić?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 paź 2014, o 01:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 lut 2014
Posty: 123
Lokalizacja: Świętokrzyskie
Pomógł: 0

Teraz działa super.
A czemu dałeś wszystko do podprogramu obsługi przerwania? Dlaczego tak się robi?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 paź 2014, o 16:14 
Offline
Użytkownik
Avatar użytkownika

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

Pozwólcie moi drodzy, że się wtrącę w wątek...
Kolego @Niveasoft, a co się stanie kiedy w Twoim programie po 2s nadal będę trzymał przycisk? :mrgreen:

No dobra, żeby nie być tylko krytykiem to wrzucam moją wersję tego problemu i nieco zmieniłem Twój kod.
Przede wszystkim oczyściłem przerwania, bo dobrym nawykiem jest aby od początku robić tam porządek i umieszczać tylko niezbędne rzeczy (o czym zresztą sam wspominałeś). Dodałem za to timer programowy. Zmieniłem nieco interwał przerwań - teraz jest 10ms co łatwiej się liczy. Program jest oczywiście nieblokujący czyli nie zatrzymuje pętli głównej na czas swojego wykonywania. Pozmieniałem też kolejność instrukcji - tu również dobrym nawykiem jest aby włączać przerwania jak już wszystko się skonfiguruje i poustawia, bo o ile w tak prostym programie zgrzytu nie będzie o tyle w czymś bardziej skomplikowanym może być niezły zonk nawet ze zjaraniem peryferiów dołączonych do procka włącznie(!)...

@michał6201 przeanalizuj dokładnie moją wersję programu, a zobaczysz jakie cuda można wyprawiać z badaniem przycisku w ten sposób napisanym ;) O tym, że wyszło przy okazji gotowe debounce (nawiasem mówiąc tu niepotrzebne, ale przy dalszej rozbudowie niezbędne) nawet już nie wspominam... 8-)

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


Autor postu otrzymał pochwałę

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 paź 2014, o 13:03 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 lut 2014
Posty: 123
Lokalizacja: Świętokrzyskie
Pomógł: 0

Dziękuję Wam za pomoc:)
Będę bawił się dalej.
MKavrCalculator mam także potrenuję też obliczanie parametrów do timerów.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 paź 2014, o 13:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 cze 2013
Posty: 988
Lokalizacja: Byram, MS 39272
Pomógł: 55

Do obliczania parametrów Timer'a polecam także te stronę
http://impuls.elektroda.eu/joomla/index ... kalkulator

_________________
Pomysły na podpis - wyślij SMSa +1 769 243 0011



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

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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO