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



Teraz jest 28 mar 2024, o 20:53


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 23 maja 2018, o 09:07 
Offline
Użytkownik

Dołączył(a): 22 mar 2014
Posty: 52
Pomógł: 0

Witam, mam problem z eliminacją drgań styków w switch.
Próbuję to wykonać za pomącą przerwań, i nawet napisałem jakiś program.
Tylko nie wiem czy to będzie tak działało jak bym chciał.
Czas trwania eliminacji drgań ma wynosić 200ms.

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


Ten program na pewno będzie odczekiwał jakiś czas po wciśnięciu klawisza S_PLUS, tylko wydaję mi się że nie zawsze 200ms.
Jeżeli nacisnę przycisk w momencie gdy zmienna licznik już ma wartość 1 to opóźnienie może trwać 100ms albo nawet krócej bo np. za 20ms nastąpi przerwanie i ustawi mi licznik na wartość 2.

Czy moje przemyślenia są prawidłowe?
Jeżeli tak to w jaki sposób mogę pozbyć się tych drgań przy użyciu przerwań?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 maja 2018, o 10:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 mar 2014
Posty: 162
Pomógł: 6

Zerknij na to
http://mirekk36.blogspot.co.uk/2012/10/ ... 2.html?m=1
Najlepiej przeczytaj od początku.

_________________
1+1=10



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 maja 2018, o 11:29 
Offline
Użytkownik

Dołączył(a): 28 wrz 2016
Posty: 215
Pomógł: 14

Pomysł dobry, ale realizacja już nie koniecznie.
Zauważ, ze zmienna licznik jest zwiększana za każdym wywołaniem przerwania. Oznacza to, że stan: przyciśnięty przycisk i licznik równy 2, będzie nieprawdopodobne. Zerowanie tego licznika też będzie dziełem przypadku.
Licznik powinien zacząć liczyć od momentu przyciśnięcia przycisku.
Zmienna "sprawdzana w programie" powinna być modyfikowana natychmiast po przyciśnięciu przycisku, a nie po 200ms.
I kod funkcji klawisze jest na tyle krótki, ze przynajmniej ja nie tworzyłbym funkcji, a kod umieściłbym w obsłudze przerwania

_________________
de gustibus non est disputandum



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 maja 2018, o 14:04 
Offline
Użytkownik

Dołączył(a): 22 mar 2014
Posty: 52
Pomógł: 0

Dobra, pokombinowałem trochę i wyszło mi coś takiego:'

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


Program działa bez żadnych problemów.
Mam tylko pytanie, czy w ten sposób można pisać programy?
Czy to jest dobrze napisane? Chodzi mi o to wyłączanie i włączanie timera.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 maja 2018, o 17:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

estetyka to chyba dość indywidualne podejście , zaś inną sprawą że jest tle rozwiązań ilu programistów
widzisz np ja nigdy się nie przejmowałem bounce czy debouce czy belonce :) bo uważam że pisanie w tym celu
softu to strata zasobów i niepotrzebne kombinacje na rozwiązanie czegoś co wszyscy udawadniają że istnieje ,
ja problem rozwiązuję sprzętowo i zawsze jest ok:)

https://www.sunduino.pl/albo-bounce-albo-debounce/ tak ...

ale to moje podejście zaś tu wykazałeś się myśleniem i szukaniem rozwiązania co na pewno cię czegoś nauczyło
choć np z mojego punktu widzenia bez urazy oczywiście zmarnowałeś sporo czasu i powietrza na coś co można rozwiązać prościej
i szybciej :)

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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