BLACKBOY 发表于 2016-3-22 10:25:55

定时器与串口打印冲突问题

MPU6050读取陀螺仪数据为了保证100Hz采用定时器读取数据,但是用了定时器就会和串口打印冲突,之后就不能打印数据了,请问有解决的办法吗?如果不使用定时器如何确保采样频率在100Hz?用的普通官方库,其中也没有><
#include "Wire.h"
#include "I2Cdev.h"
#include "MPU9150.h"
#include "MsTimer2.h"

MPU9150 accelGyroMag;   
int16_t ax, ay, az;
int16_t gx, gy, gz;


//定时采样,10ms(100Hz)
void action();

void setup() {
    Wire.begin();
    Serial.begin(38400);

    Serial.println("Initializing I2C devices...");
    accelGyroMag.initialize();

    Serial.println("Testing device connections...");
    Serial.println(accelGyroMag.testConnection() ? "MPU9150 connection successful" : "MPU9150 connection failed");

    //设置定时器每10ms调用一次action函数
//   MsTimer2::set(10,action);   
//   MsTimer2::start();
}

void loop() {

}


//定时采样,10ms(100Hz)
void action()
{
    //读加速度计,陀螺仪,地磁的值
    accelGyroMag.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);



   //输出原始数据,加速度计,陀螺仪,地磁,横滚角,俯仰角,航向角
    Serial.print(ax); Serial.print("\t");
    Serial.print(ay); Serial.print("\t");
    Serial.print(az); Serial.print("\t");
    Serial.print(gx); Serial.print("\t");
    Serial.print(gy); Serial.print("\t");
    Serial.print(gz); Serial.print("\t");
//    Serial.print(mx); Serial.print("\t");
//    Serial.print(my); Serial.print("\t");
//    Serial.print(mz); Serial.print("\n");
}

Paderboy 发表于 2016-3-22 11:16:48

直接用millis

BLACKBOY 发表于 2016-3-22 15:22:20

Paderboy 发表于 2016-3-22 11:16 static/image/common/back.gif
直接用millis

谢谢,我再试试@~@
页: [1]
查看完整版本: 定时器与串口打印冲突问题