Arduino 0022 メモ *
http://arduino.cc/en/Main/Software
公式リリースノート *
http://arduino.cc/en/Main/ReleaseNotes
主観的メモ(0021→0022) *
大きいのは、公式ライブラリにSDカードが追加されたこと。
文字操作関数の充実。
多シリーズCPU対応? *
0021ではATmega2560対応にあたり、
| #if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
|
のようなCPU名ベースでのブランチを行っていたが、0022からは、
| #if defined(EICRA) && defined(EICRB) && defined(EIMSK)
|
のようなレジスタ名ベースでのブランチに変わった。
例えばUART依存の機能はUART用のレジスタの有無でブランチするようになったので、CPU名ではなく機能に依存するようになっている。
(ハードウェアに依存する)ライブラリの作者さんも、CPU名ベースからレジスタ名ベースでブランチするようにしたほうが一貫性が保てる。
Serial *
ボーレート計算時に誤差が小さくなるように修正。
受信割り込み、available()とread()の最適化。
※3倍ぐらいは速くなっているはず。遅いのを想定して作っているスケッチは要注意。
RAMサイズが少ない(512byte以下)CPUの場合、受信バッファサイズを128から32バイトに変更。
ソースレベルでは、
| #if (RAMEND < 1000)
#define RX_BUFFER_SIZE 32
#else
#define RX_BUFFER_SIZE 128
#endif
|
ATmega48やATmega8515に対応させる予定?
String.toInt()メソッド *
文字列を数値にするメソッドの追加。
atol()のラッパ。
WCharacter.h *
文字操作(インライン)関数追加。
| boolean isAlphaNumeric(int c); boolean isAlpha(int c); boolean isAscii(int c); boolean isWhitespace(int c); boolean isControl(int c); boolean isDigit(int c); boolean isGraph(int c); boolean isLowerCase(int c); boolean isPrintable(int c); boolean isPunct(int c); boolean isSpace(int c); boolean isUpperCase(int c); boolean isHexadecimalDigit(int c); int toAscii(int c); int toLowerCase(int c); int toUpperCase(int c);
|
WCharacter.hはWProgram.hでincludeしているため、スケッチではinclude不要。
Stream.h *
pulseIn() *
パルス停止待ち中(パルス幅計測中)にも、タイムアウトを処理を実行するようになった。
tone() *
問題修正とリファクタリング。
変更箇所多すぎて詳細は追ってません。ごめんなさい。
wiring_analog.c *
リファクタリング。
動作には変更なし。
wiring_digital.c *
リファクタリング。
動作には変更なし。
WString.cpp *
リファクタリング。
動作には変更なし。
ArduinoTestSuiteライブラリ *
ArduinoTestSuiteライブラリ追加
ソフトウェアのテストを行うライブラリ。
http://code.google.com/p/arduino/wiki/ArduinoTestSuite
SPI.setClockDivider()メソッド *
クロック計算のBugFix。
SDカードライブラリ *
SDカード(SPIモード)ライブラリの追加。
読み込みはEthernetやSerialライブラリと同様に1バイト単位。
Stepperライブラリ *
サンプル追加。
主観的メモ(0018→0021) *
Arduino/0021