Forum: Mikrocontroller und Digitale Elektronik HD44780 Extender


von dev_null (Gast)


Lesenswert?

hallo,
kennt jemand ein fertiges Produkt, mit dem man ein HD44780 Display über 
eine lange Strecke (>10m) per differentiellen Leitungen 
ansteuern/verlängern kann?
Normalerweise ist das LCD über eine 15cm lange Leitung angeschlossen. 
Nun soll es (weit) entferent betrieben werden. Es sind dazu max. 4 
Leitungen (für Daten/Clock) vorhanden. Auf Grund der Länge sollte es 
differentiell sein.
Es muss NICHT das busy flag auswerten (kein Read vom LCD-Controller).
Die Daten für das LCD direkt vor Ort zu erzeugen ist keine Option, daher 
sollte es wirklich ein "Range Extender" der HD44780-Leitungen sein.

Danke im voraus.

von Bülent C. (mirki)


Lesenswert?

82B715 Baustein als I2C Repeater, saubere CAT5/CAT6 Kabel und einen I2C 
Portexpander

: Bearbeitet durch User
von dev_null (Gast)


Lesenswert?

Bülent C. schrieb:
> 82B715 Baustein als I2C Repeater

Meinst du den I2C Repeater "missbrauchen"?
Ich möchte direkt die HD44780 Signale übertragen (mit max. 4 Leitungen), 
da der "Sender" ein fertiges Gerät ist.

Dachte da an eher sowas wie SerDes (wo mehrere bits serialisiert 
übertragen werden): Serialisieren der HD44780 Signale->auf RS485/422 
umsetzen->RS485 adapter zu TTL/LVTTL->serialisierte Daten wieder 
parallel ausgeben.

von Joe F. (easylife)


Lesenswert?

I2C wird da wohl ein wenig langsam sein.
Bei 8-bit Daten + extra Signale = 16-bit expander + overhead (adresse / 
ACK) wird die Clock dann bei vielleicht max. 10 KHz landen.

Guck mal bei TI nach LVDS serializer / deserializer. Da ist bestimmt 
etwas dabei.
z.B. DS92LX1621 + DS92LX1622
Macht dir 800 Mbits/sec bei 16-bit über eine differentielle 2-Draht 
Leitung.

http://www.ti.com/product/ds92lx1621
http://www.ti.com/lit/ds/symlink/ds92lx1621.pdf

Nachtrag: allerdings schreiben die bei diesem Teil "up to 10 meters 
shielded twisted pair".

Gibt aber bestimmt auch etwas, das größere Strecken "kann".

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Wenn viele Adern kein Problem sind, dann könnte man die Leitungen 
einfach mit RS485 Bausteinen treiben.

HD44780 braucht aber nicht 4 Leitungen, sondern mindestens 6.

von Joe F. (easylife)


Lesenswert?

dev_null schrieb:
> über
> eine lange Strecke (>10m)

Kannst du Distanz auch nach oben eingrenzen?
Und welches Kabel steht zur Verfügung (Cat5, Cat6, Coax)?

: Bearbeitet durch User
von dev_null (Gast)


Lesenswert?

Joe F. schrieb:
> Guck mal bei TI nach LVDS serializer / deserializer. Da ist bestimmt
> etwas dabei.

Danke für den konkreten Vroschlag für die SerDes.
Die Frage ist noch ob es irgendetwas "fertiges" gibt? So in der Art:
Adapter mit HD44780 IN->differentiell OUTPUT->Adapter IN->HD44780 OUT


Stefan U. schrieb:
> HD44780 braucht aber nicht 4 Leitungen, sondern mindestens 6.

Habe leider nur 4 Leitungen zur Verfügung, daher müssen die HD44780 auch 
serialisiert werden.

von dev_null (Gast)


Lesenswert?

Joe F. schrieb:
> Und welches Kabel steht zur Verfügung (Cat5, Cat6, Coax)?

Es werden maximal 15 Meter in der Länge sein. Als Kabel steht CAT6 zur 
Verfügung, jedoch davon nur 4 Leitungen, also 2 Paare.

