Witam serdecznie
Nie jestem programistą, ale czasem piszę jakieś programy. Pozostanę wdzięczny za wszelkie sugestie odnośnie estetyki etc. Mimo iż nie publikuję swoich wypocin, nie chcę jednak nabierać złych nawyków.
Poniższa funkcja powstała z myślą o eliminacji wpływu drgania styków oraz innych zakłóceń na przełącznikach/stycznikach itp. co w moim opracowaniu jest krytycznym parametrem.
Moje pytanie brzmi: czy ta funkcja jest prawidłowo napisana i czy da się
ją ewentualnie "odchudzić" (mam na myśli wielkość kodu wynikowego)
Sama funkcja oczywiście działa bez zarzutu i jest wywolywana w przerwaniu.
Dziękuję i pozdrawiam,
Marcin
Nie jestem programistą, ale czasem piszę jakieś programy. Pozostanę wdzięczny za wszelkie sugestie odnośnie estetyki etc. Mimo iż nie publikuję swoich wypocin, nie chcę jednak nabierać złych nawyków.
Poniższa funkcja powstała z myślą o eliminacji wpływu drgania styków oraz innych zakłóceń na przełącznikach/stycznikach itp. co w moim opracowaniu jest krytycznym parametrem.
Moje pytanie brzmi: czy ta funkcja jest prawidłowo napisana i czy da się
ją ewentualnie "odchudzić" (mam na myśli wielkość kodu wynikowego)
Sama funkcja oczywiście działa bez zarzutu i jest wywolywana w przerwaniu.
Dziękuję i pozdrawiam,
Marcin
//...
//...
// przykladowa konfiguracja
#define KEY_TIME_DELAY 10
#define PIN PINB
#define WLACZNIK 1
//----------------------FUNKCJA SPRAWDZAJACA STAN WYPROWADZANIA----------------//
int stan_przycisku(int a)
{
int i, j;
i = KEY_TIME_DELAY ; // ilosc "probek"
j = KEY_TIME_DELAY/2; // ilosc "probek" dla pozytywnego wyniku (50%)
while(i)
{
if (bit_is_set(PIN, a)) // jesli sygnal jest podany
{
j--;
}
i--;
}
if(j<=0)
return 1; // jesli podany przez ponad 50% czasu "1"
else return 0; // lub "0" jesli nie
}
//------------------------------------------------------------------------------//
int main()
{
if (stan_przycisku(WLACZNIK) == 1 )
{
} // przykladowe wywolanie funkcji
}
