Próbuję napisać własną funkcję filtrowania drgań styków, wzorując się delikatnie na przykładzie z niebieskiej książki. Jestem jednak zmuszony wprowadzić kilka zmian:
1) Konieczna jest możliwość sprawdzania kilku przycisków jednocześnie. Dla każdego mam przygotowane osobne zmienne, które podaję przez wskaźnik.
2) Funkcja ma zwracać wartość 1, gdy wykryje kompletną sekwencję: wciśnięcie przycisku -> przytrzymanie przez minimum 200 ms, puszczenie przycisku. W każdym innym przypadku zwraca wartość 0.
3) Funkcja operuje nie na timerach sprzętowych obsługiwanych w przerwaniu, ale na funkcji millis(), działającej dokładnie jak w Arduino (chodzi mi o kompatybilność kodu z tą pratformą).
4) Funkcja debounce_key() będzie wywoływana kolejno w ramach funkcji nadrzędnej, z różnymi paramtrami. Gdy któreś wywołanie zwróci 1, funkcja nadrzędna zwróci numer klawisza, który będzie dalej wykorzystywany w pętli głównej.
Kod wygląda tak:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
W funkcji nadrzędnej funkcje obsługiwane są następująco:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Niestety, kod nie chce działać. Zwieranie pinów do których mają być podpięte przyciski nie daje żadnego rezultatu.
Ktoś z Was widzi błąd?