ICU (Input Capture Unit) Driver — MCAL I/O Drivers 중 하나. 입력 신호의 엣지·시간·빈도를 측정하는 계층. PWM Driver의 대척점으로, PWM이 특정 duty/period로 신호를 생성한다면 ICU는 외부 입력 신호의 타이밍을 측정한다.
주요 용도
- PWM 신호 복조(demodulation) — 외부에서 들어오는 PWM의 duty·period 분석
- Pulse counting
- 주파수·duty cycle 측정
- 단순 인터럽트 생성·wakeup 인터럽트
기능
- Edge time stamping — 비주기적(non-periodic) 신호 취득에 유용
- Edge counting — 엣지 개수 계수
- Signal edge notification — 엣지 발생 시 콜백
- Wakeup 인터럽트 제어
- Periodic signal time measurement — 주기적 신호의 시간 측정
동작 모드
ICU_MODE_EDGE_COUNTER— 엣지 발생 수 카운트. 예:ICU_BOTH_EDGES설정 시 상승·하강 모두 계수ICU_MODE_SIGNAL_MEASUREMENT— 신호 폭 측정. Signal measurement property 로 어떤 구간을 측정할지 선택 (예: Low Time, High Time, Period, Duty Cycle)
함수
- 초기화 / 해제
- Wakeup 활성/비활성
- Notification 활성/비활성
- State, start time, stop time 읽기
- Edge detection 활성/비활성
- Edge count 활성/비활성/리셋/읽기
의존성
- PORT Driver — port pin을 input으로 구성
- MCU Driver — system clock, prescaler, PLL
ADC HW Trigger 대체
ADC가 HW trigger를 지원하지 않을 때, ICU notification + ADC software trigger 조합으로 유사 동작이 가능하다. ICU가 감지한 엣지/주기 이벤트의 notification이 ADC conversion을 개시하는 패턴.