智能车制作

标题: 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://dns.znczz.com/) Powered by Discuz! X3.2