有段AD中断采样平均值程序,有些看不懂。请师傅帮忙看下

[复制链接]
4222|9
 楼主| keyu886 发表于 2013-6-19 15:31 | 显示全部楼层 |阅读模式
这是一段在AD段里采样平均值的程序
思想应该是这个值起码也累加8次的采样值后再去除以8对吧,
可是这段程序我感觉是只有AD中断进入都会除以8.这有问题吗?
还是我理解错误,C基础不太好,希望高手指点
flybackCurrent2Sum ,和rectifiedInverterOutputCurrentSum都一样吧

第一averageFlybackCurrent1 = flybackCurrent1Sum >> 3;等同于除以flybackCurrent1Sum8吧。
void __attribute__((interrupt, no_auto_psv)) _ADCP3Interrupt()
{
// Moving Average of Flyback Currents for load sharing
flybackCurrent1Sum = flybackCurrent1Sum + flybackCurrent1 - flybackCurrent1Array[currentArrayCnt];
averageFlybackCurrent1 = flybackCurrent1Sum >> 3;
flybackCurrent2Sum = flybackCurrent2Sum + flybackCurrent2 - flybackCurrent2Array[currentArrayCnt];
averageFlybackCurrent2 = flybackCurrent2Sum >> 3;
flybackCurrent1Array[currentArrayCnt] = flybackCurrent1;
flybackCurrent2Array[currentArrayCnt] = flybackCurrent2;
// Moving Average of AC Current for AC Current Fault
rectifiedInverterOutputCurrentSum = rectifiedInverterOutputCurrentSum + rectifiedInverterOutputCurrent -
rectifiedInverterOutputCurrentArray[currentArrayCnt];
averageRectifiedCurrent = rectifiedInverterOutputCurrentSum >> 3;
rectifiedInverterOutputCurrentArray[currentArrayCnt++] = rectifiedInverterOutputCurrent;
if(currentArrayCnt >= 8)
{
  currentArrayCnt = 0;
}
}

llqjmy 发表于 2013-6-20 22:46 | 显示全部楼层
任何单片机的消抖程序,基本上都是和检测对象挂钩的。你这里的检测对象是什么信号?是交流信号吗?光从程序看,只能说这样做的AD变化将会比较平缓,不大会突变。
 楼主| keyu886 发表于 2013-6-21 16:20 | 显示全部楼层
交流信号
llqjmy 发表于 2013-6-21 23:00 | 显示全部楼层
keyu886 发表于 2013-6-21 16:20
交流信号

什么样的交流信号?市电?
liy1979 发表于 2013-6-22 15:16 | 显示全部楼层
变量的名字好长啊,看得头都大了……。
 楼主| keyu886 发表于 2013-6-25 11:32 | 显示全部楼层
llqjmy 发表于 2013-6-21 23:00
什么样的交流信号?市电?

大哥问题不是在这里,不过谢谢你的热心。呵呵其实问题我已说了
lzloong 发表于 2013-7-13 12:57 | 显示全部楼层
哈哈,哥们是研究微逆变器的?
stephaniemm 发表于 2013-8-1 11:01 | 显示全部楼层
flybackCurrent1Sum = flybackCurrent1Sum + flybackCurrent1 - flybackCurrent1Array[currentArrayCnt];
这句为   这个变量的求和。
averageFlybackCurrent1 = flybackCurrent1Sum >> 3;
这句为  变量的和右移3位,即相当于和除以8;
if(currentArrayCnt >= 8)
{
  currentArrayCnt = 0;
}
计数大于8时,相关位清零,出新开始计数。
rambler 发表于 2013-8-2 22:39 | 显示全部楼层
学习一下,相当于就是一个滑动平均吧
opal11 发表于 2013-8-16 21:31 | 显示全部楼层

变量的名字好长啊,看得头都大了……。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

57

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部