Skocz do zawartości

Stabilizacja przycisku do symulacji impulsów


Pomocna odpowiedź

@marek1707 dzięki za garść informacji.

Obecnie stan 0 na pinach mam poprzez podłączone rezystor z jednej strony do pinu a drugi koniec rezystor do GND więc nie miga mi już nic. Bo bez tego to było losowo jak piszesz z tymi niewiadomymi stanami.

Wiem że mógł bym programowo pozbyć się za pomocą prostej funkcji w programie, ale nie chce dodatkowo obciążać maliny. Choć chyba sprawdzę jak dodanie takiej funkcji obciąży mi malinę.

Dziękuje za pomoc i podpowiedzi 🙂

Trudno tutaj mówić o obciążaniu procesora jak to robisz z częstotliwością 270Hz.

Kod w prostej postaci wygląda tak:

volatile unsigned char keytime=0; //jakaś zmienna do odliczania

#define keyloopstoaccept (5) // ile cykli musi być klawisz wciśnięty żeby został zaliczony
timer_int {

if (keypressed) 
{
 if (keytime<keyloopstoaccept ) 
 {
   keytime++;
   if (keytime==keyloopstoaccept ) callpressedkey(); // oczywiście jak coś długiego robisz to nie może to być wywołane z przerwania, bo zblokujesz inne przerwania, chyba, że jest to przerwanie o niskim priorytecie
 }
}
else keytime=0;
}

Jak masz filtr RC to możesz sobie zupełnie podarować sprawdzanie wejścia 270 razy na sekundę i obsługiwać zmianę stanu wejścia na przerwaniu - tak najmniej obciążysz procesor.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...