Nach Suche in Internet, bin ich auf deinen sehr hilfreichen Code
gestoßen.
Nach einer Anpassung (siehe unten) an mein selbstgestricktes Zielsystem,
lief alles zu meiner vollsten Zufriedenheit.
Übrigens, eine Probeverdrahtung auf z.B. $52 liefert auch bei mir nur
$FFFFFFFF ...., liegt hier vielleicht der Fehler ?
'-----------------------------------------------------------------------
------------
' Copyright 2010 - Bernd Hübener
' IIC-AD.BAS
' Zielsystem: Basic-Box
' Aufgabe: Eingangsspannung an Pin 0 des MAX127 Ausgabe
' in der Form x.yyy, Spannungsbereich 0-5 V
'-----------------------------------------------------------------------
------------
$regfile = "m8535.dat" ' ATMEGA8535
$crystal = 20000000
$baud = 9600
'Declare variables
Dim Msb As Byte
Dim Lsb As Byte
Dim Dummy As String * 20
Dim L As Single , Lu As Single
' Konfiguration für I2C
Config Sda = Portc.7
Config Scl = Portc.6
' Konfiguration LCD
Config Lcdpin = Pin , E = Portd.2 , Rs = Portd.3 , Db4 = Portd.7 , Db5 =
Portd.6 , Db6 = Portd.5 , Db7 = Portd.4
Config Lcd = 20 * 4
' Konstanten für MAX127
Const Adr_w = &B01010000
Const Adr_r = &B01010001
Const Adr_ctl = &B10000000 ' Kanal 0
Portc = 63 ' 63
entspricht 001111111, PortC 6+7 als Ausgänge
I2cinit ' kann entfallen
(!?)
'Initlcd ' wird vom Parallelsystem nach Reset
übernommem
Cls
Do
I2cstart
I2cwbyte Adr_w
I2cwbyte Adr_ctl ' Modus
einstellen
I2cstop
I2cstart
I2cwbyte Adr_r
I2crbyte Msb , Ack ' MSB lesen
I2crbyte Lsb , Nack ' LSB lesen
I2cstop
L = Msb * 16 ' schiebe um
4 Bit nach links und konvertiere nach Single
Lu = Lsb / 16 ' schiebe um
4 bit nach rechts und konvertiere nach Single
L = L + Lu ' "MSB" +
"LSB" stellenrichtig addieren
L = L * 0.0012208 ' "eichen"
Dummy = Str(l)
Dummy = Left(dummy , 5) ' auf
sinnvolle Länge bringen
Locate 1 , 1 : Lcd Dummy ' Ausgabe
Waitms 500
Loop
End