-         
Ergebnis 1 bis 10 von 10

Thema: Display zeigt (ab und zu) nur auf zwei Zeilen an ?!

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    25.09.2007
    Ort
    Oldenburg
    Alter
    44
    Beiträge
    80

    Display zeigt (ab und zu) nur auf zwei Zeilen an ?!

    Anzeige

    Hallo Leute,

    an meiner Schaltung hängt ein 20*4 LCD, dieses wird von einem ATmega128 gesteuert. Um das Display schnell zu befeuern, nutze ich seit kurzem die LCD4BUSY.lib. Nach dem Umbau der Displayleitungen (vorher nicht optimal verdrahtet) zeigt das Display ab und zu nur auf der ersten und dritten Zeile an, so als wenn der Inhalt der Zeilen 2 und 4 mit auf die anderen beiden Zeilen gepackt wird. Beim nächsten Einschalten ist dann wieder alles normal.

    Wenn der Fehler auftritt, dann direkt beim Einschalten.

    Die Leitungslänge ist ca. 6cm, aber ich glaube auch nicht, daß es daran liegt, weil ja die richtigen Inhalte angezeigt werden. Lediglich zwei Zeilen sind dann und wann aus. Hat jemand eine Idee zu dem Thema ? Würde mich sehr freuen !

    /Edit/

    Nun ja, so ganz stimmt das nicht, in den Datenleitungen sind noch Angstwiderstände drin gewesen, die helfen natürlich gegen die Umladung der Leitungskapazität. Die werde ich ersteinmal verkleinern.

    Gruß,

    Alex



    $lib "lcd4busy.lib"

    Const _lcdport = Portc

    Const _lcdddr = Ddrc

    Const _lcdin = Pinc

    Const _lcd_e = 1

    Const _lcd_rw = 2

    Const _lcd_rs = 3

    Config Lcd = 20 * 4 'LCD Typ
    Alles wird gut... Gruß Alex

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.03.2006
    Ort
    WOB
    Beiträge
    630
    Es klingt sehr stark danach, als würde der Controller zwischendurch die Einstellung im Display wieder auf 2 Zeilen initialisieren!? Denn dann werden ja genau diese angezeigt, oder?

    Vielleicht ein Fehler in der LIB/Firmware, wenn die Leitungen und der Inhalt sonst ok sind.
    Gruß Thomas \/

    Alles über AVR, PIC und CAN
    blog.cc-robotics.de

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    25.09.2007
    Ort
    Oldenburg
    Alter
    44
    Beiträge
    80
    Ich habe jetzt die Angstwiderstände entfernt, aber der Fehler tritt immernoch auf.

    Er macht das aber nicht zwischendurch, sondern sofort. Das heißt, nach dem Einschalten geht es entweder richtig oder der Fehler tritt auf und bleibt.
    Alles wird gut... Gruß Alex

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.03.2006
    Ort
    WOB
    Beiträge
    630
    Dann Probleme beim Init direkt? Dass er es mal macht und mal nicht...
    Gruß Thomas \/

    Alles über AVR, PIC und CAN
    blog.cc-robotics.de

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    25.09.2007
    Ort
    Oldenburg
    Alter
    44
    Beiträge
    80
    Das schaue ich mir gerade an. Offenbar steigt die Betriebsspannung nicht sauber an, auf dem Board initialisieren schließlich 4 Controller und das Display... ich baue gerade ein paar ruhige Sekunden ein und versuche, das Problem einzukreisen.
    Alles wird gut... Gruß Alex

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    25.09.2007
    Ort
    Oldenburg
    Alter
    44
    Beiträge
    80
    Das wars nicht. Ich habe nun eine andere Variante ausprobiert und siehe da: der Fehler wird reproduzierbar, zumindest ohne an- und ausschalten der Hardware. Ich habe auf eine Taste den Befehl INITLCD gelegt - sobald also diese Taste gedrückt wird, initialisiert der M128 das Display neu. Und wenn man das macht, erhält man mal das Ergebnis, daß das Display richtig und mal falsch initialisiert wird.

    Offenbar ist also ein Fehler in der Bibliothek LCD4BUSY.lib oder aber er kommt mit der Geschwindigkeit nicht zurecht.

    Nu bin ich mit meinem Latein am Ende. Was tu ich nun ?
    Alles wird gut... Gruß Alex

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    25.09.2007
    Ort
    Oldenburg
    Alter
    44
    Beiträge
    80
    Aha- in der Library sind verschiedene Warteschleifen, welche mit 4MHz programmiert wurden - ich betreibe das Board aber mit 16, d.h. die Schleifen müssen länger. Wie kann ich nun die library ändern ?

    Z.B. hier:


    ;This routine is called when the LCD must be initialized
    [_init_lcd]
    _init_lcd:
    clr R24 ; set all portpins low
    * Out _lcdport , R24
    ser r24 ; set port pins to output
    * Out _lcdddr , R24
    Ldi R30, 28
    Ldi R31, 78
    Rcall _lcd_delay ; 20 ms delay at 4 MHz
    Alles wird gut... Gruß Alex

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.03.2006
    Ort
    WOB
    Beiträge
    630
    kann man für die Lib die Frequenz etwa nicht angeben?
    Gruß Thomas \/

    Alles über AVR, PIC und CAN
    blog.cc-robotics.de

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    25.09.2007
    Ort
    Oldenburg
    Alter
    44
    Beiträge
    80
    In der Beschreibung steht davon nichts - leider.
    Alles wird gut... Gruß Alex

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    25.09.2007
    Ort
    Oldenburg
    Alter
    44
    Beiträge
    80
    Fehler behoben. Ich habe die Lib nochmal bearbeitet und einfach die Zeitschleife verlängert, nu klappts offenbar. Ich konnte den Fehler nicht mehr provozieren.

    Danke für die Anregungen !
    Alles wird gut... Gruß Alex

Berechtigungen

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