Hallo, vielleicht könnt ihr mir weiter helfen, im Forum hab ich dazu noch nichts gefunden. Mein Auftrag ist es, ein Display Seriell anzusteuern. D.h. ich hab nicht die möglichkeit für die weit verbreitete 4-bit oder 8-bit Ansteuerung. Folgendes Display kommt zum Einsatz: EA DIP204-4 (Datenblätter und Referenzen auf www.lcd-module.de). Das Display arbeitet mit einem Internen ks0073 Controler und wird über einen µC angesteuert. Dabei werden die Pins P5.0 CS (chipselect), P5.1 SO, P5.2 SI, P5.3 SCLK und P5.4 RESET verwendet. Es muss seriel sein und in C programmiert, das ist die Vorgabe. Mein erster Gedanke war jetzt ein Programm zu schreiben, welches den Pin5.2 so auf High und Low zieht wie es im Datenblatt des KS0073 gefordert wird. Nach jedem Bit wird die SCKL auf Low gesetzt um eine fallende Flanke zu erzeugen. Wenn ich mir das ganze mittels Oszis ansehe schaut der Verlauf des Signals auch aus wie vom Datenblatt gefordert nur leider zeigt das Display trotzdem keine Zeichen an. Ab hier komm ich nicht mehr weiter und hoffe dass einer von euch eventuell schon mal ein Display Seriell angesteuert oder zuminderst erfahrung im serieller Datenübermittlung hat und mir weiter helfen kann. PS: Was ich noch probiert und überbrüft habe: - Kontrast komplett durchlaufen lassen - Hintergrundbeleuchtung an/aus - Pin5.1 verwenden. - Längere Pausen nach jedem Signal um die Daten nicht zu schnell an das Display zu schicken. PPS: Der bisherige Code findet ihr in der Datei PPPS: ich hoffe diesmal hab ichs zur Zufriedenheit der Admins/Moderatoren gemacht
Hallo Hanno, hast du wie im Datenblatt beschrieben die Lötbrücke geändert?
1 | SERIELLER MODUS |
2 | Das Modul kann auch mit synchron seriellen Daten beschrieben werden. Dazu muss die |
3 | Wechsellötbrücke 4/8 auf der Modulrückseite geöffnet und auf SPI geschlossen werden. Die |
4 | Spezifikation zur seriellen Datenübertragung finden Sie im Kontrollerdatenblatt KS0073 von Samsung |
5 | (z.B. http://www.lcd-module.de/eng/pdf/zubehoer/ks0073.pdf) |
Was für einen µC verwendest du?
@Lu Ke das Display ist fertig verkabelt und die Lötbrücke ist geändert davon hab ich mich überzeugt (danke trotzdem für den hinweis). Der µC müsste ein: UD_MSP430F161X_TQFP64 sein, so steht es zuminderst auf dem Schaltplan.
Teil doch das Problem erstmal auf: Software-SPI, Warteroutinen bzw. Pollingfunktionen und die display-sende funktionen. Sowas ähnliches wurde mal da Beitrag "ks0073 - SPI - ASM" besprochen, allerdings für den AVR. Ich hab in dem Thread ganz unten eine C-Lösung gepostet, vielleicht hilft dir das. Allerdings arbeitet diese Lösung mit dem Hardware SPI. Die einzige Änderung die nötig ist, um Software SPI zu nutzen, ist eine Funktion zu ändern ("spi_put_byte"). Die Ports kann man über Makros anpassen. Da ich aber vom MSP430 keine Ahnung hab, musst du evtl. noch mehr anpassen hth. Jörg
Erst mal danke, die Datein helfen vielleicht wirklich weiter, das Problem ist, dass ich nicht wirklich eine Ahnung von µC Programmierung in C habe. Daher sind deine Files @Jörg erst mal der reinste overkill. Problem wird sein, die für mich richtigen Teile rauszusuchen, im Prinzip will ich nur ein einfaches Zeichen anzeigen auf dem Display, Stringübergabe und Ausgabe von Werten ist das ganz was anderes. Es geht wirklich nur um die übergabe eines Zeichens. im meinem Code müsste eine Wait Funktion implementiert sein die einfach eine zeitlang hoch zählt. einen Software SPI hab ich in so fern gar nicht installiert sondern ich leg den Output Pin auf High und lass den clock einmal von high auf low fallen. Danach änder ich wieder den Output Pin und lass wieder Clock wechseln.
> das Problem ist, dass ich nicht wirklich eine Ahnung von µC > Programmierung in C habe. Dan nsolltest du das ändern ;) Hier http://www.mikrocontroller.net/articles/MSP430_Codebeispiele und hier http://www.mathar.com/msp430.html Hast du aber schon mal reingeschaut, oder? ;) > einen Software SPI hab ich in so fern gar nicht installiert sondern ich > leg den Output Pin auf High und lass den clock einmal von high auf low > fallen. Danach änder ich wieder den Output Pin und lass wieder Clock > wechseln das IST software SPI ;) (mit 2 Leitungen und dauernd aktivem Slave) weil DEINE Software die Bits 'rausschiebt' Und meine Dateien sind nitch wirklich Overkill, du brauchst nur Kleinigkeiten zu ändern: in der .c-Datei: - die erwähnte spi_put_byte Funktion, Muss nacheinander 8Bits augeben und entsprechen die Takleitung togglen in der .h-Datei - Die Port-Makros anpassen, wahrscheinlich nur Registernamen und Pinnummern, aber du musst das Datenblatt für den MSP lesen ;) - die Delay Makros ändern, du kannst ja das display nicht abfragen, wenn es keine Rückleitung gibt. hth. Jörg ps.: es ist dem Quellcode egal, wenn du einzelne Funtionen (noch) nicht nutzt ;)
In die Beschreibung von mathar hab ich schon geschaut und mir auch einiges rausziehen können. Erfahrungen in Programmieren in C hab ich natürlich schon, aber eben noch nicht so viel auf µC Ebene, bzw. was ich bisher an µC verwendet habe unterscheidet sich stark von dem was ich jetzt mache. Und es zu ändern bin ich gerade auf dem Weg. Deswegen komm ich auch (noch) nicht mit deinen Zuweisungfunktionen klar. Wenn meine Zeit es heute zulässt werde ich versuchen deinen Code zu verstehen und eine addaption für mein Problem zu schreiben. Den dein Code ist eine Komplettlösung allerdings bringt die mir nicht viel, den bekanntlich versteht man nur Code den man auch selber geschrieben hat. Zudem geht es mir wirklich nur um die simple Aufgabenstellung irgend ein Zeichen auf dem Display anzeigen zu lassen. D.h. die Initialisierung und dann eine Routine für das übertragen eines Zeichens. Übergabe eines Strings oder eines Textes, Anzeigen von Nummern etc ist nicht wichtig und verwirrt die Grundaufgabenstellung nur unnötig.
Ok, dann brauchst du, wenn du keine Daten von dem Display liest, im einfachsten Fall: - eine Funktion / Makro um 8 bits an das display zu schicken - eine Funktion / Makro für das Timing (~20ms, ~1,4ms, ~40µs) - eine Funktion um die Daten zu schicken, da Daten/Befehle in zwei nibbles geschickt werden müssen. Die Init-sequenz steht im Datenblatt, die einzelnen Befehle stehen im Kontrollerdatenblatt. hth. Jörg
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.