采样程序如下,copy的是TI的例程。
P6SEL = 0x0F; // Enable A/D channel inputs
ADC12CTL0 = ADC12ON+MSC+SHT0_2; // Turn on ADC12, set sampling time
ADC12CTL1 = SHP+CONSEQ_1; // Use sampling timer, single sequence
ADC12MCTL0 = INCH_0; // ref+=AVcc, channel = A0
ADC12MCTL1 = INCH_1; // ref+=AVcc, channel = A1
ADC12MCTL2 = INCH_2; // ref+=AVcc, channel = A2
ADC12MCTL3 = INCH_3+EOS; // ref+=AVcc, channel = A3, end seq.
ADC12IE = 0x08; // Enable ADC12IFG.3
ADC12CTL0 |= ENC;
我的疑问是
① P6SEL = 0x0F; // Enable A/D channel inputs
这句话不管我怎么设置都可以进入采样中断,这句话不是应该是设置相应的引脚后面才可以进行采样的么?为什么当我默认时或者我设置为0x00的时候也可以进入?
② ADC12IE = 0x08; // Enable ADC12IFG.3
这句话是使能相应的中断位,允许进入中断,我的理解是允许P6.3可以进入中断,那P6.0,P6.1,P6.2呢?我调试的时候发现都是在采样的,ADC12IE = 0x01; // Enable ADC12IFG.1,这句是使能P6.0的,那在给通道使能的时候是使能序列通道的最后一位还是将用到的所有位都使能?
③采样通道有16个这么多,例程给出的是单通道和序列通道,那如果不是序列通道,如果开多通道,且
A0,A1,中间几个不用,后面继续用到A4,A5,固然可以不这么用,但是如果要这样做的时候,该如何设置?关于这个我自己有一个想法,就是P6SEL=0x22;是否可行,请大大明示。
④关于通道选用,我发现当我把A0,A1两句注释掉,通道设置写成这样:
//ADC12MCTL0 = INCH_0; // ref+=AVcc, channel = A0
//ADC12MCTL1 = INCH_1; // ref+=AVcc, channel = A1
ADC12MCTL2 = INCH_2; // ref+=AVcc, channel = A2
ADC12MCTL3 = INCH_3+EOS; // ref+=AVcc, channel = A3, end seq.
这时候发现A0,A1采样还是继续的,这是为什么? |