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

体重と今日食べたもの

k1segawa.exblog.jp

ダイエット

ブログトップ

Japanino ArduinoISPで ATtiny13 の BASCOM-AVRでの ソフトUARTの実験 - ロジックアナライザの検討(5) (32) (11/28)

ATtiny13でBASCOM-AVRでのソフトUARTを試して、受信はうまくいってようやくマトリクスLEDに持っていけるようになったのだが、どうもうまくいかない。
データ受信は非同期なので、十分待ち時間をおいてから次のデータを送信しているはずなのだが、ボーレートを上げるとLEDのデータが化ける。それも8行分の8バイトデータの内、後ろの方が化けているような動きをする。ボーレートが300程度だとうまくいくのだが、非表示時間が長くてちらついてしまう。
かといって、受信データがそろったことを検出する命令は、ソフトUARTではうまく動いてくれないように見える。1行分をInput #1等で受信すれば1行ずつ止まってしまうようにも思え、データが揃おうが揃うまいが受信するserin命令をメインで使っている。そのため送信待ち時間の調整と通信速度、LEDの表示中時間の3つか4つのパラメータを調整しているのだが、先が見えない。そのため1ピンで非同期で受信するのは諦め、受信準備OKを知らせるような半二重通信にしないとだめかと思い、TX/RXの2信号をやり取りする実験を行なっていた。
が、それもうまくいかない。serinとseroutを使うと簡単なプログラムでも1kしかない容量の98%を使ってしまう。そしてPC側の受信ポートがISPライタになっているJapaninoではD1にうまく割当たらなかったという事も判明した。別のUSBシリアル変換で行ったが、PC側のTeraTermでうまく受信できていない。
ん~、1ポートでTX/RXを切り替える回路も作ってみたが、ダイオードの代わりにLEDを使ったら順方向電圧を越えたのか壊れたりで部品不足も起こっている。
2ポート空けるのにATtiny13を2個使ってマルチプロセッサ構成も考えているが、今の回路とプログラムの修正が必要なので、できれば1ポートでTX/RXを切り替える回路でうまくいくか、元々の非同期受信でうまくいくことが望ましい。そこまで8ピンのマイコンにこだわらなくてもいいのだが、あとちょっとで出来そうなのであきらめきれない。
そこで、ロジックアナライザというのを検討している。
今はソフトオシロで、数ピンのアナログ値を観測できているが、シリアルデータの、長いロギングが出来るものがあると助かるような気がするのだ。
ロジックアナライザは、RS-232Cなどの通信線上のデータを見るプロトコルアナライザとは違って、回路上のデジタルデータを複数ピン検出してトリガをかけられる。
そしてアナログでロギングするのではなくデジタルでロギングすることにより、サンプリング数を稼ぐことができ、オシロスコープに比べ、長時間のロギングが出来る。
またトリガに指定する波形パターンを指定できるので、配線上を通るデータを検出してトリガをかけられる。またオシロスコープよりずいぶんと安い。なぜならオシロスコープに求められるのは高周波数でも観測できることだが、ロジックアナライザに求められる複数ピンの観測は昨今のパラレルデータからシリアルデータへの遷移から、余り求められなくなりつつあるからだ。だからオシロスコープはアナログ値を高精度に観測しなければならないが、ロジックアナライザはあくまでも外部・内部のクロックに従うデジタル値を観測すればよいからだ。
普通に1.5万円くらいから入手出来る。そして解析できるプロトコルも後から追加できたりして、結構オシロスコープよりお得感がある。
ん~、ソフトオシロでなんとか安く抑えていたが、ロジックアナライザは買ってもいいかな~
by k1segawa | 2016-11-28 23:13 | arduino, AVR | Comments(0)

by k1segawa