LCDs und GLCDs anschließen und ansteuern (BASCOM)

Hallo,

die Kompetenz hier, bezüglich Displayansteuerung, hat mich per Google hierher geführt.
Ich wurschtel nun schon tagelang erfolglos mit einem 320x240 Pixel Grafikdisplay herum, das definitiv funkioniert und verstehe langsam die Welt nicht mehr.
Das Problem hatte schon woanders ausführlich geschildert, mit allen Links u.s.w.
Ich hoffe es ist OK, wenn ich der Einfachheit halber auf meinen Beitrag dort verlinke:
http://www.ledstyles.de/ftopic19756.html

Dort sieht man also die Schaltung, den Link auf das Datenblatt, verschiedene Codeschnipsel ...
Wenn das Teil endlich läuft, veröffentliche ich hier gerne den Code. Denn wie eine stundenlange Google-Suche offenbart, bin ich nicht der Einzige, der sich die Zähne daran ausbeißt, das Ding mit Bascom zum Laufen zu bringen.

Die fertig compilierten Demos, die mit dem Produkt mitgeliefert werden, funktionieren ja bestens, aber der entscheidende Teil des Quellcodes liegt halt nicht bei.
Und das Pitch der Anschlüsse hat bislang meine Versuche vereitelt, einfach mal 'nen Logic-Analyzer anzuschließen.

Mich wundert echt zutiefst, dass es mir nicht gelingt, mit auf Bascom umgestrickten, "geguttenbergten" Codeschnippseln der Initialisierungsroutine das Display zum Leben zu erwecken.

Habt Ihr irgendwelche klugen Tipps, wie die Pins angesteuert werden müssen?
Bin für jeden Tipp echt dankbar!
 
Hallo Irrlicht!

Da hast du dir aber nicht gerade das "einfachste" Display für Bascom ausgesucht. :wink:

Ich bin der Meinung, dass ich hier auch irgendwo noch so ein Display liegen habe.
Da mir das aber nach kurzer Zeit zu nervig war..... und Dirk dann seine neue intelligente Display-Familie vorgestellt hatte, bin ich dann ganz schnell umgestiegen. :D

Seitdem kann ich mich mehr um meine Ideen kümmern und muss micht nicht ewig mit der Ansteuerung von Displays (und Touch) rumärgern. :cool:


Wenn du es aber trotzdem weiter versuchen möchtest und du es dann auch zum Laufen bewegt hast.....
Ich wär dann auch mal an einem Beispielcode interessiert. :D

Grüße,
Cassio
 
Ich sammel mal etwas ...

Es geht um dieses Teil ...
mikromedia-xmega_1.jpg
mikromedia for XMEGA
Das Datenblatt des Displays ... tft_320_240_touch_spec.pdf

das Datenblatt für den evtl vorhandenen Controller ... HX8347-D_DS_T_v02_090324.pdf
Der zugehörige Thread ... mikrocontroller.net - HX8347 Display Treiber

IM0,1 - Vcc , IM2,3 - GND => IM0=1 -> 8080 MCU 8_Bit Parallel Register: DB15..DB8, GRAM: DB15..DB8
==> 0 0 1 1 8080 MCU 8-bit Parallel type II
Was ich vermisse ist IFSEL aus dem Controller-Datenblatt.
- 0 Register-content interface mode
- 1 Command-Parameter interface mode
"In this document, the IFSEL has to be connected to GND and Register-Content interface mode is select. "
naja ... ok

0 0 1 1 8080 MCU 8-bit parallel type II
DNC_SCL => DNC , NWR_SCL => NWR , Reg/Cont: D17-D10 , GRAM: D17-D10: 8-bit data
DNC : 0 = Ctrl/Register , 1 = GRAM/Data

für mehr ist es mir heute schon zu spät ...

Müßte man sich mal in Ruhe ansehen ...

Gruß
Dino
 
Hallo Cassio,

ja hätte ich diese "intelligenten Displays" früher gefunden, wäre das wohl das Mittel der Wahl gewesen.
Ich hatte das Board + Display von Mikroelektronika halt als "intelligentes Display" angedacht. Hätte auch nicht erwartet, dass es so widerspenstig sein würde.

In Zukunft werde ich dann wohl bei Dirk einkaufen.
Wie schön, was man über ein Forum so alles erfährt, das man per Google im Leben nicht gefunden hätte ...
Aber jetzt will ich partout dieses Board mit diesem Display zum Funzen bringen! Hugh, Irrlicht hat gesprochen!

Eigentlich bin ich überzeugt, sofort zum Erfolg zu kommen, wenn es mir nur endlich mal gelingt, da den Logic-Analyzer dranzufrickeln. Aber 0,5mm Pitch ist nichts mehr für meinen Alterstatter ...
So wie das Ding konstruiert ist, kann man auch nicht einfach an irgendwelche Leiterbahnen rankommen, um da dünne Drähte ranzulöten oder wenigstens Nadeln sicher kontaktiert aufzusetzen.
Dis Steuersignale gehen ja leider auch auf keine Bauteile, an die man rankommen könnte. Das Display ist rückseitig mit der Platine verklebt, ich "kann" echt nur direkt an den Controller ... bzw. kann nicht - heul!

Aber meinen Erfolg werde ich mit Euch teilen - versprochen! :)
 
Moin Leutz,

habe gerade eine ganz neue Idee.
Und zwar habe ich ja fertige hex-Dateien, die dem Display + Board beilagen und die das Display ganz prächtig zum Tanzen bringen, wenn man die in den XMega flasht.
Gut, es würde ganz sicher mein Problem lösen, könnte ich irgendwie den Logic-Analyzer an den Chip anschließen und mir anschauen, was dabei passiert. Nur gelingt mir das partout nicht, weil das Pitch einfach zu klein ist ...

... aber andererseits habe ich doch die hex-Dateien! Da muss doch drin stehen, was das Ding macht!

Frage also von mir, als schwer Bascom-Geschädigten:
Kann man diese Datei mit vertretbarem Aufwand auswerten?
Disassemblieren oder so und dann herausfinden, in welcher Reihenfolge die Steuerpins bedient werden, bei der Initialisierung und Ansteuerung des Displays?
 
Ja, es gibt Disassembler. Als Resultat hast Du dann quasi das Assemblerprogramm, aber Kommentare, Equations, Labelnamen usw wurden natürlich nicht mitassembliert (nur die Zahlen halt).
 
Hallo LotadaC,

das macht ja nichts.
Solange ich eindeutig die Portpins da herauslesen kann, ist ja alles gut.
Es geht mir nur um die vier Steuerpins des Displays, sowie noch um den 8-Bit Datenbus zum Display.
Wenn ich also aus dem disassemblierten Hexfile herauslesen kann, in welcher Reihenfolge der XMega bei der Initialisierung des Displays Steuerpins und Datenbus bedient, dürfte mein Prob gelöst sein.

Weißt Du zufällig ein Programm, das dazu geeignet wäre?
 
Danke.
In AVR Studio 5 finde ich keine entsprechende Möglichkeit und das Helpfile lässt sich nicht aufrufen.
Bin aber im Netz fündig geworden, das hier hat gefunzt:

http://www.jassenbaum.de/ja-tools/reavr.html

alternativ:
http://www.visi.com/~dwinker/revava/

Jetzt muss ich da nur noch durchsteigen (seufz) bin ja kein Assembler-Programmierer.
Die entscheidenden Portpins sind diese hier:
PortJ.1
PortJ.2
PortJ.3
PortJ.4
PortJ.5
Sowie noch der Datenbus, auf PortK.

Habe die disassemblierte Datei mal gezippt und angehängt.
 

Anhänge

  • TFT_Proto.hex.zip
    24,6 KB · Aufrufe: 15
Habe es hinbekommen.
Ich kann das Display jetzt beliebig einfärben, einzelne Punkte setzen und 'ne Linie zeichen.
Nun mach ich das alles noch hübsch und erweitere es um die grundlegenden Zeichenfunktionen sowie zwei Schriftfonts, dann stelle ich das Ergebnis hier ein.
 
Hallo!

