Da machst du bestimmt einen Denkfehler. Eventuell sendest Du Zeichen zum Löschen des Displays? Check nochmal dein Testprogramm, solltest du nichts finden poste es einfach mal.
Gruß Frank
Moin,
ich habe gerade festgestellt, dass mein RN-KeyLCD nur 52 Zeichen zeigt. Sende ich mehr, wird beim 53. das LCD gelöscht und die weiteren wieder am Beginn geschrieben.
Wo die 45 Zeichen stehen, also ob sie durchgängig von Anfang an geschrieben werden oder auf die 4 Zeilen verteilt, scheint dabei keine Rolle zu spielen.
Normal ist es ja auch so, dass wenn man in der vierten Zeile ist und in die 5. springt, dass sich alle Zeilen um eins nach oben verschieben und die erste gelöscht wird, aber nicht, wie es bei mir der Fall ist, das komplette Display gelöscht wird.
Ich kann jetzt leider nicht sagen, ob das von Anfang an so war, oder es erst mit der Zeit eingestellt hat.
Jemand 'ne Idee, an was das liegen kann?
Danke
Da machst du bestimmt einen Denkfehler. Eventuell sendest Du Zeichen zum Löschen des Displays? Check nochmal dein Testprogramm, solltest du nichts finden poste es einfach mal.
Gruß Frank
Also das Programm sieht so aus:
Es wird die I2C Bibliothek von Peter Fleury verwendet.Code:int main() { wait(2500); init_i2c(); uint8_t z = 0; for(z = 0; z < 60; z++) { display_print_char('a'); } while(1); return 0; } void display_print_char(uint8_t zeichen) { i2c_start(DISPLAY + I2C_WRITE); i2c_write(zeichen); i2c_stop(); }
Auf dem Display wird lediglich 5 mal der Buchstabe 'a' angezeigt.
Hi,
C Beispiel habe ich zwar keine parat, mag es nicht so sehr, aber ich hab das gleiche jetzt noch mal in Bascom gemacht:
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.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
Vielleicht ist aber auch die Schleife einfach zu schnell, versuchs mal mit einer winzigen Pause in der Schleife.
Gruß Frank
Hi,
also an der Geschwindigkeit liegts wohl nicht, nach jedem Zeichen habe ich eine Pause von 10ms eingefügt, kein Erfolg.
Was ich jetzt noch festgestellt habe ist, dass durch jeden Befehl, das LCD zu löschen, 1 Zeichen weniger Platz ist.
Kann mir jemand eine I2C Bibliothek für C empfehlen?
Danke
Am besten eine Libary die TWI-Register nutzt.
Übrigens du sendest bei jedem Zeichen START und STOP. Es ist günstiger wenn du nur einmal START vor der Schleife und einmal STOP nach der Schleife sendest.
Lesezeichen