www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MAX1238 I2C Probleme


Autor: Volker Knobe (prefekt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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:
'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

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ß

Autor: Martin J. (bluematrix) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
den Code in "C" findest du
hier: Beitrag "12 Bit ADC Board - I2C TWI"

oder hier: 
http://www.jtronics.de/elektronik-boards/adc-12bit...

Grüße Martin

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.