A/D Wandler am PIC18F2431 gibt nur 9bit

OP #1930554
Hallo.

Ich arbeite mit dem PIC18F2431 und versuche momentan den A/D-Wandler zum 
gescheiten funktionieren zu bekommen.

Das Problem ist, dass er zwar wandelt und das auch problemlos, jedoch 
nur bis Vdd/2. Dann sollte er ja aufs zehnte Bit umschalten, tut er aber 
nicht. Gibt es bei dem Ding so etwas, wie mit und ohne Vorzeichen zu 
messen oder irgendwelche anderen Späße, dass er nich höher kommt und bei 
511 stehen bleibt. Ich suche jetzt schon den ganzen Tag und komme 
einfach nicht weiter. Vielleicht hat ja jemand einen einfachen Tipp für 
mich.

Mit freundlichen Grüßen
Marco
Gast
Was passiert denn, wenn du mehr als 50% der betriebsspannung an den 
AD-wandler sendet? Ändern sich denn die unteren Bits bei verschiedenen 
Spannungen oberhalb von 50%?
Gast
kannst du mal deine Schaltung und den Softwareteil der der 
Initialisierung des AD-wandlers veröffentlichen? Ich habe seit Jahren 
den 4320 im Einsatz und auf den ersten Blick sieht der AD-Teil identisch 
aus.
OP
Ja der sollte auch identisch sein.

Schaltung veröffentliche ich jetzt einfach mal nicht, weil einfach eine 
Klemme vom Netzteil an dem PIN hängt und ich die Spannung damit zum 
Testen direkt vorgebe.
1
 
2
  TRISA = 0xFF;    //Trisa<0:4> als Eingänge
3
  ANSEL0 = 0x07;      //Analoge Eingänge RA<0:4>
4
  ADCON0 = 0b00001001;  //Single-Shot, Single Channel, GroupA, Start
5
  ADCON1 = 0x00;
6
  ADCON2 = 0x80;
7
  ADCON3 = 0x00;      //A/D all triggers disabled 
8
  ADCHS = 0x00;      //AN0,AN1,AN2,AN3
9

10
  ADCON0bits.ADON = 1;

Abfragen tu ich das ganze dann über den Interrupt der durch den 
AD-Wandler ausgelöst wird.
Ich hoffe das reicht an Informationen
Gast
>Schaltung veröffentliche ich jetzt einfach mal nicht, weil einfach eine
>Klemme vom Netzteil an dem PIN hängt und ich die Spannung damit zum
>Testen direkt vorgebe.

?? Zusammmen mit der Betriebsspannung? Regelst du beides gleichzeitig?
Gast
Ein Vorschlag:

Lass doch zunächst den Interrupt weg. Dann frage den AD-Wandler im 
Polling ab. Etwa so:

ADCON1 = bin(1000.0100);      // PORTA.0, A.1 = analog, Vref = VDD
      // ADRESH = rechtsbuendig

ADCON0 = bin(1000.0001);// AD-Wandler init, GO=0, conversion clock 
=Fosc/32

while (1)
{
 GO = 1;
 #asm
  nop
 #endasm
 while (GO == 1)
 {
 }
}
....

So kannst du wunderbar die SFR beobachten...wenn soweit elektrisch alles 
passt, sollte es funktionieren..
Gast
>REGISTER 21-3: ADCON2: A/D CONTROL REGISTER 2

>bit 7 ADFM: A/D Result Format Select bit
>1 = Right justified
>0 = Left justified

Steht das richtig?


>bit 6-3 ACQT<3:0>: A/D Acquisition Time Select bits
>0000 = No delay (conversion starts immediately when GO/DONE is set)(1)
>0001 = ...

Hier genug Zeit gelassen für 10 Bit conversion / S&H Cap. charging


>bit 2-0 ADCS<2:0>: A/D Conversion Clock Select bits
>000 = FOSC/2
>001 = FOSC/8
>002 ...

Schnell genug bevor abgefragt wird?
OP
@Snowman
Blockkondensatoren um die Eingangsspannung zu glätten sind da. Am A/D 
Wandler hab ich leider noch keinen, kann ich aber mal versuchen.

@Jens
Er steht definitiv auf rechtsbündig.
Das mit den DelayZeiten werd ich auch nochmal versuchen, hatte ich aber 
glaub ich gestern schonmal getestet.

A/D Conversion Clock Select bits Hab ich noch  incht verstellt, die 
machen mir den A/D-Wandler doch aber nur langsamer oder nicht?
OP
So.

Problem behoben, es lag wirklich an der Conversion Clock. Ich hatte sie 
auf Fosc/2 und jetzt geändert auf Fosc/4. Ich wüsste jetzt aber gerne 
noch, wie lange er für die Wandlung braucht. ist das Fosc, der extern 
angelegte Takt oder der Befehlstakt? Ich vergess das leider immer 
wieder.
Gast
Marco Schulze schrieb:
> Problem behoben, es lag wirklich an der Conversion Clock. Ich hatte sie
> auf Fosc/2 und jetzt geändert auf Fosc/4. Ich wüsste jetzt aber gerne
> noch, wie lange er für die Wandlung braucht. ist das Fosc, der extern
> angelegte Takt oder der Befehlstakt? Ich vergess das leider immer
> wieder.

RTFM


21.6 Selecting the A/D Conversion
Clock
The A/D conversion time per bit is defined as TAD. The
A/D conversion requires 12 TAD per 10-bit conversion.
The source of the A/D conversion clock is software
selectable. There are eight possible options for TAD:
• 2 TOSC
• 4 TOSC
• 8 TOSC
• 16 TOSC
• 32 TOSC
• 64 TOSC
• Internal RC Oscillator
• Internal RC Oscillator/4
For correct A/D conversions, the A/D conversion clock
(TAD) must be as short as possible, but greater than the
minimum TAD (approximately 416 ns, see parameter
A11 for more information).

TABLE 21-2: TAD vs. DEVICE OPERATING FREQUENCIES

EQUATION 21-3: CONVERSION TIME FOR MULTI-CHANNEL MODES

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.