채터링이란?
Solution
->전자 회로 내의 스위치나 계전기의 접점이 붙거나 떨어질 때 기계적인 진동에 의해 실제로는 매우 짧은 시간 안에 접점이 붙었다가 떨어지는 것을 반복하는 현상. 이는 회로에 나쁜 영향을 끼치므로 제거해야 한다.
문제점->스위치를 한번만 눌렀을경우에도 여러번 눌렀다고 판단한다.
수정안->여러번 눌렀을경우(&누르고있는경우) 한번만 인식하기 위해 채터링을 사용한다
1. 선 채터링
이방법은 스위치를 누르고 있는동안은 while에서 무한 루프에 걸리게 됩니다 그러나 스위치를 때면 while 문 다음으로 넘어가게 되겠죠?
if(PINB & 0x04){
while(PINB & 0x04)
;
// 처리내용
}
2. 후 채터링
위에것과 다르게 이건 스위치를 눌렀을떄 먼저바뀌고 무한루프로 들어가는 겁니다(누르고있을때) 스위치를 때면 무한루프를 나가게 되며 if문이 종료 되는거죵~
if(PINB & 0x04){
// 처리내용
while(PINB & 0x04)
;
}
어때요? 간단하지만 좋은방법이죵?
!참고!->
또 한가지더.. 스위치를 누르고있을때 다른동작을 하고 싶다면 while문 안에 하고 싶은 동작을 입력해주면 되요~ 그런데 while문.. 스위치를 누르고 있는동안 무한 반복을 한다는점을 생각해야겟죵"?ㅋ
'AVR & ARM(Coretex-M3)' 카테고리의 다른 글
[C lang] unit32_t 가 뭐야? (0) | 2011.04.21 |
---|---|
X-CTU 설치파일 (Zigbee 테솔꺼..) (0) | 2011.02.07 |
Stm32f103RBT6 데이터 쉬트 및 Reference Manuals (Rm0008) (0) | 2011.01.11 |
flash_loader_demonstrator_(v2.2)-um0462 +(2.0, 2.1 버전) (2) | 2010.12.31 |
[ARM] Bit banding (4) | 2010.12.23 |