임베디드 면접 용어 사전
자동차 MCU 실습Input Capture

입력 캡처

타이머 채널에 들어온 신호의 에지 순간 카운터 값을 하드웨어가 저장하는 기능. ISR 지연이 측정 오차에 섞이지 않는다.

Input Capture. "언제 들어왔는가"를 CPU가 아니라 하드웨어가 기록하게 하는 방식이다.

폴링·인터럽트와 무엇이 다른가

폴링          while (pin == 0);  → 그동안 CPU 가 묶인다. 반복문 주기가 곧 오차
인터럽트       에지에서 ISR 진입 후 타이머를 읽는다
              → 진입 지연(수십~수백 사이클)이 그대로 오차가 된다
입력 캡처      에지 순간 하드웨어가 카운터 값을 레지스터에 박는다
              → ISR 은 나중에 읽기만 한다. 지연이 오차에 들어가지 않는다

정확도가 필요한 시간 측정은 예외 없이 입력 캡처로 간다.

초음파 거리 측정에 쓰면

void FTM0_Ch6_IRQHandler(void) {
    if (FTM0->CONTROLS[6].CnSC & FTM_CnSC_CHF_MASK) {
        FTM0->CONTROLS[6].CnSC &= ~FTM_CnSC_CHF_MASK;
        cap_prev = cap_curr;
        cap_curr = (uint16_t)FTM0->CONTROLS[6].CnV;   /* 하드웨어가 박아 둔 시각 */
    }
}
uint16_t delta = cap_curr - cap_prev;   /* unsigned 뺄셈이라 오버플로에도 맞는다 */

설계에서 정할 것 둘

  • 분해능 — 타이머 틱이 곧 최소 단위다. 8MHz를 /8 하면 1µs 틱이 된다
  • 측정 범위 — 16비트 카운터는 1µs 틱에서 65.5ms 만에 한 바퀴 돈다. 분해능을 올리면 범위가 줄어드는 트레이드오프

함정

  • 캡처 레지스터를 읽기 전에 다음 에지가 오면 값이 덮인다(오버캡처)
  • 채터링이 있는 신호는 필터를 켜거나 소프트웨어로 걸러야 한다

함께 보면 좋은 용어

노트에서 맥락과 함께 보기 — S32K144 실습 — 쿡북(AN5413)·초음파 입력캡처·CAN·HardFault 추적