Hi!
Hab ein Problem mit I2C. Wenn ich den C Port mit C0 und C1 für SCL und SDA nehme funktioniert mein Programm nicht mehr. Andere Ports, wie z.B. B3 und B4 funktionieren. Es ist egal welches I2C Gerät ich da anschliesse.
Hab mal ein Test Programm für das LCD02 geschrieben.
Code:
'********************************
'* LCD Testprogramm I2C Version *
'********************************
Const Lcd_adr = &HC6 'I2C SlaveAdresse von LCD02
Const Ref = 5 / 1023 'Für Batteriespannungsberechnung
Dim I As Byte 'Zählvariable für For-Schleife
Dim S As String * 80 'max Anzahl Zeichen. 20*4 Zeichen auf LCD
Dim A As Byte 'Länge des benutzten Strings ermitteln
Dim Volt As Single
Dim B As Byte 'Länge des restlichen Strings ermitteln
Declare Sub Lcd_clrscr()
Declare Sub Batteriespannung()
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600
Config Adc = Single , Prescaler = Auto
Config Scl = Portc.0
Config Sda = Portc.1
Sound Portd.7 , 400 , 450 'BEEP
Sound Portd.7 , 400 , 250 'BEEP
Sound Portd.7 , 400 , 450
Print "-------LCD TEST---------"
Print
I2cinit
Waitms 500
Call Lcd_clrscr
Call Batteriespannung
A = Len(s)
For I = 1 To A
I2cstart
I2cwbyte Lcd_adr
I2cwbyte 0
I2cwbyte S
I2cstop
B = A - I
S = Right(s , B )
Next I
End
'---------------------SUB's------------------------------'
Sub Lcd_clrscr()
I2cstart
I2cwbyte Lcd_adr
I2cwbyte 0 'Command Register
I2cwbyte 12 'Command ClrScr
I2cstop
End Sub
Sub Batteriespannung()
Local W As Word
Start Adc
W = Getadc(6)
Volt = W * Ref
Volt = Volt * 5.2941
S = Str(volt)
End Sub
Für die Nutzung von Port B hab ich nur die zwei Zeilen mit SCL und SDA angepasst.
Wie schon gesagt, mit SCL auf B.3 und SDA auf B4 funktioniert alles, nur nicht mit C0 und C1.
Kann ein kompletter Port abrauchen, ohne dass der Rest beeinflusst wird?
Oder steig ich gerade nicht durch?
Kann mir jemand weiterhelfen?
Danke
Uli
Lesezeichen