펄스출력모드


개요

이 모드는 하나 또는 여러개의 직사각형 펄스를 출력하는데 사용합니다. 이 모드에서 각 직사각형 펄스의 모양은 모두 동일합니다.

HT의 출력파형은 다음에 따라 달라집니다:

명령어

명령어 하위 명령어 설명
set mode output pulse 모드 설정: 펄스출력모드
div ms 단위 설정: 밀리 초
us 단위 설정: 마이크로 초
output od 오픈 드레인(Open-Drain)
pp 푸쉬 풀(Push-Pull)
low LOW 출력
high HIGH 출력
invert 0 정상(비 반전)출력
1 반전 출력
count [T1] [T2] 출력 타이밍 설정
repc [N] 출력 횟수 설정
trigger from ht0 트리거 대상 설정: ht0만 가능
php 트리거 대상 설정: 없음
reset - 초기화
get state 상태 읽기
div 분주 비 읽기
repc 남은 출력 횟수 읽기
start - 시작
stop - 정지

반복횟수 설정

펄스출력모드에서는 출력 신호의 반복횟수를 설정할 수 있습니다.

명령어 문법 N의 범위
set repc pid_ioctl($pid, "set repc N"); 0 ~ 64

반복횟수의 기본값은 0입니다. 이 값이 0이면 반복횟수는 최대 반복횟수(64)로 설정됩니다.
(카운트 값 설정의 예제 파형 참조)

카운트 값 설정

하나의 직사각형 펄스는 high-level 신호와 low-level 신호로 구성됩니다. 펄스출력모드에서는 이 명령어에 의해 직사각형 펄스의 low-level 및 high-level 유지시간을 설정할 수 있습니다. 카운트 값의 설정 단위는 "set div"명령에 의한 단위가 사용됩니다.

명령어 문법
set count pid_ioctl($pid, "set count T1 T2");

펄스출력모드에서 설정 가능한 카운트 값 T1과 T2의 범위는 다음과 같습니다.

구분 카운트 값의 범위
T1 1 ~ 32763
T2 1 ~ 32763
T1 + T2 2 ~ 32764

이 명령은 타이머 시작 전에 설정되어야 합니다. 그렇지 않은경우 에러가 발생합니다.
아래 그림은 다음 조건하에서의 출력 파형을 보여줍니다.

ht_set_pulse_01

출력상태 설정 [low/high]

이 명령은 HT핀에 즉시 LOW 또는 HIGH를 출력합니다.

명령어 문법 설명
set output low pid_ioctl($pid, "set output low"); HT핀에 LOW출력
set output high pid_ioctl($pid, "set output high"); HT핀에 HIGH출력

반전출력이 활성화되어 있으면 이 명령에 의한 출력 또한 반전되어 출력됩니다.

출력타입 설정 [od/pp]

이 명령은 HT핀의 출력타입을 설정합니다.

명령어 문법 설명
set output pp pid_ioctl($pid, "set output pp"); 출력타입을 푸쉬-풀로 설정
set output od pid_ioctl($pid, "set output od"); 출력타입을 오픈-드레인으로 설정

출력타입의 기본값은 푸쉬-풀입니다.

반전출력 설정 [invert 0/1]

이 명령은 반전출력의 활성화/비활성화를 설정합니다.

명령어 문법 설명
set output invert 0 pid_ioctl($pid, "set output invert 0"); 반전출력 비활성화
set output invert 1 pid_ioctl($pid, "set output invert 1"); 반전출력 활성화

반전출력이 활성화되어 있으면:

반전출력 활성상태가 바뀌면(반전출력 활성화 또는 비활성화) HT 출력핀의 상태는 즉시 토글됩니다. 즉, 이 명령어에 의해 펄스의 형태가 결정됩니다. 펄스는 다음 두가지의 형태가 있습니다.

반전출력의 기본상태는 비활성화상태 입니다.

펄스출력모드 사용 예

펄스출력모드 사용(기본 펄스 출력)

<?php
$pid = pid_open("/mmap/ht0");               // 0번 HT 열기
pid_ioctl($pid, "set div us");              // 단위 설정: 마이크로 초
pid_ioctl($pid, "set mode output pulse");   // 펄스출력모드 설정
pid_ioctl($pid, "set count 1 2");           // 카운트 값 설정: 1, 2
pid_ioctl($pid, "set repc 1");              // 출력 횟수 설정: 1
pid_ioctl($pid, "start");                   // HT 시작
while(pid_ioctl($pid, "get state"));
pid_close($pid);
?>

펄스출력모드의 출력은 기본적으로 low 신호에서 high신호로 변화됩니다. 각 상태의 유지시간은 설정 단위와 "set count"로 설정하는 T1과 T2에 의해 결정됩니다. 위 예제를 실행했을 때 HT핀의 출력 결과는 다음과 같습니다.

ht_set_pulse_02

펄스출력모드 사용(반전 펄스 출력)

<?php
$pid = pid_open("/mmap/ht0");               // 0번 HT 열기
pid_ioctl($pid, "set div us");              // 단위 설정: 마이크로 초
pid_ioctl($pid, "set mode output pulse");   // 펄스출력모드 설정
pid_ioctl($pid, "set count 1 2");           // 카운트 값 설정: 1, 2
pid_ioctl($pid, "set repc 1");              // 출력 횟수 설정: 1
pid_ioctl($pid, "set output invert 1");     // 출력 반전
pid_ioctl($pid, "start");                   // HT 시작
while(pid_ioctl($pid, "get state"));
pid_close($pid);
?>

"set output invert 1"명령을 수행하면 이후의 출력이 반전됩니다. 펄스출력도 반전이 되므로 위 예제를 실행했을 때 HT의 출력 결과는 다음과 같습니다.

ht_set_pulse_03