智能车制作
标题:
PIT里面调用角度计算函数
[打印本页]
作者:
Lanchars
时间:
2012-12-1 19:37
标题:
PIT里面调用角度计算函数
为什么PIT里面调用角度函数,在串口里,函数值全是0,就是没有运算?我的PIT设置的是5m一次开中断1
作者:
jiyiboloann
时间:
2012-12-1 19:37
这是你的ISR函数
void interrupt 66 PIT0(void)
{
int time=0;
// <------------看这里,这是局部变量
time++;
if(time==50)
{
time=0;
angle_calculate();
}
PITTF_PTF0=1;// 清中断标志位
}
也就是说你每次中断进入该函数后,局部变量time重新声明并赋值为0,也就是永远不满足time==50这个条件
你可以试试改成 static int time = 0;
再看看有没有现象
作者:
jiyiboloann
时间:
2012-12-1 21:00
没太明白您说的是什么意思
作者:
Lanchars
时间:
2012-12-2 11:17
#pragma CODE_SEG NON_BANKED //用作定时
void interrupt 66 PIT0(void)
{
int time=0;
time++;
if(time==50)
{
time=0;
angle_calculate();//我在这里调用角度计算函数,打算5ms调用一次,然后发给串口
}
PITTF_PTF0=1;// 清中断标志位
}
作者:
Lanchars
时间:
2012-12-2 11:23
jiyiboloann 发表于 2012-12-1 21:00
没太明白您说的是什么意思
#pragma CODE_SEG NON_BANKED //用作定时
void interrupt 66 PIT0(void)
{
int time=0;
time++;
if(time==50)
{
time=0;
angle_calculate();
}
PITTF_PTF0=1;// 清中断标志位
}
角度函数我打算5ms调用一次,所以用PIT。
angle_calculate();这里有grivity_now_show,sita_now_show两个变量
现在我想通过串口发送grivity_now_show,sita_now_show两个变量
但是串口里面没有数据,全是0;但是我要是放在for循环里面就有数据
void uart_send(void)
{
putstr("加速度计");
print_number(grivity_now_show); //角度计算
putstr(",");
putstr("陀螺仪");
print_number(sita_now_show); //角度计算
putstr(",");
}
作者:
Lanchars
时间:
2012-12-6 20:03
对就是这里出错了!谢谢啊
欢迎光临 智能车制作 (http://111.231.132.190/)
Powered by Discuz! X3.2