PIC AVR 工作室->TopPage->AVRの工作->ネコロジーPC
ネコロジー用PCソフト「ネコロジーPC」
ネコロジーPCとは
ネコロジーとPCを接続してPC側で色々な機能を実現 してしまうためのソフトです。ネコロジーとPCをシリアル接続し、WINDOWSのGUI上で信号を見れるようにします。
開発環境にはVisualBasicを使ってみました。10年ぶりくらいのVB。しかも.NET対応の2005です。 (開発言語の選定を間違えたか?.net対応のVBは何かと使いにくい!!!)
ひとまずVersion1として最低限の機能を実現して、その後徐々に機能を追加・改良していこうと思います。
当面の実現機能…Version1
Version1、つまり第1版リリースでの実現機能としては以下のようなことを考えています。
必須機能
- シリアル通信機能 …115200bps固定、接続及び切断機能
- 接続時にトリガ条件及びサンプルレートの適用可能条件をネコロジーから受信し、デフォルト値自動設定
- データの取り込みボタン(AVRネコロジーフォーマットに従う)→マウスによるスクロール
- 取り込みデータは8ビット幅
- トリガ条件変更(ドロップリスト)
- サンプルレート変更(ドロップリスト)
- メモリ容量表示機能(32kB限定)
- メモリダンプセーブ機能、セーブデータ再呼び出し機能
- 処理中のプログレスバー表示や処理内容の告知表示
- 動作中のボタン操作などを適宜コントロールし、不意なユーザー操作の排除
- 各種エラーメッセージ(フォーマットエラー、UART未接続、タイムアウト、UART重複接続など)
オプション機能(体力があったら搭載する)
- 二重起動可(2台、3台と接続した時にも並行して使えるように)
- A点、B点間の時間間隔表示機能
- A点、B点におけるデータの16進、10進、2進データ表示
- 検索機能(ユーザー入力数値とマッチするところに移動する機能)
- A点、B点へのジャンプ機能
見送り機能
- グラフィック表示のズームは見送り
- ロジアナのみ対応(オシロは今後対応)
私の能力や気分、気まぐれなどで搭載機能はコロコロ変わるかも知れません。
ネコロジー全体図
こんな感じに繋いで使います。絵に描くまでもないですが。っていうか、小学生の落書き?
バージョン1、暫定版ダウンロード
ダウンロード
バージョン1の暫定版をひとまず公開します。
ネコロジーPC(VB2005プロジェクト)暫定版のダウンロード
lzh形式でまとめてあります。適当なツールで解凍して、VB2005expressで使ってください。
バージョン1のxon/xoff対応版ダウンロード
WINDOWS7で動かしてみたところ、PC側ソフト(当ソフト)がデータの取りこぼしをするようになったので、フロー制御対応を行いました。 プログラムや画面設計、内部機能等はまったく変更ありません。シリアルI/F周りのプロパティーでxon/xoff対応に変更しただけです。 なお、既にVB2005はサポートがされていないので、VB2008プロジェクトファイルに変更しています。
プロジェクトファイル一式(VB2008用、zipファイルにて梱包)
zip形式でまとめてあります。適当なツールで解凍して、VB2008開いて使ってください。
フロー制御についての補足
フロー制御の方式ですが、色々あってxon/xoffによるフロー制御をチョイスしました。
設計の段階ではPC側のスペック向上につれて取りこぼしなど無くなるはずだと思いつつも、 ”OS側の癖とかで万一データの取りこぼしが発生”するようになっちゃったときのためにxon/xoffコードと通信データがかち合わない様に考慮しておいたのと、 ボードの配線を改めて眺めなおしてみたところRTS/CTS対応は簡単な空中配線程度では難しそうだ、と判ったのでxon/xoffを使用することにしました。
コントロールパネルからドライバの設定でxon/xoffに変更しても、当プログラムが実行されるとVBの設計画面上で設定してある内容に変更されてしまうようで、 仕方なくプログラム側で変更することにしました。
なお、PC側、ファームウェア側両方ともxon/xoff対応版を使用する必要があります。一緒に入れ替えをしてください。 (片方だけだとフロー制御が行われず、特にボード側が未対応版だとPC側から送信したxon/xoff制御コードがごみとして扱われて、不要なエラーメッセージが出ることになります)
なお、USB-シリアル変換ケーブルにて接続をする場合にはドライバ側の設定が必要です。
USBは1バイト1バイトの通信を行っているのではなく、パケット単位で通信を行っています。1パケット分のデータが溜まるか、 もしくは一定時間を経過すると1パケット分一気にデータ転送するようになっています。
xon/xoffもPC側から送信する一種のデータ(特殊コードのデータ)として扱われるので、 PC側が仮にバッファ残り僅少となってxoff送信してもUSB-シリアル変換ケーブルに微小時間留まってから送信されることになります。 このタイムラグの間にPC側の受信バッファが使い切られると”取りこぼし”が生じます。
そうならないように、USB-シリアル変換ケーブルのドライバ設定画面で、必要に応じてwait時間を短く設定しなおしてください。
具体的には、ArvelのUSBシリアルケーブルSRC06USBでは「待ち時間が」デフォルトで16msとなっているので、1msなどと短い時間に設定してください。
現時点の機能、使い方
暫定版につき、上記に挙げた必須機能もまだ未実装のものが残ってます。現時点で組み込めている機能/組み込めてない機能を記します。
(取り込み済み機能)
- シリアル通信機能 …115200bps固定、接続及び切断機能
- 接続時にトリガ条件及びサンプルレートの適用可能条件をネコロジーから受信し、デフォルト値自動設定
- データの取り込みボタン(AVRネコロジーフォーマットに従う)→マウスによるスクロール
- 取り込みデータは8ビット幅
- トリガ条件変更(ドロップリスト)
- サンプルレート変更(ドロップリスト)
- メモリ容量表示機能(32kB限定)
- 処理中のプログレスバー表示や処理内容の告知表示
- 動作中のボタン操作などを適宜コントロールし、不意なユーザー操作の排除(一部分)
- 各種エラーメッセージ(UART未接続、UART重複接続)
(取り込み未済機能)
- メモリダンプセーブ機能、セーブデータ再呼び出し機能
- 動作中のボタン操作などを適宜コントロールし、不意なユーザー操作の排除(残り)
- 各種エラーメッセージ(フォーマットエラー、タイムアウトなど)
現時点の使い方
- まずネコロジーPCを立ち上げたり、シリアルポート(もしくはUSB-RS232C変換器)にネコロジーAVRを接続したりします。 ソフトの起動と機器の接続はどっちが先でもかまいません。
- ネコロジーPCの画面下部(リストボックス)から、接続するcomポートを選びます。(com1~com9まで対応)
- 「com connect」ボタンを押すと、シリアル経由でネコロジーAVRに接続します。
- 自動的にネコロジーAVRから利用可能条件(選択可能なサンプルレートやトリガ条件、メモリ容量)を取り込みます。
- サンプルレートやトリガー条件をリストボックスから適宜選択します。
- ネコロジーAVRの8ピン入力端子とターゲットボードを繋ぎます。GNDピンはターゲットボードのGNDに繋ぎます。
- sampling startボタンを押すと取り込みが始まります(10~15秒くらいかかります)。選択したトリガ条件に よっては、条件が満たされるまで待ちつづけ、条件が整ってから取り込みが始まります。
- 取り込みが終ると、メインスクリーンにその結果が表示されます。緑がhighレベル、白がlowレベルです。
- スクロールバーを操作すると、横方向にスクロールして32kBの容量すべてを見渡せます。
- サンプルレートを変えたり、トリガ条件を変えたりして、引き続き取り込みを行うことができます。
- ネコロジーPCは二重起動できます。ネコロジーAVRの実機が2台以上あれば同時に使うことができます。(シリアルポートも2つ以上必要)
実行画面
実行中のキャプチャ画面を貼っておきます。
com4を経由して、ネコロジーAVRと接続している図です。サンプルレート=2.5Msps、トリガ条件=立下りエッジ として取り込みました。(2.5Msps→0.0000004秒毎の取り込み、fall edge→立下りエッジ)
- メインスクリーンの左側に振ってある数字0~7がネコロジAVRの各入力ピン番号に該当します。
- この画は、0番ピンにチャタリングした信号を取り込んだものです。
- 1番ピンはGND電位固定で白表示。それ以外の端子はオープン(内蔵プルアップ抵抗でHIGH)で緑表示になっています。
- メインスクリーンの左上と右上に緑の数字が書いてありますが、それぞれ現在スクリーンに表示している時間軸を示しています。
- マウスの左クリック、右クリックでそれぞれpoint-A(赤い線)、point-B(青い線)を設定できます。 図の真中付近にある赤、青の線がそれです。
- 各ポイントの赤、青の線は点滅表示します。この図ほど見づらくはありません。
- point-A、Bの各点における時間軸上の時間が、画面中央下部にそれぞれの色で表示されます。この例では、 point-A(赤)は取り込み開始から503.2μ秒経過地点。point-B(青)は521.6μ秒経過地点を指しています。
- その下に紫色でAtoBとありますが、これはAとBの経過時間の差です。この例ではA-B間は18.4μ秒のギャップです。(絶対値表示)
- この図では表示されていませんが、マウスカーソルがメインスクリーン上に存在する時にはAtoBの下の行に、 「now:xxxxx」という形で、マウスカーソル位置における経過時間が、マウスの動きに合わせてリアルタイム表示されます。
現時点のまとめ
一応、信号を取り込んでそれをGUI画面でグリグリ動かして眺めるという機能までは取り込めました。
データのセーブ、ロード機能が未実装です。
表示される内容や時間単位などは一応確認済みですが、表示されるタイミングとかがまだちょっとおかしいです。
- データを取り込んだ後スクロールバーを動かすまでの間、緑色で表示されている時間軸表示が古いまま書き換わりません。 一度スクロールバーを動かすと一応表示が直ります。
- point-A、B地点の時間表示は、マウスのボタンをクリックしないと書き換わりません。データ取り込みをした後、 マウスの左右各ボタンをクリックすると一応表示が直ります。
- 既にデータが取り込まれている状態で別のサンプルレートに変更した場合、その選択されたレートで時間軸が 置き換わってしまいます。しかも、上記のことが有るのでスクロールバーを弄った時にそのややこしい表示に突入します。 いずれにしても超ややこしい状態です。何とかしないといけません。
- point-A、Bの場所に一気にジャンプする機能がまだ搭載されていません。
- ネコロジーAVR側のファームウェアにまだバグが残っていて、サンプリングレートの表示が変になるサンプリングレートが1つあります。 …ファームウェア内の固定文言中に「0.000005」という文字列を書くべきところ「000005」と書いてあったため、 ネコロジーPC側は”1サンプリングあたり5秒だね!”と間違えて解釈してしまっています… ファームを修正する必要有り。
今のところ大体そんな感じです。まあ、データを取り込んで表示してスクロールする範囲内ではなんとか使えるかな、と。
… 続きます …