robo8080のブログ

ロボット製作や電子工作など。

lpc21ispを「VC++ 2010 Express」でビルド

2014年05月01日 | mbed LPC1114FN28

LPC1114のmbedプログラムをシリアルで書き込むときFlashMagicを使っていたが、これは毎回バイナリファイルをHEXファイルに変換しなければならないので不便だった。

lpc21ispならバイナリファイルのままで書き込めるのでWindows用にビルドしてみた。

 


lpc21ispをWindows8.1上の「VC++2010Express」でビルドする方法。

「VC++2010Express」はインストール済みであるものとする。

1.ここからlpc21ispのソースをダウンロードし、適当なディレクトリに解凍。

2.「VisualStudioコマンドプロンプト」を開いてから、ソースを解凍したディレクトリへ移動。

 

3.次のコマンドを実行する。

  nmake /f Makefile.vc clean all

 

 


プログラム書き込みはバイナリファイルと同じディレクトリにバッチファイルを作っておいて、それをダブルクリックするだけ。楽ちん。

"lpc21isp.exe"はパスの通ったディレクトリに置いておくか、面倒ならバッチファイルと共にバイナリファイルのあるディレクトリに入れておくのが手っ取り早い。(^^;)

例: lpc21isp.exe -bin LED_LPC1114.bin com2 115200 48000

comポートは、com1~com9しか使えないかも。


LPC1114とlpc21ispの使い方についてはこちらが参考になります。

mbed LPC1114での遊び方

OS Xからmbedを使ってLPC1114でLチカしてみた。

lpc21isp からLPC1114を使う

 


mbed LPC1114でSoftwareSerialライブラリの実験。

2013年10月03日 | mbed LPC1114FN28

LPC1114はシリアルポートが1つしかなくて不便なので、SoftwareSerialの実験をしてみました。

実験には、この SoftwareSerialライブラリ を使わせてもらいました。

また、プログラムの書き込みにはイカ醤油ポッポ焼きを使わせてもらいました。

イカ醤油ポッポ焼き の「シリアル・スルー モード」は、シリアルを使った実験に便利です。

 


この実験はLPC1114FN28のdp10とdp11を接続して、送受信をループバックしているだけの簡単なものです。

LPC1114FN28には、GNDピンが2本あるが、2本ともちゃんとGNDに接続したほうが良さそう。

手抜きして片方だけ接続したら時々挙動がおかしくなった…ような気がする。(これが直接の原因かは不明だが…)

 

実験に使ったプログラムはこれです。

SoftwareSerialは、8bit,No Parity,1Stop Bit 固定です。

 

イカ醤油ポッポ焼きはプログラムの書き込みが終わると「シリアル・スルーモード」になるので、すぐにデバッグを開始できます。

イカ醤油ポッポ焼きの詳細はこちらを参照してください。

 

 


実験使わせてもらった SoftwareSerialライブラリ は、そのままでは動かないので何か所か修正が必要です。

SoftwareSerial.h の修正部分

赤枠部分を修正してください。

 

        ------------ 途中省略 --------------

 

 

SoftwareSerial.cpp の修正部分

赤枠部分を修正してください。

デバッグにLEDを使用しているので、そこは必要に応じで修正してください。 

 

        ------------ 途中省略 --------------

 

        ------------ 以下省略 --------------

 


mbed LPC1114 + SoftwareSerialライブラリで、MARY基板の基板間通信の実験をしてみました。

MARY基板オリジナルの基板間通信は1wire双方向通信ですが、とりあえず片方向だけは動きました。

 

 ―以上―

 


関連する記事

mbed LPC1114FN28を使ってみた。

mbed LPC1114コンパイラでMARY基板を動かしてみた。

参考リンク

Getting started with mbed LPC1114

mbed LPC1114での遊び方

LPC1114 pinout pictures

イカ醤油ポッポ焼き

DIP_ARM LPC1114FN28のプログラムをシリアルで書き込む

フラッシュ書込み

mbed LPC1114で「I2C接続の小型LCDボード」を使ってみた!

mbedプラットフォームとmbed LPC1114FN28ファーストタッチ

 


mbed LPC1114コンパイラでMARY基板を動かしてみた。

2013年09月16日 | mbed LPC1114FN28

mbedコンパイラがLPC1114に対応したのでLPC1114FN28(110円mbed)で遊んでいたら、MARY基板がLPC1114だということに気が付いた。

トランジスタ技術増刊「2枚入り!組み合わせ自在!超小型ARMマイコン基板」 

で、もしやと思って、買ってから一度も使わずに積んでいたMARY基板を引っ張り出してきた。

そして、mbedコンパイラでLチカを作って試したら動いてしまった!素晴らしい。

