Guten Tag
Ich habe folgendes Problem;
Ich versuche mit einem Codebeispiel von Microchip meinen AD-Wandler
(PIC24FJ128GB106) anzusteuern, jedoch kann ich keinen Wert auslesen und
erhalte immer 0.
hier mein Code
1 |
|
2 | TRISB=0xFFFF;
|
3 | int ADCValue, count;
|
4 | int *ADC16Ptr;
|
5 | AD1PCFG = 0b1111111111011111; // Only AN5 as analog input
|
6 | AD1CON1 = 0x00E0; // Internal counter triggers conversion
|
7 | AD1CHS = 0b0000010100000000; // Connect AN5 as positive input
|
8 | AD1CSSL = 0;
|
9 | AD1CON3 = 0x0F00; // Sample time = 15Tad, Tad = Tcy
|
10 | AD1CON2 = 0x003C; // Set AD1IF after every 16 samples
|
11 | AD1CON1bits.ADON = 1; // turn ADC ON
|
12 | while(1) // repeat continuously
|
13 | {
|
14 | ADCValue = 0; // clear value
|
15 | ADC16Ptr = &ADC1BUF0; // initialize ADC1BUF pointer
|
16 | IFS0bits.AD1IF = 0; // clear ADC interrupt flag
|
17 | AD1CON1bits.ASAM = 1; // auto start sampling for 31Tad
|
18 | // then go to conversion
|
19 |
|
20 | while (!IFS0bits.AD1IF); // conversion done?
|
21 | AD1CON1bits.ASAM = 0; // yes then stop sample/convert
|
22 | for (count = 0; count < 16; count++) // average the 16 ADC value
|
23 | {
|
24 | ADCValue = ADCValue + *ADC16Ptr++;
|
25 | }
|
26 | ADCValue = ADCValue >> 4;
|
27 |
|
28 | }
|
die einzige Anpassung die ich vorgenommen habe, ist den angewählten Pin
von AN0 auf AN5 umzuschreiben (Regeister AD1PCFG und AD1CHS).
Wieso kann ich also nun keine Werte auslesen?
Bedanke mich im voraus für die Hilfe