Estamos intentando leer el voltaje analógico suministrado a dos canales simultáneamente utilizando ADC10 y DTC.
No estamos obteniendo los resultados de las conversiones. Nuestro código es el siguiente:
ADC10CTL1 = INCH_2 + CONSEQ_1;
ADC10CTL0 = REF2_5V + SREF_1 + ADC10SHT_2 + REFON + ADC10ON + ADC10IE;
ADC10AE0 |= 0x06;
ADC10DTC1 = 0x02;
ADC10SA = 0x200; // Data buffer start
while (1)
{
ADC10CTL0 &= ~ENC;
while (ADC10CTL1 & BUSY);
ADC10SA = 0x200;
ADC10CTL0 |= ENC + ADC10SC; //Sampling and conversion start
__bis_SR_register(CPUOFF + GIE); // LPM0 with interrupts enabled
}
y, el ISR es:
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{ int * read = 0x200;
//code that reads from the location 'read'
__bic_SR_register_on_exit(LPM3_bits); // Clear LPM3 bit from 0(SR)
}
Mientras estamos obteniendo los resultados en AP, no muestran el valor correcto, y el valor no cambia si cambia el voltaje suministrado. ¿Cómo nos aseguramos de que se genere una interrupción solo cuando se completa la conversión?
Muchas gracias por tu tiempo.