极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 19060|回复: 5

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

[复制链接]
发表于 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++;
很快就会溢出,然后产生错误停机
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-10 13:34:33 | 显示全部楼层
萧芸凤 发表于 2016-3-10 12:07
count++;
很快就会溢出,然后产生错误停机

不是这个问题,连接I2C设备时才会出现这个问题。
回复 支持 反对

使用道具 举报

发表于 2016-3-10 17:17:21 | 显示全部楼层
萧芸凤 发表于 2016-3-10 12:07
count++;
很快就会溢出,然后产生错误停机

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

使用道具 举报

发表于 2016-3-10 17:20:55 | 显示全部楼层
fengdi 发表于 2016-3-10 13:34
不是这个问题,连接I2C设备时才会出现这个问题。

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

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

回复 支持 反对

使用道具 举报

发表于 2016-3-10 18:17:30 | 显示全部楼层
arduino没什么好办法,只能自己一个个试,看哪里出错了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-15 00:44 , Processed in 0.046306 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表