마이크로프로세서_채터링방지_인터럽트
- 최초 등록일
- 2021.09.23
- 최종 저작일
- 2019.03
- 7페이지/ MS 워드
- 가격 1,000원
목차
1. 채터링(바운싱)
2. 인터럽트
3. 구현
4. 코드 구현 시 애로사항
본문내용
1. 채터링(바운싱)
A. 의미
푸시 스위치를 사용할 경우 버튼이 붙거나 떨어지는 순간 즉 접점이 붙거나 떨어질 때 기계적인 진동이 발생한다. 이로 인해 매우 짧은 시간 내에서 접점이 붙었다가 떨어지는 것을 반복하여 스위치가 여러 번 눌린 것으로 인식된다.
B. 해결책
i. 하드웨어적 방법
채터링을 방지하기 위해 기본적으로 저항과 커패시터를 사용할 수 있다. 커패시터의 충방전 효과를 통해 응답시간을 늦출 수 있다. 또는 이러한 것을 막아주는 전용 IC로 슈미트 트리거가 있다. 슈미트 트리거는 특정 전압 이상일 경우 HIGH를 출력하고 특정 전압 이하에서 LOW를 출력한다. 그외에 플립플롭을 활용하는 방법도 있다. 교육용 보드는 슈미트트리거와 커패시터 모두 사용했다.
ii. 소프트웨어적 방법
채터링을 소프트웨어적으로 처리할 수 있다. 대표적으로 사용하는 것이 delay다. 어떤 사건이 발생하면 delay를 사용해서 채터링이 없어진 후에 데이터를 인식하는 것이다. 혹은 플래그를 이용할 수 있다. 스위치를 누르거나 뗄 때 플래그가 바뀌도록 하여 한 번만 인식하도록 하는 것이다. 이와 같은 기능을 하는 코드를 함수 내부에 작성할 수도 있지만, 인터럽트를 이용할 수도 있다.
2. 인터럽트
인터럽트는 특정 이벤트가 발생하면 현재 동작중인 프로그램을 중지 시키고 지정된 인터럽트 벡터에 따라 ISR(Interrupt Service Routine)을 실행한다. 기본적으로 함수와 비슷한 동작을 하지만 차이가 있다.
참고 자료
없음