토글출력모드


개요

이 모드는 다양한 지속시간을 갖는 하나 또는 여러개의 직사각형 펄스를 출력하는데 사용합니다. 이 모드에서 HT핀은 미리 정의된 시간 간격에 따라 출력이 토글됩니다.

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

명령어

명령어 하위 명령어 설명
set mode output toggle 모드 설정: 토글출력모드
div ms 단위 설정: 밀리 초
us 단위 설정: 마이크로 초
output od 오픈 드레인(Open-Drain)
pp 푸쉬 풀(Push-Pull)
low LOW 출력
high HIGH 출력
invert 0 정상(비 반전)출력
1 반전 출력
count [T1] ... [T8] 출력 타이밍 설정
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)로 설정됩니다.
(카운트 값 설정의 예제 파형 참조)

카운트 값 설정

토글출력모드에서 이 설정은 HT핀의 토글출력 타이밍을 지정하는 데 사용됩니다. 카운트 값의 설정 단위는 "set div"명령에 의한 단위가 사용됩니다. 카운트 값은 최소 1개부터 최대 8개까지 설정할 수 있습니다. 각 카운트 값은 1 에서 32764 사이에서 설정합니다.

명령어 문법 T의 범위
토글출력모드 pid_ioctl($pid, "set count T1 T2 … T8"); 1 ~ 32764

이 명령은 타이머 시작 전에 설정되어야 합니다. 그렇지 않은경우 에러가 발생합니다. 토글출력모드에서 카운트 값을 2개 이상 설정하면 이 값들은 출력 시점마다 순서대로 사용됩니다. 만약 반복횟수가 설정 한 카운트 값의 수 보다 많으면 다시 첫 번째 값부터 순서대로 사용됩니다. 아래 그림은 다음 조건하에서의 출력 파형을 보여줍니다.

ht_set_toggle_03

출력 파형은 타이머가 시작되는 시점의 HT 출력핀의 상태에 따라 달라집니다. 다음 예는 HT 출력핀의 상태가 다를 때의 파형을 보여줍니다. 반복 횟수는 3회이고 카운트 값은 각각 T1, T2 그리고 T3입니다.

ht_set_toggle 01

ht_set_toggle 02

HT 출력핀의 상태는:

두개의 연속적인 토글 출력 사이의 지속시간(카운트 값)은 "set count"명령으로 설정합니다.

출력상태 설정 [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핀의 상태는 즉시 토글됩니다.

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

다음은 반전출력모드의 활성화/비활성화에 따른 파형의 차이를 보여줍니다. 반복 횟수는 3회이고 카운트 값은 각각 T1, T2 그리고 T3입니다. 타이머 시작 전 "set output high"명령이 사용되었습니다.

ht_set_toggle_06

위 그림에서 보는것과 같이 반전출력이 활성화되면 "set output high"명령에 의한 출력이 LOW가 됩니다.

토글출력모드 사용 예

토글출력모드 사용

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

토글출력모드에서의 "set count"는 HT의 시작시점부터 출력을 내보내는 시점까지의 시간을 의미합니다. 위 예제를 실행했을 때 HT의 출력 결과는 다음과 같습니다.

ht_set_toggle_04

반복적 토글출력모드

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

위 예제에서는"set repc"명령어로 토글출력 횟수를 3회로 설정하고 토글출력 타이밍을 위해 "set count"로 T1, T2 및 T3을 각각 1, 2 그리고 1마이크로 초로 설정했습니다. 위 예제를 실행했을 때 HT출력 결과는 다음과 같습니다.

ht_set_toggle_05