Soy nuevo en la programación. Tengo una pequeña duda, sé que esta es una pregunta simple pero estoy confundido. tengo la siguiente función:
void ReadAdConfReg(void)
{
SPCR = 0x5D;
ADC_CS = 0;
while (MISO_PIN != 0) ;
spi(0x50);
adcConfig = spi(0xFF);
adcConfig = (adcConfig << 8) | spi(0xFF);
ADC_CS = 1;
}
He declarado adcConfig
como variable global: unsigned int adcConfig
.
¿Cómo puedo imprimir el adcConfig
valor. Debido a que esta es una void
función, no devuelve ningún valor.
He intentado así:
ReadAdConfReg();
printf("configreg:%d",adcConfig);
¿Está mal? O cómo puedo imprimir adcConfig
el valor.
El controlador es ATMega32A , compilador CodeVisionAVR .
Si necesita que la función devuelva un valor, no se puede declarar nula. Como lo tiene ahora, primero debe llamar a la función, luego pasar la variable global a la función printf. Así que lo que estás haciendo debería funcionar.
Para usar la función con un valor de retorno, haga algo como esto:
unsigned int ReadAdConfReg(void)
{
unsigned int retVal;
SPCR = 0x5D;
ADC_CS = 0;
while (MISO_PIN != 0) ;
spi(0x50);
adcConfig = spi(0xFF);
adcConfig = (adcConfig << 8) | spi(0xFF);
ADC_CS = 1;
return acdConfig;
}
(nota: la edición anterior usó un retVal local, mientras dejaba presente la variable adcConfig, lo que puede haber sido confuso. Puede pasar adcConfig directamente ya que es el tipo correcto. Sin embargo, si desea que la función sea independiente de adcConfig, use el retVal local en lugar de adcConfig; esto probablemente sea mejor que usar una variable global)
Entonces puedes hacer:
printf("configreg:%d", ReadAdcConfigReg());
unsigned char
.spi(0xFF)
valor :-) Lo modificaré ahora.
Verendra
Decano
Verendra