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
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.
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
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
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
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
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
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
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
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
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
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