目次

変数

 PICでC言語を利用する場合、アーキテクチャ上の
  問題から、スタックを確保できません。グローバルを
  利用し、出来る限りスタック操作エミュレートが発生
  しないようにします。


データ型再定義

 CCS社のC言語コンパイラは、C言語の仕様である そのコンピュータで、基本となるビットサイズをint に割り当てるという設計思想のもとに、8ビットを intにしています。 これでは、使いにくいので、次のようにデータ型を 再定義します。 typedef signed int SBYTE ; typedef unsigned int UBYTE ; typedef signed long SWORD ; typedef unsigned long UWORD ;

通信関連変数

 本ボードには、8個ないしは12個のサーボモータを 接続できます。PCから、どのサーボモータに、値を 渡すのかを、シリアルで送信します。PICの中に、 シリアル用のバッファを用意しておき、PCから来る 情報を保存します。 バッファとバッファ中の位置を示す、2変数が必要に なります。配列を利用して、バッファを構成します。 UBYTE sbuf[5] ; UBYTE s_idx ;

サーボモータ制御用変数

 本ボードには、最大16個のサーボモータを接続する ので、1個のサーボモータに送り出すパルス幅を個別 に格納しておかなければなりません。配列変数chに、 パルス幅を格納します。 サーボモータには、20msに1度、1ms〜2msの間の パルス幅を出力しなければなりません。 最小値が1ms、最大値が2msになります。 100us毎に割込みで、変数stateをインクリメントします。 ステートマシンを動かし、20msでステートが一巡する ように工夫します。 また、100usの幅でHレベル出力時間を可変できるように するため、サイズ10の配列を2つ用意します。0〜7の サーボモータには配列変数svbを、8〜15のサーボモータ には配列変数svcを割り当てます。 #define CHA_MAX 12 UBYTE state ; UBYTE ch[CHA_MAX] ; UBYTE svb[10]; UBYTE svc[10];

フラグ用変数

 本ボードには、受信割込み、タイマー割込みを利用 するので、2つのフラグを用意します。 タイマー割込みは、タイマーが100usを計測する度に オンにします。 受信割込みは、コマンドを入力し終わったときに、 フラグをオンにします。 UBYTE sflag ; UBYTE tflag ;

オフセット用変数

 本ボードには、カスケードにシリアル通信コードを 接続できます。4ビット回転DIPスイッチを利用 して、ボードの番号を設定します。ボードの番号を オフセットとして、保存する変数を用意します。 UBYTE offset ;

目次

inserted by FC2 system