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.
Nennt sich in dem Fall Generic Bus = 8080 bus. Der SED1335 unterstützt ebenfalls beide Busarten.
Super danke, dann werd ich das mal umlöten und schauen was dann passiert :) Vielen Dank für eure schnelle Hilfe, das ist echt wahnsinn :D
Habs jetzt entsprechend umgelötet, leider wird noch immer nichts auf dem Display ausgegeben. Anbei der Code mit dem eingebauten delay zur "kontrolle".
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 =/
Ich push das Thema mal, hab noch immer keine Lösung für das Problem =/
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
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.