MARYは拡張基板がいろいろ出ているので使えたら面白そう。

    

実験に使ったソースはこれ。

MARY基板の回路図を見て、対応するピン番号を調べた。

//--------------------------------------

#include "mbed.h"

DigitalOut myled(xLED1);   //G
//DigitalOut myled(xp12);  //R
//DigitalOut myled(xp21);  //B

int main() {
    while(1) {
        myled = 1;
        wait(0.2);
        myled = 0;
        wait(0.2);
    }
}

//---------------------------------------

bin―>HEX変換してから、USBケーブルを接続し、FlashMagicで書き込んだ。

MARY基板でのFlashMagicの使い方はここ

mbed LPC1114コンパイラの使い方は、”じぇーけーそふと” さんのこの記事がわかり易い。

mbedプラットフォームとmbed LPC1114FN28ファーストタッチ

 


MARY基板がmbedコンパイラでLチカ出来たので、OB基板(OLED Board)でOLEDライブラリが使えるか試してみた。

MARMEX_OB基板OLEDライブラリ (MARMEX_OB_oled)

動いた!素晴らしい。

   

mbed LPC1768用の”MARMEX_OB基板OLEDライブラリ”をMARYで動かすのはピン番号を変更するだけだった。

これ―>MARMEX_OB_oled oled1( dp2, dp6, dp25, dp17, dp13 );

こちらの表記のほうが良いそうです。 (2013.09.22 追記)

     ―>MARMEX_OB_oled oled1( P0_9, P0_6, P0_2, P1_8, P1_4 );

表示が出てくるまでに少し時間が掛かる。

手順は。

1:”MARMEX_OB基板OLEDライブラリ”をインポート

2:mbedコンパイラをLPC1114用に切り替え

3:ソースのピン番号を変更 

4:mbedライブラリを最新版にUpdate 

5:コンパイル 

6:binファイルをHEXに変換してFlash Magicで書き込む。

ただし、表示が出るまですごく時間がかかる。忘れた頃にやっと…という感じ。

      ―> LPC1114 mbedライブラリrev.67で解決。  (2013.09.22 追記)

rev.67では”MARMEX_OB_oled.h”に以下の修正が必要。

 修正前:SPI_FREQUENCY = 20000000

 修正後:SPI_FREQUENCY = 10000000

詳細は、こちら。 


OLED基板にはLIS33DEというI2C接続の加速度センサも載っているので試してみた。

これも問題なくmbedコンパイラで使えた。

 

動作確認に使ったプログラムはこれ。

//------------------------------------------------------------------ 

#include "mbed.h"
#include "MARMEX_OB_oled.h"

//====================
// MEMS Device Address
//====================
#define MEMS_DEV_ADDR 0x38

//=======================
// MEMS Register Address
//=======================
#define MEMS_CTRL_REG1      0x20
#define MEMS_OUT_X          0x29
#define MEMS_OUT_Y          0x2b
#define MEMS_OUT_Z          0x2d
 
I2C i2c(dp5, dp27);
 
const int addr = MEMS_DEV_ADDR;

MARMEX_OB_oled   oled1( dp2, dp6, dp25, dp17, dp13 ); // mosi, sclk, cs, rst, power_control

int main() {
    oled1.background( 0x000000 );
    oled1.cls();

    oled1.locate( 0, 3 );
    oled1.printf( "Hello World!" );

    char cmd[2];
    cmd[0] = MEMS_CTRL_REG1;
    cmd[1] = 0x47;
    i2c.write(addr, cmd, 2);

    while (1) {
        wait(0.5);
 
        cmd[0] = MEMS_OUT_X;
        i2c.write(addr, cmd, 1);
        i2c.read(addr, cmd, 1);
        oled1.locate( 0, 5 );
        oled1.printf("OUT_X=%d  ", (signed char)cmd[0]);
       
        cmd[0] = MEMS_OUT_Y;
        i2c.write(addr, cmd, 1);
        i2c.read(addr, cmd, 1);
        oled1.locate( 0, 6 );
        oled1.printf("OUT_Y=%d  ", (signed char)cmd[0]);
       
        cmd[0] = MEMS_OUT_Z;
        i2c.write(addr, cmd, 1);
        i2c.read(addr, cmd, 1);
        oled1.locate( 0, 7 );
        oled1.printf("OUT_Z=%d  ", (signed char)cmd[0]);
    }

}

//------------------------------------------------------------------ 


次は、XB基板(XBee Board)を使ってみた。

単純にXBeeを使うのではつまらないので、iPadとBluetooth通信をしてみた。

mbed LPC1114コンパイラ + MARY基板 + XB基板(XBee Board) + SBXBT + USB Bluetootドングルを使用した。

  

iPadとBLE通信ができた。MARY基板側は単なるシリアル通信だからできて当然か…

