2015年07月23日のツイート

Arduino IDE 1.6.0

1.6.0にアップデートしたようなので使ってみると標準で対応していないAVR等で以下の様なコンパイルエラーが出る。

Third-party platform.txt does not define compiler.path. 
Please report this to the third-party hardware maintainer.

Arduino IDEに標準で対応していないAVR、環境設定でいうスケッチブックの保存場所以下にhardwareフォルダを作って導入されているものにも、platform.txtファイルが必要になっているらしく、以下の方法で対処した。

  1. {Arduino IDEのインストールフォルダ}\hardware\arduino\avr\platform.txtを{スケッチブック保存場所}\hardware\…\{追加AVRのboards.txtのあるフォルダ}にコピー
  2. そのplatform.txtをテキストエディタで開き、"name=Arduino AVR Boards" の"Arduino AVR Boards"を任意の固有の文字列に変更する。右クリックメニューのラベルになる文字列なようなので、avr名に配布元サイト名などを付けておいた。

その他

  • "hardware\{追加AVRのルートフォルダ}\avr\{追加AVRのboards.txtのあるフォルダ}"というパス構造でなくてはいけなくなったようである
  • Mighty-1284pでWireライブラリを使用出来ないようなので(ライブラリ一覧に表示されない)、Boards.txtを開き、avr_developers.build.core=standard のほうをコメントアウトしてarduino:arduinoの行の側に変更する。

MsTimer2 のライブラリの新し目のAVR対応のための修正など

今日、タイマーを使ったスケッチを利用して制作しているものの調整に使えないかと考えて、
MsTimer2(ミリ秒単位で指定するタイマ)
MsTimer2というライブラリがあることを知り、試しにサンプルスケッチをATMega1284にULしてみたところ、MsTimer2::setで実行した関数を全く実行せず、反応がなかった。そこで調べ物
Arduino and ATmega1284(P) Problem Issues
リンク先の例は、恐らくイーサネットのライブラリの修正だと考えられるが、ライブラリの内容からして定数が対応していないとにらんで参考に調べる。Arduino ISPのインストール先以下にあるメインのインクルードファイルなどを見ると、例えば68行など

#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644__) || defined(__AVR_ATmega644A__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__)

AVR種別の定数が新しいものに対応しているのに対し、該当ライブラリのほうは古いようでAVR種の定数が追従できていないので、MsTimer2.cpp のファイルの内容(/*〜*/コメントアウトしたもの)を以下の追加行に全て変更してみると、動作した。

/*
#if defined (__AVR_ATmega168__) || defined (__AVR_ATmega48__) || defined (__AVR_ATmega88__) || defined (__AVR_ATmega328P__) || (__AVR_ATmega1280__)
*/
#if defined (__AVR_ATmega168__) || defined (__AVR_ATmega48__) || defined (__AVR_ATmega88__) || defined (__AVR_ATmega328P__) || (__AVR_ATmega1280__)|| defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644__) || defined(__AVR_ATmega644A__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__)