当初、うっかり、アナログ入力端子4, 5 にSDAとSCLを接続していたんですが、eXodusino のデフォルトのI2C端子はArduino UNO R3等で 13pin, GND, AREF の先に拡張された SDA, SCL の部分に LPC1114 の P0.5/SDAとP0.4/SCL が接続されています。
以下、ソースですが、eXodusino に Wire.read() が無く、以前の Wire.receive() 関数になっています。LPCXpresso に eXodusino のプロジェクトをインポートして user_apploication.cpp を書き換えます。
//#define _ARDUINO //#define _RXDUINO #define _EXODUSINO #ifdef _RXDUINO #include <rxduino.h> #endif #ifdef _EXODUSINO #include <libmary.h> #include <stdio.h> #endif #ifdef _ARDUINO #include <Arduino.h> #endif #include <Wire.h> #define COMPASS_ADDRESS (0b0100001) // グローバル変数。 const bool DEBUG_ON = true; void setup() { // I2Cバス初期化。 Wire.begin(); // シリアルポート(USB)初期化。 Serial.begin(9600); Serial.println("\r\nStart..."); // 待機。 delay(500); } void loop() { short buf[2]; unsigned short data; // コンパスへのI2C通信開始。 Wire.beginTransmission(COMPASS_ADDRESS); // Get Data コマンド送信。 Wire.write('A'); // キューの送信。 Wire.endTransmission(); // データ要求。 Wire.requestFrom(COMPASS_ADDRESS, 2); // データ受信。 for (int i = 0; i < 2; i++) { while (Wire.available() == 0); #ifdef _EXODUSINO buf[i] = Wire.receive(); #else buf[i] = Wire.read(); #endif } // データ変換。 data = (unsigned short)buf[0]; data = (data << 8) + (unsigned short)buf[1]; Serial.println(data, DEC); delay(200); }
おそらく、自分のプロジェクトの設定が間違っていると思うんですが、SWDIOとかSWCLKのポートの設定でLPC-Linkが使えない状態になるのではないかと思ってます。この場合は、 Flash Magic を使用して、改めて bootloader なり、他のプログラムを書き込めば復旧します。NeXtPino では LPC1114 の P0.1 がDigital_1(2ピン目)に出ているので、これをGNDに落とした状態でリセットをかけると USB経由で Flash Magic での書き込みができるはずです。自分は LPC1114 自体を引きぬいて、トラ技についていた MyARM 基板に差し替えて書き換えを行いました。
0 件のコメント:
コメントを投稿