HD44780 4-Bit: Störung ergibt falsches Nibble

#2275825
Lesenswert?

Schönes Wochenende liebe Leute,

ich schlage mich schon eine Weile mit folgendem Problem herum:
- LCD im 4-Bit mode an LED-Treiber (I2C)
- Nicht von mir, aber funktioniert
- Störung (Lötkolben, etc.) verursacht Flanken am EN -> unerwünschte 
Zeichen
- Hardware darf nicht geändert werden :-(

Was mache ich, um fehlerhafte Zeichen schnell (10Hz Abfrage) zu erkennen 
und das Display zu resetten?

LG, Johannes.
#2278212
Lesenswert?

> Falls Du aber den IO-Expander PCF8574 meinst, der hat nur sehr schwaches
> High an seinen Ausgängen, da gehören dann Pullups ran, zumindest für den
> E-Pin (z.B. 4,7k).

In diesem Fall ist es ein PCA9532 mit 10k Pullup am E-Pin. Dem habe ich 
dann 1n parallel. Ich kann ihn auch noch durch einen 1k ersetzen und 
dann 10n statt 1n nehmen. Verbessert die Fehlerhäufigkeit, behebt aber 
noch nicht das Problem.

>Wie lang sind denn die Leitungen zum LCD?

Im Moment absichtlich 40cm, im Einbau ca, 8cm.

>Hast Du auch reichlich 100nF Pillen an jedem VCC-Anschluß?

Am Display oder am PCA? Ich glaube da sind an beiden 100n, habs grad 
nicht da.

>3 * 8Bit-Mode setzen und dann wieder in 4Bit-Mode.

Genau das wollte ich wissen, vielen Dank. Weißt du auch warum es 3-Mal 
sein muss? Oder meinst du 3 * das 0b0010 Nibble?


Johannes.
Moderator (Firma: Titel) Persönliche Seite #2278379
Lesenswert?

Johannes K. schrieb:
> Was mache ich, um fehlerhafte Zeichen schnell (10Hz Abfrage) zu erkennen
> und das Display zu resetten?
Schreib das Display einfach 10 mal pro Sekunde neu...

Dazu machst du dir im uC einen Speicherbereich, der laufend zum Display 
übertragen wird. Und in diesen Speicher schreibst du rein. Dann kannst 
du auch sehr schnell zurücklesen, was da gerade steht.
#2278608
Lesenswert?

> Schreib das Display einfach 10 mal pro Sekunde neu...

Das funktioniert doch aber nur, wenn die Nibbles stimmen!

> Dazu machst du dir im uC einen Speicherbereich, der laufend zum Display
> übertragen wird. Und in diesen Speicher schreibst du rein. Dann kannst
> du auch sehr schnell zurücklesen, was da gerade steht.

Ich weiß doch, was im Display steht. Ich habs ja selbst zuvor 
reingeschrieben. Entscheidend ist nur, wie ich rausbekomme, ob das 
Display 1 (!) falsches Enable bekommen hat.
Moderator (Firma: Titel) Persönliche Seite #2278625
Lesenswert?

Johannes K. schrieb:
> - Hardware darf nicht geändert werden :-(
Was heißt "nicht geändert"?
Du hast doch ein offensichtliches Problem mit der Hardware.
> Entscheidend ist nur, wie ich rausbekomme, ob das
> Display 1 (!) falsches Enable bekommen hat.
Ich würde sagen, das kannst du nicht. Weil du ja das Display nicht mehr 
zuverlässig ansprechen kannst...

Johannes K. schrieb:
> Das funktioniert doch aber nur, wenn die Nibbles stimmen!
Hmmmm.
Richtig, und es macht keinen Spass, jedesmal die Initialisierung 
durchzuführen...
Aber probier doch einfach mal aus, ob du so einen korrupten RAM-Zugriff 
abbrechen kannst, wenn du zwischendurch mal auf die Statusregister 
schreibst. Denn dann könnte der Controller ja draufkommen, dass 
anschliessend ein RAM-Zugriff neu begonnen werden soll.
#2279288
Lesenswert?

> Aber probier doch einfach mal aus, ob du so einen korrupten RAM-Zugriff
> abbrechen kannst, wenn du zwischendurch mal auf die Statusregister
> schreibst. Denn dann könnte der Controller ja draufkommen, dass
> anschliessend ein RAM-Zugriff neu begonnen werden soll.

Im Prinzip schon. Ich habe aber den Eindruck, dass der Kontroller R/W 
und RS ignoriert, solange die aktuelle Übertragung (2 Nibbles) nicht 
abgeschlossen ist.

Zum Verständnis:
- Die Störungen sind im Einsatz seltenst stark genug, um einen Fehler 
hervor zu rufen.
- Mich stört es trotzdem.
- Ich frage zyklisch die aktuelle (Letzte+1) Schreibposition ab und wenn 
sie nicht stimmt, schreibe ich alles neu.
- Wenn ich jetzt noch den Vorschlag von Peter einbaue, sollte es 
zuverlässig laufen
- (Muss aber grad schnell was anderes machen)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren