Hallöchen liebe Leute... Ich habe da ein Problem mit einem AT89C51CC03 und dem eDIP240-7 von Electronics Assembly... Ich versuche das Display über den SPI-Bus anzusteuern... Wenn ich die Datenübertragung so tätige wie im Anhang, dann zeigt mir das Display dauerhaft nur Striche an... siehe hier: http://shoku.de/upload/LC-Display.jpg Das Datenübertragungsprotokoll habe ich nach dem Datenblatt gestaltet... siehe hier: http://lcd-module.de/deu/pdf/grafik/edip240-7.pdf Eigentlich sollte ein Strich von links oben, nach rechts oben gezeichnet werden. Wie in dem Bild zu sehen ist, tut das Display dies leider nicht... Da ich ziemlicher neuling auf dem Gebiet bin, weiß ich auch leider nich wie ich Daten empfangen und auswerten kann, die das Display zurücksendet... ich würde mich wirklich freuen wenn ihr mir helfen könnt, mein kopf qualmt langsam schon und ich habe geschätze 3,5millionen internetseiten durchstöbert ^^ Ich arbeite mit Jens File Editor und Atmel Flip, falls dies für irgendjemanden wichtig ist... Mit freundlichem Gruß Leif-Thore Preuß
die beschaltung aus dem Datenblatt des Displays für SPI-Bus habe ich auf Lochraster zusammengebaut... CPOL, CPHA und DPON liegen auf LOW... CLK Ruhezustand ist damit LOW Übernahme soll bei 1. Flanke geschehen und das MSB soll zuerst übertragen werden...
Leif-Thore wrote: > Eigentlich sollte ein Strich von links oben, nach rechts oben gezeichnet > werden. Wie in dem Bild zu sehen ist, tut das Display dies leider > nicht... SPI-Takt auf max 100kHz runter setzen (z.B. entsprechende Anzahl NOPs einfügen). Peter
wie kriege ich raus wieviele nop's einzusetzen sind? bzw. was bewirkt ein nop ? kann man pauschal sagen, 1 nop entspricht so und soviel hz oder wie auch immer? mit nops habe ich noch nie gearbeitet...
Das liegt nicht am Takt^^....dieses Problem hatten wir auch einmal mit dem gleichen Display...führ mal einen HW Reset durch ich glaub so haben wir es damals gelöst...ich frag nochmal nach wie wir es damals gelöst hatten... MFG
ja klar meinte DORD habe versehentlich DPOM geschrieben... DORD ist auf LOW
ich glaube auch, dass CLK=1; CLK=0; zu schnell ist. 5us sollten zwischen der high und der low flanke sein, damit du auf der sicheren seite bis. -> mit dem oszi mal nachmessen.
man kann die clock z.B. auch so schon mal etwas "symmetrischer" machen: for (mask=0x80; mask; ) { if (data_out & mask) MOSI=1; else MOSI=0; CLK=1; mask>>=1; CLK=0; }
komme leider erst morgen auf arbeit an das OSZI... werde dann mal bilder machen und sie euch hochladen... was mich halt sehr wundert ist, dass das display für jeder SPI_OUT aufruf ein zeichen in form eines Striches auf dem display anzeigt... 13 spi_out aufrufe, 13 striche... wie ich den ACK bzw. NAK auslesen kann habe ich auch noch nicht auf die reihe bekommen... habe halt die minimalsten grundkenntnisse von C damit man damit zurecht kommt... über jede weiter hilfe z.b. auch mit den nops, wäre ich dankbar... p.s. ROFL ich habe das so umgebaut wie du vorgeschlagen hast, verändert hat sich nicht viel :) danke schonmal für die schnellen antworten...
Du wolltest doch sicherlich das Beispiel aus dem Datenblatt ausprobieren: $11 $0A $1B $44 $4C $1B $47 $44 $00 $00 $EF $7F was du an das Display schickst ist allerdings: $11 $0A $1B $47 $4C $1B $44 $47 $00 $00 $EF $7F suche den Unterschied ;-)
der kleine schnitzer ist im aktuellen quelltext schon behoben... es gibt trotzdem keinen unterschied... weiterhin striche...
Kleiner Schnitzer ist gut. Falsches Kommando könnte man dazu auch sagen... ;-) Ich hoffe du hast auch alle 3 falsche Bytes berichtigt: $11 $0A $1B $44 $4C $1B $47 $44 $00 $00 $EF $7F ^^^ ^^^ ^^^ Probier doch auch mal einfachere Kommandos aus. z.B. ESC D S
werde ich morgen mal ausprobieren... habe jedoch auch die beobachtung gemacht, dass es egal ist was ich sende, auch wenn ich nur einen wert sende, zeigt er mir den strich... aber wie gesagt werde es morgen nochmal probieren einfachere befehle zu senden...
ich habe heute mal mit dem Oszi nachgemessen, der Slaveselect und der Takt sind wunderbar... auf der Datenleitung wird jedoch nur müll in form eines Taktes ausgegeben... werde nachher mal nen foto erstellen gibt gleich erstmal frühstück ^^
soo bilder vom oszi sind ungünstig, ich habe es aber jetz durch direkten anschluss an den Bus soweit hinbekommen, dass die datenleitung mir nen sauberen clock rausgibt... die Daten die das display empfängt bzw. ausgibt sind jetzt keine striche mehr sondern hyroglyphen siehe hier: http://shoku.de/upload/LGIM0015.jpg den quellcode habe ich ebenfalls abgeändert, ich habe ihn einmal mit dem wait ausprobiert und einmal ohne wait, ausser das die zeichen schneller auf dem display erscheinen ist kein unterschied zu erkennen... falls jemand noch ne idee hat ich wäre dankbar... mfg Leif-Thore
wenn es etwas doofes an der forensoftware gibt, dann ist es sehr wahrscheinlich die tatsache das die posts immer zu doof verrutschen.. push
> soo bilder vom oszi sind ungünstig, ich habe es aber jetz durch direkten > anschluss an den Bus soweit hinbekommen, dass die datenleitung mir nen > sauberen clock rausgibt... ??? Verstehe nicht was das heissen soll. ALLE Signale müssen sauber sein. Hast du / kannst du dir ein 4 Kanal-Speicheroszi leihen? Trigger mal Singleshot auf fallende CS und guck dir die CLK und MOSI Signale an ob es dem entspricht, was das Display erwartet. Zumindest das erste Byte (0x11) sollte auf dem Oszi gut ablesbar sein. Evtl. hast du auch ein Pegelproblem. Welchen Pegel erzeugt dein uC? Das Display erwartet minimum 0.6*VCC (vermutlich 0.6*5V=3.0V) als High Pegel. Selbst 3.3V uC IO-Pegel wären da schon fast knapp...
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.