Arduino API互換環境eXodusinoをLPC1114 DIPで使うまとめ
ここでは、Arduino API互換環境 eXodusino をLPC1114 DIPで使うにあたっての手順をまとめてみました。
(1) LPCXpresso IDEの用意
(2) eXodusinoのダウンロード
(3) マイコンへの書き込み方法
(4) eXodusinoのLPC1114FN28/102用プログラムのビルド方法
Arduinoに比べて手順がちょっと多いですが、順番に説明していきます。なお、当ブログで書いてきた内容が重複してますので、ご存知の方は(4)のみ読んでいただければと思います。(プリプロセッサの切り替えを追加しましたので)
■必要なもの
・PC
・LPCXpresso IDE 4.2.3以上
・LPC1114FN28/102(DIPのLPC1114マイコン)
・LPCXpressoの左側の、みんなに邪魔あつかいされてくびちょんぱされるアレ(LPC-Link)
・USB-UART(必須ではないけど、ほとんど必須)
(1) LPCXpresso IDEの用意
LPCXpresso IDEはCQのMARY基板などでインストールされた方も多いと思いますが、おそらくその当時のバージョンですとDIPマイコンでは書き込みやデバッグが出来ません。最新のバージョンをもう一度インストールしてください。
インストール方法はCQのページから
LPCXpresso IDEのインストール
LPCXpresso IDEダウンロードは(要ログイン)
Home Page | LPCXpresso, powered by Code Red Technologies
ここではLPCXpressoの詳細設定を取り扱うことは致しません。ダウンロード後、無事起動できる事を確認してください。
(2) eXodusinoのダウンロード
eXodusino[エクソダシノ]とは簡単に言うとArduinoの記述をLPC1114に理解させるための手段です。完全互換ではありませんが、SPIでメモリを読み書きしたり、PWMでLEDを点灯させたり、キャラクタ液晶に文字を表示したり、乱数でさいころゲームを作ったりと、かなりの部分をカバーしています。
ここからダウンロードできます。
lynxeyed-atsu/eXodusino · GitHub
(図:この部分の「ZIP」とかいてあるボタンをクリック)
ダウンロード後、解凍すると「lynxeyed-atsu-eXodusino-(数字)」という謎フォルダ名になってしまうので、「exodusino」(鍵かっこ含まず)という名前に変更する。
これをLPCXpresso IDEの作業用ディレクトリに移動など、作業しやすい場所に移動してください。
LPCXpresso IDEを起動します
QuickStartウィンドウの[Import Existing Projects]を選択し、先ほど移動したexodusinoフォルダを指定してください。
インポートが完了するとProject Explorerウィンドウに下図のような構成でeXodusinoプロジェクトが展開されます。
※以下の作業は2012年11月以降のバージョンアップでは不要になりました
ここでエラーが出た方も多いと思います。不要なプロジェクトがあるためです。cutecom-0.22-0というフォルダ*1が不要です。
このフォルダ上で右クリックし、Resource Configurations → Exclude from Build...を選択します。
続いて、Select Allを選択しOK
ここでLPCXpresso IDEの必要最小限の設定はおしまいです。
(3) マイコンへの書き込み方法
書き込み方法は3つ有ります
- LPC-Linkを使いLPCXpresso IDEから直接書き込む
- Flash Magicを使う
- eXodusブートローダを使う
一番最初のやり方が、煩雑な手順が無く、確実に思えます。
なおeXodusブートローダを使うとTeraTermなどシリアルコンソールから無手順UARTで書き込みが出来ます。詳細は別エントリで扱おうと思います。
LPCXpressoボードのLPC-Linkを使います。LPC-Linkはこのようなピン配置となっております。JTAGではなくSWDです。
上図の右側半分を切断するか、Pカッターなどで電気的に分離し、ピンヘッダを立ててLPC-Linkを横取りします。
なお、LPC1114FN28/102のSWD書き込みに使うピンは
対応するピン同士をブレッドボードやユニバーサル基板を使って配線します。
3.3V電源はLPC-Linkから貰ってしまって構わないでしょう。
このままだと、LPCXpresso IDEで書き込み時にエラーを返してくる恐れがあります。LPC-Linkに接続しているデバイスがLPC1114FN28/102である事を明示的に伝える必要があります。
LPCXpresso IDEのProject Explorer → eXodusinoプロジェクトトップフォルダ右クリック → Propertiesを選択
下図のように、[C/C++ Build]の項目を展開し、[MCU settings]を選択 → LPC1114FNを選択 → [OK]
これで書き込みの準備段階は完了です
(4) eXodusinoのLPC1114FN28/102用プログラムのビルド方法
今回のビルド条件は以下のようなものです
- デバイス:LPC1114FN28/102
- ブートローダなし(=LPCXpressoから直接書き込み)
- マイコンの内蔵クロックで動作
この条件に合わせるようにリンカスクリプトとソースコードを書き換えるのはやりたくないので、コンフィグをワンタッチで変更できるようにしました。
LPCXpresso IDEのProject Explorer → eXodusinoプロジェクトトップフォルダ右クリック → Propertiesを選択
[C/C++ Build]の項目を選択 → Manage Configurations... → [LPC1114_FN28_102_DIP]を選択 → [Set Active]
[OK] → [Apply] → [OK]
これで完了です。
Arduinoのスケッチに相当するファイルが[eXodusinoプロジェクトトップ] → [src] → [user_application.cpp]です。
デフォルトでは9600baudで1秒ごとにマイコンが起動してからの時間を秒単位で送信します。
USB-UARTのRX,TXをLPC1114の15,16番ピンに接続するとPCからシリアルコンソールで確認する事が出来ます。
#include <libmary.h> void setup() { Serial.begin(9600); // UARTのセットアップ(9600baud) Serial.println("\r\nStart..."); } void loop() { Serial.println(millis()/1000,DEC); // 起動後の経過時間を1秒ごとに更新 delay(1000); }
一旦、メニューのProject → Cleanを選択し、その後、Project → Build Allします。
エラーが出現しなければOKです。
いよいよマイコンへ書き込みをします。
LPCXpresso IDEメニューの黒いICマークをクリック。
[Browse]を選択
[eXodusinoプロジェクトフォルダ]/LPC1114FN28_102_DIP28/eXodusino.axf
が書き込むバイナリです。
これを選択し、[OK]
しばらくすると書き込みが完了し、シリアルから9600baudで
1秒ごとにカウントアップが始まります。
実験風景……。
おい、Lチカさせろよw
はい。
LPC1114FN28/104のピンアサインを考慮しました。
上の図の水色の名称がeXodusinoで使えるピン名です。黄色の四角はそのピンの持つGPIOとは別の機能です。
P0_7とP0_4でLチカしてみました。eXodusinoはこの水色のピンのうちほぼすべてのピンでanalogWriteが使えます。(最大4チャネルまで)
LチカじゃなくてLEDホタルです。P0_7とP0_4に330~500Ωくらいの抵抗を介してLEDをそれぞれに接続すると交互に"ホタル点滅"します。
user_application.cppにこのように記述します。
#include <libmary.h> void setup() { Serial.begin(9600); // UARTのセットアップ(9600baud) Serial.println("\r\nStart..."); } void loop() { for(int i = 0; i < 256; i++) { analogWrite(P0_7,i); analogWrite(P0_4,255 - i); delay(1); } for(int i = 0; i < 256; i++) { analogWrite(P0_7,255 - i); analogWrite(P0_4,i); delay(1); } }
おしまい