Estoy trabajando con el microcontrolador ATmega32-A. Estoy tratando de leer los valores de ADC (AD7798). Estoy configurando registros ADC como se muestra a continuación. Imágenes también adjuntas.
char spi(char data)
{
//Start transmision
SPDR = data;
//Wait for transmision complete
while(!(SPSR & 0x80));
return SPDR;
}
void setupAd(){
ADC_CS=0;
SPCR = 0x5D;
spi(0x10); //set up communication register for configuration reg (16bit).
spi(0x07); // sending 07 as MSB
spi(0x10); //sending 10 as LSB
ADC_CS=1;
}
Estoy intentando leer esta configuración de configuración usando esto
void ReadAdConfReg(void)
{
SPCR = 0x5D;
ADC_CS=0;
spi(0x50);
adcConfig = spi(0xFF)<<8;
adcConfig |= spi(0xFF);
ADC_CS=1;
}
imprimiendo de esta manera
ReadAdConfReg();
printf("configreg:%d",adcConfig);
Pero mi problema de configuración de ese registor de configuración no estaba funcionando. He comprobado con el osciloscopio cualquier error en la polaridad del reloj y la selección de chip. He adjuntado imágenes como se muestra a continuación.
Por favor, ayúdeme por qué no puedo configurar el registro de configuración. Las polaridades del reloj y el chip seleccionan todo de acuerdo con la hoja de datos de ATmega32-A y la hoja de datos AD7798. por favor ayúdame que error estoy cometiendo o Si quiero verificar la configuración de mi registro de configuración en el osciloscopio, ¿qué debo hacer?