캡쳐모드와 트리거


캡쳐모드에서도 트리거 대상을 설정하여 트리거 시점을 결정합니다. 트리거 대상은 HT0뿐만 아니라 해당 HT의 핀 입력을 지정할 수 있습니다. 트리거 시점은 HT의 내부 캡쳐 카운터의 동작 시점을 의미합니다. 따라서 타이머가 동작 중이라면 트리거 시점 이전에도 캡쳐는 수행되며 이때 카운트 값들은 모두 0이 됩니다.

다음 예제는 HT입력 핀의 상승에지 이벤트에서 트리거하여 2개의 하강에지 이벤트의 카운트 값을 캡쳐하는 예제입니다.

<?php
$pid = pid_open("/mmap/ht0");                 // 0번 HT 열기
pid_ioctl($pid, "set div us");                // 단위 설정: 마이크로 초
pid_ioctl($pid, "set mode capture fall");     // 캡쳐모드 설정: 하강에지
pid_ioctl($pid, "set trigger from pin rise"); // 핀 입력 트리거 설정: 상승에지
pid_ioctl($pid, "set repc 2");                // 반복횟수 설정: 2
pid_ioctl($pid, "start");                     // 0번 HT 시작
while(pid_ioctl($pid, "get state"))
    ;
for($i = 0; $i < 2; $i++)
    echo "[$i]", pid_ioctl($pid, "get count $i"), "\r\n";  // 카운트 값 읽기
pid_close($pid);
?>

위 예제를 실행하는 동안 HT0의 입력으로 주기가 20㎲인 2개의 정사각형 펄스가 입력되었다고 가정했을 때 카운트 0과 1의 값은 다음과 같이 측정됩니다.

ht_set_triggercap

따라서 출력 결과는 다음과 같습니다.

[0]10
[1]20