Na, da bist du ja doch schon recht gut voran gekommen.
Drücke die Daumen, dass es so weitergeht! :)


Grüße,
Cassio
 
Ist kurz vor der Veröffentlichung.
Was geht:
- Einfärben des ganzen Displays in beliebiger 24-Bit Farbe (dauert unter 0,1 Sekunde, dank Assembler-Einbindung).
- Setzen eines einzelnen Punktes an beliebiger Position, in beliebiger Farbe.
(Schon recht gut geschwindigkeitsoptimiert: Jeden der 76800 Pixel einzeln mit 24 Bit umgefärbt, dauert nur 0,5 Sekunden, rein in Bascom.)
- Ausgabe von Textmeldungen an beliebiger Position, in den Fontgrößen 5x8 Pixel und 8x16 Pixel.
- Drehen des Displayinhalts um 90 Grad.

Die Routine zum Zeichnen von Linien werde ich noch verbessern. Rechtecke sind sowieso Peanuts und Kreise kommen auch ganz bald.
Für die Darstellung von Bildern fehlt mir noch die Routine zum Auslesen der Speicherkarte, sonst ist die im Grunde fertig.

Edit: Erledigt ---------------------------------\
Aber ein Prob nervt mich aktuell:
Beim Aufräumen des Codes habe ich die Fonts und Displayroutinen schön ordentlich in includete Dateien ausgelagert.
Solange daran nichts gedreht wird, ist ja auch alles gut, aber sobald ich die noch etwas nacharbeite, möchte ich natürlich die Felhaerkennung des Compilers ausnutzen.
Also F7 ...
Nur meckert der Compiler bei den ausgelagerten Subroutinen dann: "SUB or FUNCTION must be DECLARED first".
Dabei sind die ja "declared", nur halt in einer anderen Datei ...

Ich meine mich düster zu entsinnen, dass es doch irgendeine Möglichkeit gibt, dem Compiler mitzuteilen, dass er in solchen Fällen die Klappe halten soll, oder?
Google hat mir diesbezüglich leider nichts geliefert, aber da war doch was!? Menno ey!
Wer weiß Rat?
Edit: Erledigt ---------------------------------/

Hab's gefunden, das hier ist die Lösung:
$NOCOMPILE an den Anfang der includeten Dateien.

Fiiieees, diese Compileranweisung steht noch nicht in dem Buch, mit dem ich stets arbeite (Marius Meissner, BASCOM-AVR). Die Ausgabe ist allerdings auch schon reichlich alt.
Irgendwie fehlt mir bei der Bascom-Hilfe die Möglichkeit, diese zu editieren.
In ein Buch kann man einfach was reinkritzeln.
 
...Irgendwie fehlt mir bei der Bascom-Hilfe die Möglichkeit, diese zu editieren.
In ein Buch kann man einfach was reinkritzeln.
Meinst Du die Online-Hilfe? Wär ja auch doof, wenn da jeder was drübermalen kann...
Oder das ausdruckbare pdf? (ok, 1K1 Seiten... aber dann kannste'se verzieren...)

Zumindest mit dem Tablet gehts übrigens auch so:
Screenshot_2012-06-10-07-37-10.jpg
P.S.: ist das nur bei mir so, oder hakt das bei der Online-Hilfe da desöfteren?
 
Ist kurz vor der Veröffentlichung.

Hallo !

Das klingt doch super! :)

Mich würde aber eine einfache Ansteuerung des Displays mal interessieren.
Egal ob "Display komplett einfärben", oder eine Linie zeichnen.

Das würde mir jedenfalls schon mal helfen zu testen, ob mein Display überhaupt noch funktioniert. :hmmmm:
Ich bin leider der Meinung, dass meines defekt ist.
Zum Einen wurde der Leveltranslater mal ziemlich warm (und ich weiß nicht wie lange und was noch alles)
und zum Anderen kann ich das INIT anpassen wie ich möchte, es passiert nichts.

Wenn ich jetzt mal ein kleines Beispiel von dir hier bekommen könnte das bei dir funktioniert, dann habe ich anschließend Gewissheit. :wink:


Danke,
Cassio
 
Hallo Cassio,

