簡単なプログラムを作ってみるの最近のブログ記事

LPC1114のテスト・ボードXpressoでテストする(11)
 前回、プロジェクト>オプションでプログラム作成に必要な設定を行ってあります。前回保存したワークスペースを開きます。

IAR4500010.jpg

LPC1114のテスト・ボードXpressoでテストする(10)
   前回に引き続いて、プロジェクトのオプションの設定を行います。前回まででC/C++のコンパイラの設定まで行いました。今回は、アセンブラは使用していません。出力コンバータ、カスタム・ビルド、ビルド・アクションはデフォルトのままとします。

リンカ
  デフォルトのリンカの設定は次のようになっています。

IAR4300010.jpg

LPC1114のテスト・ボードXpressoでテストする(9)
 前回、新規にワークスペース、プロジェクトをarm041010の名で作成し保存しました。最初に、前回保存したワークスペースarm04010.ewwを開きます。次に、前々回に作成検討したソース・ファイルを作成します。ソース・プログラムは、

ファイル>新規作成

で無題ドキュメントのウィンドウを開きソース・プログラムを次のように作成します。ソース・プログラムが完成したら、arm04010.cの名を付けてプロジェクトを作成したフォルダに保存します。

IAR4200010.jpg


LPC1114のテスト・ボードXpressoでテストする(8)
 前回、but1、but2の二つのボタン押したときそれぞれLEDを点灯させるプログラムを作成しました。そのソース・プログラムをコンパイルし、実行可能なプログラムを作成するための作業、ビルドを行い実行可能なプログラムを作成します。
 このビルドを行うための条件、デバッグのための設定がメニューの
   プロジェクト>オプション
で設定できます。基本はデフォルトの設定で行いますが、この環境で最低限設定する必要のある項目に絞って確認します。

LPC1114のテスト・ボードXpressoでテストする(7)
 前回、Xpresso LPC1114のマイコン・ボードに、IARのCortex M0の評価ボードのボタンとLEDのアドレスと同じアドレスのGPIOポートにボタンとLEDを接続しました。そのLPC1114のボードに、IAR用に作成したプログラムをロードして、Xpresso LPC1114のマイコンボードに接続したボタンを押すとLEDが点灯するようになりました。


                                           Xpresso LPC1114 マイコン

IAR4000030.jpg 今回、IAR用に作成したプログラムを基に、Xpresso LPC1114用のプログラムを作成します。結果としてコピーとなると思いますが、プログラムの全コードの役割を確認することになります。
 

                IAR Cortex M0 評価ボード

IAR000020.jpg

周辺装置の設定(9)
プロジェクトの設定(3)

  全てのビルドが正常にエラーなく行われたので、プロジェクト>ダウンロードしてデバッグを選択しますと、次に示すようにデバッグ・モードに入ります。

IAR3000005.jpg

周辺装置の設定(8)
プロジェクトの設定(2)

 ワークスペースにプロジェクトを作り、そのプロジェクトにソース・ファイルを追加しコンパイルしました。

プロジェクト>ファイルの追加
 
でソース・プログラムのファイルは、プロジェクトに追加されています。

IAR2900007.jpg

周辺装置の設定(7)
プロジェクトの設定

   プロジェクトの設定に必要な事項を確認します。IAR Embedded Workbench IDEを起動してメニューバーのプロジェクト>新規プロジェクトの追加を選択すると、次に示すような新規プロジェクトの作成のウインドウが表示されます。

IAR2800010.jpg

周辺装置の設定(6)
 周辺装置の入出力及び制御レジスタは、メモリ空間に割り当てられています。メモリ領域を表示するウィンドウが用意されています。次に示すように、表示>メモリ(M)をクリックしてメモリ表示のウィンドウを開きます。

IAR2700010.jpg

