임베디드 시스템과 펌웨어

16 MHz 클럭을 프리스케일러로 16분주한 것으로 타이머를 세고, 1000카운트마다 인터럽트가 발생하도록 설정했습니다. 인터럽트 간격은 얼마입니까?

  1. A1 µs
  2. B1 ms
  3. C16 ms
정답과 해설 보기

정답: B. 1 ms

16 MHz를 16으로 나누면 타이머 클럭은 1 MHz이고 1카운트는 1 µs입니다. 1000카운트마다이면 1 µs×1000=1 ms 간격이 됩니다. 프리스케일러는 너무 빠른 클럭을 분주하여 타이머가 셀 수 있는 범위에 맞추기 위한 것입니다. 1 ms마다의 인터럽트는 시간 관리, 스위치 읽기, RTOS의 시간 단위(틱) 등에 자주 사용됩니다.

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

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

  1. 주기가 1000카운트인 PWM 신호에서 1주기 중 250카운트 동안만 출력을 1(High)로 하고 있습니다. 듀티비는 얼마입니까?
  2. 마이크로컨트롤러에서 LED의 밝기나 모터의 회전 속도를 조절할 때 자주 사용되는 방법은 무엇입니까?
  3. 마이크로컨트롤러 타이머의 입력 캡처(input capture) 기능의 용도로 올바른 것은 무엇입니까?
  4. 인터럽트 핸들러 안에서 피해야 할 것으로 가장 적절한 것은 무엇입니까?
  5. 위의 프로그램을 최적화를 켜고 컴파일하면 타이머 인터럽트가 발생해도 led_on()이 호출되지 않는 경우가 있습니다. 원인과 대책의 조합으로 올바른 것은 무엇입니까?

이 분야의 비교