iPad + konashi.js と SBXBT + SBBLE を使用した。(末尾の参考リンク参照)

 

 


XB基板(XBee Board) には、micro SDカードソケットも付いているので、ついでに試してみた、

 

XB基板上のmicro SDも動いた。

mbedサンプルプログラムのピン番号を変更しただけ。

mbedライブラリがほとんどそのまま使えるのは便利。

これを使わせてもらった。

SDFileSystem_HelloWorld

このプログラムのピン番号を変更。

これ―>SDFileSystem sd(dp2, dp1, dp6, dp25, "sd");

 

 


MARY基板とその拡張基板がmbed LPC1114コンパイラで使えることは大体確認出来た。

あとはMARY基板の特徴である基板間通信だが、もうパワーが尽きた。

誰かがやってくれるのを待つ事にする。(^o^)/

 


mbed LPC1114でFlash Magicを使うときbinー>HEXファイル変換に”BIN2HEX.EXE”を使っていたが、これはWin7 64bit版では動かず不便だった。

Hexplorerというのを試してみたら、うまくいった。

使い方は、Hexplorerでbinファイルを開いて、メニューから

 File ―> Export ―> Intel Hex

 


関連する記事

mbed LPC1114FN28を使ってみた。

参考リンク

Getting started with mbed LPC1114

mbed LPC1114での遊び方

LPC1114 pinout pictures

DIP_ARM LPC1114FN28のプログラムをシリアルで書き込む

フラッシュ書込み

mbed LPC1114で「I2C接続の小型LCDボード」を使ってみた!

mbedプラットフォームとmbed LPC1114FN28ファーストタッチ

konashi - A physical computing toolkit for iPhone, iPod touch and iPad

SBBLE(サブレー) - BLEフィジカルコンピューティング用ファーム

ランニングエレクトロニクス - SBXBT

 


mbed LPC1114FN28を使ってみた。

2013年09月08日 | mbed LPC1114FN28

mbedコンパイラがLPC1114FN28に対応したので試してみた。

LPC1114FN28は、秋月で購入。しかし、1個110円って安すぎ~

 

プログラムの書き込みは、USBシリアル変換器(3.3V用)+FlashMagic。(詳細は末尾の参考リンク参照)

mbedコンパイラで出力したbinファイル―>Hexファイル変換はこれを使った。

BINARY to Intel HEX Converter Utility

(Windows7 64bit版では動かなかったので、Virtual PCのXP MODEを使った。)

 


さっそくmbedコンパイラで実験。Lチカ動いた。素晴らしい。


PWM式RCサーボも動いた。

以前LPC1768で動かしていたソースのピン番号だけ変更した。


I2C接続温度センサTMP102も動いた。

ここを参考にピン番号をLPC1114に合わせて変更。

TMP102 Temperature Sensor


イカ醤油ポッポ焼き、LPC1114で試してうまくいった。素晴らしい。

プログラムの書き込みが楽になった。

イカ醤油ポッポ焼き mbed用ISPプログラム

イカ醤油ポッポ焼き、正常に書き込みできたらLPC1114を自動でリセットし起動 & LPC1768とLPC1114のシリアルがスルーになるようにしたら、そのまま動作確認できるんじゃないかな。

後で試してみよう。

「自動スタート」機能は追加されたようだ。

さらに、「シリアル・スルー」機能も追加されたので試してみた。うまくいった。

これで、LPC1114への書き込み->シリアルを使った動作確認、が連続で行えるのでmbed LPC1768に近い操作感になる。素晴らしい。

 


mbed LPC1114 + モータードライバTB6612FNGで、タミヤのギヤボックスを動かしてみた。

 

モータドライバの動作は確認できたのでiPad + konashi.js + SBBLEで動かしてみた。

iPad側のjavascriptは前回うおーるぼっとを動かしたものがそのままLPC1114でも使える。

 


タミヤのスリムタイヤセットとボールキャスター

仮組して、配置を検討。

 

つづく...?


 参考リンク

Getting started with mbed LPC1114

mbed LPC1114での遊び方

LPC1114 pinout pictures

DIP_ARM LPC1114FN28のプログラムをシリアルで書き込む

フラッシュ書込み

mbed LPC1114で「I2C接続の小型LCDボード」を使ってみた!

mbedプラットフォームとmbed LPC1114FN28ファーストタッチ

konashi - A physical computing toolkit for iPhone, iPod touch and iPad

SBBLE(サブレー) - BLEフィジカルコンピューティング用ファーム

ランニングエレクトロニクス - SBDBT

関連する記事

「うおーるぼっと」をjavascript(konashi.js)で動かしてみた。

mbed FRDM-KL25ZのTouch Sensorでモーターを回してみた。