Hi,
C Beispiel habe ich zwar keine parat, mag es nicht so sehr, aber ich hab das gleiche jetzt noch mal in Bascom gemacht:
Code:
'###################################################
'rnkeylcd_i2c_test5.bas
'Beispiel: zu RN-KeyLCD
'LCD und Matrixtastaturboard RN-KeyLCD wird per I2C angesteuert
'robotikhardware.de
'###################################################
'
' ------------- Hier die üblichen RN-Control Anweisungen --------------
$regfile = "m32def.dat"
$hwstack = 32
$framesize = 32
$swstack = 32
$crystal = 16000000 'Quarzfrequenz
$baud = 9600
Config Scl = Portc.0 'Ports fuer IIC-Bus
Config Sda = Portc.1
' ------------- Ende der üblichen RN-Control Anweisungen --------------
'Hauptprogramm
Const Rnkeylcd_slaveid_write = &H40 'I2C SlaveAdresse
Const Rnkeylcd_slaveid_read = &H41
Dim Z As Integer
Dim S As Byte
Wait 1 'Warte bis LCD bereit
I2cinit
I2cstart
I2cwbyte Rnkeylcd_slaveid_write
S = "a"
For Z = 1 To 60
I2cwbyte S
Next Z
I2cstop
End
Es klappt wunderbar, bei 60 Zeichen sind es genau 3 Zeilen. Der Fehler muss wohl in deiner C-Libary liegen. Ich glaube die C-Libary nutzt noch immer SOFTWARE I2C Emulation und ClockStretching wird glaube auch nicht berücksichtigt. Du solltest mal schaun ob´s nicht modernere Libary gibt, Bascom hat das jetzt schon jahrelang.
Vielleicht ist aber auch die Schleife einfach zu schnell, versuchs mal mit einer winzigen Pause in der Schleife.
Gruß Frank
Lesezeichen