na gut, ich habe mich mal breitschlagen lassen und den gegenwärtigen Stand, von so halbwegs jedem unausgegorenem Kram befreit, in ein ZIP-Archiv gepackt.
Aber nur weil Du es bist!

Das Archiv entpackt einen einzigen Ordner, der fünf Dateien enthält.
Wie man aus den Dateinamen unschwer erkennen kann, ist "XMega Test_29.bas" das Hauptprogramm, von dem aus mit Hochsprachenbefehlen auf das Display zugegriffen werden kann.
Die anderen vier Dateien, mit dem vorangestellten "incl_" werden ins Huptprogramm includet.

Die auffällig markierte Hautschleife enthält noch ein paar auskommentierte Routinen. Die funktionieren, wenn man sie denn aktiviert.

Compiliert man den Kram so wie er ist, passiert Folgendes:
- Zunächst wird das Display grün gefärbt.
- Dann erscheinen einige Zeilen Text in zwei Schriftfonts, wobei die Strings teilweise absichtlich länger sind, als auf den Screen passt. Der Text im größeren Font liegt dabei über dem Text mit dem kleinen Font.
- Dann färbt sich das Display metallgrau.
- Und schließlich dreht sich die Orientation um 90 Grad und wieder wird der Text ausgegeben.

Das Drehen um 90 Grad plus Textausgabe läuft dann permanent in einer Schleife.


Damit das bei Dir läuft, musst Du in der includeten Initialisierung noch diesen Block anpassen:
Code:
LCD_RST alias PortJ.1
LCD_RST=0  'Reset. Lowaktiv, zu Anfang auf Reset halten.
PMRD alias PortJ.2       :PMRD=1     'Read. Lowaaktiv
PMWR alias PortJ.3       :PMWR=1     'Write. Lowaktiv
LCD_RS alias PortJ.4                 'Index/Command-Selector. Low für Zugriff auf Inxexregister, High für Zugriff auf Command.
LCD_CS alias PORTJ.5     :LCD_CS=0   'Chip select

Der 8-Bit Datenbus ist bei mir PortK. Muttu gegebenenfalls ebenfalls anpassen.
Weiterhin ist es wichtig, dass die Displaysignale IM0-IM3 wie folgt angesteuert werden:
IM0 high
IM1 high
IM2 low
IM3 low

Viel Erfolg!

P.S.: Es gelang mir nicht, die Datei als Anhang hinzuzufügen. Daher als Direktlink:
http://www.edv-dompteur.de/download/GLCD_320x240_an_XMega128_in_Bascom_V0.29.zip
 
