« 2010年8月 | トップページ | 2010年11月 »

2010年9月

2010年9月18日 (土)

本講座のサンプルをVS-WRC003LVに移植する場合の注意点

2010年9月18日現在、VSTONEのサポートページで公開されているVS-WRC003LVのサンプルプログラム(「モータ制御サンプル」等、すべて)に含まれるMtr_run関数にはバグがあります。

この関数はBeauto Chaser用に書いたプログラムをVS-WRC003LVでも変わらず使えるようにするため(互換性のため)のものです。ブレーキ動作をあらわす0x80を入れた場合の動作が間違っていて、モーターが100%に近い速度で回りだします。本講座のプログラムのようにブレーキをよく使う場合には致命的ですので注意してください。

この関数を使用する場合はvs-wrc003lv.cの56行目から62行目を次のように修正してください。

修正前

  void Mtr_Run(BYTE mt1,BYTE mt2,BYTE mt3,BYTE mt4){
        if(mt1 == 0x80)
!               mt1 == 0;
        if(mt2 == 0x80)
!               mt2 == 0;
        if(mt3 == 0x80)
!               mt3 == 0;
        if(mt4 == 0x80)
!               mt4 == 0;

修正後

  void Mtr_Run(BYTE mt1,BYTE mt2,BYTE mt3,BYTE mt4){
        if(mt1 == 0x80)
!               mt1 = 0;
        if(mt2 == 0x80)
!               mt2 = 0;
        if(mt3 == 0x80)
!               mt3 = 0;
        if(mt4 == 0x80)
!               mt4 = 0;

なおVS-WRC003LVのモータードライバはフリーの動作ができないようになっており、Mtr_runやMtr_run_lvに0を指定してもフリーではなくブレーキになります。本講座のサンプルプログラムをVS-WRC003LVに応用する際、第5回、第6回のrun関数にある「0の場合0x80にする特別な場合わけ」は必要なくなります。

もうひとつの重要なことですが、VS-WRC003LVはPCからシリアルポートとして認識させることができません。そのため本講座で説明したような対話的デバッグや調整ができません。理論上、回路構成としてはシリアルポートとして使うこともできるようになっていますので、公式サポートが出るかどうか様子を見ることにしましょう。

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

« 2010年8月 | トップページ | 2010年11月 »