EA DOGM162 Problem

OP #7655188
Lesenswert?

Hallo,

vorweg: Ich weiß, daß dieses Thema schon oft behandelt wurde und ja, ich habe die diversen Beiträge gelesen!

Ich wollte bei einem Projekt das genannte Display mit einem ATmega 8 einsetzen und versuche schon seit Tagen die Initialisierung hinzubekommen. Anfangs nur mit Hilfe der Datenblätter vom Display und vom Controller und später mit den diversen Codes im Forum. Allerdings beschränke ich mich im wesentlichen auf ASM. Da alles erfolglos war habe ich

  • zwei neue Displays gekauft
  • den ATmega 8 gewechselt
  • die Steckbrettschaltung in eine fest verdrahtete Version geändert.

Nach vielen vergeblichen Versuchen hatte ich dann gestern ein erstes Lebenszeichen mit dem Code von Bernhard (5V, 4Bit)

Beitrag "5V 4Bit - DOGM162 DOGM081 EA DOGM163 Initialisierung Beispiel ATmega8 Assembler"

Nachdem es schon spät war habe ich alles unverändert gelassen und nur ausgeschaltet. Als ich dann heute wieder eingeschaltet habe, tat sich wieder nichts. Nach diversen Versuchen bin ich nun dahinter gekommen, daß das Display nur nach dem Flashen startet. Oft auch erst beim 2. Mal.

Das ist natürlich keine Lösung und ich frage mich was die Ursache sein könnte! Ich habe vor der Initialisierung auch schon 1s Pause eingelegt, aber ohne Änderung.

Hat jemand einen Tip?

OP #7655200
Lesenswert?

Rick schrieb:

Bruno M. schrieb:

Hat jemand einen Tip?

Ja,

  1. den verwendeten Code zeigen (Anhang),
  2. den verwendeten Schaltplan anhängen (pdf),
  3. die aufgebaute Schaltung zeigen (Foto),
  4. das Datenblatt zum Display verlinken,
  5. schreiben, welche Messmittel (Oszilloskop/Multimeter/Logikanalysator) zur Verfügung stehen.

Code, Schaltplan sind im aufgeführten Link, die Schaltung entspricht dem Schaltplan, der Hinweis auf den Controller findet sich im Link.

Signale habe ich mit einem analogen Oszi geprüft. Ich kann kein Problem erkennen.

OP #7655311
Lesenswert?

S. L. schrieb:

Wie kommt Bernhard S. auf die 10 us, bei einem CPU-Takt von 1 MHz?

Das ist zwar ein guter Hinweis, aber eine Änderung hat leider nichts gebracht. Ich habe mir in der Zwischenzeit auch noch mal die Timing-Vorgaben im Datenblatt angesehen. Eigentlich hat Bernhard überall sehr viel Luft gelassen: Soll Ist

  • vor Initialisierung >40ms 100ms
  • nach dem ersten Schritt >1,6ms 10ms
  • danach jeweils >26,3us 1ms
  • nach Initialisierung >26,3us 100ms + 1s bleibt noch das toggeln von EN, aber auch da ist mit 50us genug Zeit eingebaut.
(Firma: 1984now) #7655322
Lesenswert?

Bruno M. schrieb:

Ich habe mir in der Zwischenzeit auch noch mal die Timing-Vorgaben im Datenblatt angesehen. Eigentlich hat Bernhard überall sehr viel Luft gelassen: Soll Ist

  • vor Initialisierung >40ms 100ms

Das ist oft ein kritischer Punkt, wenn man sein Gesamtsystem nicht überblickt. Was passiert auf den Leitungen, bevor der zuständige Treiber die Kontrolle darüber übernimmt?

Hier hauen gerne mal schlecht programmierte Bestandteile der ohne Sinn und Verstand zusammenkopierten Software rein. Oder auch genauso ohne Sinn und Verstand designte Hardware...

Bei der Identifizierung eines Problems in diesem Bereich hilft übrigens ein LA nicht. Da muss es schon wirklich ein Oszi sein.

OP #7655557
Lesenswert?

Erstmal danke für das Interesse und die guten Ratschläge.

Ich habe den Fehler gefunden! Ist mir zwar peinlich, aber da muß ich jetzt durch!

Da ich übernommene Codes auch verstehen möchte, schreibe ich sie grundsätzlich neu, auch wenn ich nichts ändern will. So auch hier. Dabei habe ich aus Versehen das RS Signal vor der Initialisierung nicht auf low gesetzt. So nahm das Drama seinen Lauf!

(Firma: 1984now) #7659187
Lesenswert?

Bruno M. schrieb:

Erstmal danke für das Interesse und die guten Ratschläge.

Ich habe den Fehler gefunden! Ist mir zwar peinlich, aber da muß ich jetzt durch!

Da ich übernommene Codes auch verstehen möchte, schreibe ich sie grundsätzlich neu, auch wenn ich nichts ändern will. So auch hier. Dabei habe ich aus Versehen das RS Signal vor der Initialisierung nicht auf low gesetzt. So nahm das Drama seinen Lauf!

Also, wie von mir vermutet: Das Problem lag vor der eigentlichen Initialisierung.

Oder anders ausgedrückt: die Intialisierung ist offensichtlich unvollständig. Wenn der Zustand von RS eine Rolle spielt, dann hat die Initialisierung sich natürlich auch um dieses Signal zu kümmern.

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