Hola a todos:
Estoy usando cuatro canales para medir diferentes gyros y accelerometros
con ADC12 de un dspic 30f4013 veo por la pc usando el rs232 que determinado numero de converciones la muestra cae a 0 o cerca de este ,alguien me podria decir que estoy haciendo mal ?
este es my clock
_FOSC(CSW_FSCM_OFF & HS2_PLL16); //24 MHZ
_FWDT(WDT_OFF);
_FBORPOR( PBOR_OFF & // brown out off
MCLR_EN & PWRT_OFF)
_FGS(CODE_PROT_OFF);
#define PeriodoPWM 0x200 // 50Hz
#define FCY 24000000
#define BAUDRATE 38400 //19200 --- 9600
#define BRGVAL ((FCY/BAUDRATE)/16)-1
este es el codigo del adc :
OpenADC12(ADC_MODULE_ON & ADC_IDLE_CONTINUE & ADC_FORMAT_INTG & ADC_CLK_AUTO & ADC_AUTO_SAMPLING_ON& ADC_SAMP_OFF,
ADC_VREF_EXT_EXT & ADC_SCAN_ON & ADC_SAMPLES_PER_INT_4 & ADC_ALT_BUF_OFF & ADC_ALT_INPUT_OFF,
ADC_SAMPLE_TIME_31 & ADC_CONV_CLK_SYSTEM & ADC_CONV_CLK_32Tcy,
ENABLE_ALL_DIG & ENABLE_AN9_ANA & ENABLE_AN10_ANA & ENABLE_AN11_ANA & ENABLE_AN12_ANA,
SCAN_ALL & SKIP_SCAN_AN0 & SKIP_SCAN_AN1 & SKIP_SCAN_AN2& SKIP_SCAN_AN3& SKIP_SCAN_AN4& SKIP_SCAN_AN5&
SKIP_SCAN_AN6& SKIP_SCAN_AN7& SKIP_SCAN_AN8& SKIP_SCAN_AN13&
SKIP_SCAN_AN14& SKIP_SCAN_AN15);
ConfigIntADC12(ADC_INT_PRI_6 & ADC_INT_ENABLE);
esta es la interrupcion:
void __attribute__((__interrupt__,auto_psv)) _ADCInterrupt(void)
{
array[count] = ADCValue = ADCBUF0;
arrax[count] = ADCValue1 = ADCBUF1;
gyrox[count] = gyro = ADCBUF2;
gyroy[count] = gyroroll = ADCBUF3;
count ++;
if (count < cont_sens)
{
temp1 = temp1 + ADCValue ;
temp2 = temp2 + ADCValue1 ;
temp3 = temp3 + gyro ;
temp4 = temp4 + gyroroll;
flag = 0;
}
else
count = 0;
IFS0bits.ADIF=0;
}
muchas gracias.