keyosa 发表于 2013-10-17 19:04:54

为什么millis()计时到30000多就不正常了

-。-今天搞定了nRF24L01的双向通信,但发现了点小问题。
我主机通过串口每500ms显示一次从从机反馈回来的数据,开始20000ms还算正常,但当
mills()计数计到30000多的时候串口显示就开始不正常了,本来是设定500MS显示一次,现在显示的速度明显快了很多。
我多次观察,都是millis()计数到3W的时候出问题。
int i=0;
int time=0;
void setup()
{
Serial.begin(9600);
time=millis();
}
void loop()
{
if(millis()-time>=500)
{
    Serial.println(i);
    time=millis();
   Serial.println(millis());
}

}
我写了这个简单的例程发现millis()数到3W多也会出问题-。-
求解。我用的板子是UNO

飞翔的红猪 发表于 2013-10-17 19:10:10

time应该定义成unsigned long

ioiomi 发表于 2013-10-17 19:15:26

time 爆表了 另外为什么不用delay 搞的呢么复杂

keyosa 发表于 2013-10-17 19:22:49

飞翔的红猪 发表于 2013-10-17 19:10 static/image/common/back.gif
time应该定义成unsigned long

3Q!一言惊醒梦中人。。-。-

keyosa 发表于 2013-10-17 19:24:33

ioiomi 发表于 2013-10-17 19:15 static/image/common/back.gif
time 爆表了 另外为什么不用delay 搞的呢么复杂

其实我在搞无线模块双向通信,主机这边每500毫秒切换一次状态,然后接受数据再返回到串口-。-
今天就被这个问题绊倒了-。-
没想过time的范围,之前搞智能小车的时候time我也是用int型所以惯性思维了

PINKWALKMAN 发表于 2016-7-13 17:29:56

可否分享一下你的双向通讯程序?谢啦。
页: [1]
查看完整版本: 为什么millis()计时到30000多就不正常了