Forum: Mikrocontroller und Digitale Elektronik Seltsamer Fehler bei Grafik Display


von Marco M. (marco1987)


Lesenswert?

Hi Leute,


habe seit einer Weilee ein 128*64 Grafik Display im einsatz.Ansteuern 
tue ich ihn mit einem Atmega16@4 mhz

Zum Problem:

Es hate ewige wunderbar funktionieer der Text wurde über das gesamte 
Display ausgegeben, seit gestern funktioniert das nicht mehr er gibt den 
Text nur noch auf der linken Seite und alles untereinander aus. Soweit 
ich weiss ist so ein GLCD auf 2 eChips unterteilt (rechter und linker)
nun dachte ich meir das vllt ein Draht(Chip Select 1 bzw2) abgegangen 
ist, aber dem ist nicht so.

Habt ihr eine Idee


Code
1
#include <inttypes.h>
2
3
#include <avr/io.h>
4
#include <avr/pgmspace.h>
5
#include <util/delay.h>
6
#include <stdlib.h>
7
#include <stdio.h>
8
#include "ks0108.h"
9
#include "font12x16.h"
10
#include "font6x8.h"
11
12
13
14
const char pgmString[] PROGMEM = "http://www.apeTech.de\n\naffe.t@gmx.de";
15
16
int main(void) {
17
  volatile uint16_t i;
18
  struct font largeFont, smallFont;
19
  
20
  for(i=0; i<15000; i++);
21
  
22
  
23
  largeFont.width = FONT12X16_WIDTH;
24
  largeFont.height = FONT12X16_HEIGHT;
25
  largeFont.charData = Font12x16;
26
  
27
  smallFont.width = FONT6X8_WIDTH;
28
  smallFont.height = FONT6X8_HEIGHT;
29
  smallFont.charData = Font6x8;
30
  
31
  ks0108Init();
32
  ks0108GotoXY(0,4);
33
  ks0108PutString("Hallo Welt!", largeFont);
34
  ks0108GotoXY(0,28);
35
  ks0108PutStringP(pgmString, smallFont);
36
37
  while(1);
38
}

von holger (Gast)


Lesenswert?

>Soweit ich weiss ist so ein GLCD auf 2 eChips unterteilt (rechter und linker)
>nun dachte ich meir das vllt ein Draht(Chip Select 1 bzw2) abgegangen
>ist, aber dem ist nicht so.

Wahrscheinlich hast du in deiner Software den Chip Select 2
irgendwie noch wo anders benutzt ;) Oder der ist doch nicht
so richtig angeschlossen.

von Marco M. (marco1987)


Lesenswert?

Habe das aber mit einem Durchgangsprüfer getestet.

Und in der Software woanders benutzt...hmm hab ja den Code gepostet
....e

von holger (Gast)


Lesenswert?

>seit gestern funktioniert das nicht mehr er gibt den
>Text nur noch auf der linken Seite und alles untereinander aus.

Was hast du denn seit gestern geändert ?
Nimm doch mal die Version von vorgestern
und probier damit den korrekten Anschluss des LCD aus.

von Gerry L. (Gast)


Lesenswert?

Wenn Du nichts an der Software geändert hast und einen Hardware Defekt 
ausschliessen kannst vermute ich mal das Dein Display einen Reset nötig 
hat.

Ab und zu sind bei mir die Zeilen (links höher als rechts) auch 
unterschiedlich dann wird halt ein Display Reset gemacht und gut ist. 
Bei einige Exemplaren reicht es wenn für 5 min die Spannung unterbrochen 
wird.

Allerdings erscheint mir komisch das der komplette Text, der vorher auf 
die gesamte Länge gezeigt wurde, nur noch auf einer Seite angezeigt 
wird. Hört sich eher nach einem Softwarefehler an.

Gruß

von Marco M. (marco1987)


Lesenswert?

Hmmm also habe jetzt die versorgung abgeklemmt, habe tatsächlich 1 zu 1 
die software hier ausm Forum genommen. und das Display zeigt auch auf 
der rechten seite nichts an wenn ich ihm mit gotoxy anweisung sage. dae 
er da etwas ausgeben soll.

MFG

