Hallo Leute,
Ich versuche mein Display mit S1D13700 Controller zum laufen zu bringen,
allerdings schaffe ich es nicht eine Anzeige auf dem Display zu
bekommen.
Das Testprogramm lässt sich kompilieren und ist für mich schlüssig, ich
hoffe ihr könnt mir einen Tipp geben was ich vergessen habe oder woran
es liegen kann.
Angehängt findet ihr mein Programm und den Schaltplan.
µC ist ein Atmega6450
Display ist das Displaytech 240320HL-FC-BW-3 (S1D13700)
programmieren tu ich mit AVR Studio 5 über JTAG
Vielen Dank schon mal für eure Hilfe
Attila
Hi Attila,
hab hier leider grad meine Code nicht zur Verfügung aber mir ist etwas
aufgefallen.
Zum einen wenn dein Atmega mit 16MHZ läuft ist es bei den Display Read /
Write eventuell nötig den Datenübernahme Puls mit einem kleinen Delay
von ein paar nops zu versehen.
Zweitens scheinst du das Display in 8080 Mode anzusteuern das Display
hat
per Default anscheinend aber den 6800 Bus Mode.
Ich beziehe mich auf dieses Datenblatt:
http://docs-europe.electrocomponents.com/webdocs/07ed/0900766b807ed6b9.pdf
Prüfe das doch einmal nach.
MfG Kai
Hallo Kai,
Viel Danke für die schnelle Antwort.
Leider kenne ich mich nicht so gut aus als das ich die genauen abläufe
des Displaycontrollers verstehen würde.
Könntest du mir genauer sagen wo ich etwa ein Delay einbauen sollte?
Wie kann ich den Display Interface Mode ändern, wenn überhaupt möglich?
Das mit dem Delay ist in der sed1335 gedacht bei den WriteData und
WriteCommand
SED1335_CONTROL_PORT &= ~(SED1335_CS);
SED1335_CONTROL_PORT &= ~(SED1335_A0 | SED1335_WR);
//hier delay einfügen
SED1335_CONTROL_PORT |= (SED1335_CS);
SED1335_CONTROL_PORT |= (SED1335_A0 | SED1335_WR);
Zum anderen findet man im LCD Datenblatt irgendwo ne Seite mit Jumper
Einstellungen. (Seite 9 Options for host bus interface)
Ansonsten im Datenblatt des S1d13700 nachschauen wie das 6800
Businterface funktioniert.
Das Delay hab ich eingebaut, ändert aber nichts (da das Display
scheinbar ja im falschen Modus läuft)
Ah ok, hab das mit den "Jumpern" jetzt verstanden, hatte keine auf dem
Display gesehen, man muss Kontakte umlöten fürs jumpern.
Also laut Datenblatt gibts es folgenden Möglichkeiten:
Options for host bus interface
F3 F2 Host Bus
0 0 Generic Bus
0 1 Reserved
1 0 M6800 Family Bus Interface (Default)
1 1 MC68K Family Bus Interface
Welcher davon is denn der 8080 Mode bzw. kann das Display diesen Modus
überhaupt?
Ansich sollte das Programm ja für den SED1335 ausgelegt sein der ja
nahezu ident dem S1D13700 sein soll. Von daher müsste es doch einen 8080
Modus geben.
Hallo Attila,
Habe mir mal meinen Code angeschaut. Dort verwende ich bei den
Schreibroutinen auch kein Delay bei 16MHZ.
Das sollte nicht das Problem sein. Allerdings sieht meine
Portansteuerung etwas anders aus. (Bin mir nicht sicher wie genau der
S1D13700 das nimmt)
Am Kontrastpoti haste du aber schon mal gedreht?
Was anderes fällt mir sonst grad nich ein.
Ja, hab ich, ich werd mal nachmessen, nicht das eventuell keine Spannung
zu Display gelangt.
Ich hab auch schon mal die Datenleitungen auf den Port A gelegt wo ich 2
Leds habe, die blinken und leuchten auch vor sich hin, dass heißt er
schickt Daten, bei den RD, WR Leitungen usw. leuchten die Leds
allerdings durchgehend.
Kann ich eigentlich irgendwie testen ob mein Atmega mit 16MHz läuft? Ich
hab zwar die Fuse gesetzt aber wer weiß. Kann es daran vllt liegen das
er nicht schnell genug ist weil eben die Frequenz zu nieder ist?
So habe eben nachgemessen, Kontrastpannung lässt sich verändern und
liegt auch an. Der Kontrast sollte bei 28V am höchsten sein, da laut
Datenblatt auch der Zusammenschluss ohne Poti möglich ist, und dann
sollte man was sehen können :)
Also der Fehler kann eigentlich nur noch im Programmcode liegen, echt
mühsahm =/
Hallo Leute,
Wie ihr vllt schon mitbekommen habt funktioniert das Display jetzt.
Ich kann sowohl Text ausgeben als auch auf der graphic layer zeichnen.
Allerdings habe ich noch irgendwo einen Fehler, ich nehme an es ist ein
timingfehler der mich verrückt macht.
Das Problem:
Das Display bekommt die Daten nicht immer richtig, d.h. von ca. 20x
reset zeigt er einmal genau das an was ich rüberschicke, ansonsten zeigt
er irgendwas an, bzw. das Bild verschoben und/oder zerstückelt. Text
gibt er teilweise auch vertikal statt horizontal aus. Das Problem wird
umso schlimmer, umso mehr ich auf dem Display ausgeben möchte.
Mit debugger getestet, die ersten paar texte und grafiken gibt er
meistens, aber nicht immer, richtig aus und irgendwann müllt er das
komplette display zu mit zunehmendem Inhalt.
Ich muss noch dazusagen das bei den Delays ein Faktor 10 fehler drin
ist, warum weiß ich nicht. Sprich 3000ms sind bei mir 300ms usw.
Nur damit ihr bescheid wisst, falls es an einem delay liegen sollte das
zu kurz oder zu lange ist.
Ich hoffe ihr könnt mir helfen, ich bin echt am verzweifeln! =/
Anbei findet ihr die entsprechenden Datein, Schaltplan hab ich ja
bereits gepostet.
lg Attila