In der ersten Zeile wird korrekter weise "Hallo" ausgegeben und die 2.
Zeile fehlt. Nach ca. 10 Sekunden wird die erste Zeile mit "0000.."
überschrieben.
Ich denke ich habe das Display falsch initialisiert. Aber wo?
Danke und Gruß aus Magdeburg
H.-Jürgen
HJH-MD schrieb:> Ich denke ich habe das Display falsch initialisiert. Aber wo?
Ja wo denn nur??
Kann in Deinem Post nirgendwo eine Initialisierung sehen.
Jens
HJH-MD schrieb:> Vielleicht ist das mein Fehler!
Nö, dein Fehler ist dass du gar nichts verstanden hast.
Das Mindeste wäre dass du dein komplettes Programm
zeigst, auch wenn du nichts verstanden hast.
Auch selber mal lesen:
If you do not connect the WR pin to ground but to a pin, and you do not
specify the WR pin, but you set the logic level to 0 in your code, you
have to use an INITLCD command after you have set the WR pin to 0.
HJH-MD schrieb:> Wo steht denn so etwas?
Steht so in der Bascom-Hilfe.
Schreib doch mal ein
Initlcd
vor dein Hauptprogramm.
Evtl. gefolgt von einem
waitms 100
Ich kann es Dir nochmal schreiben:
Dein "Locate" für die 2. Zeile ist falsch. Lies mal die Hilfe dazu.
Der "lcd Wert" schreibt einfach ab der aktuellen LCD-Cursor-Position den
Initialwert von "Wert" (= 0) bis irgendwann ...
Dieter F. schrieb:> Ich kann es Dir nochmal schreiben:>> Dein "Locate" für die 2. Zeile ist falsch. Lies mal die Hilfe dazu.
Aus der Bascom-Hilfe zu "Locate":
Syntax
LOCATE y , x
Remarks
X
Constant or variable with the position. (1-64*)
Y
Constant or variable with the line (1 - 4*)
Nein Dieter F.! Die Anweisung mit Zeile und dann Spalte ist schon
korrekt. Daran liegt es nicht. Und wenn dann hätte auf dem Display
gestanden:
"HWorld". Also die erste Anweisung und dann überschrieben mit "World" in
der ersten Zeile aber erst ab Spalte 2. Es ist aber nicht so!
Ja, hat auch nichts gebracht. Habe aber noch folgendes gefunden:
The CONFIG LCDPIN has an option to use the WR pin, and use the busy flag
of the display. If you have enough pins, this is the best mode.
Bei mir liegt er nun fest auf Masse. Mal sehen aber heute nicht mehr.
Danke Jürgen
Hi,
es gibt noch andere Beispiele für BASCOM LCD Initialisierungen.
https://avrhelp.mcselec.com/index.html?deflcdchar.htm
Also,
die meisten Probs. entstehen (wie man nachlesen kann) anscheinend durch:
1. Portzuordnung
2. Warteschleifen
3. Gebrauch des Busy-Flags
4. Erzeugung bzw. richtiges Setzen der oft vergessenen aber notwendigen
"Enable-Impulse"
HJH-MD schrieb:> and use the busy flag> of the display. If you have enough pins, this is the best mode.
Das Busyflag kann während der allerersten Befehle nicht ausgelesen und
entsprechend nicht benutzt werden. Man braucht die "Pausen" zwischen den
Befehlen. Dazu sind die Warteschleifen drin.
Die Libraries berücksichtigen oft nicht die "timings".
Das wäre dann Punkt 5.
Wenn - wie in dem Thread hier - irgendetwas verschluckt oder
überschrieben wird, liegt das nicht selten an den sog. Timing-Problemen.
Noch ein Punkt (6) wäre die falsche Deklarierung oder Vergessen des
Speicherns von Status- und Temporärregistern.(push pop...etc.)
In ASM wird so eine Initialisierung auch schon nicht mehr absolut
"trivial".
Aber wir reden hier ja über BASCOM. Das macht's ja (hoffentlich) schon
von alleine ohne überflüssigen Ballast. ;-)
ciao
gustav
Guten Morgen und danke.
Das Problem liegt immer noch daran, dass ich die 2. Zeile nicht sehe.
Ich habe mal auf den 4Bit-Modus (den nehme ich schon die letzten Jahre
ohne Probleme mit Bascom und versch. Controllern) umgelötet und es
funktioniert.
Aber im 8Bit-Modus scheint das Programm korrekter weise nach der letzten
Locate-Anweisung genau dahinter zu beginnen den "Wert" (hier = 0)
auszugeben.
Und nach ca. 10 Sekunden durch den Wait 1 Befehl im Hauptprogramm wird
die Zeile 1 mit den Nullen überschrieben. Ich sehe also nur die Zeile 2
nicht.
Ich habe mich für dieses Layout entschieden, weil ich einen Code in ASM
oder C für eine LCD-Anzeige selbst schreiben möchte ohne die Biblio von
Bascom.
Mache dann mal weiter ...
Jürgen
HJH-MD schrieb:> Ich habe mich für dieses Layout entschieden, weil ich einen Code in ASM> oder C für eine LCD-Anzeige selbst schreiben möchte ohne die Biblio von> Bascom.> Mache dann mal weiter ...
Hi @HJH,
hab'mal ein bisschen rumgebastelt.
Also, der Simulator macht's schon 'mal. (Die Zeitschleifenvariablen
vorher anpassen.)
Viel Spaß
Das scheint auf den ersten Blick unnötig "aufgeblasen".
Man sollte es sich zur guten Angewohnheit machen, die Interruptvektoren
auszuformulieren, auch , wenn sie momentan garnicht gebraucht
werden.(Das ist nämlich noch Fehlerquelle ääähm Punkt 7.)
ciao
gustav