트리거 명령은 ST의 출력 시점을 또 다른 ST와 동기화시키고자 할 때 사용합니다. 아래 예제는 ST1의 출력 시점을 ST0와 동기화시키는 예 입니다.
<?php
$pid0 = pid_open("/mmap/st0"); // 0번 ST 열기
pid_ioctl($pid0, "set div sec"); // 단위 설정: 초
pid_ioctl($pid0, "set mode output pulse"); // 펄스출력모드 설정
pid_ioctl($pid0, "set count 1 1"); // 카운트 값 설정: 1, 1
pid_ioctl($pid0, "set repc 2"); // 출력 횟수 설정: 2
pid_ioctl($pid0, "set output dev uio0 0"); // 출력 핀 설정: uio0의 0번
$pid1 = pid_open("/mmap/st1"); // 1번 ST 열기
pid_ioctl($pid1, "set div sec"); // 단위 설정: 초
pid_ioctl($pid1, "set mode output pulse"); // 펄스출력모드 설정
pid_ioctl($pid1, "set trigger from st0"); // 트리거 대상 ST 지정: st0
pid_ioctl($pid1, "set count 1 1"); // 카운트 값 설정: 1, 1
pid_ioctl($pid1, "set repc 1"); // 출력 횟수 설정: 1
pid_ioctl($pid1, "set output dev uio0 1"); // 출력 핀 설정: uio0의 1번
pid_ioctl($pid1, "start"); // 1번 ST 시작
pid_ioctl($pid0, "start"); // 0번 ST 시작
while(pid_ioctl($pid1, "get state"));
pid_close($pid0);
pid_close($pid1);
?>
위 예제에서 보는 바와 같이, 출력을 동기화시킬 ST는 트리거의 대상이 되는 ST보다 반드시 먼저 가동되어야 합니다.
출력 파형은 다음과 같습니다.
ST는 트리거 오차가 존재합니다. ST의 트리거 오차 범위는 다음과 같습니다.
구분 | 오차 범위 |
---|---|
2개의 타이머 사용 시 | 약 1㎲ |
8개의 타이머 사용 시 | 약 4㎲ |
※ 더 높은 정확도가 필요한 경우 HT를 사용하십시오.