Forum: Mikrocontroller und Digitale Elektronik ADC 12Bit - Byte-Interpretation


von Thorsten (Gast)


Lesenswert?

Moin,
ich habe einen AD-Wandler mit 12 Bit Auflösung. Der digitalisierte Wert 
meiner analogen Eingangsspannung wird als "2 byte" ausgegeben, 
beispielsweise 0x8e18. Hierbei handelt es sich um 16 Bit=2 Byte. Mein 
ADC unterstützt jedoch 12 Bit, wie bekomme ich demnach das korrekte 
Ergebnis bei einer VDD von 3,3V?

von Felix C. (felix_c13)


Lesenswert?

Welcher Sensor?

Thorsten schrieb:
> beispielsweise 0x8e18

Hast du dir den ausgedacht?

Das wäre 0b1000 1110 0001 1000

weder vorne noch hinten würde es Sinn machen 4 Nullen "abzuschneiden".

von Peter D. (peda)


Lesenswert?

Thorsten schrieb:
> Mein
> ADC unterstützt jedoch 12 Bit, wie bekomme ich demnach das korrekte
> Ergebnis bei einer VDD von 3,3V?

Das steht ganz genau beschrieben im Datenblatt des jeweiligen ADC.

von Thorsten (Gast)


Lesenswert?

Es handelt sich hierbei um einen AD799x. Soweit ich recherchiert habe, 
wird unter Linux mit dem i2c-tool das LSB zuerst angegeben. Würde ich 
demnach 0x8e01 erhalten, ist mein Ergebnis 01 8e. Anschließend erfolgt 
die Umwandlung in das Binärsystem und "abschneiden" der letzten 4 Bits? 
Habe ich das richtig interpretiert?

Diese sind laut Datenblatt im Control Register unbelegt, nur was 
passiert, wenn diese im Ergebnis doch gesetzt sind?

von Volker S. (vloki)


Lesenswert?

Warum was abschneiden? Die vier MSB sind immer 0?
(du bekommst immer yz 0x)-> dann passt das doch...

von Ludmilla (Gast)


Lesenswert?

Felix C. schrieb:
> weder vorne noch hinten würde es Sinn machen 4 Nullen "abzuschneiden".

0x8e18 sagt eigentlich nur aus, dass es ein Zweierkomplement ist, d.h. 
der Wert muss entsprechend intepretiert werden. Da "schneidet" man keine 
Nullen ab. Genaueres erläutert dir  - wie oben schon gesagt - das 
jeweilige Datenblatt bzw. das weltumspannende Netz.

von Ludmilla (Gast)


Angehängte Dateien:

Lesenswert?

Ups...

Datenblatt angeschaut, nix mit Zweierkomplement.

Siehe Anhang.

von Peter (Gast)


Lesenswert?

Ich habe einen AD7998, was bedeutet das für mich? Übrigens liefer das 
Conversion Register als Standard vor dem Schreib- und Lesezugriff 
0xd779.

von Peter (Gast)


Lesenswert?

Kleiner Hinweis am Rande. Mein Ergebnis vom Config-Register ist 0x0800, 
demnach 0000 0000 1000 (Default, laut Datenblatt). Wenn ich dieses 
Überschreiben möchte mit i2cset -y 1 0x21(ChipAdresse) 0x02 (Config 
Register) 0x06  erhalte ich dennoch die Default-Einstellung

von Felix C. (felix_c13)


Lesenswert?

Ludmilla schrieb:
> 0x8e18 sagt eigentlich nur aus, dass es ein Zweierkomplement ist, d.h.
> der Wert muss entsprechend intepretiert werden. Da "schneidet" man keine
> Nullen ab. Genaueres erläutert dir  - wie oben schon gesagt - das
> jeweilige Datenblatt bzw. das weltumspannende Netz.

Ludmilla schrieb:
> Ups...
>
> Datenblatt angeschaut, nix mit Zweierkomplement.

Zum Zeitpunkt meines Beitrages hat der TO noch gar nicht geschrieben um 
welchen Sensor es sich handelt. Kein Grund gleich so patzig zu werden.

Ausserdem...

Selbst wenn es ein signed 12-bit Wert gewesen wäre, wäre sicher Bit 11 
und nicht Bit 15 ausschlaggebend für das 2's Complement. Oft genug sind 
die 4 "überflüssigen" Bits ausserdem undefined.

Edit: Wären Bit 15:12 oder 3:0 Nullen gewesen wären dies immerhin ein 
Indiz auf die Ablage des 12 Bit-Wertes innerhalb der zwei Byte 
gewesen...

von Ludmilla (Gast)


Lesenswert?

Felix C. schrieb:
> Zum Zeitpunkt meines Beitrages hat der TO noch gar nicht geschrieben um
> welchen Sensor es sich handelt. Kein Grund gleich so patzig zu werden.

Wer ist denn hier patzig??? Ist heute schon wieder Mimosen-Tag?

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
Noch kein Account? Hier anmelden.