Oscilloscope¶
TektronixTBS1052B
プローブの手動補正¶
- P5 プローブの手動補正
USB flash drive port (front USB-A female)¶
- ref. p57
- USB memory 64GB以下
- 保存・呼び出しできるもの
- Save Image(画像保存)
- Save Setup(設定保存)
- Save Waveform(波形保存)
- Recall Setup(設定呼出)
- Recall Waveform(波形呼出)
from Save/Recall menu¶
- USBメモリを挿入
- Utility > Options > Printer Setup
- Ink Saver On(白地にスクリーン・イメージ)/Off
- Save/Recall(フロント・パネル・ボタン)を押す
- Action > Save Image > Saveオプションを選ぶ
from Save buttom¶
ボタンに設定した機能・オプションで保存される - Save/Recall > Action - Save All > Printボタン > Saves Image to File - Utility > Options > Printer Setup
USB device port(Back USB-B female)¶
- Tektronix OpenChoice PC 通信ソフトウェアをダウンロード
- その後にUSB ケーブルを使用して、オシロスコープを PC に接続する
シリアル通信¶
スタートビット・ストップビット¶
ref.here
シリアルインターフェイスにはハンドシェイクという概念はありません。
(ハンドシェイクとは送信側、受信側が互いに準備が整っているということを通知しあうことです。)
そのため、シリアルインターフェイス(RS-232C)では、データ送信の準備ができていれば、基本的に受信側の状態を考慮せず、すぐにデータ送信を開始します。(DSR、CTSといった制御用の信号線を用いて受信側の状態を考慮する場合もあります)
ただ、それではひとつ問題が生じます。
RS-232C規格ではデータ伝送を行っていないとき(アイドル時)は”1”の状態になっています。
そうだとすると、最初のデータが”1”の場合には、アイドル時との区別がつきません。
その区別をつけるため、データ送信開始を受信側に何らかの手段を用いて伝えてやる必要があります。
その手段で用いるのがスタートビットとストップビットです。
データ送信開始時、まず”0”信号を1ビット間隔(以降は”T”と表記)で送信します。
その際の”0”信号をスタートビットと呼びます。
そしてスタートビットの次に送信するデータがデータビット(またはキャラクタビット)と呼びます。
データビットは、データバイトの最下位ビット(LSB=least significant bit)から送信します。
最下位ビットから最上位ビット(MSB=most significant bit)までの送信が1サイクルになります。
受信側はスタートビットを検出すると、次から届くデータがデータビットであると判断し、受信処理に入ります。
データビットを信号の中心位置でとらえるために、スタートビットを受信し終えた後、1/2Tの間だけ待ち、その後、データをサンプリングします。
以降は、T間隔ごとにデータをサンプリングし、最上位ビット(MSB)をサンプリングしたら、CPUにデータを渡します。
送信側は最上位ビットを送信し終えると、信号線状態を再びアイドル状態”1”に戻します。
この”1”信号がストップビットです。
次のデータがまだある場合は、ストップビットをTの間だけ保持してから、再びスタートビットを送信し、同じように送信を開始します。
波形¶
ref. here
下図は実際にArduinoとパソコン間で基本的なシリアル通信を行ったときの波形です。
上側は文字"A"(文字コード:0x41)、下側は文字"Z"(文字コード:0x5A)の波形です。
シリアル通信は基本的に1回の通信で1[Byte]分のデータを送り、データの前後にスタートビットとストップビットを付けます。
上図の流れを説明します。2[Byte]以上のデータを送る際は下記を繰り返します。
1.通信をしていないとき(=待機)はHigh状態
2.通信開始時にスタートビット(Low)を送る
3.データを送る(※データは下位ビットから送る)
4.データを1[Byte]分送ったら、ストップビット(High)を送る
5.High状態(=待機)に戻る
3番目に書いてあるように、シリアル通信ではデータを下位ビットから送ります。
ですので、
文字"A"の文字コードは"41(16進法)"="0100 0001(2進法)"ですが、下位から送るので
データ波形ではひっくり返り左から"1000 0010(2進法)"になります。
Zも同様に"5A(16進法)"="0101 1010(2進法)"がひっくり返り、波形は左から"0101 1010(2進法)"となります。
echo back¶
ref.here
$ ls /dev | grep usb
cu.usbserial-DN040LI5
tty.usbserial-DN040LI5
Open 2 terminal window
受信側
$ sudo stty -f /dev/cu.usbserial-DN040LI5 raw 9600 # シリアルポートの設定を行います
$ cat /dev/cu.usbserial-DN040LI5
送信側
$ echo 'Hello, World!' | sudo tee /dev/cu.usbserial-DN040LI5
Hello, World!
受信側に
Hello, World!
が出てくる。
送信側
$ echo 'U' | sudo tee /dev/cu.usbserial-DN040LI5
受信側
U
- 1 Byte目
- 受信順 10101010 -> 元の順番 01010101 -> ASCIIコードのU
- ASCIIコード
- 2 Byte目
- 受信順 01010000 -> 元の順番 00001010 -> ASCIIコードのLF(改行)
文字を送らない場合
送信側
$ echo '' | sudo tee /dev/cu.usbserial-DN040LI5
改行のみ受信
受信側