임베디드 시스템과 펌웨어

소프트웨어로 스위치의 채터링을 제거하는 방법으로 가장 적절한 것은 무엇입니까?

  1. A핀을 읽는 횟수를 늘리고 한 번이라도 1이 되면 눌렸다고 간주한다
  2. B수 ms마다 핀을 읽어 같은 값이 여러 번 이어졌을 때 비로소 상태가 바뀐 것으로 간주한다
  3. C스위치가 눌리면 마이크로컨트롤러를 재시작한다
정답과 해설 보기

정답: B. 수 ms마다 핀을 읽어 같은 값이 여러 번 이어졌을 때 비로소 상태가 바뀐 것으로 간주한다

채터링은 수 ms 안에 가라앉으므로, 예를 들어 5 ms마다 핀을 읽어 같은 값이 3회 이어지면 상태가 바뀐 것으로 판단하면 튀는 동안의 변화를 무시할 수 있습니다. 타이머 인터럽트로 주기적으로 읽도록 하면 다른 처리를 멈추지 않아도 됩니다. 대기 시간을 너무 길게 하면 반응이 느리게 느껴지므로 스위치의 특성에 맞춰 정합니다.

이 분야 연습하기 분야로 돌아가기

임베디드 시스템과 펌웨어의 다른 문제

  1. 16 MHz 클럭을 프리스케일러로 16분주한 것으로 타이머를 세고, 1000카운트마다 인터럽트가 발생하도록 설정했습니다. 인터럽트 간격은 얼마입니까?
  2. 주기가 1000카운트인 PWM 신호에서 1주기 중 250카운트 동안만 출력을 1(High)로 하고 있습니다. 듀티비는 얼마입니까?
  3. 마이크로컨트롤러에서 LED의 밝기나 모터의 회전 속도를 조절할 때 자주 사용되는 방법은 무엇입니까?
  4. 마이크로컨트롤러 타이머의 입력 캡처(input capture) 기능의 용도로 올바른 것은 무엇입니까?
  5. 인터럽트 핸들러 안에서 피해야 할 것으로 가장 적절한 것은 무엇입니까?

이 분야의 비교