ホーム‎ > ‎

MAPLE


プロジェクトサイト http://leaflabs.com/

Arduinoとの違い (Maple-Arduino Compatibilityを翻訳したもの)

  1. ピン番号の非互換について
    • I2C ポート
      Arduinoの
      I2Cポートはアナログ入力4(SDA)と5(SCL)だが、MapleはI2Cは2つあり、一つはデジタル5 (SCL)とデジタル9、二つ目はデジタル29 (SCL)とデジタル(SDA)
    • PWM on D10
      ArduinoのPWMはD2,D3,D6,D9,D10,D11で使えるが、MAPLEのD10はPWMが使えない
    • 外部リファレンス電圧(AREF)
      MAPLEのAREFに相当するD14はGPIO(汎用デジタルI/O)なのでAREFの機能は使えない
    • EEPROM
      MAPLEはEEPROMを内蔵していない。サードパーティ製のソフトウェアを使って内蔵フラッシュをEEPROMにエミュレーションすることはできる
    • ISPプログラミング
      MAPLEはではISPプログラミング/デバッグは使えない。JTAGを使ってほしい。

  2. ソフトウェア言語とライブラリの変更
    • 32ビット Integer
      MAPLEの標準関数は標準的な16ビット(2バイト)の代わりに、32ビット(4バイト)を返す
    • 64ビット double
      Arduinoの32ビット(単精度)浮動小数点型(float)は64ビットのdoubleになる
    • pinModeで指定する型
      OUTPUT, OUTPUT_OPEN_DRAIN, INPUT_FLOATING, INPUT_PULLUP, INPUT_PULLDOWNが使える。PWMが使えるピンではPWM_OPEN_DRAINが、INPUT_ANALOGが使える。
    • 5Vトレラント(オリジナルには書かれていない追加事項)
      D5-D9,D14,D24-D26,D29-D42
    • シリアルポートの書式
      Arduino MEGAのようにMAPLEは複数のシリアルポートがある。デフォルトでは Serial オブジェクトには何もマッピングされていないため使えない。Serial1からSerial3を使うこと。
    • 16ビットPWM
      ArduinoのPWMは8ビットで0(常にOFF)から255(常にON)だったが、MAPLEのPWMは16ビットなので0(常にOFF)から65535(常にON)までの値が使える
    • 12ビットADC
      Arduinoは10ビットADCだったのでanalogRead()は0〜1023までの値を返したが、MAPLEは12ビットなので0〜4095を返す

  3. スケッチとライブラリのポート(移植)方法
    • ハードとピン番号の違いのチェック
      前述したハードとピン番号の違いをチェックし、シールドが5Vで動いていた場合は3.3Vに変換したり、デジタル10のPWMを使っていた場合は他のPWMを使うようにすること
    • ポートされたライブラリのチェック
      MAPLEプロジェクトチームはよく使われるライブラリをポートする予定である。(Wire,Ethernet,LCDだが、まだ完了していない)
    • 内蔵機能の衝突のチェック
      タイマー、バス速度を変更するとすべての機能に影響が及ぶ時がある。例えばプリスケーラを変更してPWM1で長いパルスを作るとI2Cのヘッダに影響が出る
    • 低レベルコードの書きなおし
      これが一番難しいが、うまくいけばArduinoのライブラリの抽象化したレジスタとハードウェア仕様を使うことができ、ほとんどの場合、低レベルなコードを書かなくても良くなり、特定の周辺デバイスをうまくラップすることができる。いくつかのヘルプが GCC for Maple に書かれている。
    • 必要があれば変数のサイズを考えて再宣言すること
      汎用のintはほとんどの場合うまく動く。
    • すべての pinMode をチェックすること。
      MapleではGPIOのためのたくさんのオプションが用意されている。例えば、アナログ入力する場合やPWMを書きこむ場合は、先に INPUT_ANALOG や PWM をセットすること
    • PWMを変更すること
      PWMは16ビットになったため、16ビットの解像度でデューティーをセットすること
    • ADC読み込み時の変更
      analogRead()はフルピン番号で指定すること(0〜5ではなく、ピン番号で)。そして、返り値は12ビットで読まれることに注意。ADCピンは pinMode で INPUT_ANALOG をセットすること
    • おそらく全てのUSB-シリアル変換による通信は Serial の代わりに SerialUSB に変更すれば良い。MAPLEは USART に接続されていない USART TX/RX 以外の専用のUSBポートを持っている。
    • タイミングチェック
      Mapleのクロックサイクルは13.9ナノ秒だが、周辺機器の速度はもっと遅い。