www.mikrocontroller.net

Forum: Compiler & IDEs LCD Zeichenfehler mit pfleury lib


Autor: tacklemoe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich nutze die Library von Peter Fleury und den ATmega16 um mein 2x40
Display anzusteuern.
Das klappt grundsätzlich auch, allerdings hab ich das Problem das
manchmal falsche Zeichen dargestellt werden oder nur ein Wirrwar. Ab
und zu wird aber auch alles richtig dargestellt. ein lcd_clrscr();
klappt übrigens nicht, ich weiß net warum.

Nun ist die Frage woran das liegt, kann mir da jemand weiterhelfen?

Gruß und danke schonmal
tacklemoe

Autor: Rodrigez (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

die Fleurydateien kann ich überhaupt nicht empfehlen. Bei der LCD.c ist
schlecht, dass sie gar nicht funktioniert und zum anderen zu lang ist.
Das geht auch kürzer. Wer will denn schon eine 8 und eine 4 bit Version
zur Ansteuerung in einer Datei haben.

Ich komme auf weniger als ein Drittel vom Umfang her und lese auch das
Busyflag aus.

Rodrigez

Autor: Peter Fleury (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Rodrigez
Zwischen 4bit Mode und 8bit Mode wird durch #defines während
Kompilation ausgewählt. Es wird also kein unnötiger Code erzeugt.

Autor: tacklemoe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat dann jemand noch andere libs zum austesten?

@Peter
Was ich net ganz verstehe: Dein lib läuft bei mir soweit ohne Probleme
mit dem atmega16, testweise angeschlossene at90s8515 und atmega8535
geben auf dem Display keinen Mucks von sich.
Und wie angesprochen klappen die funktionen wie z.B. clrscr() nicht.
Bin am verzweifeln und um jede Hilfe dankbar :)

Gruß
tacklemoe

Autor: Peter Fleury (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@tacklemoe
Welchen Quarz verwendest du bei at90s8515 und atmega8535 ?
Ich habe die Timings meiner Lib für 4 Mhz optimiert.

Autor: tacklemoe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab's mit verschiedenen Takten probiert, von 1 - 8 Mhz.
Bei 4 Mhz lief's am besten, aber auch da gibt's Zeichenfehler.

Autor: Peter Fleury (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie lang ist das Kabel zwischen AVR und LCD ?

Autor: tacklemoe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm, gesamtgesehen schätze ich mal ca. 50 cm

Autor: Peter Fleury (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja das ist aber doch sehr lang. Da wurdert es mich nicht dass du
Störungen hast. Mein Kabel ist etwa 12cm lang.
Versuche es mit einem kürzeren Kabel.

Autor: tacklemoe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm, weißt du ne maximallänge oder so?
War halt so ein altes IDE Kabel das ich für den Zweck mißbraucht hab ;)
Aber ich werd's mal demnächst kürzen und testen, danke mal für den
Tipp :)

Autor: tacklemoe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter:
Hab jetzt die Kabel gekürzt und klappt auch fast alles, nur Sachen wie
der clrscr() leider immer noch net. Die Zeichen werden aber immerhin
schon korrekt dargestellt :)

Gruß und danke
tacklemoe

Autor: Reini (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Frohe Weihnachten allerseits,
kann es sein, das die Funktion clrscr() nicht funktioniert, da die
Reihenfolge in der lcd.h nicht die selbe ist wie in der lcd.c ?

Beispiel:

lcd.h
extern ... function1(...)
extern ... function2(...)
extern ... function3(...)

lcd.c
... function1 (...)
{ x y z}

... function2 (...)
{ w u v }

... function3 (...)
{ w u v }


Änder einfach mal die Reihenfolge der Aufzählung in der LCD.h und
probier es aus oder schreib einfach mal lcd_command(0x01); statt der
Funktion.
Reini

Autor: tacklemoe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ne, das klappt leider auch net :(
Das einzige was den Screen zuverlässig löscht ist ein
lcd_init(LCD_DISP_ON);
und damit auch nicht ganz im sinne des erfinders ;)

Autor: Reini (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@tacklemo:

Eine Idee hätte ich noch, die sogenannte "execution time" beträgt bei
meinem Display für diesen Befehl 1,64ms.
Füg doch einfach doch ein delay von 2ms ein am Ende der CMD-write
Funktion(siehe unten)
Reini

else {    /* write instruction (RS=0, RW=0) */

       /* output high nibble first */
       LCD_DATA_PORT = (data>>4)&0x0F;
       lcd_e_toggle();

       /* output low nibble */
       LCD_DATA_PORT = data&0x0F;
       lcd_e_toggle();
     delay(2000);

Autor: Peter Fleury (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tacklemo hat mit per email mitgeteilt dass ein zusätzlich hinzugefügtes
lcd_waitbusy() vor lcd_command() die Probleme bei seinem Display
behoben hat.

Offenbar hat tacklemo ein LCD-Display erwischt das einen nicht 100%
kompatiblen Display-Controller beinhaltet.

Autor: tacklemoe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm, ja muss tatsächlich am Display Controller liegen. Ich werd mal
gucken ob ich ein anders herkrieg zum testen.
An der Lib liegt's wohl nicht, also danke Peter für die Hilfe und
deine coole lib :)
Achso ich hätte einen Verbesserungsvorschlag:
auf www.jalcd.de unter "Schematics" ist zu sehen wie man die
Hintergrundbeleuchtung per Software steuern kann.
Vielleicht kannst du da ja in deine lib eine Funktion zufügen die im IO
Mode auch die Hintergrundbeleuchtung steuert (is ganz einfach aufegbaut
und braucht nur eine weitere Leitung).

Gruß und thanks
tacklemoe

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.