ADC Ergebnis PIC18F26K80

Gast #4454867
Lesenswert?

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
    }
Gast #4455003
Lesenswert?

Fehler gefunden. Die PLL muß bei INTOSC mit OSCTUNE.PLLEN=1 aktiviert 
werden, #pragma config PLLCFG=ON bewirkt hier nichts. Deshalb lief alles 
mit 16MHz, was bei einem Teiler von 64 zu einer zugroßen Tad führt und 
der Wandler komische Ergebnisse liefert.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren