fengdi 发表于 2016-3-9 14:18:40

一个程序运行的几次之后就不运行的是怎么回事

#include "Wire.h"
#include "I2Cdev.h"
#include "MPU6050.h"
MPU6050 accelgyro;
int16_t ax, ay, az;
int16_t gx, gy, gz;
unsigned long count=0;
bool blinkState = false;
void setup() {
Wire.begin();
Serial2.begin(115200);
accelgyro.initialize();
}
void loop() {
   Serial2.println("ok_begin");
accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
count++;
   Serial2.println(count);
   Serial2.println("ok_end");
//Serial2.print("a/g:\t");
//Serial2.print(ax / 8192); Serial2.print("\t");
//Serial2.print(ay / 8192); Serial2.print("\t");
//Serial2.print(az / 8192); Serial2.print("\t");
//Serial2.print(gx / 65.5); Serial2.print("\t");
//Serial2.print(gy / 65.5); Serial2.print("\t");
//Serial2.println(gz / 65.5);
//Serial2.println(gz / 65.5);
// blinkState = !blinkState;
delay(10);

}

萧芸凤 发表于 2016-3-10 12:07:33

count++;
很快就会溢出,然后产生错误停机

fengdi 发表于 2016-3-10 13:34:33

萧芸凤 发表于 2016-3-10 12:07 static/image/common/back.gif
count++;
很快就会溢出,然后产生错误停机

不是这个问题,连接I2C设备时才会出现这个问题。

Super169 发表于 2016-3-10 17:17:21

萧芸凤 发表于 2016-3-10 12:07 static/image/common/back.gif
count++;
很快就会溢出,然后产生错误停机

unsigned long .....每次 delay(10), 就是假設其他不用時間, count 也要 10ms 才 加 1, 最快也要一年多才會溢出.
而且, 就是到了最大, 也只會再由 0 開始, 不會出現錯誤的.

Super169 发表于 2016-3-10 17:20:55

fengdi 发表于 2016-3-10 13:34 static/image/common/back.gif
不是这个问题,连接I2C设备时才会出现这个问题。

當試把問題分開來看, 再加入除蟲吧.

首先嘗試把導用的頻率減慢一點, 例如一秒鐘一次看看.
如果都有同樣問題, 就可能要在 MPU6050 或 I2Cdev 中進行除蟲, 嘗試找出不運行之前, 最後是在做什麼.

lovezypj 发表于 2016-3-10 18:17:30

arduino没什么好办法,只能自己一个个试,看哪里出错了
页: [1]
查看完整版本: 一个程序运行的几次之后就不运行的是怎么回事