人気ブログランキング | 話題のタグを見る

体重と今日食べたもの

k1segawa.exblog.jp

ダイエット

ブログトップ

Japanino ArduinoISPで ATtiny13 の BASCOM-AVRでの software serial - ソフトUARTの実験(3) (30) (11/15)

前回の記事の最後で言ったように、オシロスコープで処理時間を測ってみる。

回路に当てるプローブ(手製)はUSBの電源を切ってから(USBケーブルを抜く等)、赤のプローブを5V、黒のプローブをGNDに近い側へ当てる。
 Japanino ArduinoISPで ATtiny13 の BASCOM-AVRでの software serial - ソフトUARTの実験(3) (30) (11/15)_a0034780_23040753.jpg
この回路はLEDを光らせるのが「処理」だから、LEDの両端の信号変化から処理時間を見る。具体的には、LEDが点灯して消灯するまでの時間。
ソースで言うと、最大処理時間は、IF文が真で、LEDの点滅をWaitms 500する4行だ。

オシロスコープ(ソフト名ハンディ・オシロスコープ)を起動すると、以下のようになる。
 Japanino ArduinoISPで ATtiny13 の BASCOM-AVRでの software serial - ソフトUARTの実験(3) (30) (11/15)_a0034780_23043204.jpg

かなり前の記事「オシロスコープの使い方」で較正をした後なら、
以下のように縦のスライドバーが20に移動している。
 Japanino ArduinoISPで ATtiny13 の BASCOM-AVRでの software serial - ソフトUARTの実験(3) (30) (11/15)_a0034780_23044114.jpg

ATtiny13にプログラムを既に書き込んであるとして、USBの電源を入れると次のように大きく波打つ様子が表示される。
自分の場合は下(CH1)の方に出るようにイヤホンジャックを半田付けしたようだ。ただしこれは最初のFor~Nextの300ms待つ処理の波形。波形が見ずらいので左下の数値0.2(起動時)を1にすると良い。
 Japanino ArduinoISPで ATtiny13 の BASCOM-AVRでの software serial - ソフトUARTの実験(3) (30) (11/15)_a0034780_23045195.jpg

波形がはみ出さないようCH1の縦スライドバーを15にする。そして動いている波形を止めるのに赤枠の[Pause/Logging]ボタンを押す。
以下にうまく止まった様子を示す。
何回か[Pause/Logging]ボタンを押して画面にきれいに収まるようにする。USBのON/OFFも何回かやってOK。
 Japanino ArduinoISPで ATtiny13 の BASCOM-AVRでの software serial - ソフトUARTの実験(3) (30) (11/15)_a0034780_23051566.jpg
山がLED ON、谷がOFFだ。

1周期を測るのに山の始まりと谷の終わりを左クリック、右クリックしたままドラッグして縦線を各ポイントに移動する。
 Japanino ArduinoISPで ATtiny13 の BASCOM-AVRでの software serial - ソフトUARTの実験(3) (30) (11/15)_a0034780_23052403.jpg
すると左端に数字が出て、「606.7 , 1.65Hz」と表示される。線の間の時間差が606.7msという事だ。300ms×2(ON/OFFはToggleだからForループが2回まわる必要がある)+AVRのRC内蔵発振器の誤差は工場出荷状態で±10%+オシロスコープの精度などか(BASICコマンドの処理時間がアセンブラ100命令かかったとしても1命令1クロックなので1/9.6Mz≒0.1μsでまずmsオーダーにはならない)。

慣れたところで、実際の処理の方に行こう。

起動時の点滅が終わるまで放っておく。そして[Pause/Logging]ボタンを押して[Pause]と表示されている状態にする。この時ロギングされて録画?中になっている。そして左下は25としておく。波形が1500ms待ちですごく間延びしているので。

Tera Termからファイル転送でデータを送信した様子が以下の通り。
 Japanino ArduinoISPで ATtiny13 の BASCOM-AVRでの software serial - ソフトUARTの実験(3) (30) (11/15)_a0034780_23053589.jpg
ん~、なんかよくわからない。12回山谷があるから計測は出来ている。プローブで計測する場所を間違ったかな?

