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.
Für die Nutzung von Port B hab ich nur die zwei Zeilen mit SCL und SDA angepasst.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
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







Zitieren
Lesezeichen