Page 1 of 1

PostPosted: Fri Jan 22, 2010 12:00 am
by ufchen
Hallo,
ich bin wieder mit meinen Lehrbriefen beschäftigt und bin in Lehrbrief 3 beim A/D Wandler wo sich bei der Maskierung der einzelnen Bits mir eine Frage stellt (das eigentliche maskieren stellt kein Problem dar)

Mein Problem bezieht sich auf das SFR ADCON,
ich starte die Wandlung mit dem setzten der jewaligen Bits, stelle die Betriebsart ein ob Analog oder Digital I/O und setzte die Bits für den jewaligen Eingang mit welchem ich messen will usw,soweit so gut,

aber, wenn die Wandlung beendet ist muß ich warten bis das ADEOC
eine 1 ausgibt, was ist mit den anderen Bits von ADCON werden die nach der Wandlung wieder zurück auf 0 gesetzt, wie z.b. SCH0-SCH2(Grund meiner frage ist die Rechnung auf Seite 101 oben im Lehrbrief 3)

Danke Uwe

PostPosted: Sat Jan 23, 2010 12:00 am
by ufchen
Hallo ich sitze immernoch dran,

Habe eine zweite Frage,
sie bezieht sich auf den Vergleich "ist Grenzwert überschritten,dann"

in der Lösung steht folgendes
if (wert > 819) summer = 0;
wie kommt man auf den Wert 819 der ja für die 2,0V steht?

Danke für eure Hilfe
Uwe

PostPosted: Sun Jan 24, 2010 12:00 am
by kletor
Hallo, Uwe

Hier ein bisschen Unterstützung.

1. Nach der Auswertung weiter in der schleife nach oben dort
wird
dann zurückgesetzt, in der while()
Programmteil: Zeile 90 … 105.

2. Wir haben eine Referenzspannung U_ref = 2.5 V
Und eine 10-Bit Auflösung das sind 1024 teil Spannungen,
der 2V / Teil-Spannung = 819 teile
(für 2.2V / 2.44 mV = 902 teile)
Programmteil: Zeile 53 … 59

Programm im Anhang.

Grus Georg

PostPosted: Sun Jan 24, 2010 12:00 am
by ufchen
Ich danke dir an diese Rechnung hatte ich nicht mehr gedacht,
jetzt kann ich endlich weiter machen!

schönen rest Sonntag noch
Gruß Uwe

PostPosted: Sun Jan 06, 2013 12:00 am
by echris
Hallo zusammen,

ich würde das Thema gerne nochmal aufgreifen.

Und zwar geht es mir speziell um die Auflösung des A/D-Wandlers des CC03ers.

In der oben genannten C-Datei "ADCON_1" wird die Auflösung von 10 Bit angenommen.

Anhand des Datenblatt des CC0ers ist die "Standard conversion" 8 Bit und die "Precision conversion" 10 Bit. Laut Datenblatt muss im ADCON-Register das PSIDLE-bit gesetzt werden, um den A/D-Wandler mit einer Auflösung von 10 Bit zu betreiben.

Leider finde ich diese Einstellung, also das Setzen des PSIDLE-Bit, nicht in der oben genannten C-Datei.

Verstehe ich nun das Datenblatt falsch, oder übersehe ich einen Programmcode im Quelltext.

Wünsche noch einen schönen Sonntag,

Grüße
eChris

PostPosted: Sun Jan 06, 2013 12:00 am
by rai
Hi,

zuerstmal zum PSIDLE Flag:
Wenn dieses gesetzt ist wird der µController während der A/D Wandlung angehalten (kein weiterer Programmablauf) um internes Rauschen zu minimieren.
Um den µC zu reaktivieren muss mit einem Interrupt gearbeitet werden.
--> Effekt: Das Ergebnis der A/D wandlung wird genauer

Prinzipiell arbeitet der A/D wandler jedoch immer mit 10Bit. Der Anwender kann dann entscheiden ob er nur das 8Bit Register ausließt oder die zwei weiteren Bit ebenfalls hinzunimmt.

Wenn du das 10Bit Ergebnis nimmst und ohne PSIDLE gearbeitet hast, dann ist eben ein bisschen Rauschen im Ergebnis mit drin.

Für alles was im Rahmen des Fernlehrgangs gemacht wird ist es jedoch "wurscht" ob du 8, 10 oder 10+PSIDLE nimmst.
Auflösung bei 8 Bit: 0,0097V (2,5/256)
Auflösung bei 10 Bit: 0,0024V (2,5/1024)
Fazit: 8 Bit reichen meistens sowieso aus. Da hast du meistens größere Schwankungen durch Temperaturveränderungen in deiner Schaltung drin.

Rai

PostPosted: Sun Jan 06, 2013 12:00 am
by echris
Vielen Dank für deine schnelle Antwort.

Ich verstehe nun jedoch noch nicht ganz, wie die beiden Ergebnisregister ADDH und ADDL beschrieben werden ?

Wenn mein A/D-Wandler im Prinzip immer mit einer 10-Bit Auflösung arbeitet, müsste doch immer im ADDL mein LSB stehen, oder ?

Anschließend würde ich meinen Messwert wie folgt auswerten:

// Messwert aus den Registern ADDH und ADDL holen

messwert = (ADDH<<2)+(ADDL & 0x03);

// Spannung ausrechnen (Wandlungsergebnis * Uref / 2^10)

spannung = messwert*(2.5/1024.0);


Grüße
eChris

PostPosted: Mon Jan 21, 2013 12:00 am
by rai
Hi,

ADDH und ADDL werden vom µController nach erfolgreicher AD Wandlung beschrieben.

Ja, in ADDL stehen immer die beiden LSB drin, der Rest ist "Datenschrott".

Der Code stimmt!

Rai