2014年7月22日火曜日

LPC810をサンプルソースでLチカ!とリセットピンの扱い

※LPCマイコンをmbed以外で触るのは初めてです。間違っているところが多々あるかもしれません。。。

LPCXpresso付属のサンプルソースを使ってLチカしてみます。
LPCXpressoのお勉強とNXP流のお作法を習うためですね。

 サンプルソースの在処はインストール先のパスを変更していなければ、下記のフォルダにあります。
C:\nxp\LPCXpresso_XXX(バージョン)\lpcxpresso\Examples\NXP\LPC800\NXP_LPC8xx_SampleCodeBundle.zip

LPCXpressoのZIPインポートでサンプルを指定

使用するのは
・systick
・CMSIS_CORE_LPC8xx
・lpc800_driver_lib
の3つだけなのでそれぞれチェックを入れます。

インポートが完了したらプロジェクトの設定を変更します。
まずはビルド高速化のために”Enable Pararellel build”にチェックを入れます。

次に使用するマイコンの設定
デフォルトではLPC812なので変更します。
パラレルビルドと使用マイコンの変更は、同時にインポートした ”CMSIS_CORE_LPC8xx”プロジェクトと”lpc800_driver_lib"プロジェクトにも行いましょう。

最後にソースを変更して、P0_0を1000ms間隔でチカチカするように変更してビルド、書き込めば・・・

 ハイ、Lチカができましたー。

ただこの状態だと1番ピンのRESETが有効なのでIOとして使えません。
ついでにIOとして使うための方法もやってみます。

※ちなみにこれを実施したプログラムを書くと、電源投入後のISP(イカ醤油ポッポ焼き)ができません。
ISPするためには1番ピンをLに落とした状態で電源を投入すればISPが可能になります。
SWDには影響ありません。

まずはNXP Switch Matrix Tool(要Java)をダウンロードします。リンクはこちら↓
http://www.lpcware.com/content/nxpfile/nxp-switch-matrix-tool-lpc800

ダウンロードしたSwitch Matrix Toolを起動。
一番左のLPC810を選択。

この画面でそれぞれのピンにどの機能を割り当てられるか決定することができます。
1番ピンをクリックすると

選択肢にRESET、PIO0_5、ACMP_0が出てきました。
普通のIOポートとして使いたいのでPIO0_5を選択します。

 ”Configure I/O”タブより各ピンの詳細設定ができます。
特に変更する点はないのでそのままです。

右上の”Export”より設定用Cファイル、swm.cとioconf.cをsystick\srcフォルダに出力します。

プロジェクトをリロードするとLPCXpressoでも読み込まれているかと思います。
systicktest.cのGPIOInit関数を呼んだ後に、IOCONInit(ioconf.cより)とSwitchMatrix_Init(swm.cより)を実行するようにソースを修正します。

このままビルドすると宣言ワーニングが出ちゃうので、 IOCONInit関数とSwitchMatrix_Init関数の引数をvoidに修正しておけば完璧です。

これでビルドし、書き込めばリセットは無効になります。
ただし、はじめに記述した通り、電源投入時にLだとISPモードになってしまいます。つまり、入力ポートとして使用する場合、電源投入時はHの状態になるような使い方しかできません。
出力ポートとして使用する分にも、電源投入時Lに落とされているとISPモードになっていまいます。
(Hi-Zなら問題ないはず。。。 )

0 件のコメント :