智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1767|回复: 5
打印 上一主题 下一主题

[光电] PIT里面调用角度计算函数

[复制链接]

4

主题

13

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
254
威望
185
贡献
37
兑换币
20
注册时间
2012-9-5
在线时间
16 小时
毕业学校
昆明理工大学
跳转到指定楼层
1#
发表于 2012-12-1 19:37:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
10贡献
为什么PIT里面调用角度函数,在串口里,函数值全是0,就是没有运算?我的PIT设置的是5m一次开中断1

最佳答案

查看完整内容

这是你的ISR函数[/backcolor] void interrupt 66 PIT0(void) [/backcolor] {[/backcolor] int time=0; //

27

主题

615

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3822

优秀会员奖章活跃会员奖章在线王奖章

威望
1583
贡献
697
兑换币
394
注册时间
2011-11-25
在线时间
771 小时
2#
发表于 2012-12-1 19:37:12 | 只看该作者
这是你的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;
再看看有没有现象

回复

使用道具 举报

27

主题

615

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3822

优秀会员奖章活跃会员奖章在线王奖章

威望
1583
贡献
697
兑换币
394
注册时间
2011-11-25
在线时间
771 小时
3#
发表于 2012-12-1 21:00:57 | 只看该作者
没太明白您说的是什么意思
回复

使用道具 举报

4

主题

13

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
254
威望
185
贡献
37
兑换币
20
注册时间
2012-9-5
在线时间
16 小时
毕业学校
昆明理工大学
4#
 楼主| 发表于 2012-12-2 11:17:57 | 只看该作者
#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;// 清中断标志位
}
回复

使用道具 举报

4

主题

13

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
254
威望
185
贡献
37
兑换币
20
注册时间
2012-9-5
在线时间
16 小时
毕业学校
昆明理工大学
5#
 楼主| 发表于 2012-12-2 11:23:46 | 只看该作者
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(",");
}

回复

使用道具 举报

4

主题

13

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
254
威望
185
贡献
37
兑换币
20
注册时间
2012-9-5
在线时间
16 小时
毕业学校
昆明理工大学
6#
 楼主| 发表于 2012-12-6 20:03:52 | 只看该作者
对就是这里出错了!谢谢啊
回复

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-21 22:22 , Processed in 0.050595 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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