目次

ソフトウエア構成

 本ボードのソフトウエアは、次のフローで実現します。
  1. 初期化
  2. タイマー割込み発生検出時、パルス出力処理
  3. シリアルコマンド検出時、パルス幅再設定
  4. 2に戻る
トップレベルの処理(main関数)は、以下とします。 void main(void) { /* initialize port and variables */ initialize(); /* endless loop */ while ( TRUE ) { /* send pulse to servo motors */ if ( tflag == ON ) { tflag = OFF ; send_pulse(); } /* serial communication process */ if ( sflag == ON ) { sflag = OFF ; proc_serial(); } } }

パルス出力処理

 各サーボモータに、パルスを出力するのは、タイマー 割込みで実現します。タイマー割込みが発生すると、 次のシーケンスを実行します。
  1. 内蔵カウンタ初期化
  2. ステートマシン用変数stateインクリメント
  3. 変数stateが200になったら0にもどす
  4. フラグ設定
フラグが設定されると、ステートマシンを呼び出します。

コマンド処理

 受信割込みを利用し、1文字ずつバッファにコマンド を格納していきます。 次のシーケンスを実行します。
  1. 受信した1文字入力
  2. 受信した1文字をバッファに格納
  3. バッファインデックスをインクリメント
  4. インデックスが5になったら0にもどす
  5. フラグ設定
デリミタ('\r')を検出したならば、フラグを設定し main関数内部で、パルス幅を設定します。

目次

inserted by FC2 system