以下のプログラムの目的は、データフレームを定期的にシリアルに出力することです。期間は、毎秒の時限割り込みによって定義されます。
コードはArduinoIDEバージョン0022で機能しましたが、1.0では機能しません。タイマールーチンを使用し、以上にmaxFrameLength
設定されている場合、コントローラーはロックアップします。0x40
0x39以下を使用すると、プログラムは実行を継続します(LEDの点滅で示されます)。
ここで何が問題になっているのか、そしてその理由は何ですか?バグですか?私は何か間違ったことをしていますか?
Mega1280のタイマールーチンにhttp://code.google.com/p/arduino-timerone/downloads/detail?name=TimerOne-v9.zipを使用しています。
#include "TimerOne.h"
#define LED 13
#define maxFrameLength 0x40
boolean stateLED = true;
byte frame[ maxFrameLength ];
void sendFrame() {
digitalWrite( LED , stateLED );
stateLED = !stateLED;
Serial.write( frame, maxFrameLength ); // ptr + bytes to send
}
void setup() {
pinMode( LED , OUTPUT );
Timer1.initialize( 1000000 ); // initialize timer1 with 1 second period
Timer1.attachInterrupt( sendFrame );
Serial.begin( 9600 );
};
void loop() {
};