OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4814|回复: 3

请教,如何避免中断采样数据冲掉主循环数据?

[复制链接]

5

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2014-9-5
在线时间
9 小时
发表于 2017-5-31 15:14:45 | 显示全部楼层 |阅读模式
这个问题是这样的,32的定时器2K中断采样,获得采样的累加和及采样次数,采样的数据在主循环中进行均值处理,现在为了防止中断采样将数据更新后,主循环的均值计算会出错,想着把中断采样的数据处理一下,避免在主循环中计算均值时出错。

这个现象用到的地方还不少,基本上需要将接收数据进行多处处理的都需要,我知道这里应该做一个锁存,但是这个锁存怎么做,思路不是很清楚。采集数据变量和采集次数变量都是全局变量,锁存该怎么锁存?

请教一下大家,这个该怎么处理?麻烦大家了!谢谢!

原子哥,求指点!@正点原子
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

347

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
2082
金钱
2082
注册时间
2014-12-19
在线时间
711 小时
发表于 2017-5-31 15:32:02 | 显示全部楼层
搞个双缓冲不行吗?何必锁存?
回复 支持 反对

使用道具 举报

5

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2014-9-5
在线时间
9 小时
 楼主| 发表于 2017-5-31 17:22:39 | 显示全部楼层
lvehe 发表于 2017-5-31 15:32
搞个双缓冲不行吗?何必锁存?

双缓存?您能具体说下吗?主要是实现中断数据不要冲掉主循环数据造成计算出错。
回复 支持 反对

使用道具 举报

3

主题

347

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
2082
金钱
2082
注册时间
2014-12-19
在线时间
711 小时
发表于 2017-6-1 08:29:35 | 显示全部楼层
1秒2000次中断,假设数据类型为int,那么可以设置2个数组,int sample1[2000], sample2[2000]。
首先数据保存在sample1中,在中断中计数,达到2000个采样后数据开始保存到sample2中。
你有1秒的时间处理sample1中的数据。再次计到2000个采样后,采样数据的位置要切换到sample1。
同样,你有1秒的时间来处理sample2的数据。
这样周而复始,只要程序设计合理,通常不会出现你所说的冲掉数据的情况。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-16 21:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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