von Joe F. (easylife)


Lesenswert?

dev_null schrieb:
> Die Frage ist noch ob es irgendetwas "fertiges" gibt? So in der Art:
> Adapter mit HD44780 IN->differentiell OUTPUT->Adapter IN->HD44780 OUT

Das wird es wohl kaum geben.
Eval-Boards wären da noch eine Möglichkeit.

Ebenfalls interessant:
TI bietet ICs, die die Reichweite des SerDes entscheidend erweitern:

Application note:
http://www.ti.com/lit/wp/snla204/snla204.pdf

von Peter D. (peda)


Lesenswert?

Fertig nicht, aber wenn man programmieren kann, kann man was selber 
bauen.
Man braucht einen MC (z.B. ATtiny2313), der die 9 Bit parallel einliest 
und über die UART rausschickt (RS-485). Dann einen 2. MC, der es 
empfängt und das LCD steuert.

von Stefan F. (Gast)


Lesenswert?

Ich fürchte, die ganze Sache scheitert am Timing.

Denn die Serielle Übertragung muss ja mit der Geschwindigkeit des 
"Senders" mithalten. Den kannst du nicht ändern, habe ich verstanden.

Wie hoch ist denn die maximal zu übertragende Frequenz?

von Falk B. (falk)


Lesenswert?

@ dev_null (Gast)

>Die Frage ist noch ob es irgendetwas "fertiges" gibt? So in der Art:
>Adapter mit HD44780 IN->differentiell OUTPUT->Adapter IN->HD44780 OUT

Ich fürchte nein. Alles was mit langen Kabeln angeschlossen ist, hat den 
Zusatcontroller am LCD und bekommt schon serielle Daten per UART/ I2C 
oder sonstwas.

>Habe leider nur 4 Leitungen zur Verfügung, daher müssen die HD44780 auch
>serialisiert werden.

>Die Daten für das LCD direkt vor Ort zu erzeugen ist keine Option, daher
>sollte es wirklich ein "Range Extender" der HD44780-Leitungen sein.

Dann muss man einen intelligenten MUX aufbauen, der die Eingänge des 
LCDs emuliert und jedes Kommando, welche mit einem E-Puls geschickt wird 
über eine serielle Leitung abtransportiert.

Beitrag "Re: Mehrere Signale über eine Leitung"

Das könnte man aufbohren. Mit jeder fallenden Flanke von E müssen die 
Daten DB0-DB7 sowie RS abgetastet werden und seriell per UART verschickt 
werden, im Zweifelsfall mit 9 Bit/Datenpaket. Der Empfänger macht es 
dann anders herum. Sollte machbar sein. E würde ich an einen 
interruptfähigen Eingang legen. Die differentielle Übertrtagung macht 
man dann per RS485. Dazu braucht man ein verdrilltes Leitungspaar + 
Masse!

von Falk B. (falk)


Lesenswert?

@ Stefan Us (stefanus)

>Ich fürchte, die ganze Sache scheitert am Timing.

Geht doch weg hier! Du gibst schon auf wo noch nicht mal EINER 
angefangen hat!

>Denn die Serielle Übertragung muss ja mit der Geschwindigkeit des
>"Senders" mithalten. Den kannst du nicht ändern, habe ich verstanden.

Ja und? Ein Befehl dauert beim HD44780 mindestens 40us. In der Zeit muss 
man bestenfalls 9+2 Bits abtransportieren. Macht 275 kbit/s. Gähn. 
DMX512 macht 250 kbit/s und da hat ein AVR noch einiges an Reserven. 
Also AVR+16 MHz Quarz und 500 kbit/s Baudrate. Der Rest ist trivial, 
selbst in C ist man da extrem schnell.
1
// Sender
2
3
// IO init etc.
4
5
while(1) {
6
  while(!(PINA & (1<<PA0)));  // warte auf E=1
7
  while( (PINA & (1<<PA0)));  // warte auf E=0 -> fallende Flanke
8
  UDR = PINA;
9
}
1
// Empfänger
2
3
// IO init etc.
4
5
while(1) {
6
  while(!(UCSRA & (1<<RXC)));  // warte auf UART-Empfang
7
  PORTA = UDR;
8
  PORTB |= (1<<E_OUT);
9
  PORTB &= ~(1<<E_OUT);
10
11
}


