OCU (Output Compare Unit) Driver — MCAL I/O Drivers 중 하나. 자유 동작 카운터(free running counter)와 비교 threshold의 일치 시점에 출력을 내는 계층. ICU가 입력 엣지를 측정한다면, OCU는 지정 시각에 출력 동작을 트리거한다.
구성 요소
- Free running counter — 최솟값 → 최댓값으로 자동 증가, 최댓값 도달 시 최솟값으로 자동 재시작
- Compare threshold — 비교 대상 값
OCU는 카운터가 1씩 증가할 때마다 threshold와 비교한다.
일치 시 동작 — 2가지
- Notification — 콜백 함수 호출
- Act on output pin — 핀 상태 변경 (LOW / HIGH / TOGGLE / DISABLE)
API — Threshold 설정
Ocu_SetAbsoluteThreshold(Channel, ReferenceV, AbsoluteV)
절대 threshold 설정. 기록 시점에 따라 두 케이스로 나뉜다.
- Case 1 — threshold 기록이 target compare match 이전 → 이번 사이클에 equality 발생, 인터럽트·notification 호출
- Case 2 — threshold 기록이 target compare match 이후 → 카운터가 이미 threshold를 지나갔으므로 이번 사이클에는 equality 발생 안 함 (다음 랩에서 발생)
양자화(quantization) 관점에서 counter가 threshold 상태에 진입하는 순간의 비교 의미.
Ocu_SetRelativeThreshold(Channel, RelativeV)
상대 threshold 설정. 현재 카운터 값 기준 상대 오프셋.
Functions
- 초기화 / 해제
- 채널 start / stop
- Pin state (LOW / HIGH), Pin action (LOW / HIGH / TOGGLE / DISABLE) 설정
- State·start time·stop time 읽기
- 현재 counter 값 읽기
- Absolute / Relative threshold 설정
- Notification 활성/비활성
의존성
- MCU Driver — system clock, prescaler, PLL
- PORT Driver — port pin을 output으로 구성