« J-Classの方向性 | トップページ | 作業中 »

2005.06.20

落とし穴

 油断してました。
 Jクラス、8月5日じゃないですか。 本クラスと同じく10月だと思い込んでました。
 知らぬ間に後2ヶ月切ってるじゃん。

 というわけで本格的に改修作業に入りました。
 まずは izCOREから。

 これのマイコン側プログラム、実は去年の8月大会のために3日ほどで組んだものがほとんどそのまま使われています。
 あの時はどうかしてました。私。
 毎晩0時過ぎに帰宅して土日も結構出勤してたのに、深夜にこんなもん作ってたのです。

 こいつに手を入れます。 アセンブラ、一から見直しです。既に自分でも謎のテクノロジが満載です。
 一応、タイマ1本でソフトウェアPWM。スレーブ1個で10サーボ制御。
 スレーブはアセンブラでクロック単位でタイミング合わせしてあり、ジッタフリーです。多分。

 改修内容としては、サーボの制御値をこれまでの8ビット(実際の有効値は7ビットほど)から16ビット化(有効10ビット程度)とし、制御角度精度を上げます。
 また、ハードウェアはそのままでプログラム書き込み用ピンを拡張サーボ用として、これまでの20軸から22軸制御とします。
 今回、izCOREのハードウェアはいじりません。

 と、比較的楽ちんなマスタ部分の改修と、PC側通信モジュールの改修が終わり、通信テストをしていて気が付きました。
 WiPort、最速、35ms間隔くらいでしか通信できません....

 izCOREは統括のマスタとサーボコントロールのスレーブ2つの3つのプロセッサで構成されています。
 マスタは、サーボのPWM周期である20ms毎の割り込みによりPCにデータリクエストを行い、PCからもらったデータをそのまま2つのスレーブに渡してやり、スレーブがサーボ対してPWM信号を投げてやります。

 有線の場合は、この20ms間隔の要求が十分間に合っている(10ms間隔くらいまで可)のですが、無線LANのWiportを使うと、通信速度に関係なく、平均37ms間隔くらいになってしまいます。
 タイマ割り込み中は割り込み禁止にしてあるので、通信が間に合わなかった分、割り込み1回すっ飛ばされているような感じです。
 仮想COMポートとしてCOMリダイレクタを使っているためのオーバーヘッドかと思い、WinSockでアクセスしてみても、2msほど改善されるだけで20msには程遠いです...
 でもって、これがそのままPWMの周期となります。
 一応、これまで、なんとかMicroMGは動いてたみたいですが...
 (制御値16ビット化スレーブはまだ未完のため、現在は分からないです。)
 
 やばいね。無線LAN使うならアーキテクチャ変更しなきゃならんかも。
 PCからモーションデータ ダダ流しから、モーションデータはマイコンに置いたコマンド方式に。

 izCOREの上にアドオンプロセッサとして、トラ技4月号のR8でも積まなきゃいかんかも。
 どっちにしても、予選で自動デモやらなきゃならんので、これは必要なのだけど、無線とR8は必要に応じて付け替えるつもりだったが...さて。

 Bluetoothはどんなもんでしょ。上り(11byte)下り(52byte)を1セットとして 20ms周期で通信できます? 
 > 誰とはなく...

|

« J-Classの方向性 | トップページ | 作業中 »

コメント

こんばんはイカで~す。

ごめんなさい。計っていません。実はbluetoothモジュール壊れちゃったんです。週末には出来そうです。

投稿: イカロス | 2005.06.22 02:39

 イカロスさんこんにちは。レスありがとうございます。

 実はこの記事の書き込み後、Wiportの設定パラメータをいろいろ弄くってて、平均23ms周期くらいで通信できるようになりました。
 この周期であればサーボも許してくれそうですが、パソコン側にCPU系の負荷が掛かる(ウインドウをドラッグしてぐりぐりしたりとか...)ようなことをすると、かなり乱れますのでやっぱり別の手考えないといけなさそうです。

投稿: いずみかわ | 2005.06.23 23:54

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/63074/4641233

この記事へのトラックバック一覧です: 落とし穴:

« J-Classの方向性 | トップページ | 作業中 »