Forum: Compiler & IDEs LCD-lib ohne R/W


von Hubert G. (hubertg)


Lesenswert?

Hallo
Ich habe eine Hardware mit LCD bei dem der R/W nicht ausgeführt ist, es 
ist auch kein Pin mehr vorhanden.
In der alten SW wurde die Lib von P. Fleury verwendet, nach Änderungen 
in der SW und fehlerfreiem kompilieren mit neuem GCC ergeben sich 
allerdings Probleme. Ohne Optimierung läuft das Programm einwandfrei, 
ist aber zu groß für den Kontroller Mega8 (Test mit Mega32). Mit 
Optimierung geht am Display nichts mehr ausser gelegentlich nach Reset 
ein paar Katakana.
Hat jemand eine Lib die ohne R/W funktioniert und einigermassen zur 
Fleury Lib passt.
Danke schon mal.
Grüsse Hubert

von Karl H. (kbuchegg)


Lesenswert?

Hubert G. wrote:
> In der alten SW wurde die Lib von P. Fleury verwendet, nach Änderungen
> in der SW

Was hast du wie geändert.

> Hat jemand eine Lib die ohne R/W funktioniert

Die Fleury Lib kann relativ einfach auf R/W-freien Betrieb umgerüstet
werden(*) Mann muss allerdings beachten, dass dann der automatische
Umbruch (WORD_WRAP) ausgeschaltet sein muss, bzw. alles was mit
auslesen zu tun hat, nicht mehr funktionieren wird.


(*) Die Umrüstung beschränkt sich auf 1 Funktion.

von Hubert G. (hubertg)


Lesenswert?

In der Lib von Fleury habe ich nichts geändert, es ist nur beim 
restliche Programm etwas dazugekommen. Der Speicherplatz ist voll daher 
wollte ich es mit dem neuen GCC machen, mit dem alten gehts nicht.
Lesen ist nicht wichtig da nur alle 2sec aktualisiert wird und auch 
nicht zeitkritisch.
Wie müsste man denn die Lib umrüsten?

von Lötlackl (Gast)


Lesenswert?

Hi,

Nach 'nem Schreibbefehl benötigt das Display 'ne gewisse Zeit, den 
Befehl abzuarbeiten. Das Busy-Flag signalisiert, wenn's denn soweit ist.
Man kann aber auch nach 'nem Schreibbefehl ein bisserl warten, 
idealerweise wenigstens solange, wie das Display laut diversen 
Datenblättern zur Abarbeitung benötigt und schenkt sich einfach die 
Busy-Flag-Abfrage.

mfg Lötlackl

von Karl H. (kbuchegg)


Lesenswert?

Lötlackl wrote:
> Hi,
>
> Nach 'nem Schreibbefehl benötigt das Display 'ne gewisse Zeit, den
> Befehl abzuarbeiten. Das Busy-Flag signalisiert, wenn's denn soweit ist.
> Man kann aber auch nach 'nem Schreibbefehl ein bisserl warten,
> idealerweise wenigstens solange, wie das Display laut diversen
> Datenblättern zur Abarbeitung benötigt und schenkt sich einfach die
> Busy-Flag-Abfrage.

@Hubert

Genau.
Und glücklicherweise hat P. Fleury diese Abfrage des Busy
Flags in eine Funktion zusammengefasst. Die Funktion heist
auch irgendwie so ähnlich. Mach einfach das lcd.c auf
und such nach 'busy'. Da findest du die Funktion
garantiert.

Den momentanen Inhalt schmeist du raus und ersetzt ihn durch
einen
  _delay_ms( 5 );
  return 0;

und dann sollte dein Display eigentlich schon wieder funktionieren.

PS: Deine Fehlerbeschreibung hört sich allerdings nicht so an,
als ob die Fleury Lib daran schuld wäre :-) Und da sie vor deinen
Änderungen anscheinend schon mit dem fehlendem R/W Pin funktioniert
hat, ist es mehr als wahrscheinlich, dass sie bereits geändert
wurde.

Für mich hört sich deine Fehlerbeschreiung eher nach
'Du verwechselst Ursache und Wirkung'. Die Ursache deines
Problems ist deine SW Änderung. Die Wirkung die du siehst ist
dass dein Display nicht mehr funktioniert. Du versuchst daher
an der falschen Stelle das Problem zu fixen. Nicht die LCD
Library enthält ein Problem, sondern deine Änderung.

Ist ein bischen wie beim Arzt: Der kann sich noch solange
wundern warum eine Wunde immer weiter eitert und das
Eiter absaugen (=die Wirkung bekämpfen), solange er dir
den rostigen Nagel (=die Ursache) nicht rauszieht, wird
das alles nichts helfen.

von Hubert G. (hubertg)


Lesenswert?

Die neue LCD-Lib läuft jetzt mit der Änderung. Danke für den Hinweis.
Grüsse Hubert

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.