M16C und LCD (memory mapped)

Gast #122234
Hallo !!

Ich arbeite an einem Projekt bei dem der M16C/62P verwendet wird. Jetzt
soll "auf die schnelle" noch ein LC-Display zum Schaltplan
hinzukommen. Konkret geht es um eines mit dem ST7036-Controller. Dieses
ist, wenn ich mich nicht irgendwo arg verschaut habe, kompatibel mit den
HD44780ern.

Um das Display jetzt einzubinden habe ich zwei Möglichkeiten; entweder
über das serielle Interface dieses Controllers (SPI) oder aber über den
Adressraum. Letzteres wäre mir auf jeden Fall lieber.

Bin aber jetzt draufgekommen (bzw hatte ich es vergessen, da ich das
bis jetzt immer nur über die Portpins direkt gemacht habe), daß die
Ansteuerung des LCDs über den Adress/Datenbus etwas anders zu machen
ist als für "gewöhnliche" Bausteine wie zb. RAMs.

Meine Frage ist nun, wie man das am besten bewerkstelligt, wenn das
Display an die (bzw AB der) Adresse 0x28000 (d.h. /CS1 wird aktiv und
steht auch zur Verfügung;  Memory Expansion Mode) eingeblendet werden
soll. Ob 4-, oder 8-Bit Modus ist eigentlich egal.
Folgende Leitungen stehen also zur Verfügung: /CS1, D0:D7, A0:A15 (bzw
A0:A19), /WR und /RD
Rein prinzipiell ist es mir klar, aber das ganze sollte mit so wenigen
zusätzlichen Bauteilen wie nur möglich auskommen und auch sicher
funktionieren.

mit besten Grüßen,
Thomas B.
Gast #122235
Ich denke kaum, dass es funktionieren wird.
Der 44780 ist sehr langsam. Selbst mit einem T6963 LCD musste ich
maximale Wait States einfügen, damit es ging.
Beim 44780 wird es am besten sein, dieses per Software anzusteuern, da
kannst du das Timing besser steuern.
Gast #122236
Schade schade.
Ist der M16C denn wirklich so viel schneller als der C167er ? Denn da
hatte ich schon mal ein Display, das über die Adresse angesprochen
wurde (wenn ich mich recht erinnere war das ein kitCON C167
Starterkit).

Werds dann halt doch über die serielle Anbindung machen müssen; find
ich irgendwie schade, jetzt wo ich (im Gegensatz zum 8051er) endlich
mal nen richtig großen Adressraum zur Verfügung hab ;)

mit freundlichen Grüßen,
Thomas B.
Gast #122237
Der M16C kann 4MB ist schon ganz OK (könnte aber mehr sein, bzw. ein
DRAM Controller wäre schön).
Du kannst es ja mal versuchen mit maximalen Wait States.
Mit 1 Wait State lief das 6963 LCD nur mit 10 cm Kabel und ab und zu
Fehlern. Mit maximalen Wait States ging es dann auch mit 30cm Kabel.
Gast #122238
Naja also das Display wird bei mir grad mal 3 bis 5 cm vom Prozessor
entfernt sein; auf einer Top-Platine mit LEDs und Tastern.

Was für eine zusätzliche Beschaltung hast du da für dein Display ??
Direkt an den Bus ranhängen kann ich das Teil ja glaub ich nicht, oder
?!
Gast #122239
Normalerweise reicht es WR und RD mit einem NAND Gatter zu verknüpfen um
das Enable Signal für den 44780 zu erzeugen.
Da ja genügend freie Adressen vorhanden sind, kann man etwas
verschwenderisch sein und RS und RW je eine eigene Adressleitung
spendieren.
Gast #122240
Welche Vorteile hat es denn einen 44780 in den Adressbereich
einzublenden? Wird es dadurch viel einfacher, als das ganze in Software
zu machen?

Danke schon mal für die Antwort

Gruß
Volker
Gast #122241
Hi !!

@Volker

Naja einfacher. Bessere Kontrolle hast, wie auch Benedikt schon
geschrieben hat, wenn mans über die Portpins macht; allerdings muss man
diese eben mal frei haben.
Memory Mapped find ich irgendwie vom Programmieren her komfortabler,
weil man hier die gewünschten Befehle und Daten einfach an die
festgelegte Adresse schreibt und fertig.....
Allerdings muss das ganze Ding mal richtig angeschlossen sein und vom
Timing her auch funktionieren (dieses is ja dann durch den
Adress/Datenbus vorgegeben).... genau das war/ist ja mein Problem und
der Grund für diesen Post ;)

@Benedikt

Besten Dank, werd das mal gedanklich so verdrahten und mir das Timing
dann näher anschaun. Blick mich da im bei den Timingdiagrammen im
Datenblatt vom M16C noch ne 100% durch...

Grüße,
Thomas B.
Gast #122242
Hallo Thomas,

für den Adr. - und Datenbus gehen doch viel mehr Portpins drauf, als
wenn man das Display direkt (über Ports) ansteuert?
Oder verstehe ich das falsch?
Vielen dank für eine Antwort/Erklärung.

Grüße
Lutz
Gast #122243
Hallo Lutz !

Ja das stimmt schon, daß für den Bus mehr Pins draufgehn als wenn man
das LCD direkt ansteuert.
Allerdings ist es bei mir so, daß ich den Bus sowieso brauche. Habe
diverse Peripherie dranhängen: CF-Karte, RAM, Ethernet-Modul, eventuell
dann jetzt LCD. Jeder von denen bekommt eben einen eigenen Adressbereich
zugewiesen über den ich das Ding dann ansprechen kann (Die CS-Signale
macht man sich dann selber oder nimmt , wie im Falle vom M16C, schon
die verfügbaren).

Grüße,
Thomas

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.