Schon fast langweilig.

: Bearbeitet durch User
von Route_66 H. (route_66)


Lesenswert?

Falk B. schrieb:
>>Denn die Serielle Übertragung muss ja mit der Geschwindigkeit des
>>"Senders" mithalten. Den kannst du nicht ändern, habe ich verstanden.

Auf der Sendeseite kann man auch in einem Ringpuffer zwischenspeichern. 
Sehr häufig können sich die Displaydaten ja nicht ändern. Schließlich 
muss das irgend jemand lesen können.

von Uwe S. (de0508)


Lesenswert?

Danke Falk,

nun muss nur der der TE, daraus eine Stück Hardware machen und eine 
attiny2313, tn4313, o.ä. programmieren.

von Bülent C. (mirki)


Lesenswert?

dev_null schrieb:
> Bülent C. schrieb:
> 82B715 Baustein als I2C Repeater
>
> Meinst du den I2C Repeater "missbrauchen"? Ich möchte direkt die HD44780
> Signale übertragen (mit max. 4 Leitungen), da der "Sender" ein fertiges
> Gerät ist.
>
> Dachte da an eher sowas wie SerDes (wo mehrere bits serialisiert
> übertragen werden): Serialisieren der HD44780 Signale->auf RS485/422
> umsetzen->RS485 adapter zu TTL/LVTTL->serialisierte Daten wieder
> parallel ausgeben.

Also erstmal sind das mindestens 6 Leitungen.
Da dein Sender wohl für diesen Einsatz nicht konzipiert ist, musst du eh 
noch Stück Hardware dazwischen packen.
OOptimalerweise überträgt man über solche Strecken die Daten seriell, 
und i2c wäre neben anderen eine Wahl die man treffen könnte.
Könntest die 6 Signale auch per Lichtleiter übertragen :-)

von Bülent C. (mirki)


Lesenswert?

Joe F. schrieb:
> I2C wird da wohl ein wenig langsam sein.
> Bei 8-bit Daten + extra Signale = 16-bit expander + overhead (adresse /
> ACK) wird die Clock dann bei vielleicht max. 10 KHz landen.
>
> Guck mal bei TI nach LVDS serializer / deserializer. Da ist bestimmt
> etwas dabei.
> z.B. DS92LX1621 + DS92LX1622
> Macht dir 800 Mbits/sec bei 16-bit über eine differentielle 2-Draht
> Leitung.
>
> http://www.ti.com/product/ds92lx1621
> http://www.ti.com/lit/ds/symlink/ds92lx1621.pdf
>
> Nachtrag: allerdings schreiben die bei diesem Teil "up to 10 meters
> shielded twisted pair".
>
> Gibt aber bestimmt auch etwas, das größere Strecken "kann".

Wieso einen 16bit expander? Ein 8 bit reicht.
Und warum ssoll es langsam sein? Er überträgt nur pupsige Bytes

: Bearbeitet durch User
von Joe F. (easylife)


Lesenswert?

Falk B. schrieb:
> Ein Befehl dauert beim HD44780 mindestens 40us.

Woher hast du diesen Wert?
Ich lese im Datenblatt, dass man bis zu 2MHz machen kann.

Es wäre glaube ich ganz gut, wenn dev_null (TO) selbst mal nennen 
könnte, um welche Datenrate es hier geht.

Wenn es wirklich im Bereich von 250 kbit (seriell) liegt, kann man sich 
den Rest des Abends ja dann Gedanken um die drahtlose Übertragung 
machen, der Source-Code für's serialisieren/deserialisieren ist ja schon 
da ;-)

Kabel ist doch eh so dermaßen old-school...

von Harald W. (wilhelms)


Lesenswert?

dev_null schrieb:

