AVR_Monitマニュアル
AVR_Monit <−ダウンロードはこちらのページにあります。
AVR_Monitの使い方
(1)ATtiny2313 を用意します。
(2)src/main.hex を焼きます。
(4)PCに接続するとデバイスドライバーを要求しますので、 win32/windows-driver にあるinfファイルを指定してインストールします。
(5)win32/monit.exe を起動します。
とりあえず以下のように操作してみます。
AVR> d 000000 00 00 43 01 00 00 01 00 000008 01 00 34 19 00 00 1f 11 000010 00 80 10 00 04 00 10 00 000018 63 00 65 00 8c 00 1f 00 000020 63 00 00 06 00 00 00 00 000028 30 00 00 20 00 00 00 00 000030 09 73 01 00 00 00 01 f0 000038 01 00 00 03 00 ff 7f 00 AVR> q
AVR_Monitに出来ること
- (1)AVR側の任意のポート、メモリーの内容を参照する。
- (2)AVR側の任意のポート、メモリーの内容を書き換える。(PGMEMは不可)
- monit.exeを使用してインタラクティブに行う方法と、
- 自作コマンドラインツールを作成してPC上のプログラムにやらせる方法
- の2種類がある。
- (3)USBバルク転送、あるいはコントロール転送のベンチマークを実行出来る。
- (4)ATtiny2313のポート名を覚える学習に使用できる。
- というかこれが私的用途だったりする。
AVR_Monitに出来ないこと
- (1)リアルタイムに近い間隔でポートを参照したり変更したりすることは出来ない。
- PCから行うので、最小間隔は1mS。ホストPCのUSBコントローラ次第でその1/4程度のサンプリングしか出来ない。--自作コマンドラインツールの場合。
- AVR_Monitのコマンドライン入力で行う場合は、人間のキー操作反応速度より速く出来ない。
- (2)割り込み処理が出来ない。
- 割り込み処理を組み入れたい場合は自力でファームウェアと対応コマンドを拡張するしかない。
- USBのデータ転送中は割り込み禁止になるので、1パケットの転送完了時間より短いような割り込みをさばくことはAVRUSBにとって原理的に無理がある。
- (そういう場合だけUSBを止めればよいという意見もあるが、128バイトしかないRAM(空き容量はたかが40バイト程度)のどこにデータを貯めるのだ。)
AVR_Monitの使い道について
- 最小限のAVR to USB接続ハードウェア環境において、AVRチップのコントロールをPCから行うことが出来る。
- PCのコマンドラインツールを拡張することで各種リモートセンサー、ロガー、スイッチ、等のプロトタイピングを迅速に行うことが出来る。
- AVRファームウェア側の空き容量を大きく取るように考慮しているので、ファームを拡張してコマンドを追加することが出来る。
- コントロール転送版ファームウェアサイズ
ROM: 1558 bytes (data=2) RAM: 53 bytes
- バルク転送版ファームウェアサイズ
ROM: 1836 bytes (data=4) RAM: 67 bytes
- コントロール転送版ファームウェアサイズ
AVR_Monitのポリシーみたいなものをあえて列挙する
- 出来る限り安く。敷居を低く。手軽に。
- AVRやマイコン学習の素材として。
- 実は自分が私的自己学習をやっているだけかも・・・。
- 拡張して使うための元になるフレームワークとして。
- USBということは、必ずPCと接続されるので、基本動作のコマンドだけ用意しておいて、残りはPC側のコマンドラインツールで制御したほうがメモリー的に節約できるのではないかという考え方を採用。
- それでも、いろいろ拡張したいのでメモリーの空きを確保したい。
コントロール転送版の使い方。
WindowsVistaで使用する場合、現状ではLowSpeedバルク転送が使えませんのでコントロール転送版を使用してください。
- バルク転送版とのインストール方法の違いを説明します。
(2)src/main.hex を焼きます −−−−> 代わりに ctl/main.hex を焼いてください。
(5)win32/monit.exe を起動します。−−−−> 起動オプション '-c' を入れてください。
Windowsのドライバーは共通です。
- PCのUSBホストにもよりますが、コントロール転送はバルク転送に比べて遅いです。(帯域制限を掛けられているような感じでバルクの半分以下しか出ません。)
- SiSのUSBホストコントローラを使用する場合は、どちらも理論上の帯域速度*1近くまで出るようです。
- バルク転送に比べて遅いですが、ファームウェアサイズを節約できるメリットがありますので、ファームを拡張して使う場合は便利です。
PGMEMの空きエリア=490バイト SRAMは使用量53バイトなのでスタックを加えても あと50バイトくらい空いている計算。 EEPROMは丸空き(バルクも同様)
*1 といっても8バイト送信の場合、わずか8kB/秒、32バイト送信(実際は8バイトパケットが4回送信)でその4倍程度が上限