Uso de interrupción de ADC

1

Estoy usando un dsPIC30F4011 en mi proyecto con XC16, y actualmente estoy programando su ADC. Pero mi pregunta también es general:

¿Debo apagar y volver a encender el periférico (ADC en este caso) en cada interrupción?

Aquí está mi código:

void __attribute__((__interrupt__, auto_psv)) _ADCInterrupt(void) {
    ADCON1bits.ADON = 0;   //is this really necessary?
    IFS0bits.ADIF = 0;   //turn interrupt flag off
    //read buffers and save data
    ADCON1bits.ADON = 1;   //is this really necessary?
}
    
pregunta Iaka Noe

1 respuesta

1

No tiene que apagar su ADC en cada interrupción, a menos que desee cancelar la conversión actual en curso (la conversión que generó la interrupción permanece en el ADCBUF; consulte la sección 20.5 de la hoja de datos).

Sin embargo, abortar la siguiente conversión y luego reiniciar el ADC al final de la interrupción no tendría mucho sentido. Uno podría simplemente deshabilitar el autotrigger y activar el ADC al final de la interrupción ...

En cambio, como lo hizo, debe borrar el indicador de interrupción por software, como se muestra en el manual de referencia de la familia dsPIC ( enlace ), en la sección 6.4.

  

IFSx: registros de estado de marca de interrupción

     

Todos los indicadores de solicitud de interrupción se mantienen en los registros IFSx, donde "x" denota la   número de registro. Cada fuente de interrupción tiene un bit de estado, que es establecido por el respectivo   periféricos o señal externa y se borra a través del software.

    
respondido por el next-hack

Lea otras preguntas en las etiquetas