unsigned int result[4];
void init_ADC10()
{
P1SEL|=BIT0+BIT3+BIT4+BIT5;
ADC10AE0|=BIT0+BIT3+BIT4+BIT5; // 使P1.0允许AD模拟输入信号
ADC10CTL0=ADC10ON+MSC+SREF_0;//+REFON 开AD内核,选择电源为参考电压
ADC10CTL1=ADC10SSEL_0+CONSEQ_0; //+INCH_1+INCH_2 选择ADC12SC为触发源,选择系统时钟为AD内核时钟,采用单通道多次采用
}
void start_ADC10()
{
ADC10CTL1|=INCH_0;
ADC10CTL0|=ADC10SC+ENC; // 开始转换 开转换允许
while(ADC10CTL1&ADC10BUSY!=0);//判断是否转换完毕
result[0]= ADC10MEM;
//printf("%d\n",result[0]);
ADC10CTL0&=~(ADC10SC+ENC); //关转换允许才能选择通道
ADC10CTL1&=~INCH_0; //通道清0
ADC10CTL1|=INCH_3;
ADC10CTL0|=ADC10SC+ENC;
while(ADC10CTL1&ADC10BUSY!=0);
result[1]= ADC10MEM;
//printf("%d\n",result[1]);
ADC10CTL0&=~(ADC10SC+ENC);
ADC10CTL1&=~INCH_3;
ADC10CTL1|=INCH_4;
ADC10CTL0|=ADC10SC+ENC;
while(ADC10CTL1&ADC10BUSY!=0);
result[2]= ADC10MEM;
ADC10CTL0&=~(ADC10SC+ENC);
ADC10CTL1&=~INCH_4;
ADC10CTL1|=INCH_5;
ADC10CTL0|=ADC10SC+ENC;
while(ADC10CTL1&ADC10BUSY!=0);
result[3]= ADC10MEM;
ADC10CTL0&=~(ADC10SC+ENC);
ADC10CTL1&=~INCH_5;
//printf("%d\n",result[2]);
}
上面程序第七行改为ADC10CTL1=ADC10SSEL_0+CONSEQ_1(多通道单词转化)怎么弄呢 高手指点!!!!!!
楼主 忽悠
LZ 你只是把 单通道 单次转换 连着用而已啊。
楼主是忽悠吧?
我也觉得是单词转换重复利用了,但我也没有办法。adc12的那个还好,转环结果有多个寄存器,adc10就不晓得老。
楼主
P1SEL|=BIT0+BIT3+BIT4+BIT5;
ADC10AE0|=BIT0+BIT3+BIT4+BIT5; // 使P1.0允许AD模拟输入信号
这不是也将P1.3 P1.4 P1.5选为AD模拟输入信号端了吗?
你这怎么不纯粹的多通道转换 , 把多通道分为单通道单个转换,可是可以 但是不是我们要的 序列通道转换。
的确是,我搞了很久的ADC10,用多通道多次采样DTC,一次读取然后产生中断,但是每次数据与前一次不一样,去TI官网问了,也没个正经回答,兄弟,你的搞出来了吗?可以借鉴下不?
请问下,多通道多次采样,该怎么办?我试过官方给的程序也是不行的,每次采样值产生中断后不一样的数据。。。通道不是连续的(如A7和A5)这种,用DTC该怎么办?求解答,谢谢