八轴研发进度:IMU调试完成,坐等嘉立创发货。
本帖最后由 makeflyeasy 于 2015-3-14 20:58 编辑花了一天把IMU搞定了,制定了一套数据规则。每帧33个字节,输出频率100HZ。坐等八轴底板一到,IMU就可以直接弄上去调PID了。八轴计划弄成X模式。
此外,嘉立创这是把我的板子做烂了吗?
本帖最后由 merphy 于 2015-3-14 17:05 编辑
这是干什么呢,这题出好再发,那会我看是34个字节 楼主出题考版主吗。。。菜鸟不懂。。坐看好戏{:titter:} 这个以100HZ速率发送有什么特殊意义吗? lmt50211 发表于 2015-3-14 17:13
这个以100HZ速率发送有什么特殊意义吗?
有 本帖最后由 merphy 于 2015-3-14 17:22 编辑
串口中断里边执行,除第一个启动发中断函数,
其余数据和判断发完成标志也要发送也在串口中断中完成。
计数到33个,完成后后给完成标志,
定时器中中断,判断发完成标志,通过标志给主函数中一个启动发送标志,,主函数中根据定时器发 标志启动第一个发送,计数器加一,清启动标志。 楼主题出错了。
把小明改成小红,并且在大胡子的监督下曝照,这样就有答案了。 因为串口中断优先级低于定时器0优先级,无法进入串口中断。LZ,请问IP寄存器是干啥用的? takashiki 发表于 2015-3-14 18:54
LZ,请问IP寄存器是干啥用的?
恭喜 takashiki 抢答成果!满分! 我认为IP,IE都可以
115200的速度发送33个字节,大约3ms,100HZ发送,就是10ms发一次,轻松实现。
u8 xdata TxBuf; //发送缓冲
u8TxLength; //发送长度
u8TxCnt; //发送计数
u8TxBusy;//发送忙标志,避免资源竞争错误
某个任务要 发送时,先判断TxBusy是否空闲,空闲则装载发送缓冲,启动发送,下面是描述性程序:
if(TxBusy == 0)//空闲
{
for(i=0; i<33; i++) TxBuf = source;//source[]为要发送的数据,随便的数据
TxLength = i; //发送的长度
TxCnt = 0; //发送计数清0
TxBusy = 1; //标志发送忙
TI = 1; //启动发送
}
发送中断:
if(TI)
{
TI = 0;
if(TxCnt < TxLength) //还有数据要发
{
SBUF = TxBuf;
}
elseTxBusy = 0; //发送完成
} 小李非刀 发表于 2015-3-14 20:39
115200的速度发送33个字节,大约3ms,100HZ发送,就是10ms发一次,轻松实现。
u8 xdata TxBuf; // ...
恩,我主要是不知道怎么在定时器0中断函数里调用串口,在主函数里写不靠谱,容易被打断。 8楼提醒了我,我一直没注意IP寄存器这个问题,以前没研究过,加了个PS=1;就解决问题了。 IMU模块怎么用串口发送,为什么不是IIC
页:
[1]