Gast
#1790338
Hallo, ich habe ein Problem mit dem ADU des PIC32MX795F512H.Ich versuche alle 16 analogen Kanäle im alternating input Modus einzulesen.Es wird mir im dazugehörigen Puffer des ADU aber für jeden Eingang der gleiche Wert dargestellt.Im scan mode ist es mir möglich alle 8 Eingänge des MUXA zu verarbeiten. Es scheint als würde die Umschaltung zwischen MUXA und MUXB nicht zu funktionieren .Anbei noch der von mir verwendete code.Hoffe es kann mir jemand weiter helfen. int main(void) { #define PARAM1 ADC_MODULE_ON | ADC_FORMAT_INTG | ADC_CLK_AUTO | ADC_AUTO_SAMPLING_ON #define PARAM2 ADC_VREF_AVDD_AVSS | ADC_OFFSET_CAL_DISABLE | ADC_SCAN_OFF | ADC_SAMPLES_PER_INT_14 | ADC_ALT_BUF_ON | ADC_ALT_INPUT_ON #define PARAM3 ADC_CONV_CLK_INTERNAL_RC | ADC_SAMPLE_TIME_12 #define PARAM4 ENABLE_AN0_ANA|ENABLE_AN1_ANA|ENABLE_AN2_ANA|ENABLE_AN3_ANA|ENABLE_AN4_A NA|ENABLE_AN5_ANA|ENABLE_AN6_ANA|ENABLE_AN7_ANA|ENABLE_AN8_ANA|ENABLE_AN 9_ANA|ENABLE_AN10_ANA|ENABLE_AN11_ANA|ENABLE_AN12_ANA|ENABLE_AN13_ANA|EN ABLE_AN14_ANA|ENABLE_AN15_ANA #define PARAM5 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_AN9 |SKIP_SCAN_AN10 |SKIP_SCAN_AN11 | SKIP_SCAN_AN12 |SKIP_SCAN_AN13 |SKIP_SCAN_AN14 |SKIP_SCAN_AN15 CloseADC10(); INTEnableSystemMultiVectoredInt(); PORTSetPinsAnalogIn(IOPORT_B,BIT_0|BIT_1|BIT_2|BIT_3|BIT_4|BIT_5|BIT_6|B IT_7|BIT_8|BIT_9|BIT_10|BIT_11|BIT_12|BIT_13|BIT_14|BIT_15); OpenADC10( PARAM1, PARAM2, PARAM3, PARAM4, PARAM5 ); SetChanADC10( ADC_CH0_NEG_SAMPLEA_NVREF|ADC_CH0_POS_SAMPLEA_AN2|ADC_CH0_POS_SAMPLEA_AN 3|ADC_CH0_POS_SAMPLEA_AN4| ADC_CH0_POS_SAMPLEA_AN5 |ADC_CH0_POS_SAMPLEA_AN6 |ADC_CH0_POS_SAMPLEA_AN7 |ADC_CH0_POS_SAMPLEA_AN8 | ADC_CH0_POS_SAMPLEA_AN9| ADC_CH0_NEG_SAMPLEB_NVREF|ADC_CH0_POS_SAMPLEB_AN10|ADC_CH0_POS_SAMPLEB_A N11|ADC_CH0_POS_SAMPLEB_AN12| ADC_CH0_POS_SAMPLEB_AN13|ADC_CH0_POS_SAMPLEB_AN14|ADC_CH0_POS_SAMPLEB_AN 15); mPORTDSetPinsDigitalOut(BIT_0|BIT_1|BIT_2|BIT_3|BIT_4|BIT_5|BIT_6|BIT_7| BIT_8|BIT_9|BIT_10|BIT_11); ConfigIntADC10(ADC_INT_PRI_2 | ADC_INT_SUB_PRI_2 | ADC_INT_ON); mAD1ClearIntFlag(); EnableADC10(); while(1) { } } void __ISR(_ADC_VECTOR, ipl6) AdcHandler(void) { mAD1ClearIntFlag(); int Zahl=0,i=0,Zeit=0; unsigned int result; unsigned long int a=0; a=8 * ((~ReadActiveBufferADC10() & 0x01));; result = ReadADC10(a); result2= ReadADC10(a+1); }