[STM32H7] 平均值

[复制链接]
1625|20
 楼主| laozhongyi 发表于 2018-10-6 17:48 | 显示全部楼层 |阅读模式
unsigned char key_value();
void main( void )
{   
   // Stop watchdog timer to prevent time out reset
   WDTCTL = WDTPW + WDTHOLD;

  while(1)
   {
    P1DIR |=0X80;
     key_value();
    }

}

unsigned char key_value()
{ unsigned char i,ad_value=0;
   ADC10CTL0 = SREF_1+REFON+REF2_5V+ADC10SHT_2 + ADC10ON;
  ADC10CTL1 = INCH_7+CONSEQ_2;
   ADC10AE0 |= 0x80;                    
   P1DIR |= 0x01;                     
   ADC10CTL0 |= ENC+ADC10SC;
  if (ADC10MEM*2.5/1023<2)
   {   
     P1OUT |=0X80;
    for(i=0;i<4;i++)
     {
      ADC10CTL0 |= ENC+ADC10SC;
     while (ADC10CTL1 & ADC10BUSY);
      ad_value=ad_value+ADC10MEM;
     }
     ad_value=ad_value/4;
   if(ad_value*2.5/1023>0.2)
     P1OUT |=0X01;
   else
     P1OUT &=~0X01;
   }
return ad_value;
}
 楼主| laozhongyi 发表于 2018-10-6 17:48 | 显示全部楼层
主要是想按键检测,我这程序直接读取ADC10MEM能得到准确的电压值,但是转换4次求平均值,值就不正确
Edisons 发表于 2018-10-6 17:50 | 显示全部楼层
累加4次后ad_value的值有溢出吗?
_gege 发表于 2018-10-6 17:53 | 显示全部楼层
LZ您可以试下用单步调试看下ad_value值吧
Mozarts 发表于 2018-10-6 17:54 | 显示全部楼层
ad_value 是unsigned char 8bit,adc10mem是16bit,累加4次发生溢出
Listate 发表于 2018-10-6 17:57 | 显示全部楼层
ad_value是char
ADC10MEM*2.5/1023<2,不一样的类型放在一起运算,没有加强制转换。
zhouhuanの 发表于 2018-10-6 17:59 | 显示全部楼层
求4次AD值,取平均值的话,可以设置一个含4个INT型整数的数组,将4次得到的值分别赋给这个数组的四个变量,再求平均值即可
handleMessage 发表于 2018-10-6 18:02 | 显示全部楼层
建议没采集一次的值计入一个缓存中
bbapple 发表于 2018-10-6 18:03 | 显示全部楼层
记够4次后做求和做除非就可以了
sourceInsight 发表于 2018-10-6 21:56 | 显示全部楼层
会不会是有异常值出现了
boy1990 发表于 2018-10-6 22:30 | 显示全部楼层
楼主你执行这个函数,会浪费很多的资源的。
中断里面在死循环,容易死机。
CallReceiver 发表于 2018-10-6 22:34 | 显示全部楼层
adc采样每一个核都会有误差
hfdy01 发表于 2018-10-6 22:35 | 显示全部楼层
误差一般是向一个方向偏
xia00 发表于 2018-10-6 22:37 | 显示全部楼层
波动跟参考电压是否稳定
shashaa 发表于 2018-10-6 22:39 | 显示全部楼层
挂上示波器测,监控看波形质量怎么样。
qiangweii 发表于 2018-10-6 22:42 | 显示全部楼层
被测信号质量,地线噪声都有关系。
litengg 发表于 2018-10-6 22:43 | 显示全部楼层
波动是上下偏,这个就影响比较大。
晓伍 发表于 2018-10-8 11:28 | 显示全部楼层
数值类型 是不是超出范围了
八层楼 发表于 2018-10-8 11:49 | 显示全部楼层
unsigned char 改为unsigned  long int
guanjiaer 发表于 2018-10-8 12:46 | 显示全部楼层
超出界限 楼上正解
您需要登录后才可以回帖 登录 | 注册

本版积分规则

111

主题

1388

帖子

0

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