智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2016|回复: 14
打印 上一主题 下一主题

求助,单片机的AD取值时间过长影响中断

[复制链接]

23

主题

49

帖子

0

精华

高级会员

Rank: 4

积分
691
威望
356
贡献
165
兑换币
185
注册时间
2014-11-6
在线时间
85 小时
毕业学校
浙江工业大学
跳转到指定楼层
1#
发表于 2015-4-2 22:27:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
——我是做直立的小菜鸟
——我用PIT定了一个1ms的中断——然后按照官方直立方案,在这个中断里弄了四个中断周期,他们的周期都是五毫秒
[size=15.4545450210571px]——中断里用flag_1ms来计数,来进行四个中断周期的判断
——弄了2个星期勉强让它完成了会往前加速的直立

——后来在中断周期里测试CCD的时候发现,读取周期并非我所想的100ms。竟然是1s多

——然后我就在100ms的周期里加了LED的翻转
——确实是1s多
——后来CCD的读取函数去掉,发现仍然不是100ms
——后来发现,读取陀螺仪的AD值时要读取20次,进行均值滤波,将20次改成1次,瞬间可以了。
——但是马上发现这样子没法直立了
——于是乎问题处在AD读取好像容易超出1ms的时间
——那么这要怎么办呀!!!
——我们下周五就校赛了,我们才刚直立起来,完了
回复

使用道具 举报

5

主题

348

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4680

优秀会员奖章活跃会员奖章在线王奖章论坛元老奖章

威望
2065
贡献
1355
兑换币
1329
注册时间
2014-3-5
在线时间
630 小时
毕业学校
重庆大学
2#
发表于 2015-4-3 00:53:16 | 只看该作者
读取周期100ms你也能忍?我反正不能忍...ccd采样用8位快速采样..陀螺仪加速度计用12位快速采样..单次采样不用平均...模拟的加速度计和陀螺仪垃圾的很..响应频率300Hz你在3ms内采的值都一样
回复 支持 反对

使用道具 举报

23

主题

49

帖子

0

精华

高级会员

Rank: 4

积分
691
威望
356
贡献
165
兑换币
185
注册时间
2014-11-6
在线时间
85 小时
毕业学校
浙江工业大学
3#
 楼主| 发表于 2015-4-3 08:27:44 | 只看该作者
、痕迹 发表于 2015-4-3 00:53
读取周期100ms你也能忍?我反正不能忍...ccd采样用8位快速采样..陀螺仪加速度计用12位快速采样..单次采样不用 ...

ccd要读128次ad,好像会超过一ms中断,是应该再弄一个pit定时器吗还是说把128次读取分散来?
回复 支持 反对

使用道具 举报

5

主题

348

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4680

优秀会员奖章活跃会员奖章在线王奖章论坛元老奖章

威望
2065
贡献
1355
兑换币
1329
注册时间
2014-3-5
在线时间
630 小时
毕业学校
重庆大学
4#
发表于 2015-4-3 12:07:22 | 只看该作者
破晓骑士道 发表于 2015-4-3 08:27
ccd要读128次ad,好像会超过一ms中断,是应该再弄一个pit定时器吗还是说把128次读取分散来?

你用的什么单片机...8位高速采样只要0.5us一次
回复 支持 反对

使用道具 举报

23

主题

49

帖子

0

精华

高级会员

Rank: 4

积分
691
威望
356
贡献
165
兑换币
185
注册时间
2014-11-6
在线时间
85 小时
毕业学校
浙江工业大学
5#
 楼主| 发表于 2015-4-3 13:30:02 | 只看该作者
、痕迹 发表于 2015-4-3 12:07
你用的什么单片机...8位高速采样只要0.5us一次

K60,用 的是LPLD的库
回复 支持 反对

使用道具 举报

5

主题

348

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4680

优秀会员奖章活跃会员奖章在线王奖章论坛元老奖章

威望
2065
贡献
1355
兑换币
1329
注册时间
2014-3-5
在线时间
630 小时
毕业学校
重庆大学
6#
发表于 2015-4-3 14:55:03 | 只看该作者
破晓骑士道 发表于 2015-4-3 13:30
K60,用 的是LPLD的库

那就是你配置错了吧...不用关闭硬件平均,短采样时间..8位精度..一个点0.5us绝对可以
回复 支持 反对

使用道具 举报

23

主题

49

帖子

0

精华

高级会员

Rank: 4

积分
691
威望
356
贡献
165
兑换币
185
注册时间
2014-11-6
在线时间
85 小时
毕业学校
浙江工业大学
7#
 楼主| 发表于 2015-4-3 16:12:25 | 只看该作者
、痕迹 发表于 2015-4-3 14:55
那就是你配置错了吧...不用关闭硬件平均,短采样时间..8位精度..一个点0.5us绝对可以

谢啦,难道和选用什么通道有关?我根据LPLD的数据手册,将AD读取的接口放在A7,B3,B0(确实配置了这些通道)
莫非只有”ADC0_DP3“这种AD专用通道才能是高速的?
回复 支持 反对

使用道具 举报

5

主题

348

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4680

优秀会员奖章活跃会员奖章在线王奖章论坛元老奖章

威望
2065
贡献
1355
兑换币
1329
注册时间
2014-3-5
在线时间
630 小时
毕业学校
重庆大学
8#
发表于 2015-4-3 16:21:52 | 只看该作者
肯定不是...我随便选了两个通道..你要看adc配置是不是选了硬件平均
回复 支持 反对

使用道具 举报

23

主题

49

帖子

0

精华

高级会员

Rank: 4

积分
691
威望
356
贡献
165
兑换币
185
注册时间
2014-11-6
在线时间
85 小时
毕业学校
浙江工业大学
9#
 楼主| 发表于 2015-4-3 18:52:39 | 只看该作者
这是LPLD函数库里的AD的初始化函数里的一句:

  ADC_Config_Alt(ADCx_Ptr[adcx], ADC_CfgPtr);    //配置 ADC寄存器
  ADC_Cal(ADCx_Ptr[adcx]);                       //首先进行32次的硬件平均校准进行校准

这就是硬件平均吧?
回复 支持 反对

使用道具 举报

23

主题

49

帖子

0

精华

高级会员

Rank: 4

积分
691
威望
356
贡献
165
兑换币
185
注册时间
2014-11-6
在线时间
85 小时
毕业学校
浙江工业大学
10#
 楼主| 发表于 2015-4-3 20:23:11 | 只看该作者
、痕迹 发表于 2015-4-3 16:21
肯定不是...我随便选了两个通道..你要看adc配置是不是选了硬件平均

已经改成了短采样时间, 将硬件平均的代码注释掉了,结果还是一样。。。。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-30 05:24 , Processed in 0.076564 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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