Forum: Mikrocontroller und Digitale Elektronik C167 und HD44780


von Marc Reibel (Gast)


Lesenswert?

Hallo,

bei der Suche nach einer Lösung meines Problemes bin ich hier im Forum 
gelandet. Ich hab mir vor einiger Zeit ein C167-Board gebastelt, was 
auch ganz gut funktioniert. Nun war ich es leid ewig über RS232 zu 
"debuggen" und hab ein 2x16 LCD bzw ein 2x40 LCD angeschlossen. Beide 
alternativ. Beide über Port 2.
P2.0 bis P2.7 als Daten und P2.8-P2.10 als RS,RW und E.
Nach einigem fummeln gibt er auch die ersten Texte aus, doch Starten die 
Zeilen immer mit einem nicht von mir geschriebenen Zeichen. Auch 
funktioniert der Set-DRAM-Addressbefehl und einige andere nur nach 
zweimaliger Anwendung hintereinander.
z.B. ... Schreiben a, schreiben l, clear display, clear display.
Ich bin da ziemlich ratlos und hoffe Ihr könnt mir weiterhelfen.

MfG,

Marc

von Meiserl (Gast)


Lesenswert?

BUSY-Flag vom Modul eingelesen?
Vielleicht schickst du dem Modul schon Daten bevor es sie noch
verarbeiten kann.

Oder am einfachsten mal probieren zwischen dein Befehlen
ein Pause einfügen.

von Marc Reibel (Gast)


Lesenswert?

Danke für die Antwort.

Hmm,

busy Flag funktioniert nicht so richtig.
Irgendwie hab ichs noch nicht raus, den Port zum lesen auf Input zu 
setzen. Und folgendes hab ich vergessen zu sagen. Auch bei normaler 
Textausgabe gibt er nur das vorletzt ausgegebene Zeichen aus.
Wenn ich also "Hallo Welt" an das Display schicke, kommt nur "Hallo 
Wel". Ich hab ja fast das Flachbandkabel und damit verbundene 
Timingprobleme in Verdacht. Alle Beispiele von anderen langsameren 
Controllern konnte ich vergessen, da war der C167 zu schnell für das 
Display. Auch mit beliebigen Wartezeiten von 50 ms bis 500 ms hab ich 
alles Probiert. Er gibt dann zwar Text aus, aber mit den beschriebenen 
Symptomen :(.
Keiner hier, der mal ein Assemblerbeispiel hätte, das wissentlich auf 
nem C166 C167 oder ST10 läuft ?
Erfahrungen mit Timingproblemen oder Flachbandkabeln ?
So langsam bin ich am verzweifeln ;)


MfG,

Marc

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Hallo Marc,

> Auch mit beliebigen
> Wartezeiten von 50 ms bis 500 ms hab ich alles Probiert. Er
> gibt dann zwar Text aus, aber mit den beschriebenen Symptomen
> :(.

versuch mal den Enable-Puls länger zu machen, indem du zwischen löschen 
und setzen des Enable-Bits eine Wartezeit einfügst.

MfG
Andreas

von Marc Reibel (Gast)


Lesenswert?

Hallo nochmal,

hab mir alle Ratschläge zu Herzen genommen und nochmal die
Bustimings des HD44780 Datenblatts mit meinem Code abgestimmt.
Das Listing im Anhang sollte das Display initialisieren und
"Hallo" ausgeben ( mit Busyflagauswertung ). Doch irgendwie
kommt nie das selbe Raus. Mal kommt nix, mal nur ein HLL, doch meist nur 
der Standart, den ich auch ohne Busyflag erhalten habe:
Das Zeichen 255 gefolgt von Hall, ohne o :((.
Woher kommt das Phantomzeichen 255 und wieso verschluckt der ein paar 
Buchstaben ? Noch immer Timing ? Ist doch eigentlich nach Spec.

Achja, die Portbelegung :
P2.0-P2.7 D0-D7
P2.8 RS
P2.9 RW
P2.10 E

Vielleicht noch ein paar Vorschläge ?

Thanx

Marc

von Gunter (Gast)


Lesenswert?

Hi Marc,
ich hatte bei meinem Reichelt 4x16 (bis gestern) auch jede Menge 
Probleme. Display Controller KS0070B.
Was mir letztlich Erfolg gebracht hat, waren 10k Pullup-Widerstände an 
den Datenleitungen.
Hab das Ding über 20 cm Flachbandkabel angeschlossen. Kann sein, daß 
darüber Störungen reinkommen.
Vielleicht hilft's ja auch bei Dir.

Good Luck, Gunter

von Ingo Busker (Gast)


Lesenswert?

Hi,

ich habe das Display in den Datenbus/Adressbus gehängt - einfacher kann 
man den Zugriff kaum realisieren. CS-Leitungen sollen ja genug vorhanden 
sein.
Das Problem mit dem Lesen hat sich dann auch erledigt, ansonsten 
muesstest Du das Port-Direction-Reg immer manuell umschalten.

Wenn Du ein langen Flachbandkabel verwenden musst, wäre ein Bustreiber 
eine gute Idee, um den Daten/Adressbus nicht über riesige Entfernungen 
zu führen (wäre wohl keine so gute Idee).

Man kann auch auf das Busy-Flag verzichten, muss allerdings dem Display 
genung Zeit zum Ausführen der Befehl lassen...

Bis dann,
           Ingo!

von Karsten (Gast)


Lesenswert?

Hi,
hast du jetzt schon eine Lösung für dein Problem?
Würdest du mir mal deinen Code schicken?
Hab da einen Bekannten der da mit Sicherheit ne Lösung kennt.
Wenn du Interesse hast dann den Code an:
karsten-mueller87@gmx.de

MFG

von Jörg S. (joerg-s)


Lesenswert?

>hast du jetzt schon eine Lösung für dein Problem?
Nach 8 Jahren? Nee, der sitzt bestimmt noch vor'm Rechner und wartet auf 
ne Antwort ;)

von Karsten (Gast)


Lesenswert?

Oh :-D

hab nur des Anfangsdatum gelesen und nciht das Jahr:
Aber danke für den Tipp ;-)

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.