Estoy intentando leer los valores de voltaje en dos canales en eZ430-RF2500T, y transferir el resultado al AP conectado a una PC. Aunque puedo leer con éxito desde un solo canal, no puedo hacerlo usando dos canales.
Aquí está mi código:
int * readPtr = (int *)0x200;
ADC10CTL1 = INCH_2 + CONSEQ_1;
ADC10CTL0 = REF2_5V + SREF_1 + ADC10SHT_2 + REFON + ADC10ON + ADC10IE;
for (countDown = 240; countDown > 0; countDown--); //delay to allow references to settle
ADC10AE0 |= 0x06; //110
ADC10DTC1 = 0x02; // 2 conversions
ADC10SA = 0x200; // Data buffer start, same as readPtr above
ADC10CTL0 |= ENC + ADC10SC; //Sampling and conversion start
while(!(ADC10CTL0 & ADC10IFG)); // wait till the block conversion is complete
ADC10CTL0 &= ~ADC10IFG; //reset ADC10IFG
//code for reading from readPtr
Tenga en cuenta que no se están utilizando interrupciones; los resultados se leen después de que se establece el bit ADC10IFG.
No obtengo ningún resultado con este código. La parte de 'reading from readPtr' nunca se alcanza.
Sin embargo, si configuro ADC10DTC1 en 0x01, puedo leer desde el pin ordenado más alto. Es decir. dado que ADC10DTC1 es 0x01, puedo leer de A2 si se selecciona INCH_2, y de A1 si se selecciona INCH_1.
No puedo obtener conversiones para ambos A2 y A1, sin embargo.
Cualquier ayuda será muy apreciada.
¡Gracias!
EDITAR: Ahora estoy tratando de hacer que esta interrupción se base. Aunque no estoy seguro de cómo codificarlo.