-         
Ergebnis 1 bis 6 von 6

Thema: RN-KeyLCD zeigt nur 52 Zeichen

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    28.04.2004
    Ort
    Himmelstadt
    Alter
    30
    Beiträge
    80

    RN-KeyLCD zeigt nur 52 Zeichen

    Anzeige

    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

  2. #2
    Administrator Robotik Visionär Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    5.015
    Blog-Einträge
    1
    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

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    28.04.2004
    Ort
    Himmelstadt
    Alter
    30
    Beiträge
    80
    Also das Programm sieht so aus:
    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();
    }
    Es wird die I2C Bibliothek von Peter Fleury verwendet.

    Auf dem Display wird lediglich 5 mal der Buchstabe 'a' angezeigt.

  4. #4
    Administrator Robotik Visionär Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    5.015
    Blog-Einträge
    1
    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

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    28.04.2004
    Ort
    Himmelstadt
    Alter
    30
    Beiträge
    80
    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

  6. #6
    Administrator Robotik Visionär Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    5.015
    Blog-Einträge
    1
    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.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •