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