周辺装置の設定(5)
   GPIO0のレジスタの各ビットの値を抽出して読み込むことができます。そのための各GPIOnのベース・アドレスから0x3FF8までの広いアドレス・エリアが用意されています。
 GPIO0のポートのアドレス 0x5000 3FFCからデータを読み取ると、GPIO0のGPIO0-0~GPIO0-11までの12ビットの全端子の状態が読み取られます。
                but1= *(volatile unsigned int *)(GPIO0_BASE+0x3FFC);
 この命令の実行により、but1にはGPIO0の全端子の状態がセットされています。
 ボタン1は GPIO0-7の端子の状態を確認します。そのために、
                 but1=but1 & 0x80;
 GPIO0から読み取った値はbut1にセットされ、ビット7の値が1で残りの全ビットが0の値と論理積でビット7の0か1を確認することができます。

周辺装置の設定(4)
ボタンを押された状態を調べる

  LPC1114のGPIOの処理に関係するアドレスは、GPIO0からGPIO3の各ポートのベース・アドレスから、次に示すようにそれぞれの役割のレジスタに応じたオフセット値を加算したアドレスとなっています。

IAR2500010.jpg

周辺装置の設定(3)
制御レジスタのアドレスを絶対アドレスで示す

 前回はSYSAHBCLKCTRLレジスタのアドレスをポインタ変数、adr_sysahbclkで指定していました。今回は絶対アドレスで指定することを試してみます。
  SYSAHBCLKCTRL レジスタは、メモリの0x40048080のアドレスにあります。このアドレスは絶対値0x40048080にポインタの型指定のint*を付加して
(Int*)0x40048080  でSYSAHBCLKCTRL レジスタのアドレスを指定しています。このSYSAHBCLKCTRL レジスタのアドレスで指定するメモリの内容を読み出すために、アドレス・ポインタの前に * を追加し、
    *(int*)(0x40048080)
でSYSAHBCLKCTRL レジスタの内容、アドレス(int*)(0x40048080)で示されるメモリの内容を示します。

IAR2400010.jpg

 

周辺装置の設定(2)
  ボタン1、ボタン2の状態を読み込んだ値をセットする変数をbut1、but2と定義し、AHBCLKCTRLレジスタの内容を確認するために保存する変数idを定義しています。また、AHBCLKCTRLレジスタのアドレスを指定するためにint型のデータを示すポインタ型の変数、adr_sysahbclkを定義しています。これらの変数を利用してプログラムの動作を確認します。
 前回作成したプログラムのワークスペースtest015.ewwを開き、評価ボードを接続し、プロジェクト>ダウンロードしてデバッグを選択しデバッグを開始します。

IAR2300010.jpg

周辺装置の設定(1)
 マイコンのGPIOなどの周辺装置の設定方法について確認していきます。各周辺装置の電源投入後のリセット処理によって、あらかじめ定められたリセット後のデフォルト値になっています。これらの状態は、各マイコンのユーザーマニュアルに説明されています。最終的には、これらのマイコンを使いこなすためにはユーザーマニュアルにひと通り目を通すことになります。

簡単なプログラムを作ってみる(3)
入力ポート状態を読み取る

   まず、GPIO0のポートを読み込み、GPIO0_7 のポートのオン/オフをチェックします。このポートのGPIO0_7のピンのデータを読み取り、オン/オフのチェックを行うプログラムは次のようになります。

unsignedint but1;                       // GPIO0のポートのデータを格納する変数
but1=*(unsigned int *)( GPIO0_BASE+0x3FFC);
if (0x0040 & but1)

 同じ処理をボタン2についても同様に行います。

新しいワークスペースを作る

  プログラムを作成するために、IAR Embedded Workbench IDEを起動して、次に示すように新しいワークスペースを作ります。

IAR2100010.jpg

簡単なプログラムを作ってみる(2)


   GPIOのポートからのデータの読み取り


 汎用のディジタルI/Oポートからデータを読み取る方法を、LPC1114のユーザーマニュアルで確認してみます。





カテゴリ


Copyright (C) 2006-2015 CQ Publishing Co.,Ltd. All Rights Reserved.