Forum: Mikrocontroller und Digitale Elektronik Atmega6450 mit S1D13700, Codeproblem!?


von Attila (Gast)


Angehängte Dateien:

Lesenswert?

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

von Kai B. (kaib) Benutzerseite


Lesenswert?

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

von Attila (Gast)


Lesenswert?

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?

von Kai B. (kaib) Benutzerseite


Lesenswert?

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.

von Attila (Gast)


Lesenswert?

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.

von Kai B. (kaib) Benutzerseite


Lesenswert?

Nennt sich in dem Fall Generic Bus = 8080 bus.
Der SED1335 unterstützt ebenfalls beide Busarten.

von Attila (Gast)


Lesenswert?

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

von Attila (Gast)


Angehängte Dateien:

Lesenswert?

Habs jetzt entsprechend umgelötet, leider wird noch immer nichts auf dem 
Display ausgegeben.
Anbei der Code mit dem eingebauten delay zur "kontrolle".

von Kai B. (kaib) Benutzerseite


Lesenswert?

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.

von Attila (Gast)


Lesenswert?

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?

von Attila (Gast)


Lesenswert?

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 =/

von Attila (Gast)


Lesenswert?

Ich push das Thema mal, hab noch immer keine Lösung für das Problem =/

von Attila (Gast)


Lesenswert?

Keiner ne Idee? =/

von Attila (Gast)


Angehängte Dateien:

Lesenswert?

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

von Attila (Gast)


Lesenswert?

help? =/

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.