2.パルスジェネレータ ( Pulse Generator )
RTS-232C 上に送出される非同期式データを細かく制御することで、(任意の)パルスを生成できます。
(a) 多周波数型 ( Multi Frequency )
非同期式データは、キャラクタごとにスタートビットとストップビットに挟まれ、LSB(D0)から順に送出されます。デューティー50%のパルス列を送信したい場合、キャラクタを8ビット、パリティビットなし、ストップビット1とすれば、1-01010101-0 を繰り返し送信すればよいことになります。「負論理」、「LSBから送出」、を考慮すれば、キャラクタコードは 0x55、つまり 'U' を連続送信すれば、ボーレートの 1/2 の周波数のパルス列が得られます。
キャラクタコードを 0xF0 とすれば、1/10 の周波数になります(1-11110000-0)。パリティビットを使い、ストップビットを2ビットにすれば、1/6 の周波数も可能です(1-11000111-0-00)。可聴域で生成可能な周波数は表のとおりです。
Frequency (Hz)
Baud rate (bps)
Parity bit
Stop bit
Data (hex)
18.3
110
even
2
1C
30
300
none
1
F0
50
300
even
2
1C
60
600
none
1
F0
100
600
even
2
1C
120
1200
none
1
F0
150
300
none
1
55
200
1200
even
2
1C
240
2400
none
1
F0
300
600
none
1
55
400
2400
even
2
1C
480
4800
none
1
F0
600
1200
none
1
55
800
4800
even
2
1C
960
9600
none
1
F0
1200
2400
none
1
55
1440
14400
none
1
F0
1600
9600
even
2
1C
1920
19200
none
1
F0
2400
4800
none
1
55
3200
19200
even
2
1C
3840
38400
none
1
F0
4800
9600
none
1
55
5600
56000
none
1
F0
5760
57600
none
1
F0
6400
38400
even
2
1C
7200
14400
none
1
55
9600
19200
none
1
55
11520
115200
none
1
F0
19200
38400
none
1
55
周波数の切り替えに多少もたつきます。USART によっては出力できない周波数があります。
(b) カウント指定型 ( Pulse Count )
指定した数だけパルスを発生させたい、という用途に使います。
キャラクタコード 0xF0 をパルスの数だけ送出すればよいのですが、ソフトウェア処理の負荷を軽くするために、0x55 を使う方式とします。指定カウント数を5で割った端数が1,2,3,4でそれぞれ末尾コードを 0xFF, 0xFD, 0xF5, 0xD5 とします。
各パルスの幅は(1/ボーレート)Sec で、これもデューティーは 50% です。