Forum: Mikrocontroller und Digitale Elektronik Display DOG-M an SPI- ich bekomme es nicht hin


von Gerd (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich bekomme das Display einfach nicht zum Laufen, das Einzigste, was 
funktioniert ist die Hintergrundbeleuchtung.
Es gibt ja hier einige Beiträge dazu, habe alle möglichen 
Initialisierungsroutinen ausprobiert, aber es tut sich nichts.

Ich vermute bald das ich was ganz Grundsätzliches übersehen habe, kann 
sich jemand mal den Code ansehen, ob da was fehlt.

Müssen da eventuell noch Fuse Bits gesetzt werden, damit SPI 
funktioniert?


Gruß Gerd

von Jansus (Gast)


Lesenswert?

Habe mir Deinen Code nicht genau angeschaut, da ich von dieser 
Programmiersprache keine Ahnung habe.
Wichtig ist, dass Du die im Datenblatt für SPI-Betrieb beschriebene 
Initialisierung durchführst.
Vergrößere am Besten mal vorübergehend die Pausen.
Ich hoffe, Du denkst an das SSEL, sonst fühlt sich das LCD nicht 
angesprochen.

von Gerd (Gast)


Lesenswert?

Hallo,

das Display verhält sich wirklich merkwürdig, wenn ich die gleiche 
Innitialisierungsroutine dreimal durchlaufen lasse, kann ich 
eigenartigerweise endlich was auf dem Display ausgeben.

Was noch eigenartiger ist, der Programmteil funktioniert, der zweite 
Text wird direkt hinter den ersten geschrieben:

Reset Pinf.1          'Kommandomodus
Waitms 10
Spiout Scha , 1       'Position ausgeben
Set Pinf.1            'Datenmodus
Waitms 10
Spiout Text1 , 4      'Text ausgeben
Waitms 10
Spiout Text2 , 4      'zweiten Text ausgeben

Hier wird lediglich Pinf.1 vor dem zweiten Text nochmals gesetzt, was ja 
gar nichts bewirken sollte, aber dadurch wird alles auf den Display 
gelöscht:

Reset Pinf.1          'Kommandomodus
Waitms 10
Spiout Scha , 1       'Position ausgeben
Set Pinf.1            'Datenmodus
Waitms 10
Spiout Text1 , 4      'Text ausgeben
Set Pinf.1        '??????????????????????????
Waitms 10
Spiout Text2 , 4      'zweiten Text ausgeben

Darauf bin ich zufällig gestoßen, was kann das sein? Wenn ich den 
gleichen Pin nochmals setze, darf das doch keine Wirkung haben, selbst 
wenn die Signale durch ungünstgen Aufbau der Schaltung unsauber sein 
sollten.

Der AT90USB1287 ist ja relativ neu, kann es sein das Bascom da Probleme 
mit hat?
Bin bald am Verzweifeln, hat jemand vielleicht eine Idee?

Gruß Gerd

von Jansus (Gast)


Lesenswert?

Schau mal hier die SPI-Initialisierung an:
http://www.lcd-module.de/eng/pdf/zubehoer/st7036.pdf

Ansonsten kann ich Dir leider nicht weiterhelfen. Verwende 4-Bit-Modus 
und programmiere in C.

von g. b. (gunb)


Angehängte Dateien:

Lesenswert?

Hallo Gerd,

ich arbeite zur Zeit u.a. mit einem 2x16 Electronic Assembly Display, 
Bezeichnung DOGM162s-A. Habe es in C mit SPI angesteuert. Schau mal im 
Anhang,
wie ich's mache und versuche es mal, in deinen Code zu konvertieren. SPI 
habe ich mit:

 CPHA auf '1'
 CPOL auf '0'

initialisiert. Bei den Dingern ist immer das Timing bei der Ini wichtig.


Gruss
Gunb

von Spess53 (Gast)


Angehängte Dateien:

Lesenswert?

Hi

Anbei funktionierender Code für DOG-Display mit SPI. Allerdings in 
Assembler. Vergleiche mal die Initsequenz und das Timing.

MfG Spess

von Gerd (Gast)


Lesenswert?

Hallo,

erst mal Danke allerseits für die Beispiele.
Allerdings vermute ich, das Problem hängt mit dem AT90USB1287 und Bascom 
zusammen.
Habe gerade die ganz neue Version runtergeladen und das Programm 
compiliert.
Es kommt sofort die Fehlermeldung:
Error: 202 Line: 1 .EQU not found, probably using functions that are not 
supported by the selected chip

Die erste Zeile lautet:
$regfile = "usb1287.dat"
Kann ich aber auch weglassen, es kommt die selbe Fehlermeldung.
Die Datei "usb1287.dat" ist vorhanden und ich kann den entsprechenden 
Chip auch im Compiler auswählen.
Das Identifizieren des Chips klappt auch.

Die Fehlermeldung würde ich so interpretieren, das der Chip nicht 
unterstützt wird, oder was würdet ihr sagen?

Gruß Gerd

von g. b. (gunb)


Lesenswert?

Hmm,

mit BASCOM arbeite ich nicht, wenn der Chip aber nicht unterstützt 
werden sollte, wofür dann die .dat - Datei? Könnte aber vielleicht sein, 
dass diese fehlerhast ist?! Vorher hattest du dieses Problem doch nicht, 
oder?

Glaube, du hast jetzt ein neues (zweites) Problem zum vorherigen. Mit 
der Display-Initialisierung muss man manchmal immer ein bisschen 
spielen, bis man's hat. Stimmen die Zeiten deiner Wait-Routinen - ganz 
wichtig!

Würde sagen, nimm wieder das vorherige BASCOM, wenn's damit übersetzt 
werden konnte.

Hast du ein Scope zur Hand? Prüfe doch mal, ob die SPI überhaupt sendet.

Gruss
Gunb

von Gerd (Gast)


Lesenswert?

Hallo Gunnar,

senden tut SPI, ansonsten könnte ich ja nichts aufs Display schreiben.

Habe es mit der neuen Datei usb1287.dat in der alten Programmversion 
getesten, da kann ich es auch mit der Version compilieren. Die Fehler 
sind aber die selben.

Das mit dem Oszi hatte ich gerade vor, habe allerdings nur ein uraltes 
Gerät.
Wird etwas dauern, steht leider nicht neben mir :-(



Gruß Gerd

von g. b. (gunb)


Lesenswert?

Ich habe mir gerade noch einmal das Datenblatt vom 
ST7036-Displaycontroller
angesehen. Es sieht so aus, als wenn der Controller gegenüber der Clock 
Polarität relativ grossmütig ist, denn nach Datenblatt sollte im 
SPI-Mode die Clock auf HI im Idle-Zustand stehen. Korrektur zur oben:

 CPHA = 1
   und
 CPOL = 1

Was er aber gar nicht mag, ist eine falsche Phase mit CPHA = 0. Schaue 
ich mir aber deine Sourcen an, so steht dort bei dir "Phase = 0". Das 
würde ich schon einmal ändern.

Habe gerade selbst mit dem Scope nachgemessen. Arbeite bei einer 
Systemclock von 4MHz mit 2MHz oder auch 1MHz auf der SPI problemlos.

Prüf' doch noch einmal deine Phase. Die muss stimmen, sonst kommen bei 
meinem Display auch nur Schrottzeichen raus.

Gruss
Gunb

von g. b. (gunb)


Lesenswert?

Ergänzungsfrage:

Ich habe hier gerade mal den ATMEL-USB Evaluation Stick mit deinem 
Controller flüchtig angeschlossen. Der arbeitet mit ca. 3V-Pegeln.

Du bist doch sicher, dass sowohl dein Display als auch dein Controller 
mit denselben Spannungspegeln arbeiten, oder?

Kannst du sicherstellen, dass dein Display genug Strom über VCC bekommt?

Im Datenblatt von EA sehe gerade, dass bei der 3,3V-Variante gegenüber 
der 5V-Verdrahtung die beiden Kondensatoren angeschlossen werden müssen, 
schätze Ladungspumpe. Hast du das gemacht?


Gruss
Gunb

von Gerd (Gast)


Lesenswert?

Hallo Gunnar,

besten Dank, da hast du dir ja ne ganze Menge Arbeit gemacht!

Inzwischen habe ich mit die Signale mit dem Oszi angesehen, die sind 
sauber.
Dann bin ich der Sache mal nachgegangen, warum sich der Schaltkreis so 
eigenartig verhält, wenn ich zweimal einen Pin setze und festgestellt, 
da am Pin ein Rechtecksignal anliegt. Dachte das kann doch nicht wahr 
sein und hatte dann die Erleuchtung: Der Watchdog schaltet sich ein!
Beim AT90USB1287 kann ich ihn mit den Fuses nicht deaktivieren, ich habe 
nur die Wahl zwichen Softwaregesteuert und immer an.
Die Befehle von Bascom zum Konfigurieren des Watchdog funktionieren 
nicht bei dem Prozessor da kommt gleich eine Fehlermeldung.
Jetzt muß ich nur noch rausbekommen, wie ich die entsprechenden Register 
des Prozessors mit Bascom konfiguriere um den Watchdog zu deaktivieren.
Oder ich steige lieber gleich wieder auf Assembler um.

Ach so, der Fehler trat nur beim doppelten Setzen des Pins auf, da ich 
eine Zeitverzögerung auch noch mal mit eingesetzt hatte.


Gruß Gerd

von Gerd (Gast)


Lesenswert?

Hallo Gunnar,

> Du bist doch sicher, dass sowohl dein Display als auch dein Controller
> mit denselben Spannungspegeln arbeiten, oder?

> Kannst du sicherstellen, dass dein Display genug Strom über VCC bekommt?

> Im Datenblatt von EA sehe gerade, dass bei der 3,3V-Variante gegenüber
> der 5V-Verdrahtung die beiden Kondensatoren angeschlossen werden müssen,
> schätze Ladungspumpe. Hast du das gemacht?

Dreimal ja :-)

Gruß Gerd

von Gerd (Gast)


Lesenswert?

Ist wohl doch nicht der Watchdog :-(

von g. b. (gunb)


Lesenswert?

Aha,

beim M128 habe ich den Watchdog standardmässig deaktiviert, beim MSP430 
macht man's per Software am Anfang. Muss dieser beim 1287 wohl auch per 
Software deaktiviert werden? Oder kann man Fusebits setzen?

Auf jeden Fall hast du dein Erfolgserlebnis, ist doch super. Habe gerade 
meinem Display die printf-Umleitung verpasst. Klappt zuverlässig.


Also dann,
frohes Schaffen!

Gunb

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.