Hola: Aqui coloco el ejemplo de microchip sobre el uso de las librerias para el manejo del ADC de los dsPIC30F2010. Si el dispositivo seleccionado es el dsPIC2010, el MPLab no compila y genera errores. Es como si no encontrase las librerias . Sin embargo si seleccionamos como dispositivo, el dsPIC30F6014, el mismo si compila.
Lo probe con la version 8.5 de MPLab. Que opinan al respecto?.
#define __dsPIC30F2010__
#include <p30fxxxx.h>
#include<adc12.h>
unsigned int Channel, PinConfig, Scanselect;
unsigned int Adcon3_reg, Adcon2_reg, Adcon1_reg;
int main(void)
{
unsigned int result[20], i;
ADCON1bits.ADON = 0; /* turn off ADC */
Channel = ADC_CH0_POS_SAMPLEA_AN4 &
ADC_CH0_NEG_SAMPLEA_NVREF &
ADC_CH0_POS_SAMPLEB_AN2&
ADC_CH0_NEG_SAMPLEB_AN1;
SetChanADC12(Channel);
ConfigIntADC12(ADC_INT_DISABLE);
PinConfig = ENABLE_AN4_ANA;
Scanselect = SKIP_SCAN_AN2 & SKIP_SCAN_AN5 &
SKIP_SCAN_AN9 & SKIP_SCAN_AN10 &
SKIP_SCAN_AN14 & SKIP_SCAN_AN15 ;
Adcon3_reg = ADC_SAMPLE_TIME_10 &
ADC_CONV_CLK_SYSTEM &
ADC_CONV_CLK_13Tcy;
Adcon2_reg = ADC_VREF_AVDD_AVSS &
ADC_SCAN_OFF &
ADC_ALT_BUF_OFF &
ADC_ALT_INPUT_OFF &
ADC_SAMPLES_PER_INT_16;
Adcon1_reg = ADC_MODULE_ON &
ADC_IDLE_CONTINUE &
ADC_FORMAT_INTG &
ADC_CLK_MANUAL &
ADC_AUTO_SAMPLING_OFF;
OpenADC12(Adcon1_reg, Adcon2_reg,
Adcon3_reg,PinConfig, Scanselect);
i = 0;
while( i <16 )
{
ADCON1bits.SAMP = 1;
while(!ADCON1bits.SAMP);
ConvertADC12();
while(ADCON1bits.SAMP);
while(!BusyADC12());
while(BusyADC12());
result = ReadADC12(i);
i++;
}
}