채터링이란?
->전자 회로 내의 스위치나 계전기의 접점이 붙거나 떨어질 때 기계적인 진동에 의해 실제로는 매우 짧은 시간 안에 접점이 붙었다가 떨어지는 것을 반복하는 현상. 이는 회로에 나쁜 영향을 끼치므로 제거해야 한다. 

문제점->스위치를 한번만 눌렀을경우에도 여러번 눌렀다고 판단한다.
수정안->여러번 눌렀을경우(&누르고있는경우) 한번만 인식하기 위해 채터링을 사용한다
Solution
1. 선 채터링
이방법은 스위치를 누르고 있는동안은 while에서 무한 루프에 걸리게 됩니다 그러나 스위치를 때면 while  문 다음으로 넘어가게 되겠죠?
if(PINB & 0x04){
while(PINB & 0x04)
// 처리내용
}


2. 후 채터링
위에것과 다르게 이건 스위치를 눌렀을떄 먼저바뀌고 무한루프로 들어가는 겁니다(누르고있을때) 스위치를 때면 무한루프를 나가게 되며   if문이 종료 되는거죵~

if(PINB & 0x04){
 // 처리내용
while(PINB & 0x04)
;
}

어때요? 간단하지만 좋은방법이죵?

!참고!-> 
또 한가지더.. 스위치를 누르고있을때 다른동작을 하고 싶다면 while문 안에 하고 싶은 동작을 입력해주면 되요~ 그런데 while문.. 스위치를 누르고 있는동안 무한 반복을 한다는점을 생각해야겟죵"?ㅋ

+ Recent posts