Forum: Mikrocontroller und Digitale Elektronik M16C und LCD (memory mapped)


von Thomas B. (Gast)


Lesenswert?

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.

von Benedikt (Gast)


Lesenswert?

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.

von Thomas B. (Gast)


Lesenswert?

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.

von Benedikt (Gast)


Lesenswert?

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.

von Thomas B. (Gast)


Lesenswert?

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
?!

von Benedikt (Gast)


Lesenswert?

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.

von Volker (Gast)


Lesenswert?

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

von Thomas B. (Gast)


Lesenswert?

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.

von Lutz (Gast)


Lesenswert?

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

von Thomas B. (Gast)


Lesenswert?

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

von Benedikt (Gast)


Lesenswert?

Verwendest du ein fertiges Ethernet Modul oder eine alte Netzwerkkarte ?

von Thomas B. (Gast)


Lesenswert?

Handelt sich um ein Wiznet-Modul (www.iinchip.com) W7010  bzw W7000.

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.