Hallo, ich habe ein Problem beim Auslesen des ADCs vom dsPIC33FJ32GP202. Wenn ich die externen VREF+/- Eingänge nutze und den Eingang des ADCs auf GND setze, dann werden zyklisch folgende Werte ausgelesen: 0 0 0 12 0 0 0 12 0 0 0 12 ... Bei jedem 4. Wert gibt es also einen Sprung auf 12. Dies entspricht bei einer Auflösung von 10 bit und einer Ref-Spannung von 3,3 V einen Sprung von 39 mV. Wenn ich die VREF+/- Eingänge nicht nutze, kommt es zwar beim setzen des ADCs auf GND nicht zu diesem Problem, ich habe aber das Gefühl, dass andere Werte zu sprunghaft sind. Mach ich irgendetwas in der Software falsch (Quelltextauszug weiter unten, vollständig im Anhang)? Oder kann es ein Problem an meiner Schaltung sein? Versorgt mit Strom wird der Chip vom Pickit 3. AVdd und AVss sind angeschlossen. 10nF liegen zwischen Vdd und Vss. 10µF sind an Vcap angeschlossen. Taktgeber ist ein 16MHz-Quarz. VRef+/- und ADC sind an POTIs angeschlossen. Oder sind Sprünge von 39 mV bei diesem Chip normal? Vielen Dank für Hilfe! AD1PCFGLbits.PCFG0 = 0; AD1CON1 = 0x0000; // SAMP bit = 0 ends sampling ... AD1CHS0 = 0x0000; // Connect RB2/AN2 as CH0 input .. AD1CHS0bits.CH0SA = 0b00101; //select AN5 for CH0 +ve input // in this example RB2/AN2 is the input AD1CSSL = 0; AD1CON3 = 0x0000; // Manual Sample, Tad = internal 2 Tcy AD1CON2 = 0; AD1CON2bits.VCFG = 0b011; // use external VREF+/- 011 AD1CON1bits.ADON = 1; // turn ADC ON TRISB = 0b01111; // RB4 is output while (1) // repeat continuously { AD1CON1bits.SAMP = 1; // wait 0.5 µs LATBbits.LATB4 = 1; Nop(); Nop(); Nop(); LATBbits.LATB4 = 0; AD1CON1bits.SAMP = 0; // start Converting while (!AD1CON1bits.DONE);// conversion done? tmp = ADC1BUF0; // yes then get ADC value buffer[i] = tmp; for (i = 0; i < 240; i++) { for (j = 0; j < 1000; j++) Nop(); for (j = 0; j < 1000; j++) Nop(); for (j = 0; j < 1000; j++) Nop(); for (j = 0; j < 1000; j++) Nop(); } SendString(itoa(numbuf, tmp, 10)); SendString("\r\n"); } // repeat
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.