Forum: Mikrocontroller und Digitale Elektronik LCD hat teilweise startprobleme


von Jan (Gast)


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!

von Marc (Gast)


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

von Jan (Gast)


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...

von Marc (Gast)


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

von Jan (Gast)


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);

von Jens123 (Gast)


Lesenswert?

@Marc ok lach ;) nich boess gemeint

Gruss Jens

von Alexander Schmidler (Gast)


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...

von Mark Hämmerling (Gast)


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

von Sven (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.