« 2005年5月 | トップページ | 2005年8月 »

2005年6月の1件の記事

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周期で通信できます? 
 > 誰とはなく...

| | コメント (2) | トラックバック (0)

« 2005年5月 | トップページ | 2005年8月 »