> kennt jemand ein fertiges Produkt, mit dem man ein HD44780 Display über
> eine lange Strecke (>10m) per differentiellen Leitungen
> ansteuern/verlängern kann?

Nun, früher gab es mal Parallel/Seriell Wandler und umgekehrt
für Centronics-Drucker. Aber erstens dürften die inzwischen
obsolet sein und zweitens braucht man da sicherlich auch noch
zzusätzliche Steuerlogik.

von Joe F. (easylife)


Lesenswert?

Bülent C. schrieb:
> Und warum ssoll es langsam sein? Er überträgt nur pupsige Bytes

Ja, aber eben mit einer bis zu 2MHz Clock.
Und ein 400 KHz I2C kann im günstigsten Fall nur 400K/9 byte/s 
übertragen, also wäre bei einer 44 KHz Display Clock bereits 
Ende-Gelände.

von Bülent C. (mirki)


Lesenswert?

Joe F. schrieb:
> Bülent C. schrieb:
> Und warum ssoll es langsam sein? Er überträgt nur pupsige Bytes
>
> Ja, aber eben mit einer bis zu 2MHz Clock.
> Und ein 400 KHz I2C kann im günstigsten Fall nur 400K/9 byte/s
> übertragen, also wäre bei einer 44 KHz Display Clock bereits
> Ende-Gelände.

Du möchtest mir jetzt erzählen das man mit einem i2c expander keinen 
Hd44780 display betreiben kann?

von Falk B. (falk)


Lesenswert?

@ Joe F. (easylife)

>> Ein Befehl dauert beim HD44780 mindestens 40us.

>Woher hast du diesen Wert?

Aus dem Datenblatt. Execution times.

>Ich lese im Datenblatt, dass man bis zu 2MHz machen kann.

Nö. Der E-Puls muss mindesten 500ns breit sein, darf aber nicht 
schneller als 40us wiederkommen. Ausnahme im 4 Bit Mode, da kann man die 
beiden Nibbles deutlich schneller nacheinander schicken.

>Kabel ist doch eh so dermaßen old-school...

Wer Funk kennt nimmt Kabel!

von Uwe S. (de0508)


Lesenswert?

Joe F. schrieb:
> Falk B. schrieb:
>> Ein Befehl dauert beim HD44780 mindestens 40us.
>
> Woher hast du diesen Wert?
> Ich lese im Datenblatt, dass man bis zu 2MHz machen kann.

Nöö, so eine LCD Datenblatt kenne ich nicht, die schnellsten LCDs die 
ich habe, liegen auch bei ca. 40µs pro Befehlszyklus, dabei ist noch 
eine Mindestlänge des EN-Signals zu beachten !

Es werden mit den Ansatz von Falk Brunner genau 6 Byte übertragen.

D4 - D7, RS, EN = 6 Bit; 4Bit Modus.
RS legt fest, ob es sich dabei um Daten (=1) oder Kommandos (=0) 
Nibbel+Nibbel handelt.
Die Datenleitung RW liegt auf dabei 0 (Gnd) und das Bussy Flag wird 
nicht verarbeitet.

: Bearbeitet durch User
von Joe F. (easylife)


Lesenswert?

Bülent C. schrieb:
> Du möchtest mir jetzt erzählen das man mit einem i2c expander keinen
> Hd44780 display betreiben kann?

Nein, das möchte ich nicht. Ich habe nur gesagt, die Clock darf dann 
nicht schneller als 44 KHz sein.
Und TO kann ja seine Clock nicht beeinflussen...

Falk B. schrieb:
>>Kabel ist doch eh so dermaßen old-school...
>
> Wer Funk kennt nimmt Kabel!

Hihi, made my day.

von W.A. (Gast)


Lesenswert?

dev_null schrieb:
> kennt jemand ein fertiges Produkt, mit dem man ein HD44780 Display über
> eine lange Strecke (>10m) per differentiellen Leitungen
> ansteuern/verlängern kann?

