Guten Abend,
ich versuche mich gerade am 12bit A/D-Wandler eines PIC18F26K80, leider 
komme ich mit den Ergebnissen nicht klar.
Liegen die Eingänge auf 0V (=Vrefn) erhalte ich als Ergebnis 
0x7f7e..0x7f7d, liegen die Eingänge auf 3,3V (=Vrefp) erhalte ich als 
Ergebnis 0x0f7a..0x0f7f.
Es ist bekannt (Errata), dass der Wandler +-25LSB Offsetfehler hat, 
daher könnte ich auf Kanal 5 gegen GND messen, aber 0x7f7e bringt mich 
als Nullwert irgendwie ins Schleudern.
Die interne 1,024V Referenz ergibt als ADC-Wert 0x0467, halbwegs 
plausibel.
Wo stehe ich hier auf dem Schlauch bzw. wo könnte ich noch suchen?
| 1 |     ANCON0bits.ANSEL0 = 1;
 | 
| 2 |     ANCON0bits.ANSEL1 = 1;
 | 
| 3 |     ANCON0bits.ANSEL2 = 1;
 | 
| 4 |     ANCON0bits.ANSEL3 = 1;
 | 
| 5 |     ADCON2bits.ACQT   = 0b100;    // Taqc = 8*Tad
 | 
| 6 |     ADCON2bits.ADCS   = 0b110;    // fosc/64, Tad=1us
 | 
| 7 |     ADCON2bits.ADFM   = 1;        // Ergebnis rechtsbündig
 | 
| 8 |     ADCON0bits.ADON   = 1;
 | 
| 9 |     ADCON0bits.CHS    = 0;         
 | 
| 10 |     ADCON0bits.GO     = 1;      
 | 
| 11 | 
 | 
| 12 |     // Bisschen sonstiges Programm (UART, digitale Ausgänge, I2C)
 | 
| 13 |     while(1)
 | 
| 14 |         if (ADCON0bits.GO == 0)
 | 
| 15 |         {
 | 
| 16 |             i2c_reg_map[0x10 + (ana_chan << 1)] = ADRESH;    
 | 
| 17 |             i2c_reg_map[0x11 + (ana_chan << 1)] = ADRESL;
 | 
| 18 |             ana_chan++;
 | 
| 19 |             if (ana_chan > 3)
 | 
| 20 |                 ana_chan = 0;
 | 
| 21 |             ADCON0bits.GO = 1;  
 | 
| 22 |         }
 | 
| 23 |     }
 |