Wandlung von -RD und -WR nach R/-W

Jan 06, 2007 11 Replies

Hallo NG,



schliesse hier ein LCD mit HD44780 an einen Bus mit separaten -RD und -WR Signalen an. Könnt Ihr schnell drüberschauen, ob das wirklich geht.



Da das Timing sich von den beiden Bussystemen (haben die einen Namen?) unterscheidet, möchte ich folgendermassen:


- das E für das Display erzeuge ich durch eine NAND-Verknüpfung aus den Signalen -RD und -WR



- A0 führe ich auf RS



- A1 führe ich auf R/-W



Ich bin mir bewusst, dass das keine saubere Lösung ist und ich bei der Software höllisch aufpassen muss, dass ich nicht auf die falsche Adresse schreibe.



Da frage ich mich doch gleich, ob ich nicht doch gleich ein PLD nehme und alles sauber implementiere. Habe da ja gleich 26 Stk. XC9536 ersteigert. Jetzt, wo ich genügend habe, und sich der Einsatz bereits ab 3 TTL's finanziell lohnt, geize ich doch mit dem Einsatz.



Wenn ich die TTL-Lösung nehme, frage ich Euch, was für die OR-Verknüpfung gegen den Einsatz von (Schottky-)Dioden statt 7432 spricht. Schaut doch mal meine Ideen an:

formatting link



Gruss Chregu


Hi Christian,

Christian Müller schrieb:

Sieht gut aus.

Warum nicht -WR direkt auf R/-W am Display legen?

HTH, Wolfgang

From-address is Spam trap Use: wolfgang (dot) mahringer (at) sbg (dot) at

(\RD, \WR) ist Intel-Style, (R/W, EN) Motorola. Die Bezeichnungen findet man des öfteren in Datenblättern.

Wäre es nicht einfacher, das Display im 4-Bit-Modus direkt an ein paar I/O-Pins zu betreiben?! Man braucht dann nur 6 (bzw. 7, wenn man auch rücklesen möchte (->aber warum?)) Leitungen für das Display.

thomas.kindler@gmx.de, www.bredobrothers.de www.microsoft-hellhounds.de

Thomas Kindler schrieb:

Weil man damit das Busy Flag abfragt? Damit muß man nicht blödsinnige Delays programmieren. Ist ne sauberere Sache.

Leitungen für das Display.

Andreas

"Wolfgang Mahringer" schrieb im Newsbeitrag news:w1Qnh.5$ snipped-for-privacy@news.salzburg-online.at...

Das Problem ist das das Timing. R/-W muss min. 40ns VOR E kommen. Wäre kein Problem bei READ-ONLY Zugriffen, das habe ich aber nicht. Eher könnte ich auf WRITE-ONLY ausweichen, und R/-W dauernd auf LOW legen. Aber dann kann ich ja, wie Andreas schon erwähnte, das BUSY FLAG nicht abfragen.

Gruss Chregu

Nja, aber dafür muss man dann das Busy-Flag pollen -- auch doof. Ein festes Delay per LCD-Schreibfunktion im Timer-Interrupt ist da schon CPU-Zeit-sparender.

thomas.kindler@gmx.de, www.bredobrothers.de www.microsoft-hellhounds.de

Hi Christian,

Christian Müller schrieb:

Stimmt. Hab ich nicht nachgesehen.

Das braucht man eh nicht. Zugriffe die dauern (können) sind:

- Clear Display

- Return Home

- Entry Mode set

Für diese 3 Befehle baust Du einen 2ms Delay ein, die anderen Befehle sind alle 40us oder schneller. Die BF-Pollerei lohnt IMHO den Aufwand nicht.

vg, Wolfgang

From-address is Spam trap Use: wolfgang (dot) mahringer (at) sbg (dot) at

Naja, innerhalb einer Statemachine ist das doch wohl kein Problem. Immer noch besser, als alles anzuhalten und zu warten.

Ein

So gehts auch, aber die INT Routine sollte immer so kurz wie möglich sein, denn die beeinflußt ja auch das Hauptprogramm.

Andreas

Genau. Also Ringbuffer nehmen, der vom Hauptprogramm mit den LCD-Bytes befüllt wird, der Interrupt schiebt dann nur die jeweils nächsten Daten raus.

Oder direkt 16x2 Bytes als "Bildschirmspeicher", der per Interrupt jeweils alle paar ms komplett (aber mit den notwendigen pausen zwischen den Bytes) übertragen wird. Ist auch Programmtechnisch vermutlich am angenehmsten.

Während anderen zeitkritischen Codeteilen kann man den LCD-Refresh-Timer ja sperren.

thomas.kindler@gmx.de, www.bredobrothers.de www.microsoft-hellhounds.de

"Thomas Kindler" schrieb im Newsbeitrag news:enojk2$dn4$ snipped-for-privacy@news01.versatel.de...

Habe grad nochmal das Datenblatt vom HD44780 angeschaut, der braucht ein Enable-High von mindestens 230ns, mein Bus bringt aber nur >=70ns. Leute ich mach's tatsächlich an I/O Pins. Liegen hier noch einige 8255 rum...

Gruss Chregu

Uaah, das wird ja riesig. Ein einfaches 74HC595 8-Bit Schieberegister mit Latch an drei Pins tut's auch. Oder ein PCF8574 o.ä. am I2C-Bus.

thomas.kindler@gmx.de, www.bredobrothers.de www.microsoft-hellhounds.de

"Thomas Kindler" schrieb im Newsbeitrag news:enpdg8$rgg$ snipped-for-privacy@news01.versatel.de...

Ach, das macht nichts, Platz habe ich genug, und folgedessen kann ich dann auch im 8bit Mode drauf...

Habe übrigens noch diese AN gefunden:

formatting link
Ist noch interessant, wie die da so rumbeschalten. Der x86, zumindest der

8086/8, scheint noch so ein "Motorola-Bus" kompatibler Anschluss DT/-R zu haben, den sie dann invertiert auf R/-W ansetzen.

Gruss Chregu

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required