发新帖我要提问
12
返回列表
打印
[MCU]

MCU运算时间超过采样间隔怎么办?

[复制链接]
楼主: pkuzhx
手机看帖
扫描二维码
随时随地手机跟帖
21
定时中断去采集数据,放到环形缓冲区里(缓冲区大小可设为32个数据长度),主程序判断缓冲区数据》=25时,读取25个数据 去处理否则等待     原理上只要处理速度大于采集速度切缓冲区足够长就没问题。也可采用RTOS ,稍复杂一点,但也是应该掌握的。

使用特权

评论回复
22
pkuzhx|  楼主 | 2015-7-8 13:40 | 只看该作者
gx_huang 发表于 2015-7-8 12:24
这家公司有一个应用笔记,有FFT代码和运行时间数据。见附件。

多谢,我去试试这个代码

使用特权

评论回复
23
pkuzhx|  楼主 | 2015-7-8 13:44 | 只看该作者
john_lee 发表于 2015-7-8 12:24
楼主这种情况属于“过载”。
先解释一下“载荷”和“载荷周期”的概念:在嵌入式环境中,CPU 都是为了处理 ...

谢谢,讲的很详细,感觉跟版主说的方法原理是一样的

使用特权

评论回复
24
pkuzhx|  楼主 | 2015-7-8 13:45 | 只看该作者
songchenping 发表于 2015-7-8 12:50
如果你关心的是最近25次采集数据,可以考虑用DMA的方法,边采集边计算啊。 ...

嗯,好的,正在尝试

使用特权

评论回复
25
manbo789| | 2015-7-8 14:36 | 只看该作者
我想问楼主,你25个数据进行一次FFT,为什么要用512点的FFT?

使用特权

评论回复
26
forrest11| | 2015-7-8 15:10 | 只看该作者
这个问题明显是用主循环来做FFT运算,用定时中断的方法来读取传感器数据。时间肯定够了。

使用特权

评论回复
27
ocon| | 2015-7-8 15:19 | 只看该作者
读数据的中断优先级大于FFT计算的优先级即可,如果中断没有优先级就不能把计算放中断里做。

使用特权

评论回复
28
playerboy| | 2015-7-8 17:20 | 只看该作者
采集用中断做,计算放在主循环里面来做

使用特权

评论回复
29
pkuzhx|  楼主 | 2015-7-8 17:38 | 只看该作者
manbo789 发表于 2015-7-8 14:36
我想问楼主,你25个数据进行一次FFT,为什么要用512点的FFT?

采完25个点进行一次计算,不代表计算只用这25点啊,前面采到的点也会用到的

使用特权

评论回复
30
tdmn3374| | 2015-7-8 17:50 | 只看该作者
中断采集数据就行了

使用特权

评论回复
31
jlhgold| | 2015-7-8 20:37 | 只看该作者
AD是中断采样 计算一次才消耗2-3次采样 时间绝对是够的啊 时间怎么会不够 你在逗我么

使用特权

评论回复
32
lyjian| | 2015-7-8 21:30 | 只看该作者
1S才计算一次,计算一次时间100mS。
这样也会时间不够?开什么玩笑!

使用特权

评论回复
33
wzx2088| | 2015-7-8 22:04 | 只看该作者
定时采样,DMA可用可不用,能用更好

使用特权

评论回复
34
ltbytyn| | 2015-7-8 22:15 | 只看该作者
很简单了,我以前做过这东西。采样数据放到2维数组里面。data[m][25]  (m>2,具体根据情况根据CPU处理速度)。动动脑子,知道怎么做了吧?

使用特权

评论回复
35
coody| | 2015-7-8 22:34 | 只看该作者
类似的应用我是经常碰到的,比如语音压缩,比如Speex或ADPCM等等,FFT也是,必须要等采集够数据才能处理。
比如语音压缩ADPCM,采样频率16KHZ,采样1016个点就要压缩,我用两个采样缓冲,轮流放两个缓冲,压缩或解压缩程序发现有数据就去压缩或解压缩,我还是用8位的STC的MCU做的,都很好,用ARM的话,那简直就不是事。

使用特权

评论回复
36
dwdsp| | 2015-7-9 08:28 | 只看该作者
什么计算啊,这么复杂占这么长时间啊,提高运行速度吧

使用特权

评论回复
37
pkuzhx|  楼主 | 2015-7-9 11:55 | 只看该作者
多谢各位,通过中断的方法解决了这个问题。
作为一个新手,有太多需要学习了,感谢各位的帮助。
还有一些人提到的其他方法以后再试咯

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则