Hallo,
ich benötige einen ADC mit 12bit und I2C. Zuerst hatte ich den MAX127
ins Auge gefaßt, aber der ist nirgends lieferbar (falls jemand eine
Bezugsquelle kennt!)
Ich hab mich dann für den MAX1238 entschieden, 12 Kanäle und 12bit.
Allerdings habe ich das Problem, das ich immer nur einen Kanal auslesen
kann, keine Ahnung welchen.
Hier ist der Code zum Auslesen in VB für den IOW24 von codemercs:
1 | 'IIC activate
|
2 | Report(0) = &H1S
|
3 | Report(1) = &H1S
|
4 | Ret = IowKitWrite(iowHandles(iowHandel_ID), IOW_PIPE_SPECIAL_MODE, Report(0), 8)
|
5 |
|
6 | For I = 0 To 3
|
7 | ' #### MAX1238 init ####
|
8 | Report(0) = &H2S ' ReportID IIC write request
|
9 | Report(1) = &HC3S ' 3 bytes with IIC Start and Stop
|
10 | Report(2) = &H6AS ' MAXIM1238 address byte = ADR 0, write
|
11 | ' MAXIM1238 setup byte
|
12 | Report(3) = &H82S ' SetupByte=1, ReferenceVoltage=000, Clock=0, BIP=0, RST=1, 0
|
13 | ' MAXIM1238 control byte
|
14 | Report(4) = &H1S Or (I * 2) ' ControlByte=0, scanning=0, channel=AN0, SGL=1
|
15 | Ret = IowKitWrite(iowHandles(iowHandel_ID), IOW_PIPE_SPECIAL_MODE, Report(0), 8)
|
16 | ' swallow ACK report
|
17 | Ret = IowKitRead(iowHandles(iowHandel_ID), IOW_PIPE_SPECIAL_MODE, Report(0), 8)
|
18 |
|
19 | ' #### MAX1238read ####
|
20 | Report(0) = &H3S ' ReportID IIC read request
|
21 | Report(1) = &H2S ' 1 bytes with IIC Start and Stop
|
22 | Report(2) = &H6BS ' MAXIM1238 address byte = ADR 0, read
|
23 | Report(3) = &H1S Or (I * 2) ' ControlByte=0, scanning=0, channel=AN0, SGL=1
|
24 | Ret = IowKitWrite(iowHandles(iowHandel_ID), IOW_PIPE_SPECIAL_MODE, Report(0), 8)
|
25 | ' read answer containing voltage value
|
26 | Ret = IowKitRead(iowHandles(iowHandel_ID), IOW_PIPE_SPECIAL_MODE, Report(0), 8)
|
27 |
|
28 | ' extract bytes of value
|
29 | N = Report(2) And &HAS
|
30 | N = N * 256
|
31 | N = N Or Report(3)
|
32 | N = N / 16
|
33 | ' value is 12 bit signed!
|
34 | Select Case I
|
35 | Case 0 : lblCH1.Text = VB6.Format(N * 5.0# / 4096.0#, "0.0000")
|
36 | Case 1 : lblCH2.Text = VB6.Format(N / 5000 * 4096.0#, "0000")
|
37 | Case 2 : lblCH3.Text = VB6.Format(N / 5000 * 4096.0#, "0000")
|
38 | End Select
|
39 |
|
40 | Next
|
41 | 'IIC deactivate
|
42 | Report(0) = &H1S
|
43 | Report(1) = &H0S
|
Die Aufbereitung des 12bit Wertes stimmt auch noch nicht.
Jemand eine Idee, warum das Teil nur einen Kanal ausspuckt oder hat
jemand einen funktionierenden Beispielcode?
Gruß