极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13103|回复: 2

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

[复制链接]
发表于 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");
}
回复

使用道具 举报

发表于 2016-3-22 11:16:48 | 显示全部楼层
直接用millis
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-22 15:22:20 | 显示全部楼层
Paderboy 发表于 2016-3-22 11:16
直接用millis

谢谢,我再试试@~@
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-15 02:27 , Processed in 0.033328 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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