[求助] msp430g2553多通道采集不对应

冷冷阿   2017-7-23 17:44 楼主
#include"msp430g2553.h"
unsigned int a[32],b[8];
unsigned int i,j;
float v[8];
void main(void) {
                                 WDTCTL=WDTPW+WDTHOLD;
//        P1OUT=0;
        ADC10CTL0|=ADC10ON+ADC10IE+REFON+REF2_5V+SREF_1+MSC+ADC10SHT_2;//取内部参考电压2.5V,使采样时间为16xADC10CLK,
                                                                                                                                        //增大采样时间以保证采样的准确性;
        ADC10CTL1|=INCH_7+CONSEQ_3;//最大采样通道为P1^7,采用序列多次采样的模式,INCH_X决定了采样通道为AX~A0;
        ADC10DTC1|=0X20;//一共采样32次
        ADC10AE0|=0XFF;//使能通道A7~A0;
//        P1DIR=BIT0+BIT6;
        while(1)
        {
                ADC10CTL0&=~ENC;//关闭采样使能
                while(ADC10CTL1&ADC10BUSY);//判断是否有采样或转换动作
                ADC10CTL0|=ADC10SC+ENC;//开始采样
                ADC10SA=(unsigned int )a;//将组数a的首地址作为采样的起始地址,首先是对A7~A0依次采样放入数组a【0】~a[7]中,在循环对A7~A0依次采样,放入数组a【8】~a【15】
                                                                        //中,以此类推,向下循环直到32次结束
                __bis_SR_register(LPM0_bits+GIE);//关闭CPU,开启总中断
                for(i=0;i<8;i++)
                {
                        b=0;
                        for(j=0;j<4;j++)
                        {
                                b+=a[i+j*8];
                        }
                }
                for(i=0;i<8;i++)
                {
                        b=b/4;//取4次采样的平均
                        v=b*25;
                        v=(v/1023)/10;//转化为电压值
                }
//                if(v[6]>1)a
//                P1OUT^=BIT6;
//                else
//                P1OUT^=BIT0;
        }
}
#pragma vector=ADC10_VECTOR
__interrupt void ADC10_ISR(void)
{
        LPM0_EXIT;//退出CPU中断
}
123123.JPG 1erwrfwe.png
我的理解程序是这样对应的。
但是实测发现是这样对应的。
uyt.png
求指点一下  是不是程序问题?

回复评论 (1)

点赞  2017-7-24 14:44
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复