Meinst Du die Online-Hilfe? Wär ja auch doof, wenn da jeder was drübermalen kann...
Oder das ausdruckbare pdf? (ok, 1K1 Seiten... aber dann kannste'se verzieren...)

Nee, ich meine die BASCOM AVR-Help.
Also wenn man in Bascom auf "Hilfe" klickt.

PDFs sind (bei mir) immer so krötenlahm, mag ich nicht.
Die Hilfe-Funktion ist da schon besser, aber teilweise wird man nicht 100%ig schlau daraus und möchte Ergänzungen hinzufügen.
Geht mit geeigneter Software sicher auch, habe ich mich noch nicht mit befasst. Aber dann steht man nach einem Update wieder genauso dumm da, wie ich mit meinem veralteten Buch.

Schick wäre also, wenn nach einem Update neue Befehle zum Hilfesystem einfach "hinzufließen", aber eigene Kommentare stets erhalten bleiben und jederzeit editierbar sind.
So "Wikipedia"-mäßig.
Da kann mir wohl leider keiner helfen, denke ich mal ...
 
Hallo!

Ich danke dir, für die ZIP-Datei!

Wenn ich nun aber lese dass ich das Display mit dem 8bit-Datenbus ansteuern muss, dann haben wir wohl nicht das gleiche Display.
Meines hat eine SPI-Schnittstelle und von daher wird es mir dann nicht weiterhelfen. :(

Ich habe hier aber noch ähnliche Displays (aus China-Handys) liegen..... vielleicht reagieren die ja auf deine Routinen. :hmmmm:
Dazu müsste ich die Displays aber erst mal ausbauen und kontaktieren.....
Mal sehen, wann ich dafür Zeit habe.

Danke trotzdem! :)

Grüße,
Cassio
 
Hallo Cassio,

tja, das mit dem 8-Bit Datenbus ging schon aus meinem ersten Posting (321) hervor, wenn man den Links folgte.

Die gute Nachricht: Dieses Display unterstützt verschiedene Ansteuerarten, u.a. auch SPI.
Und mein Code basiert, was die Initialisierung betrifft, auf einer C-Routine, die das Display im SPI-Modus ansteuerte.

Du kannst meinen Quelltext also mit überschaubarem Aufwand umstricken.
Wichtig sind ja erstmal nur die Initialisierungscodes; ist ja wurschst, ob die nun per Parallelbus ins Display kommen, oder per SPI.

Ansonsten habe ich Dir nochmal 'nen C-Code und 'nen Bascom-Code für SPI und dieses Display hochgeladen. Mal irgenwo geguttenbergt, aus freier Quelle.
Muttu mal sehen ob und wie Du damit klar kommst:
http://www.EDV-Dompteur.de/download/tmp.zip

Per SPI ist man aber leider bedeutend langsamer.
Nicht nur, weil die Daten statt parallel nun seriell übertragen werden müssen. Nein, da ist nochwas: Im Parallel-Mode erfolgt die sehr häufig nötige Umschaltung zwischen Indexregister und Command mit einem einzigen Bit.
Im SPI-Modus hingegen, muss dazu jedesmal ein ganzes Byte seriell übertragen werden, das die Information "Indexregister" oder eben "Command" enthält.
Erst danach können die jeweiligen Daten gesendet werden.

wenn man ein dislayfüllendes Bild ausgibt, ist das nicht entscheidend, weil besagte Umschaltung da nur einmal vorkommt.
Aber wenn viel mit Punkten gearbeitet wird, also wenn man z.B. Kreise zeichnet, dann wird sich das ganz dick bemerkbar machen. Denn für einen Punkt muss erstmal der Bereich eingegrenzt werden und so, was die Übertragung etlicher Bytes erfordert, jedesmal mit Umschaltung zwischen Index und Command.

Da kommt wieder der Vorteil von Dirks Displays zum Tragen, wo nur ganz wenige Bytes in Hochsprache nötig sind, um das Display einen Kreis darstellen zu lassen.
 
Ansonsten habe ich Dir nochmal 'nen C-Code und 'nen Bascom-Code für SPI und dieses Display hochgeladen. Mal irgenwo geguttenbergt, aus freier Quelle.


Hallo!

Kann ich ja mal reinschauen, wenn ich wieder Zeit und Muße dazu habe. :wink:

Ich habe von diversen öffentlichen Programmen auch schon einiges ausprobiert....
allerdings hat kein Programm je funktioniert. :(

Das ist auch der Grund warum mir den Verdacht habe, dass mein Display leider defekt ist.
Wie sagt man aber so schön....
Tot geglaubte leben länger. :D

Vielleicht kann ich es ja doch mal zum Betrieb überreden.

Danke schon mal,
Cassio
 
@Cassio: Wegen der Fonts verweise ich mal auf meine letzten beiden Postings bei LEDstyles:
http://www.ledstyles.de/fpost307372.html#post307372
(dieses und das Folgeposting)


Edit: Ich sehe im anderen Thread gerade das hier von Dir:
Du musst also alle Hex-Werte in dezimale Werte umrechnen und eintragen.
Ach so.... und dann müssen noch alle Dollarzeichen entfernt werden..... und wer weiß was noch alles.

Nee, Käse. Basom kann doch auch Hexwerte aus Data-Zeilen lesen!
Lade mein Programm einfach mal runter, verschiebe den entpackten Ordner wie in der Anleitung beschrieben nach C:\ und starte die Exe.
Dann hast Du neben der schon im Ordner vorhandenen Originaldatei vom Fontdesigner eine fertig konvertierte, in Bascom includebare Datei mit Data-Zeilen, die Hexwerte beinhalten.
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)