Würdet ihr für DOG-Text-Displays 4 Bit-Mode (ohne Busy-Flag-Auswertung)
oder Software-SPI empfehlen?
Ich möchte eine kleine DOG-LCD-Adapterplatine herstellen, um so ein
Display auf einem PCB zu betreiben, das für ein 16x2-Display Bohrungen
hat (und Code im Mikrokontroller) - und kann mich bei der Ansteuerung
nicht entscheiden.
Ist eine dieser beiden Varianten vorteilhafter? 4 Bit wäre mir lieber,
weil ich dann nur eine Sorte LCD-Code brauche, egal welches Display der
User einsetzt (hoffe ich zumindest, dass man den Init-Code so schreiben
kann, dass er mit DOG und anderen Displays läuft) - aber im Datenblatt
wird auf der Verwendung des Busy-Flags insisitiert, wofür ich keinen Pin
an der LCD-Buchse hätte.
Eine Anforderung wäre auch, dass das Display in etwas grösserer
Entfernung betrieben werden kann - bis zu max 50 cm Kabel.
> Würdet ihr für DOG-Text-Displays 4 Bit-Mode (ohne Busy-Flag-Auswertung)> oder Software-SPI empfehlen?
Ja.
> ... 4 Bit wäre mir lieber ...> ... im Datenblatt wird auf der Verwendung des Busy-Flags insisitiert
Und genau dieses Busy-Flag wird über eine der 4 bidirektionalen
Datenleitungen (die siebte) gelesen.
Zitat aus dem DB:
1
DB7 can be used as a busy flag
> Eine Anforderung wäre auch, dass das Display in etwas grösserer> Entfernung betrieben werden kann - bis zu max 50 cm Kabel.
Sieh Widerstände für eine Serienterminierung (Suche im Forum) vor.
Jörg S. wrote:
>>hoffe ich zumindest, dass man den Init-Code so schreiben kann, dass er>>mit DOG und anderen Displays läuft> Da wäre ich eher skeptisch.
Aus dem DB zum DOG-M Controller ST7036:
1
Instruction compatible to ST7066U and KS0066U and HD44780
Ja schon, aber z.B. die Kontrasteinstellung per Kommando ist halt eher
speziell und bei anderen Displays nicht zu finden. Ob's da wirklich
Datentechnisch keine Probleme gibt? Ein Dog läuft jedenfalls nicht mit
Standard HD44780 Code (Andere Initialisierung). Anderstrum hab ich's
noch nicht probiert.
> Zitat aus dem DB:DB7 can be used as a busy flag
Dafür fehlt ein Pin am vorhandenen LCD-Header, d.h. R/W ist fest auf
GND. Wenn 4 bit-Mode, dann ohne Auswertung des Busy-Flags.
Nimm SPI, spart auf die Dauer Leitungen :-)
Vorallem führe ein Chipselect raus, damit noch andre Teilnehmer am SPI
hängen können.
Aber warum Software-SPI?
> Sieh Widerstände für eine Serienterminierung (Suche im Forum) vor.
Dazu eine Frage: Im DOG-Datenblatt steht, dass zur Verbesserung der
Übertragung Pull-Downs eingesetzt werden können ("kann dadurch [...] zu
Signalverschleifungen und unsauberen Pegeln
kommen. Im Zweifelsfall sind zusätzliche Pull-Down Widerstände (8051)
erforderlich, oder..."). Ich würde demnach statt Serienterminierug eher
bei E und RS auf der Display-Platine (4 bit-Ansteuerung) Pads für
Pull-Downs vorsehen und D4 ... D7 als unkritische Leitungen nicht weiter
beachten. Ist das richtig oder sollte es doch Serienterminierung sein?
> Ein Dog läuft jedenfalls nicht mit Standard HD44780 Code
Jaja, immer diese Marketingversprechen... :-/
> Wenn 4 bit-Mode, dann ohne Auswertung des Busy-Flags.
Dann besser SPI.
> Im Zweifelsfall sind zusätzliche Pull-Down Widerstände (8051)
Gerade Pull-Down-Widerstände braucht ein 8051er garantiert nicht!!
Wenn dann Pull-Up Widerstände :-/
> Ist das richtig
Nein, du brauchst das bei einem zeitgemäßen uC-Port nicht.
> oder sollte es doch Serienterminierung sein?
Pullup/Pulldown-Widerstände haben mit Terminierung nichts zu tun.
Wenn du keine Überschwinger und weiß sonst noch was willst, dann lies
den Beitrag "Re: Signalproblem bei langem Kabel"
> Dann besser SPI
Gibt es einen konkreten Grund, ist das DOG-Display dann nicht mehr
zuverlässig? Ich verwende zur Zeit problemlos ein EA W162B-N3LW ohne
Busy-Flag-Auswertung (der LCD-Thread ist ein FreeRTOS-Task, grosszügige
Warteschleifen sind kein Problem, die CPU kann was anderes machen).
> Pullup/Pulldown-Widerstände haben mit Terminierung nichts zu tun
Von der Schaltung her sieht ein Pull-Down am LCD-Ende aber so aus, wie
eine Parallelterminierung?
(http://www.mikrocontroller.net/articles/Wellenwiderstand)
> Gerade Pull-Down-Widerstände braucht ein 8051er garantiert nicht!!
Keine Ahnung, was ein 8051 ist, aber der Hinweis auf Pull-Downs am Modul
ist direkt aus dem DOG-Datenblatt.
> Keine Ahnung, was ein 8051 ist...
Na sowas ...
Es gibt auch noch andere uC als nur AVR&Co&so, und der 8051 war (und
ist) ein echter High-Runner.
> grosszügige Warteschleifen sind kein Problem
Dann brauchst du auch das Busy-Flag nicht abzufragen.
> die CPU kann was anderes machen
Ja, z.B. Taskumschaltung.
Die gibts nämlich auch nicht kostenlos.
> sieht ein Pull-Down am LCD-Ende so aus wie eine Parallelterminierung
Richtig: sieht so aus :-(
Allerdings müsstest du einen Widerstand im Bereich der Leitungsimpedanz
wählen, und die liegt so um 50-200 Ohm. Mit einem 4,7k Ohm
Pulldown-Widerstand hättest du also krasse Fehlanpassung und die
Terminierung wäre wirkungslos. Das steht aber im selben Artikel neben
den Bildern.