有关msp430f149 adc12频率问题请教
-------以下是我对adc12频率的理解----------
ADC12CTL0=SHT1_8+SHT0_8+MSC+ADC12ON
ADC12CTL1=SHS_0+SHP+ADC12DIV_1+ADC12SSEL_2+CONSEQ_3
因ADC12SSEL_2=MCLK=8Mhz,ADC12DIV_1=2,SHT1_8=64
每次采样时间为:
T(sample)=4*SHT1*(ADC12DIV/ADC12SSEL)
故T(sample)=4*64*(2/8000000)=0.000064(s)
每次转换时间为:
T(convert)=13*(ADC12DIV/ADC12SSEL)
故T(convert)=13*(2/8000000)=0.00000325(s)
故采样/转换频率为
f=1/(T(sample)+T(convert))=1/(0.000064+0.00000325)=14869(hz)
------------------------------------------
---------以下是我的部分程序------
adc12设置始下:
ADC12CTL0&=~ENC; //关闭adc12转换允许位
ADC12CTL1=SHS_0+SHP+ADC12DIV_1+ADC12SSEL_2+CONSEQ_3;
ADC12CTL0 = SHT0_8+SHT1_8+MSC+ADC12ON8; //开adc12内核,多次采样转换
ADC12MCTL0 = INCH_0; // ref+=AVcc, channel = A0
ADC12MCTL1 = EOS+INCH_0; // ref+=AVcc, channel = A0
ADC12IE = 0x0003; // Enable ADC12IFG.0~ADC12IFG.1
ADC12CTL0 |= ENC; // 使能ADC12转换允许位
ADC12CTL0 |= ADC12SC; // 开始转换
中断处理程序中如下:
ADtemp1=0;
ADtemp1=ADtemp1+ADC12MEM0; // Move results, IFG is cleared
ADtemp1=ADtemp1+ADC12MEM1; // Move results, IFG is cleared
----------问题如下---------
请教大虾,按以上所设,因为在中断处理程序中是连续读取ADC12MEM0和ADC12MEM1的,
1.是不是每个ADC12MEMx转换完就会发生中断进入中断服务程序??
2.如果是ADC12MEM0转换结束后而ADC12MEM1还未转换就进入中断,那在读ADC12MEM1时值应该是错的??
3.如果中断服务程序的处理时间较长,如超过T(sample)+T(convert),
是否会对采样频率有影响??或者中断服务程序不会完整执行完??
发表时间:2003年5月26日12:02:47