Estoy trabajando con un ATmega32-A . Al usar la comunicación USART, estoy mostrando datos en el monitor y estoy usando la caja del interruptor para seleccionar diferentes comandos. En uno de los comandos he escrito el siguiente código:
case(DATA):
init_io();
statusreg = AD7798_8(0x40, 0xFF);
printf("status register %02x\r\n", statusreg);
if (statusreg != 0x80)
printf("unexpected power on status %02x\r\n", statusreg);
while(1){
while ((statusreg & 0x80) != 0); // wait till ADC is ready
adc = AD7798_16(0x58, 0xFFFF); // read register
printf("ADC value is %04x\r\n", adc);
}
Command=0;
break;
Pero el código anterior está imprimiendo el valor de ADC infinitas veces. He cambiado el bucle while a lo siguiente
while(1){
while ((statusreg & 0x80) != 0); // wait till ADC is ready
adc = AD7798_16(0x58, 0xFFFF); // read register
printf("ADC value is %04x\r\n", adc);
}
Después de eso, se imprime solo una vez, pero no acepta más comandos. Tengo que reconstruir si quiero ingresar cualquier otro comando. Cualquier ayuda apreciada.