Forum: Mikrocontroller und Digitale Elektronik Displaysteuerung


von Freak5 (Gast)


Lesenswert?

www.freak5mynew.no-ip.info/Muell/DatenBlatToshibaTLX1391-BSP.gif
Das stand bei meinem Display dabei. Um die Funktion einfach mal zu
testen habe ich diese Zeilen mit einem Controller eingegeben. Als
Verzögerung habe ich zum Beispiel sowas genommen. Ich habe nur einen
Mhz Takt auf einem ATmega16. Aber wenn ich diese angegebenen
Kombinationen eingebe erscheint nichts auf dem Display. Ist meine
Verkabelung fehlerhaft oder ist die Eingabe so wie so unvollständig?

Beim einsetzen des AVRs in den Sockel erschien auf einmal eine schwarze
Linie auf dem Display. Diese verschwand aber sofort, nachdem der
controller dieses resettete.

VerzKur:
push r16
push r17


ldi r16,2
Schlkr16:

  ldi r17,255
  Schlkr17:



  dec r17
  BRNE Schlkr17

dec r16
BRNE Schlkr16

pop r17
pop r16
ret

von Freak5 (Gast)


Lesenswert?

Das mit der Linie scheint nichts zu bedeuten. Wenn ich den AVR
herausnehme und die Verbindungskabel mit der Hand berühre, dann kann
ich diese Linien sogar bewegen.
Ist der code nun unvollständig?

von Andi (Gast)


Lesenswert?

Keine Ahnung was an Deiner Verzögerungsroutine verkehrt sein soll.
Die werkelt 1551 Takte, also 1,551mS lange, inkl. Push´s und Pop´s vor
sich hin.
Möglicher weise initiallisierst Du das LCD nicht richtig oder kannst
noch nicht richtig damit umgehen.

Aber hier eine vielleicht verständlichere Warte-Routine:

.equ AVRTakt=1    ;µC-Takt in MHz
.equ WaitMS=1550  ;Wartezeit in µ-Sekunden
Wait1550uS:
 ldi r24,low(WaitMS*AVRTakt/4)   ;low-Byte der Wartezeit in r24
 ldi r25,high(WaitMS*AVRTakt/4)  ;high-Byte der Wartezeit in r25
WaituS:
  sbiw  r24,1     ;Wartezeit (r25:r24) - 1
 brne  WaituS    ;Wenn nicht 0 dann nochmal - 1
 ret

MfG
Andi

von ...HanneS... (Gast)


Lesenswert?

Sieht aus wie Controller 6963. Das wird etwas eigenwillig angesteuert.
Zuerst die Parameter, dann das Kommando. Das liegt daran, dass der
Controller einen Eingabepuffer (ähnlich Pipeline) hat.

Besorg dir mal das Datenblatt zum 6963.

...

von Freak5 (Gast)


Lesenswert?

www.freak5mynew.no-ip.info/Muell/DatenBlatToshibaTLX1391-BSP.gif
Das ist ein Ausschnitt des Datenblattes. Wenn ich diese Werte einfach
so an das Display übergebe funzt anscheinend nur der Reset, den ich
vorher erzeuge. Weiteres wird nicht angezeigt, was das Display
eigentlich tun sollte.

Ich habe übrigens nichts gegen meine Wartezeitroutine. Ich habe das nur
gepostet, damit ihr seht, wie lang die Wartezeit ist. Ich habe die
vorher nur so über den Daumen gepeilt..

von ...HanneS... (Gast)


Lesenswert?

Das ist doch das selbe Bild wie im ersten Posting. Das kenne ich
bereits. Daraus nahm ich die Vermutung, dass es sich um ein Display mit
6963-Controller handelt.

Ich könnte nun nach der von dir angegebenen Display-Bezeichnung
googeln, um mehr Infos zu bekommen. Aber warum sollte ich das tun, wenn
ich kein solches LCD habe und daher diese Infos nicht brauche?

Du könntest dir (nicht mir, ich brauche es nicht) das Datenblatt zum
6963 besorgen und lesen und versuchen zu verstehen.

Zusätzlich könntest du hier im Forum nach 6963 suchen. Da wirst du
vermutlich Beiträge finden, die dir weiterhelfen können.

...

von Freak5 (Gast)


Lesenswert?

OK. Ich meinte nur, falls gerade jemand sowas macht. Ich werde, wenn
andere Versuche jetzt auch fehlschlagen mal tiefer suchen.
Es ist nur so, dass Andi z.B. den eindruck erweckte, dass er denkt, ich
würde das Problem in meiner Verzögerung suchen.

von ...HanneS... (Gast)


Lesenswert?


von Freak5 (Gast)


Lesenswert?

www.freak5mynew.no-ip.info/Muell/DatenBlatToshibaTLX1391BSP.gif
Das habe ich jetzt versucht einzugeben. zwischen jedem Befehl habe ich
so um die 4sekunden Verzögerung gehabt um die Reaktion genauestens zu
untersuchen. Das Resultat war eine blinkende Linie, die bei jedem
Befehl aus und beim nachfolgenden wieder an ging.
Ich kann mir diese Linie nicht erklären, da man diese mit einem
einzigen Befehl eigentlich  nicht erzeugen können sollte.

Das einzigste, was ich bis jetzt zuverlässig kann, ist das Regeln der
Kontrastspannung :-/

Danke für den Link. Ich ziehe ihn mir mal rein.

von ...HanneS... (Gast)


Angehängte Dateien:

Lesenswert?

Diese Linien macht mein 6963-LCD (Anhang) grundsätzlich während des
Resets und teilweise während des Programmupdates, also immer dann, wenn
undefinierte Zustände sind. Diese Linie ist also nicht das Ergebnis
deines Programms sondern Zufall. Sowas erreichst du gelegentlich schon
durch bloßes Berühren des LCDs im ausgeschalteten Zustand.

Um das Display zum Arbeiten zu bewegen, muss es erstmal korrekt
initialisiert werden. Das erreicht man nicht nur durch Anlegen der
Spannung, sondern durch Senden einer im Datenblatt genau beschriebenen
Befehls-Sequenz. Erst danach können Zeichen ausgegeben werden oder
Pixel gesetzt/gelöscht werden.

...

von Freak5 (Gast)


Lesenswert?

Klar weiß ich. Da ich aber erst wissen wollte, ob ich die Übersetzung
µC-> Schiftregister-> Display richtig hinbekommen hatte, habe ich mich
auf das Abtippen der Beispielcodes beschränkt. Wenn jetzt bei jedem
Befehl so eine Linie kommt, dann bedeutet das also, dass entweder der
Controller keine Verbindung hat(das mit der Berührung habe ich selber
herausgefunden) oder dass ich im Programm einen Fehler gemacht habe.

Ich denke, dass ich meinen Code überdenken muss. Er ist durch die
Hardware noch komplizierter, da ich einige Bytes erst spiegeln muss
usw.

Einen Fehler habe ich schon gefunden. Die Daten lagen in r18 und ich
habe versucht die Taktleitung über r16 zu manipulieren.

Der tipp mit dem undefinierten Zustand war gut!!!

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.