Selbst Festplatten werden heutzutage nicht mehr über eine bitparallele 
Schnittstelle betrieben. Warum willst dein Display unbedingt über eine 
parallele Schnittstelle und dann noch differentiell ansteuern. Das 
Display wesentlich schneller anzusteuern, als man es ablesen kann, ist 
meist ziemlich sinnfrei. Wäre nicht ein µC am Display und eine gängige 
serielle Schnittstelle, insbesondere wegen des geringeren 
Verdrahtungsaufwandes, vorzuziehen?

von Peter D. (peda)


Lesenswert?

Uwe S. schrieb:
> D4 - D7, RS, EN = 6 Bit; 4Bit Modus.

Man sollte erstmal rauskriegen, welcher Modus benutzt wird.
Dann kann man die UART auf 5 oder 9 Bit setzen.
Bei 16MHz kann die UART 1MBaud senden, das sollte dicke reichen.
EN muß nicht übertragen werden.

von Uwe S. (de0508)


Lesenswert?

Hallo Falk,

sehr schön, danke.

von Stefan F. (Gast)


Lesenswert?

Ich habe es so verstanden, dass sowohl das Display als auch die 
ansteuernde Schaltung unveränderlich sind. Lediglich das Kabel 
dazwischen will der TO verlängern.

@Falk Brunner: Mir ist schon klar, dass man die Signale mit 
Mikrocontrollern serialisieren und übertragen kann. In der Tat habe ich 
das sogar schonmal schonmal mit dem kompletten bedienfeld einer 
Alaramanlage gemacht (über 2-Draht Telefonkabel).

Nur habe ich auch den Eindruck gewonnen, dass der TO etwas Fertiges 
sucht. Er sieht sich vermutlich nicht imstande, Software und Hardware 
dafür zu entwicklen.

Dein Codebeispiel hilft ihm sicherlich, falls ich ihn da falsch 
eingeschätzt habe.

von JoJoBa (Gast)


Lesenswert?

dev_null schrieb:
> Normalerweise ist das LCD über eine 15cm lange Leitung angeschlossen.
> Nun soll es (weit) entferent betrieben werden. Es sind dazu max. 4
> Leitungen (für Daten/Clock) vorhanden. Auf Grund der Länge sollte es
> differentiell sein.

Hallo dev_null

Handelt es sich bei deinem Gerät um I2C 2 Draht Ansteuerung;
SDA-SCL-GND-Ucc+  ???

Wenn Ja, dann gibt es für die Übertragung fertige Produkte;

Beitrag "AVR SDA-SCL One-Wire I2C Optokoppler"

und Falks Vorschlag;
http://sandboxelectronics.com/?product=pca9600-differential-i2c-long-cable-extender-with-boost-convertor

MfG

von Nosilent (Gast)


Lesenswert?

JoJoBa schrieb:
> Handelt es sich bei deinem Gerät um I2C 2 Draht Ansteuerung;
> SDA-SCL-GND-Ucc+  ???

Es geht um die Verlängerung der LCD Ansteuerung, die Hd44780 ist. Also 
mindestens 6 Leitungen, wobei ich nur 4 zur Verfügung habe.
Wie das Gerät die Daten bekommt kann ich nicht verändern. Ich muss 
direkt die Hd44780 Signale abfangen bzw. Umwandeln.

von JoJoBa (Gast)


Lesenswert?

Verstehe,
dann ist mein Vorschlag nicht brauchbar.

Sorry

von Falk B. (falk)


Lesenswert?

@ Stefan Us (stefanus)


>Ich habe es so verstanden, dass sowohl das Display als auch die
>ansteuernde Schaltung unveränderlich sind. Lediglich das Kabel
>dazwischen will der TO verlängern.

Eben, genau dafür braucht man einen (transparenten) Extender, der am 
Eingang ein HD44780 emuliert und am anderen Ende den Controller mit 
seinen Ansteuerleitungen

>Nur habe ich auch den Eindruck gewonnen, dass der TO etwas Fertiges
>sucht.

Das tut er.

> Er sieht sich vermutlich nicht imstande, Software und Hardware
> dafür zu entwicklen.

Kann sein.

