| I. 前回の続き 前回の記事「Zigbeeの旅(I):はじめに」では、Zigbeeとその開発環境について簡単に紹介した。 この記事は、基本的に上記の質問に答えるためのものです。小さな実験の例として「LEDライトの点滅」を取り上げ、CC2430ベースのプログラム開発のためにIARをどのように設定するか、 IARを使って プログラムを書き、オンラインでデバッグする方法について説明します。 IAR の設定 IAR の各プロジェクトは、デバイスタイプ、ヒープ/スタック、リンカ、デバッガなど独自の設定を持つことができます。 (1) 新しいワークスペースとプロジェクト まず、ledtest フォルダを新規作成し、IAR を起動し、メインメニュー File -> New -> Workspace を選択し、新しいワークスペースを作成します。 Project -> Create New Project -> Empty Projectを選択し、OKをクリックして、プロジェクトファイルをledtestフォルダにledtest.ewpという名前で保存します。 (2) 一般オプションの設定 ターゲット設定:デバイス:CC2430; コードモード: Near; データモデル:Large 呼び出し規約:XDATAスタック再入力
データポインタ設定: DPTR数: 1
スタック/ヒープ設定: XDATA スタックサイズ: 0x1FF (3) リンカの設定 リンカコマンドファイル: select lnk51ew_cc2430.xcl
(4) デバッガの設定: ドライバ:テキサス・インスツルメンツ(この実験は実機デバッグ用なのでTIを選択、他の手順でIARエミュレータを使用する場合はオプションでシミュレータ) デバイス説明ファイル: CC2430.ddf
この時点で、本実験のためのIARの設定は基本的に終了し、次にそのコーディング実装を紹介する。 第三に、プログラムコードの準備(1) 新しいプログラムファイル File->New->Fileを選択し、main.cを新規作成する。 (2) ヘッダファイルの導入 CC2430ベースのプログラムでは、ioCC2430.hを参照する必要がある。ioCC2430.hは、CC2430の各種特殊機能レジスタ(SFR)のアドレス・マッピングを定義している。 #include //CC2430に対応するヘッダ・ファイルを導入する(各SFRの定義が含まれている)
このファイルは IAR に組み込まれています(stdio.h と同様)。この行にマウスを合わせて右クリックし、 OPen "ioCC2430.h " を選択すると、このヘッダファイルの全内容を見ることができます。 (3) LEDピンの定義 開発ボードの回路図を確認してください:
led1~4はそれぞれP1_0~P4_0ピンで制御されていることが分かっているので、led1, led2, led3, led4をそれぞれP1_0, P2_0, P3_0, P4_0ピンとして定義すればよい。 #define led1 P1_0 //LED1をP1_0ポート制御として定義する #define led2 P1_1
//LED2 を P1_1 ポート制御として定義 #define led3 P1_2 //LED3 を P1_2 ポート制御として定義 #define led4 P1_3 //P1_3ポート制御用にled4を定義 (4) メイン関数 次に、メイン関数を書き始める。 まず、P1.0~P1.4ポートを使う前に、動作モードと入出力方向を設定する必要があります。それには、P1SELとP1DIRの2つのSFRが必要です。 P1SEL = 0x00; //P1を通常のI/Oポートに設定する P1DIR |= 0x0F; &P1.0 P1.1 P1.2 P1.3 を出力に設定する。
Zigbeeのヒント CC2430には、 P0_0~P0_7 、 P1_0~P1_7 、 P2_0~P2_7 、合計21個のI/Oポートがあります。これらは汎用のデジタルI/Oとして、あるいはADC、タイマ/カウンタ、USARTなどの周辺I/Oを接続するために使用できます。 CC2430のSFRには、これらのI/Oポートを設定するために使用できる3種類のレジスタがあります: PxSEL(xは0/1/2):P0/P1/P2ポート機能選択 PxSEL(xは0/1/2):P0/P1/P2ポート機能選択nbsp;0:汎用デジタルIO、1:周辺IO、デフォルトは0 PxDIR(xは0/1/2):P0/P1/P2ポートの方向指定 0:入力、1:出力、デフォルトは0 PxINP(xは0/1):P0/P1ポート入力モード nbsp;0:アップ、1:出力、デフォルトは 0nbsp;0:プルアップ/ダウン、1:トライステート、デフォルトは 0 IOポートを使用する場合は設定が必要で、デフォルトの場合はシステムデフォルトを使用する。 次に、4つのLEDを初期化し、すべて消灯に設定する:
LED1 = 1; LED2 = 1; LED3 = 1; LED4 = 1。
最後に、LED点滅エフェクト・コードを書く:
led1 = 0; //led1 点滅 Delay(10); led1 = 1; Delay(10); led2
= 0; //led2 blinking Delay(10); led2 = 1; Delay(10); led3 = 0; //led3 blinking Delay(10); /
//led3点滅 Delay(10); led3 = 1; Delay(10); led4 = 0; //led4点滅 &.
nbsp; Delay(10); led4 = 1; Delay(10);
これは、遅延サブ関数Delay(unsigned char n)を含む:
void Delay(unsigned char n) { unsigned char i; unsigned int j; for(i = 0; i < n; i++)  
f or(j = 1; j; j++) ; }(5) コード概要 (5) コード概要 上記のコードを全体として以下のようにまとめる: //ヘッダーファイルの導入 #include //CC2430に対応するヘッダファイルを導入する(各SFRの定義を含む)
// LEDピンの定義 #define led1 P1_0 //P1_0ポート制御用LED1を定義する。 #define led2 P1_1 //P1_1ポート制御用にLED2を定義する #define led3 P1_2 //P1_2 ポート制御用 LED3 の定義 #define led4 P1_3 //P1_3ポート制御用LED4を定義 //遅延サブルーチン void Delay(unsigned char n) { 以下のサブルーチン。 unsigned char i. unsigned int j. for(i = 0; i < n; i++) for(j = 1; j; j++) ; }
void main(void) { P1SEL = 0x00; //P1を通常のI/Oポートに設定する。 P1DIR |= 0x0F; //P1.0、P1.1、P1.2、P1.3を出力に設定する。
led1 = 1; //初期化、4つのLEDライトすべて消灯 led2 = 1; //初期化、4つのLEDすべて消灯 led3 = 1; led4 = 1; //初期化、4つのLEDすべて消灯 led2 = 1; led3 = 1; led4 = 1; //初期化、4つのLEDライトすべて消灯
while(1) //スタート・サイクル { led1 = 0; //led1点滅 delay(10); //遅延(10); //遅延(10); //遅延(10) delay(10); led1 = 1; //led1点滅 delay(10).
led2 = 0; //led2が点滅する Delay(10); led2 = 1; //led2が点滅 led2 = 1; //led2が点滅 Delay(10)。
led3 = 0; //led3が点滅中 Delay(10); led3 = 1; //led3が点滅 led3 = 1; //led3が点滅している Delay(10)。
led4 = 0; //led4が点滅している Delay(10); led4 = 1; //led4が点滅 led4 = 1; //led4が点滅している Delay(10); //遅延(10) } }
OK、この小さな実験のコードが書かれていますが、非常に単純ではありませんああ、へぇ~! 第四に、コンパイルとデバッグ Project -> Makeを選択し、コードをコンパイルすると、成功すれば以下の出力が表示されます: .gif")
c Zigbee 開発ボード→デバッガ→PCのUSBポートの 順にZigbeeデバイスを接続し、プロジェクト→デバッグを選択すると、開発ボードにプログラムが自動的にダウンロードされます。 そして、Debug -> Goを選択してプログラムを開始すると、4つのLEDが順番に点滅するのが見えます!これ以上簡単な小実験はないが、成功したときは、ちょっと興奮した! V. まとめ 本稿では、「LEDライト点滅実験」を基本として、それぞれIARの設定から、プログラムコードの準備だけでなく、コンパイルとデバッグのプロセスは、全体の実装プロセスを紹介します。次回は、タイマ、シリアル通信、AD変換、システムスリープ、ウォッチドッグなどを 含む基本的な実験のいくつかのCC2430開発の紹介に基づいて、開発手順の基本的なプロセスの理解になりますので、ご期待ください!
|