www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD über 74HC595 ansteuern


Autor: Frank Link (franklink)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
ich benötige mal wieder ein wenig Hilfe.

Mit den Routinen im Anhang versuche ich über ein 74HC595 ein LCD
anzusteuern.
Ich habe zu diesem Zweck die LCD Routinen aus dem Tutorial umgebaut.

Grundsätzlich scheinen die Routinen zu funktionieren. Jedoch benötige
ich mehrere Resets bevor das LCD den Text korrekt anzeigt.

Ich vermute deshalb ein Problem im Timing. Leider habe ich keine Idee
mehr wo ich noch ansetzen könnte.

Es wäre sehr nett, wenn ihr mit dem ein oder anderen Tipp aushelfen
könntet.

Danke und Gruß
Frank

Autor: Jochen Müller (taschenbuch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Frank,

1) Prüfen ob alle Flanken (CE/WR...) die richtige Richtung haben.
2) Einfach mal das Timing EXTREM verlangsamen und sehen ob es dann 
klappt.
3) Falls ja: an das richtige Timing herantasten, mir Sicherheitsreserve.

Jochen Müller

Autor: Frank Link (franklink)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jochen,
habe ich schon alles gemacht, hat keine Veränderung ergeben.

Entweder, ist die Handhabung von RS und E falsch, was meine Vermutung 
ist, oder ich übergebe die Daten schlicht weg falsch.

Beides ist möglich, aber ich sitze schon den ganzen Tag an den Routinen 
und irgendwann wird man Betriebsblind.

Gruß
Frank

Autor: Ekschperde (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der 595 ist beim Timing in der Ansteuerung völlig unkritisch.
So fixe Controller gibts gar nicht.

Die üblichen Verdächtigen wäre also:

_delay_us();
_delay_ms();


Schon mal mit einem Oszi getestet das die richtig gehen?

Autor: Frank Link (franklink)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Ekschperde,
ich habe an E und RS Dioden parallel laufen, ich kann also sehen, dass 
die Ports schalten, ich habe eben nochmals das Timing extrem verlängert, 
leider bekomme ich in 90% aller Neustarts des Controllers wirres Zeug 
auf dem Display zusehen.

Gruß
Frank

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Frank Link wrote:
> leider bekomme ich in 90% aller Neustarts des Controllers wirres Zeug
> auf dem Display zusehen.

Ja, Deine Initialisierung ist für die Katz.

Schau Dir mal diesen Code an:

http://www.mikrocontroller.net/attachment/30300/lcd_drv.zip

In der Initialisierung darfst Du noch keine Kommandos senden, sondern 
nur je ein Nibble.
Du bist ja noch nicht im 4-Bit Modus.


Das mit der echten Division ist sehr code- und zeitfressend.
Machs besser mit byte_nr = x>>3; und bit_nr = x&7;


Peter

Autor: Frank Link (franklink)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
vielen Dank für die ganzen Tipps, letztlich war es Dein Tipp Peter 
(vielen Dank) und mein Steckboard dessen Alter wohl vor Methusalem 
liegt.

Durch Kontaktprobleme beim senkrechten Stellen kam es wohl zu unsauberen 
Signalen.

Jetzt klappts.

@Peter
Ich habe Die Routinen aus dem Attachment so übernommen und angepasst.
Das Attachment stammt das von Dir? Da ich die Routine auch in die 
Codesammlung stellen möchte, möchte ich natürlich auch den korrekten 
Ursprungsautor benennen.

Dabei habe ich wiedermal feststellen müssen, dass ich viel zu sehr in 
Delphi verhaftet bin und für C und Mikrokontroller anscheinend viel zu 
kompliziert denke.

Gruß
Frank

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Frank Link wrote:

> Das Attachment stammt das von Dir?

Ja.


> Dabei habe ich wiedermal feststellen müssen, dass ich viel zu sehr in
> Delphi verhaftet bin und für C und Mikrokontroller anscheinend viel zu
> kompliziert denke.

Bei mir isses umgekehrt, ich habe keine Ahnung von PC-Programmierung 
(außer kleine DOS-Sachen <50kB)). Ich rätsele da immer wieder wie man 
hunderte Megabytes verbraten kann. Aktuelle Programme werden nur noch 
auf DVD geliefert (CD mit 800MB reicht nicht mehr).
Ich hab auch den Verdacht, PC-Programmierer denken viel zu kompliziert 
oder geben sich keine Mühe.

Aufm MC reichen wenige kB Flash und 128 Byte SRAM dicke aus.


Peter

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter: Du vergleichst hier Äpfel mit Birnen. Abgesehen von eventuell 
tatsächlich vermurkstem Code stecken im PC-Programm noch viele, viele 
Bytes, die für die grafischen Oberfläche und die Bedienung durch den 
Anwender bestimmt sind. Außerdem mußt Du viele Treiberinterfaces 
mitliefern. Das hast Du im µC nicht.

Autor: Björn Cassens (bjoernc) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich habe zur Zeit das selbe Problem mit meinem Display, die 
ebenfalls über zwei 595er angesteuert werden, daher hole ich einfach mal 
den Beitrag aus der Versenkung, da ich zZt. nicht weiter komme.
Das Display soll im 8 Bit Modus laufen. Das große Problem das ich zur 
Zeit habe ist ebenfalls, dass das Display erst nach mehreren Anläufen 
erst funktioniert ansonsten sehe ich auf Zeile 0 und 2 einfach nur 
schwarze Balken... Ab und zu funktioniert dieses aber halt nich 
zuverlässig.
Daher ist meine Frage ob jemand vielleicht weiß an was das liegen 
könnte.

mfG Björn

PS: auch wenn man es nicht sieht mit dem delay, die F_CPU sowie die 
dazugehörige lib ist vorhanden und included.

Autor: Björn Cassens (bjoernc) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So problem meiner Seits gelöst, sofern jemand ähnliche Probleme hat:
ich habe an RS, RW, EN jeweils 10k Ohm pull down Widerstände angelötet.
Das problem war nicht der Algorithmus sondern einfach, das die 74595 zu 
Anfang also beim start des uC auf Z lagen daher kam es dann zu den nicht 
reproduzierbaren Fehlern.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.