您好! 每个人。
我想使用计时器 B 来触发 ADC12
我的计划是计时器 B 大约每0.1秒触发一次 ADC12。
我配置了计时器 B 和 ADC12。 但它不起作用。 我在哪里找不到?
我了解 ADC12CTL1中的 I SHS 是否为'10'(定时器 B)、 ADC12每0.1秒工作一次。
我明白了吗?
我的代码仅在 执行第一个转换时起作用、然后不起作用。
这是我的文本下的代码。
定时器 B =上行模式、ACLK、输出=齿形 ADC12 = A0、单通道单次转换、Vref = 2.5V
ACLK = 32、768Hz
TB0CCR0 = 3275;
TB0CTL |= TIMER_B_MC_UP + TIMER_B_TBSSEL_ACLK;
TB0CCTL0 = TIMER_B_CCIE+TIMER_B_OUTMOD_4;
TB0CTL |= TIMER_B_TBCLR;
P6SEL |= BIT0;
REFCTL0|= REFON + REFMSTR + REFVSEL_2 + REFTCOFF;
ADC12CTL0 |= ADC12ON + ADC12SHT0_2;
ADC12CTL1 |= ADC12SHS_2 + ADC12SHP;
ADC12MCTL0 |= ADC12SREF_1;
ADC12IE |= ADC12IE0;
ADC12CTL0 |= ADC12SHS_2 + ADC12ENC;
// temp variable = Global variable
#pragma vector = ADC12_VECTOR
__interrupt void ADC12_A_ISR(void)
{
static int i =0;
switch(_even_in_range(ADC12IV, 0x24))
{
case 0x06:
if(i==10) i = 0;
temp[i++] = ADC12MEM0;
break;
default:
break;
}
}
未使用 ADC12SC。 因为它不精确。
任何人都能帮助我~!