打印

平均值问题

[复制链接]
1868|36
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liliang9554|  楼主 | 2018-8-16 09:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

#include "msp430f2122.h"

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;
}

相关帖子

沙发
午夜粪车| | 2018-8-16 09:54 | 只看该作者
平均值怎么了

使用特权

评论回复
板凳
liliang9554|  楼主 | 2018-8-16 09:57 | 只看该作者
主要是想按键检测,我这程序直接读取ADC10MEM能得到准确的电压值,但是转换4次求平均值,值就不正确

使用特权

评论回复
地板
liliang9554|  楼主 | 2018-8-16 10:03 | 只看该作者
主要是想按键检测,我这程序直接读取ADC10MEM能得到准确的电压值,但是转换4次求平均值,值就不正确

使用特权

评论回复
5
huangchui| | 2018-8-16 10:06 | 只看该作者


呃~累加4次后ad_value的值有溢出吗?
LZ您可以试下用单步调试看下ad_value值吧

使用特权

评论回复
6
wyjie| | 2018-8-16 10:10 | 只看该作者
ad_value 是unsigned char 8bit,adc10mem是16bit,累加4次发生溢出

使用特权

评论回复
7
jiajs| | 2018-8-16 10:13 | 只看该作者

程序问题很多啊,
1:ad_value是char
2:ADC10MEM*2.5/1023<2,不一样的类型放在一起运算,没有加强制转换。
3:打开ADC REF后没有延时,直接开始采样。

使用特权

评论回复
8
zhanghqi| | 2018-8-16 10:16 | 只看该作者
求4次AD值,取平均值的话,可以设置一个含4个INT型整数的数组,将4次得到的值分别赋给这个数组的四个变量,再求平均值即可

使用特权

评论回复
9
spark周| | 2018-8-16 10:19 | 只看该作者

电源要稳定的。

使用特权

评论回复
10
jiaxw| | 2018-8-16 10:22 | 只看该作者
没看出来楼主这怎样求得平均值的,建议没采集一次的值计入一个缓存中

使用特权

评论回复
11
shimx| | 2018-8-16 10:26 | 只看该作者

嗯,记够4次后做求和做除非就可以了

使用特权

评论回复
12
liliang9554|  楼主 | 2018-8-16 10:29 | 只看该作者

嗯,我知道了

使用特权

评论回复
13
jiahy| | 2018-8-16 10:33 | 只看该作者
会不会是有异常值出现了

使用特权

评论回复
14
jiahy| | 2018-8-16 10:33 | 只看该作者
会不会是有异常值出现了

使用特权

评论回复
15
huangchui| | 2018-8-16 10:36 | 只看该作者
差多少,4次求平均值用的什么类型的值

使用特权

评论回复
16
zhanghqi| | 2018-8-16 10:40 | 只看该作者
楼主你执行这个函数,会浪费很多的资源的。
中断里面在死循环,容易死机。

使用特权

评论回复
17
liliang9554|  楼主 | 2018-8-16 10:45 | 只看该作者

嗯,我知道了

使用特权

评论回复
18
gygp| | 2018-8-16 21:42 | 只看该作者
liliang9554 发表于 2018-8-16 09:57
主要是想按键检测,我这程序直接读取ADC10MEM能得到准确的电压值,但是转换4次求平均值,值就不正确
...

这个有问题。

使用特权

评论回复
19
chenci2013| | 2018-8-16 21:54 | 只看该作者
这个采集的对吗?

使用特权

评论回复
20
biechedan| | 2018-8-16 21:54 | 只看该作者
wyjie 发表于 2018-8-16 10:10
ad_value 是unsigned char 8bit,adc10mem是16bit,累加4次发生溢出

是不是超出范围了呢?

使用特权

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

本版积分规则

950

主题

11568

帖子

6

粉丝