落とし穴
油断してました。
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)

最近のコメント