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
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.
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
Hi Anbei funktionierender Code für DOG-Display mit SPI. Allerdings in Assembler. Vergleiche mal die Initsequenz und das Timing. MfG Spess
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.