nachdem ich den PC8591 zum laufen gebracht habe, merkte ich das die 8bit Auflösung nicht reichen. Ich wollte den MAX127 mit 12 bit Auflösung nehmen, aber das Teil ist nirgends zu bekommen (falls jemand eine Bezugsquelle hat!).
Also hab ich den MAX1238 genommen, 12 Kanäle und 12bit Auflösung.
Ich bekomme aber immer nur den Wert von einem Kanal angezeigt. Hier ist der Code mit dem ich den MAX auslese:
Code: Select all
'IIC activate
Report(0) = &H1S
Report(1) = &H1S
Ret = IowKitWrite(iowHandles(iowHandel_ID), IOW_PIPE_SPECIAL_MODE, Report(0), 8)
For I = 0 To 3
' #### MAX1238 init ####
Report(0) = &H2S ' ReportID IIC write request
Report(1) = &HC3S ' 3 bytes with IIC Start and Stop
Report(2) = &H6AS ' MAXIM1238 address byte = ADR 0, write
' MAXIM1238 setup byte
Report(3) = &H82S ' SetupByte=1, ReferenceVoltage=000, Clock=0, BIP=0, RST=1, 0
' MAXIM1238 control byte
Report(4) = &H1S Or (I * 2) ' ControlByte=0, scanning=0, channel=AN0, SGL=1
Ret = IowKitWrite(iowHandles(iowHandel_ID), IOW_PIPE_SPECIAL_MODE, Report(0), 8)
' swallow ACK report
Ret = IowKitRead(iowHandles(iowHandel_ID), IOW_PIPE_SPECIAL_MODE, Report(0), 8)
' #### MAX1238read ####
Report(0) = &H3S ' ReportID IIC read request
Report(1) = &H2S ' 1 bytes with IIC Start and Stop
Report(2) = &H6BS ' MAXIM1238 address byte = ADR 0, read
Report(3) = &H1S Or (I * 2) ' ControlByte=0, scanning=0, channel=AN0, SGL=1
Ret = IowKitWrite(iowHandles(iowHandel_ID), IOW_PIPE_SPECIAL_MODE, Report(0), 8)
' read answer containing voltage value
Ret = IowKitRead(iowHandles(iowHandel_ID), IOW_PIPE_SPECIAL_MODE, Report(0), 8)
' extract bytes of value
N = Report(2) And &HAS
N = N * 256
N = N Or Report(3)
N = N / 16
' value is 12 bit signed!
Select Case I
Case 0 : lblCH1.Text = VB6.Format(N * 5.0# / 4096.0#, "0.0000")
Case 1 : lblCH2.Text = VB6.Format(N / 5000 * 4096.0#, "0000")
Case 2 : lblCH3.Text = VB6.Format(N / 5000 * 4096.0#, "0000")
End Select
Next
'IIC deactivate
Report(0) = &H1S
Report(1) = &H0S
Hat jemand eine Idee?
Gruß
Volker