Hallo zusammen,
ich komm leider nicht weiter beim korrekten Auslesen des MCP4821
AD-Wandlers.
Ich würde den Chip gerne mit 12-bit Auflösung auslesen.
Die einzelnen Bytes ergeben sinnvolle Werte bei der Ausgabe, also
zumindest data.upper und data.middle ändern sich in Abhängigkeit der
angelegten Spannung. Aber bei der Berechnung von voltage kommen sehr
konmische Werte raus.
Anscheinend sind die ausgelesenen Bytes noch zu maskieren, sie
Ausschnitt aus den Datenblatt anbei. Aber die korrekte Anwendung gelingt
mir leider nicht.
Hat vielleicht jmd. Erfahrungen damit?
Danke schon mal
Michael
1 | do
|
2 | {
|
3 | i2c_start();
|
4 | i2c_write(deviceAddressRead);
|
5 |
|
6 | data.upper = i2c_read(1);
|
7 | data.middle = i2c_read(1);
|
8 | data.lower = i2c_read(1);
|
9 | configuration.byte = i2c_read(0);
|
10 |
|
11 | i2c_stop();
|
12 | }
|
13 | while (configuration.ReadyBit == MCP3421_VALUE_IS_NOT_UPDATED);
|
14 |
|
15 |
|
16 | voltage = data.upper*65536 + data.middle*256 + data.lower;
|