搜索
bottom↓
回复: 9

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

[复制链接]

出0入0汤圆

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

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

出0入36汤圆

发表于 2017-5-31 15:03:43 | 显示全部楼层
加锁 最简单的办法就是让主循环处理数据的时候对一个公共变量置位 处理完了再设回来,中断中判断变量的状态 加锁状态不能进行写操作

出0入0汤圆

发表于 2017-5-31 15:06:48 | 显示全部楼层
这样的思路看看是否可行:

变量 flag 默认=0.

中断中采样完成后 flag=1; 且仅在flag==0时更新数据。

主循环中看到 flag==1,就把数据复制到别处,然后flag=0. 再处理复制出来的数据。

出100入143汤圆

发表于 2017-5-31 15:13:48 | 显示全部楼层
数据缓存啊,主循环计算和中断采集分别2个数据缓存,执行完置标志同步;如果计算过程中采集数据不能丢失,那就用数组或者队列缓存

出0入0汤圆

 楼主| 发表于 2017-5-31 17:08:15 | 显示全部楼层
norman33 发表于 2017-5-31 15:03
加锁 最简单的办法就是让主循环处理数据的时候对一个公共变量置位 处理完了再设回来,中断中判断变量的状态 ...

这样中断采集会丢数,采样的数据是2.3K采集,数据不能丢

出0入0汤圆

发表于 2017-5-31 17:15:12 | 显示全部楼层
ringbuffer就可以

出0入0汤圆

 楼主| 发表于 2017-5-31 17:16:03 | 显示全部楼层
zzh90513 发表于 2017-5-31 15:13
数据缓存啊,主循环计算和中断采集分别2个数据缓存,执行完置标志同步;如果计算过程中采集数据不能丢失, ...

能不能具体说下怎么用数组进行缓存,主循环数据处理过程中,采集的数据是不能丢的。我不太清楚的地方有两个:
1.如何确保在中断采样时主循环处理的数据不会被刷新冲掉,尤其是采样次数及累积和?
2.主循环处理完后,清零时如何确保不会清掉第二次需要主循环计算的数据?

麻烦您啦,谢谢!

出0入0汤圆

 楼主| 发表于 2017-5-31 17:19:27 | 显示全部楼层

这个没有系统,就是在32单片机上实现这个功能就行。在一个原始数据需要多处处理时,数据备份缓存这个就需要实现了

出0入0汤圆

发表于 2017-5-31 17:23:26 | 显示全部楼层
hswkcg 发表于 2017-5-31 17:19
这个没有系统,就是在32单片机上实现这个功能就行。在一个原始数据需要多处处理时,数据备份缓存这个就需 ...

。。。ringbufer很复杂吗?这玩意天生就是为这个场景存在的好不。中断写,程序读。同步是什么?需要吗?

出0入36汤圆

发表于 2017-6-1 09:22:07 | 显示全部楼层
ringBuffer或者双Buffer都可以 所谓ringBuffer就是循环缓冲 一般是一个长度足够大且头尾相连的循环列表 通过这只读指针和写指针来实现在Buffer未溢出的情况下读写分离
所谓双buffer可以有多种实现 比如采集数据有自己的缓冲区 主循环也有一个大缓冲区 中断将数据写入自己的缓冲区 在主循环进行判断合并处理两个缓冲区,或者乒乓算法,一个缓冲区写满置标志位等待主循环处理,中断开始写另外一个缓冲区,然后不断切换两个缓冲区,只要在写缓冲区写满前主循环能处理完另一个也可以实现读写分离 实现方法很多种以上几个只是给楼主开拓下思路
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-1 02:53

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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