www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik T6963c Text wiederholt sich


Autor: GLCD User (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe ein Problem mit einem 240x128 Pixel LCD (T6963c)
Es wird der Test den ich Ausgebe in jeder Zeile dargestellt...

Hoffe das mit jemand helfen kann

mfg

Autor: GLCD User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
keiner eine idee?

Autor: GLCD User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
push

Autor: Thomas K. (tkroth) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du anstelle WriteString einmal WriteStringPGM versucht?

Autor: GLCD User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann ich nicht da ich einen C8051F330 MC verwende
Habe den betreffenden code eh auskommentiert

mfg

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
grins

Mag es vielleicht daran liegen, dass du das Display tatsächlich so 
initialisiert hast, dass dein Grafikbereich nur eine Buchstabenzeile 
umfasst?

Ändere mal
#define GLCD_GRAPHIC_AREA  (GLCD_PIXELS_PER_LINE / GLCD_FONT_WIDTH)

in
#define GLCD_GRAPHIC_AREA  ((GLCD_PIXELS_PER_LINE / GLCD_FONT_WIDTH) * (GLCD_NUMBER_OF_LINES / 8)

Das sollte helfen :)

Ralf

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kommando zurück, das machst du ja weiter unten... Sorry... Ausserdem 
müsste es ja auf den Text bezogen sein, nicht auf Grafik...

Hm...

Hast du geguckt, ob deine DEFINES alle das richtige Ergebnis liefern? 
Grafiken machen keine Probleme oder?

Ralf

Autor: GLCD User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bei grafik tut sich gar nichts :(

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay, nachdem ich mich mal n bisschen reingelesen hab in deinen Code, 
hätte ich mal folgende Anmerkungen:

1. Die Sourcen sind wohl ursprünglich für einen AVR geschrieben. Also 
schmeiss mal die ganzen Bit-Schiebereien etc. raus, und steuere die 
Ports direkt an. Du kannst entweder mittels #define oder durch 
sbit-Deklaration für die einzelnen Portbits entsprechende Namen 
vergeben. Also entweder statt der vorhandenen #defines
#define GLCD_CD      0
#define GLCD_RD      1
#define GLCD_WR      2
#define GLCD_CE      3
#define GLCD_RESET    4
#define GLCD_FS      5
nimmst du
#define GLCD_CD      Px_y  //Port eintragen
#define GLCD_RD      Pa_b
#define GLCD_WR      Pm_n
...

2. Wie schnell lief der AVR, von dem du die Sourcen hast? Ein SiLabs 
8051-Controller (oder generell ein 8051) hat eine andere Taktaufteilung 
als ein AVR, daher können auch einfach schon die Delays falsch sein.
Ich glaub, dass du den T6963C zu schnell ansteuerst. Für den ersten 
Versuch würd ich also einfach die Delay-Funktion vergrößern, dann siehst 
du schon mal ob es daran liegt.

Ralf

Autor: A. B. (funky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, das kann gut ein Geschwindigkeitsproblem sein.
Ich habe auf Arbeit auch ein wenig mit dem Ding gekämpft, habe aber 
meine SOurcen momentan nicht hier....deshalb nur aus dem Gedächtnis.

Ich habe mir Deinen Quelltext jetzt nicht allzugenau angesehen, aber ich 
hatte auch das Problem das Text doppelt erschien, unerklärliche 
Pixelfehler aufgetreten sind usw. und das obwohl die gleiche Libary die 
wir geschrieben hatten auf einer langsameren CPU wunderbar 
funktionierte.
Letzendlich hat folgendes zum Ziel geführt:

Ich habe im Quelltext gesehen, das du bei allen Funktionen die direkt 
auf das Display zugreifen(also Status abfragen, Kommando schreiben, 
Daten schreiben, Daten lesen) alle Leitungen gleichzeitig 
setzt/ausliest.

Schreibe dir mal Makros zum setzen und löschen aller einzelnen 
Leitungen(CE, WR, CD usw) und rufe diese nacheinander auf.
Hast Du das entsprechende Datenblatt? In dem wird beschrieben wie die 
Reihenfolge zu sein hat

Dann wird aus etwas wie:
GLCD_CTRL_PORT &= ~((1 << GLCD_WR) | (1 << GLCD_CE) | (1 << GLCD_CD));

sowas
UNSET_WR;
SET_CE;
SET_CD;  (natürlich muss die Reihenfolge stimmen)

und es sollte laufen. Das scheint ja eine fertige Libary zu sein die Du 
da benutzt, so das ich erstmal nicht davon ausgehe, das dort 
irgendwelche größeren Fehler drin sind und es prinzipiell funktionieren 
sollte

Ich denke das könnte schon zum Erfolg führen.

Autor: A. B. (funky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ps: Beachten das einige Signalleitungen invertiert sind!!! Das kann 
einen ziemlich verarschen!(spreche aus eigener Erfahrung :/)

Und hier ist das Datenblatt: 
http://www.datasheetcatalog.com/datasheets_pdf/T/6... 
falls du es noch nicht hast

Auf Seite 9 ist zum Beispiel der Ablauf für Status-Read angegeben:
/RD auf Low
dann /WR auf High
dann /CE auf Low
und dann CD auf High
dann die Datenbits setzen
und dann den Status checken.

Wenn Du das so für die 4 genannten Funktionen machst sollte es gehen

Der Controller hat übrigends noch einen Auto read/write Modus. Dann wird 
nur ein Kommando gesendet, und man kann munter seine Daten 
draufschreiben. Macht das ganze etas fixer. Aber ist erstmal nicht 
wichtig solange gar nix geht ;)

pps: alle Datenleitungen setzen und dann einfach ein langes Delay hatte 
bei mir damals nicht zu Erfolg geführt.

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.