中身の内容 (No.19)


こんにちは立野です。

前回まではstep1~step4(LED,Buzzer)などの中身を変えていましたが、今までは変える所ピンポイントで変えていたので今後の予定は、文の中身を1つずつ理解して、加えてその文の中身も最終的に変えていくことです。

自分で置き換える文がわかりやすくするために、例えば#include “iodefine.h”だったらhの後にSTと付け加えていきます。

step1(LED)
step2(Buzzer)
step3(switch)
step4(Buzzer)
step5(sensor)
step6(motor)
step7(feedback)
step8(まとめ)

まず最初にゴールまで走るために必要なstep8の中身から上から順に、

#include “iodefine.h”
#include “portdef.h”
#include “macro.h”
#include “mytypedef.h”
#include “parameters.h”
#include “glob_var.h”

この文の#include “portdef.h”の中身から。

スクリーンショット 2014-08-08 11.58.12_R

最初に出てくる#ifdefとは、defineで定義された識別子があるかチェックするコマンドで後の処理はifと同じと条件付コンパイル機能となります。

#elseは、他に(if文以外の条件の文が出てきた時の処理の事)

#defineは、その文の中を定義していくこと。例えばdefine AをBとするとソース内のAの部分がコンパイル時に全てBに置き換えられる、定数などで用いられます。

この中の#define BUZZER (PE.DRL.BIT.B6)は何処を指しているか探していきます。

#include “iodefine.h”の文の中にDRLと検索(Ctrlキーとfボタンを押すと出てくる) してここの事を指していることがわかりました。(下記)

スクリーンショット 2014-08-08 10.47.23_R

の中のこの部分です。

PEといのはファイルから回路図で表すとこの部分を指します。

スクリーンショット 2014-08-08 17.59.54_R

DRLとは、ルネサスエレクトロニクス社のカタログ資料を見ると16.6のところにI/Oポートレジスタの説明に記述されています。(下記)

スクリーンショット 2014-08-08 17.59.01_R

struct st_pe { /* struct PE */
union { /* PEDRL */
unsigned short WORD; /* Word Access */
struct { /* Byte Access */
unsigned char H; /* High */
unsigned char L; /* Low */
} BYTE; /* */
struct { /* Bit Access */

unsigned char B6 :1; /* Bit 6 */
} BIT; /* */
} DRL; /* */

この後の続きをやっていきますが#include “iodefine.h”(これから自分で変えていく文)は、PiCoclassic2.c(自分のはsatorupico.c)の文に置き換えて保存するために新規作成→ビルド→F9で左横のスペースに保存しておきます。


Posted in Pi:Co Classic2 製作記