Estoy tratando de leer la salida del ADC en una matriz tomando la salida del registro de memoria, pero por alguna razón no funciona, los valores de la matriz permanecen como 0:
int adc[100] = {0}; //Sets up an array of 100 integers and zero's the values
int i=0;
// Function prototypes
void adc_Setup();
void adc_Sam();
void main()
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
adc_Setup();
while(i<100)
{
adc_Sam(); // activating the adc 100 times
}
}
// ADC set-up function
void adc_Setup()
{
SD24CCTL0 = SD24OSR_1024+SD24SNGL+SD24IE; // SINGLE CONVERSION ENA IONTURRPUT
SD24INCTL0 = SD24INCH_0; // Select Channel A0, SD24INTDLYx = 00
// SD24INCTL0 |= SD24GAINx FOR GAIN FROM 1 TO 16
}
// ADC sample conversion function
void adc_Sam()
{
SD24CCTL0=SD24SC; // activates the adc this is a control register
__delay_cycles(1000);
while (SD24CCTL0 & BUSY)// waits
{
__bis_SR_register(CPUOFF + GIE);// Low Power Mode 0
}
adc[i]=SD24MEM0; // takes the data from the output of the adc
i++;
}
También este registro de memoria tiene solo 16 bits de los 24 bits. Puede cambiar si desea que mantenga el LSB o el MSB. Así que si quiero todos los bits. ¿Tengo que cambiarlo y guardar la información dos veces, luego tomar los 8 bits faltantes? ¿O hay una mejor manera?
actualización:
No hubo problema. Solo CCS muestra los valores de las variables que se declaran en la función principal, que es todo