赤のプローブを次のようにPB4の配線に変える。GNDはそのまま。
 Japanino ArduinoISPで ATtiny13 の BASCOM-AVRでの software serial - ソフトUARTの実験(3) (30) (11/15)_a0034780_23072242.jpg

その波形は以下の通り。
 Japanino ArduinoISPで ATtiny13 の BASCOM-AVRでの software serial - ソフトUARTの実験(3) (30) (11/15)_a0034780_23054871.jpg
今度はシリアル通信の様子なので、左下は1に変更した。波形が細かく変わっている。

5で計測すると以下の通り。
ゆっくりと波形が進むので先頭の波形が画面左に寄ったところでPause。
 Japanino ArduinoISPで ATtiny13 の BASCOM-AVRでの software serial - ソフトUARTの実験(3) (30) (11/15)_a0034780_23055608.jpg

これを今度は左下の横スライドバーを5にすると、全体のロギングした波形が先頭5%の部分が画面全体に引き伸ばされて、以下のようにズームした状態になる。
これが1個目。
 Japanino ArduinoISPで ATtiny13 の BASCOM-AVRでの software serial - ソフトUARTの実験(3) (30) (11/15)_a0034780_23061146.jpg

2個目の波形を見るのに横スライドバーの上の、横スクロールバーを右に移動させる。似たような波形が以下の通り表示される。
 Japanino ArduinoISPで ATtiny13 の BASCOM-AVRでの software serial - ソフトUARTの実験(3) (30) (11/15)_a0034780_23063491.jpg

横スライドバーをマウスでクリック(メモリ部分でもよい)してから矢印キーを押すと、細かく調整できるので、5→1にし、さらに横「スクロール」バーの位置を右にずらして3番目の波形を確認する(左下のデフォルト0.2の数字は拡大し過ぎると右端の波形データから欠損していくので戻しても元には戻らなくなるのでバーだけいじるのがよい)。

3番目の波形はマウスで線を移動して波形の先頭と末尾の時間の間隔を見てみる。
 Japanino ArduinoISPで ATtiny13 の BASCOM-AVRでの software serial - ソフトUARTの実験(3) (30) (11/15)_a0034780_23070191.jpg
「30.0 , 33.34Hz」と表示されているので30msかかっている事が確認できる。

1個目、2個目、3個目と見てきて、なんとなくビットを表しているのかな~と予想できる。今の通信パラメータは300bps,8ビット,n(ノンパリティ),1ストップビット。次のようにシリアル通信のデータのフォーマットと比べてみると、1個目がまさにAのフォーマットになっている。
 Japanino ArduinoISPで ATtiny13 の BASCOM-AVRでの software serial - ソフトUARTの実験(3) (30) (11/15)_a0034780_23074810.jpg
ん?今までの3つは「処理」じゃなく通信をモニターしただけだよね?


もう一度最初に戻って(プローブでLEDをはさんで左下を25にした)横スライドバーで10くらいにした波形が以下の通り。
 Japanino ArduinoISPで ATtiny13 の BASCOM-AVRでの software serial - ソフトUARTの実験(3) (30) (11/15)_a0034780_23073940.jpg
やっと最初の500ms待つ処理が計測できた。目測だが次のLED ONまで1500msぐらいだな。結局ON・OFFで、処理として505ms×2=1010ms以上はかかるから1500msの送信遅延時間は妥当だと確認できた。こういう積み重ねを基板開発時には、ソフトでも並行して検証していくのだ。

最後のは、Tera termの送信遅延を0にし、PB4を計測する事で通信をモニターした波形。最初のストップビットの終わりから、次のストップビットの終わりまでの時間を測ったら33.3msだった。
 Japanino ArduinoISPで ATtiny13 の BASCOM-AVRでの software serial - ソフトUARTの実験(3) (30) (11/15)_a0034780_23070828.jpg
通信速度から、300bps≒1秒/300ビット=3.33ms。10ビットだと33.3ms。確かに合ってる。オシロ侮りがたし。こんなにはっきり見れるもんなんだな~
そしてオシロスコープの出来る事、やり方が少しずつ分かってきたように思う。

by k1segawa | 2016-11-15 01:19 | arduino, AVR | Comments(0)

by k1segawa