Estoy utilizando el microcontrolador de la serie dspic33E. El periférico más utilizado es el ADC. Por lo tanto, voy a través del manual de referencia ADC para microcontroladores de la familia dspic33E de Microchip. En el FRM, dijeron que, este controlador tiene 4 canales ADC, 16 buffers ADC para almacenar los resultados convertidos ADC cada uno de 16 bits de tamaño. Hay algunos registros de configuración que deben ser configurados correctamente con el fin de utilizar el ADC con precisión en aplicaciones de tiempo crítico. Uno de los principales es el bit SMPI<4:0> del registro ADCxCON2. Este bit<4:0> determina el número de muestras que deben generarse por cada interrupción del ADC, las cuales se leerán de los buffers del ADC una vez generada la interrupción.
El número total de búferes ADC es de 16. Si establezco el valor en ese SMPI de 5 bits como 7, obtendré 8 muestras por interrupción del ADC y cada muestra se almacena en cada búfer adc después de la conversión ADC realizada. Obtendré esos 8 valores convertidos de los buffers del ADC, después de que se genere la interrupción. Así que, teóricamente, puedo obtener un máximo de 16 muestras por interrupción del ADC.
Pero, en la hoja de datos, la sección SMPI de 5 bits tiene una opción para establecer el recuento de muestras hasta 32. Pero sólo 16 resultados pueden ser almacenados en el buffer ADC ya que ese es el conteo máximo del buffer ADC en el periférico.
He buscado en el FRM para saber el motivo de poner el valor de SMPI a 32 muestras/interrupción, pero no lo he encontrado.
No estoy usando la función DMA para el ADC. Sólo estoy utilizando el periférico ADC. Dado que la capacidad máxima es sólo para 16 resultados de conversión, por qué el bit SMPI se permite obtener 32 muestras por interrupción. ¿Cómo se almacenan esos 32 valores en 16 buffers?
Enlace para ADC FRM: https://ww1.microchip.com/downloads/en/DeviceDoc/70621c.pdf
Imagen 1: Imagen del periférico ADC Buffer
Imagen 2: Rangos de selección de valores de bits SMPI.