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
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?
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
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. ...
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..
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. ...
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.
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.
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. ...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.