von devnull (Gast)


Lesenswert?

Peter D. schrieb:
> Fertig nicht, aber wenn man programmieren kann, kann man was selber
> bauen.
> Man braucht einen MC (z.B. ATtiny2313), der die 9 Bit parallel einliest
> und über die UART rausschickt (RS-485). Dann einen 2. MC, der es
> empfängt und das LCD steuert.

Danke Peter, genauso hab ich mir das auch gedacht. Kann programmieren 
usw., tendiere bei einem Selbstbau aber eher zu einem STM32 (oder 
anderem ARM core uC), damit das ganze auch relativ flott geht (wie schon 
oben erwähnt hat ja HD44780 max. 2MHz).

Falk B. schrieb:
> Dann muss man einen intelligenten MUX aufbauen, der die Eingänge des
> LCDs emuliert und jedes Kommando, welche mit einem E-Puls geschickt wird
> über eine serielle Leitung abtransportiert.
>
> Beitrag "Re: Mehrere Signale über eine Leitung"
>
> Das könnte man aufbohren. Mit jeder fallenden Flanke von E müssen die
> Daten DB0-DB7 sowie RS abgetastet werden und seriell per UART verschickt
> werden, im Zweifelsfall mit 9 Bit/Datenpaket. Der Empfänger macht es
> dann anders herum. Sollte machbar sein. E würde ich an einen
> interruptfähigen Eingang legen. Die differentielle Übertrtagung macht
> man dann per RS485. Dazu braucht man ein verdrilltes Leitungspaar +
> Masse!

Danke für die Implementierungshinweise, genauso hab ich mir das auch 
gedacht. Ein wichtiger Punkt wäre für mich, ob es da etwas fertiges 
gibt. Leider denke ich auch, dass es wohl ein Eigenbau werden wird (ich 
tendiere zu einem STM32 uC auf Sender und Empfänger Seite).

Joe F. schrieb:
> Es wäre glaube ich ganz gut, wenn dev_null (TO) selbst mal nennen
> könnte, um welche Datenrate es hier geht.

Das weiß ich leider nicht, es handelt sich um ein fertiges Produkt. Das 
Display muss aber an eine ca. 10-15m entfernte Stelle, daher die Frage 
nach einem fertigen Produkt. Leider liegt das Geräöt noch ncht vor mir, 
daher kann ich auch die reale Datenrate noch nicht messen. Wenn dann 
sollte die Lösung sowieso HD44780 konform sein (lese da auch aus dem 
Datenblatt 2MHz Takt heraus...).

Harald W. schrieb:
> Nun, früher gab es mal Parallel/Seriell Wandler und umgekehrt
> für Centronics-Drucker. Aber erstens dürften die inzwischen
> obsolet sein und zweitens braucht man da sicherlich auch noch
> zzusätzliche Steuerlogik.

Interessante Sache, wobei da könnte man auch die Lösung mit dem I2C, 
oder SerDes ICs aufbauen.

Joe F. schrieb:
> Und TO kann ja seine Clock nicht beeinflussen...

Ganz genau, so ist es.

W.A. schrieb:
> Selbst Festplatten werden heutzutage nicht mehr über eine bitparallele
> Schnittstelle betrieben. Warum willst dein Display unbedingt über eine
> parallele Schnittstelle und dann noch differentiell ansteuern. Das
> Display wesentlich schneller anzusteuern, als man es ablesen kann, ist
> meist ziemlich sinnfrei. Wäre nicht ein µC am Display und eine gängige
> serielle Schnittstelle, insbesondere wegen des geringeren
> Verdrahtungsaufwandes, vorzuziehen?

Ich will einfach das Display mit HD44780 (4 bit Interface) entfernet 
betreiben, ohne die bereits existierenden fertigen Komponenten zu 
ändern. Daher Suche ich nach einem fertigen Gerät, dass genau diese 
Aufgabe erfüllt.

Falk B. schrieb im Beitrag #4436126:
> So könnte das aussehen ;-)

Das sieht echt gut aus, danke dafür.