von Marco M. (marco1987)


Lesenswert?

Hmm ne ein Reset hat auch nichts gebracht Fehler bleibt.

von Marco M. (marco1987)


Angehängte Dateien:

Lesenswert?

und manchmal zeigt das lcd auch so ein blödsinn an..

deutet das auf hardware defekt?

von Gerry L. (Gast)


Lesenswert?

Nein, das ist genau das was ich meine die Zeilen sind verschoben.
Wie und wo machst Du den Reset ?

von Gerry L. (Gast)


Lesenswert?

Ach ja wozu soll die Schleife gut sein?

>for(i=0; i<15000; i++);

von Marco M. (marco1987)


Lesenswert?

Gerry L. wrote:
> Ach ja wozu soll die Schleife gut sein?
>
>>for(i=0; i<15000; i++);

Das hab ich hier aus dem Forum 1 zu1 übernommen:-)

aber hast recht die bringt nicht sehr viel^^

Also den Reset:


Ich habe 5 V + 10 K an den Reset Pin des LCD oder meinst du den Software 
Reset, dazu könnte ich meine Routine auch posten.

Aber wie gesagt das komische ist ja das es genau mit der SOftware ewig 
funktioniert hat.

MFG

von B. J. (bjue)


Lesenswert?

Hallo,
das sieht nach "fliegendem" Aufbau aus. Ich hatte mal ähnliche Probleme 
mit solch einem Aufbau, also relativ langen Leitungen zum Display hin. 
Als ich mit einem Oszi die Chip Select Leitungen kontrolliert habe, war 
plötzlich alles in Ordnung. Daraufhin habe ich jeweils zwischen den 
Chipselect Leitungen und Masse einen Pulldown Widerstand (ca. 10kOhm) 
und parallel dazu einen kleinen Kondensator (ich glaube so um die 50pF) 
direkt am Display angelötet und schon ging es.
Ausserdem ist es natürlich wichtig, die Logik der Chip Select Leitungen 
richtig anzusteuern. Es gibt da High-aktive und Low-aktive Displaytypen! 
Ich habe da mal zeitraubende Erfahrungen machen müssen, als ich ein 
kleines Display gegen ein gösseres ausgetauscht habe: Trotz richtiger 
Anschlussbelegung wollte es nicht, weil ich die umgekehrte Logik der 
Chip Select Leitungen nicht gleich entdeckt hatte.

von Marco M. (marco1987)


Lesenswert?

B. Jue wrote:
>Daraufhin habe ich jeweils zwischen den
> Chipselect Leitungen und Masse einen Pulldown Widerstand (ca. 10kOhm)
> und parallel dazu einen kleinen Kondensator (ich glaube so um die 50pF)
> direkt am Display angelötet und schon ging es.

Ok dies habe ich jetzt umgesetzt die störungen sind nicht mehr da!

aber er zeigt immernoch nicht die rechte seite des lcds an. an falscher 
ansteuerung der logik kann es eigentlich auch nicht liegen, ich habe ja 
nichts verändert und es ging ja vorher.

Habt ihr noch einen Rat?

MFG

von Marco M. (marco1987)


Lesenswert?

Niemand :-)   ?

von Gerry L. (Gast)


Lesenswert?

Nochmal zum Reset am Display.

Der Reset Pin ist dauerhaft an VCC?
Für einen Reset muss dieser kurz gegen GND vorher nat. VCC trennen.
Kann man schön mit einem Pin vom MC machen.

Zu Fehlereingrenzung solltest Du schrittweise vorgehen.

1. Alle Leitungen doppelt und dreifach prüfen
2. Die Software auf die wirklich nötigsten Funktionen abspecken.
3. Vorm Kompilieren alle vom GCC/AVR Studio erstellten Files löschen
4. usw. usw.
5. Display tauschen.

Wenn wie Du sagts der Fehler von heut auf morgen aufgetreten ist kann es 
durchaus auch ein Hardware defekt sein.

Da die Hilfestellungen die bisher nicht geholfen haben ist das der 
einzige Weg den DU gehen kannst.Erst wenn der Fehler genauer eingegrenzt 
ist kann die hier weitergeholfen werden.

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.