Estoy intentando leer los valores externos de ADC AD7798 mediante el controlador ATmega32-A. En la hoja de datos, el registro de estado Bit 7 ( SR7
) indica que la conversión ha finalizado o no:
Bit de Listo. Se borra cuando los datos se escriben en el registro de datos. Conjunto después de leer el registro de datos o después de un período de tiempo antes de la El registro de datos se actualiza con un nuevo resultado de conversión para indicar a El usuario no debe leer los datos de conversión. También se establece cuando la parte Se coloca en modo de apagado. El final de una conversión se indica por el pin DOUT / RDY. Este pin puede ser usado como una alternativa al estado. regístrese para monitorear el ADC para datos de conversión.
Ahora quiero escribir código para verificar si el registro de estado MSB (Bit7) es 0
o no. Entonces, cuando es 0
, solo entonces puedo emitir un comando de lectura.
He escrito un código como este:
unsigned char CheckStatus(void)
{
char adcStatus;
spi(0x40);
adcStatus = spi(0xFF);
while((adcStatus & 0x80)!=0x80);
return adcStatus;
}
Pero no está funcionando.
Mi explicación de código:
- Emitir el comando de lectura para leer el registro de estado de ADC.
- Leyendo el valor del registro de estado de ADC y almacenado en
adcStatus
variable. - La comprobación del bit MSB no es igual a
1
. (No estoy seguro de si este buclewhile
es correcto o no).
Quiero verificar si el registro de estado MSB no es igual a 1
, de modo que pueda emitir el comando de lectura ( 0x58
) para leer los valores de ADC. Si el registro de estado MSB es igual a 1
, no puedo leer los valores de ADC.
¿Qué estoy haciendo mal?