Stefan U. schrieb:
> Nur habe ich auch den Eindruck gewonnen, dass der TO etwas Fertiges
> sucht. Er sieht sich vermutlich nicht imstande, Software und Hardware
> dafür zu entwicklen.

Ich suche etwas fertiges, genau. 2. Annahme ist falsch: Bin gut 
bewandert auf dem Gebiet uC (ASM, C, C++), FPGA, Software. Jedoch soll 
das Endprodukt professionell eingesetzt werden. Daher benötige ich für 
diesen Adapter CE-Kennzeichnung, EMV-Messung, etc. Das will ich mir halt 
ersparen wenn ich was selber dazu baue...

von Uwe S. (de0508)


Lesenswert?

Hallo devnull,

ich möchte schon gerne wissen, warum man ein LCD abgesetzt über diese 
Entfernung ablesen möchte.

Reicht da nicht auch eine einfache Webcam ?

von devnull (Gast)


Lesenswert?

Uwe S. schrieb:
> ich möchte schon gerne wissen, warum man ein LCD abgesetzt über diese
> Entfernung ablesen möchte.
>
> Reicht da nicht auch eine einfache Webcam ?

Eine Webcam reicht leider nicht. Es handelt sich um einen Industrie-Akku 
mit BMS (inkl. HD44780 LCD). Der Akku-Zustand soll in einem entfernten 
Raum dargestellt werden.

Technisch ist es kein Problem die Daten vom BMS zu bekommen, wenn man 
den Akku aufmacht... Genau das darf/will ich nicht. Ich kann nur das LCD 
abstecken, ohne den Akku öffnen zu müssen.

von Peter D. (peda)


Lesenswert?

devnull schrieb:
> HD44780 konform sein (lese da auch aus dem
> Datenblatt 2MHz Takt heraus...).

Also im HD44780-Datenblatt steht:
Enable cycle time tcycE 1000 ns
Execution Time (max) (when fcp or fOSC is 270 kHz): 37µs/1.52ms

D.h. max 1MHz je Nibble und min 37µs/1.52ms Wartezeit je Byte.
Wie schon gesagt, kein Problem für den ATtiny.

von devnull (Gast)


Lesenswert?

Peter D. schrieb:
> Execution Time (max) (when fcp or fOSC is 270 kHz): 37µs/1.52ms
>
> D.h. max 1MHz je Nibble und min 37µs/1.52ms Wartezeit je Byte.
> Wie schon gesagt, kein Problem für den ATtiny.

Ah, danke! Dann ist die Lösung von Falk ja echt perfekt.

von Falk B. (falk)


Lesenswert?

@  devnull (Gast)

>sollte die Lösung sowieso HD44780 konform sein (lese da auch aus dem
>Datenblatt 2MHz Takt heraus...).

Auch wenn man es 100mal wiederholt wird es nicht richtiger!

Der HD44780 kann KEINE 2 MHz! Wohl aber ist die minimale Pulsbreite für 
E = 450ns und die minimale Periodendauer für E 1us. Das wäre nur 1 MHz. 
Im 4-Bit Modus kann man maximal in 2us 2 Nibble schreiben, dann MUSS 
min. 40us Ruhe sein, weil die Befehle nicht schneller bearbeitet werden 
können.
Das wäre sozusagen ein Burst mit 2 Pulsen.

von Falk B. (falk)



Lesenswert?

So, hier mal die überarbeitete Version in THT und SMD sowie als 8/4 Bit 
Version. Da sollte für jeden was passendes dabei sein. Die 4 Bit 
Versionen arbeiten mit 500 kbit/s, die 8 bit Version mit 1 Mbit/s. Die 8 
Bit Version kann 8 und 4 Bit automatisch, darum muss sie auch schneller 
senden, um im EXTREMFALL die kurzzeitig höhere Datenmenge wegzukriegen. 
Im Normalfall wird es wohl kaum passieren, wenn der ansteuernde 
Controller das Timing nicht total ausreizt. Die 4 Bit Versionen braucht 
ein paar weniger Bauteile.

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.