whether the following debouncing logic will work well: the total cycle for code is 50ms and each function is executed only once during the cycle.
void main() { signed int deb_Counter=0; while(1) { input(); process(); output(); } } int debounce() { if(key_pressed) { deb_Counter++; } else { deb_Counter--; } if(deb_Counter>10) { deb_Counter=0; return(1); } else { deb_Counter=0; return(0); } }
this code is reffered from web with thanks, karthik
You have deb_Counter local to main and are trying to access it within the separate function debounce.
"this code is reffered from web"
Suggest you look elsewhere.
hello kartik.
you can call debounce function from main and debug it. you will come to know is the timing parameters you defined is correct or not.
Regards ankit thakkar
the fact that it does not even compile does not seem to disturb you...
this debounce function will be called in input function sorry for not mentioning it.
void main() { signed int deb_Counter=0; while(1) { input(); process(); output(); } } void input() { int status=debounce(); } int debounce() { if(key_pressed) { deb_Counter++; } else { deb_Counter--; } if(deb_Counter>10) { deb_Counter=0; return(1); } else { deb_Counter=0; return(0); } }
with thanks, karthik
Ahhem ...
You've done nothing to fix 'deb_Counter'.
And a glaring logic error ...
In 'debounce' you check for deb_Counter being greater than 10.
If it is, you reset to zero. If it isn't, you reset to zero.
How would it ever manage to get anywhere near 10?
Maybe you should return to first principals before embarking on a task such as this.
View all questions in Keil forum