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); }
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.