打印

大神求指导,为什么用MSP430F149内部数模转换得到的数据会一直变

[复制链接]
1186|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Armais|  楼主 | 2013-12-25 16:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
Armais|  楼主 | 2013-12-25 16:23 | 只看该作者
设置的是MCLK=1MHz下面是ADC12初始化,中断和转换代码,求大神指导
void Init_ADC(void)
{
    P6SEL |= 0x01;                            // 使能P6.0为ADC通道
    ADC12CTL0 = ADC12ON+SHT0_15+MSC;          // 打开ADC,设置采样时间
    ADC12CTL1 = SHP+CONSEQ_2;                 // 使用采样定时器,单输入所次转换
   
    ADC12IE = 0x01;                           // 使能ADC中断
    ADC12CTL0 |= ENC;                         // 使能转换
    ADC12CTL0 |= ADC12SC;                     // 开始转换
}
////////////////////////////////////////////////////////////////////////////////
/////////////////////////初始化ADC12,P6.0作为模拟信号输入//////////////////////
#pragma vector=ADC_VECTOR
__interrupt void ADC12ISR (void)
{
    static uchar index = 0;
   
    results[index++] = ADC12MEM0;               // Move results
    if(index == 64)
    {
       uchar i;
       H_result = 0;
       for(i = 0; i < 64;i++)
       {
           H_result += results[i];
       }
       H_result >>= 6;//多次取平均
       index = 0;
       H2D(H_result);
           
    }
}
////////////////////////////////////////////////////////////////////////////////
void H2D(uint H)
{
    ShiDu=0;
    ShiDu1=0;
    ShiDu2=0;
    unsigned long caltmp;
    uint Volt;   
    caltmp = H;
    /*由于设置的AVcc = 3.3V,DVss = 0V*/
    caltmp = (caltmp << 5) + H;             //caltmp = Hex_Val * 33
    caltmp = (caltmp << 3) + (caltmp << 1);     //caltmp = caltmp * 10
   
    Volt = caltmp >> 12;                  //Curr_Volt = caltmp / 2^n
    ShiDu = Volt*100/3;
    ShiDu1 = ShiDu/100;
    ShiDu2 = ShiDu%100;
}

使用特权

评论回复
板凳
Armais|  楼主 | 2013-12-25 16:24 | 只看该作者
顺便弱弱问一下,如何结贴

使用特权

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

本版积分规则

3

主题

12

帖子

0

粉丝