【发布时间】:2012-05-12 16:07:25
【问题描述】:
下面程序的目的是定期在串行上输出一个数据帧。该周期由一个定时中断定义,每秒一次。
代码在 Arduino IDE 版本 0022 上工作,但在 1.0 上我无法让它工作。当使用定时器例程并且maxFrameLength 设置为0x40 或更高时,控制器锁定。使用 0x39 或更低时,程序继续运行(由闪烁的 LED 指示)。
这里出了什么问题,为什么?它是一个错误吗?我做错了吗?
我将http://code.google.com/p/arduino-timerone/downloads/detail?name=TimerOne-v9.zip 用于 Mega1280 上的计时器例程。
#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() {
};
【问题讨论】:
-
串口的流控设置是什么?硬件?软件?没有?
-
在初始化计时器之前你不应该打电话给
Serial.begin吗? -
@AlanStokes:正确,但不能解决问题。谢谢