www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD hat teilweise startprobleme


Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi.

Ich habe schon gesucht, doch nix spezielles gefunden. Ich habe ein LCD
162 von displaytec, und nutze die bibliothek von Peter Pfleury.

Leider hat mein LCD teilweise startprobleme, derart, dass nach dem
einschalten nur die obere reihe schwarze blöcke zeigt, die untere
nichts, und das display nicht weiter reagiert. erst nach kurzem (auch
mehrmaligem) Trennen der batterie gehts wieder normal.

desweiteren habe ich festgestellt, dass mein mega8 mit einem internen
takt von 4 mhz läuft, der timer allerdings fast doppelt so schnell ist
wie berechnet. kann der interne takt derart stark abweichen?

ich habe schon die delayzeiten heraufgesetzt beim lcd_init, aber es hat
sich nicht wirklich gebessert.

und nochwas:

für kontrast habe ich ein 10k poti mit 100k in reihe geschaltet, so
dass das poti nur von 0 - 0,4 V regelt, bzw. regeln sollte. denn
tatsächlich springt der contrast-eingang plötzlich. von masse auf +3 V.
dazwischen geht nix...

würde mich freuen wenn mir da einer helfen könnte!

Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dieses Problem hatte ich auch, ich hatte die delay auf 24000
hochgesetzt, dann ging es. Vorsicht größer wie 32000 geht glaube ich
nicht.

Und jetzt bitte nicht lachen: Nach einer Zeit hatte ich wieder das
selbe Problem, ich habe die delay hoch und runter geschaufelt. Später
fand ich heraus, daß ein Kabel gebrochen war. Okay, jetzt könnt Ihr
lachen.
Guter Indikator war, daß nach dem lcd_init kein weiterer Befehl
bearbeitet wurde (z.B. Usart_ausgabe), der uC blieb in lcd_init
hängen.

Gruss
Marc

Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
genau, ich hab mein delay auch auf 25000 hochgestellt, das hat schon
etwas gebracht, vielleicht geh ich noch ein bischen höher.

erstaunlich ist auch, dass, wenn nur eine zeile angezeigt wird, dann
sind da nicht 16 blöcke, wie ich dachte, sondern dann steht da die
erste zeile korrekt dargestellt, nur der kontrast ist irgendwie zu
hoch, vermutlich weil nur eine zeile dargestellt wird.

also im endeffekt verschluckt er bei mir öfter mal die zweite zeile...

Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe mal gerade im  Datenblatt geschaut, soweit ich dies sehe ist
der interne Takt 1 Mhz und nicht 4 Mhz. Aber leider weiß ich nicht
inwieweit dies mit dem lcd eine Rolle spielt. Ich weiß nur, daß der
usart mit dem internen Takt Probleme macht.

Hängt doch mal bitte den Code dran, vielleicht sieht man dann mehr.
Besonders den Teil mit dem zu schnellen Timer.

Hallo Profis, wo seid Ihr???

Gruss
Marc

Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
der interne takt ist bis auf 4 mhz erweiterbar, mit den security-bits.
der timer läuft mit einem teiler von 1024, bei 4 mhz zählt er also
genau 3906mal pro sekunde. bei einem gesamtwert von 65535 (16bit) muss
ich also mit 61628 vorladen. das dürfte dann genau eine interrupt pro
sekunde geben. gibts aber nicht...

nur mal beispielhaft hänge ich hier den code an:

        delay_ms(300);

  lcd_init(LCD_DISP_ON);

  delay_ms(2000);

  lcd_clrscr();

  lcd_puts("0 1 2 3 4 5 6 7.\n");

  delay_ms(100);

  lcd_puts("1 2 3 4 5 6 7 8.");


  TCNT1 = 61628;
  TCCR1B = 0;
  setbit(TIMSK, TOIE1);
  sei();
  setbit(TCCR1B, CS12);         // teiler 1024
  setbit(TCCR1B, CS10);

Autor: Jens123 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Marc ok lach ;) nich boess gemeint

Gruss Jens

Autor: Alexander Schmidler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, das hatte ich auch, nur waren die Startprobleme schon mal gut -
sonst war garnix da. Das Problem war letztendlich, daß 2 Datenleitungen
einen 6,8k Widerstand drin hatten. Und bei einem anderen Display ging's
so...

Autor: Mark Hämmerling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Salve,

verschiedene Displays (bzw. Controller) verschiedener Hersteller
benötigen beim Init mehr oder minder lange Delays. Ich hab da auch
schon ganz unterschiedliche Erfahrungen gemacht.
Im allgemeinen sollte man - so finde ich - auf Nummer Sicher gehen und
eher ein paar ms länger waren. Fällt im Einschaltmoment ja nicht auf.
Das mit dem Kontrast ist auch logisch. Wird nur eine Zeile angesteuert,
so adressiert der Mux nur diese 8 Pixelzeilen, anstatt über 16 laufen zu
müssen. Die Pixel werden also im gleichen Zeitabschnitt doppelt so oft
angesteuert, ergo ist der Kontrast stärker.

Gruß,
Mark

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Jan

>>erstaunlich ist auch, dass, wenn nur eine zeile angezeigt wird, dann
sind da nicht 16 blöcke, wie ich dachte, sondern dann steht da die
erste zeile korrekt dargestellt...

Das spricht dafür, dass das Init nicht richtig erkannt wird. Versuche
mal, die Init-Daten mit etwa 2ms delay doppelt zu senden. Manche LCDs
wollen das so. Und schau mal in das für dieses Display spezifische
Datenblatt, was der Hersteller für eine Init-Abfolge vorgibt.

Sven

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.