マイクロマウス研修 Part6(岩本)


ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

マイクロマウス研修(岩本)一覧
Part1Part2Part3Part4Part5、Part6

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

こんにちは岩本です。
前回に引き続き、プログラム編です。

前回、途中で終わったので、②と③の続きからです。
②init_allの定義について
③include先の定義は?

init_allでは、設定の初期化を行っています。設定内容は、init.hで関数が纏められています。ここでは、プロトタイプの宣言を行っています。
これは関数の定義をする前に関数を呼び出す場合、コンパイルエラーになる事があるため、先に型を宣言しておくためプロトタイプの宣言を行います。
そのため、メインプログラムの方に#include “init.h”で読み込んでいます。

各関数は以下のような設定を行っています。
init_clockは、クロック発生回路の詳細を設定しています。
init_io(Input/Output)では、入出力を設定しています。
init_cmt(コンペアマッチタイマ)では、タイマーの周期を設定しています。インターバルタイマー(一定周期で何らかのアクションを起こす事)に使用します。
init_mtu(マルチファンクションタイマパルスユニット)は、cmtより複雑な設定ができる上位タイマーと言えます。PI:COでは、スピーカーの鳴動周期やPWM(Pulse Width Modulation(パルス幅変調))用の基本波形の生成等の設定を行ってます。
init_adcは、A/D変換の設定を行っています。ここでは、アナログデータの波形をどれだけの変換時間で計測するかを設定しています。

 

そして、関数の定義自体はinit.cの中で行われています。この時、最初にincludeでinit.hを読み込んでプロトタイプの宣言を読みに行っているのが分かると思います。
また、init_allに関しては、init_clock・init_io・init_cmt・init_mtu・init_adc全ての設定を初期化するため最後に纏めています。
ちなみにinit(initialize)は、初期設定ファイルみたいな意味です。
 

 

init.cでたくさん初期化の設定を行っていますが、LEDを光らせるために全ての初期化が必要なわけではありません。(今後のタイヤを回したりするときに必要になる設定も含まれています。)
そのため、今回必要なioポートの設定のみの解説をします。下図のようにPDR(ポート方向レジスタ)で各ioポートに対して、IO_OUT(出力用のポート)の設定しています。

 

なお、IO_OUTの定義は、static_parametersファイルで設定されています。

 

サンプルデータの中には、STEP1のLED点滅に使わない定義もいくつかありましたが、概ね理解することが出来るようになりましたので、次回からはSTEP2へ移ってい行きたいと思います。

 


Posted in Pi:Co Classic3 製作記