Hallo zusammen,
auch wenn es für einige ermüdend ist, ich bin auf der Suche nach einem
lauffähigen C Code, um das DIP-180 anzusteuern. Mir würde eine Routine
für einen einzelnen SED1520 dabei ja schon reichen.
Alles was ich bisher hier gefunden habe, war leider nicht ausreichend,
um mein Display zum Laufen zu bringen. Hat irgendjemand einen Code, der
bei ihm selber schon mal funktioniert hat ?
Für Hilfe wäre ich sehr dankbar.
Viele Grüße
Stephan
Sehr kluge Worte..hätte ich nicht schon seit Tagen daran rumprobiert,
hätte ich die Anfrage auch gar nicht gestellt...
Wie dem auch sei. Hab jetzt einen lauffähigen Code auf Basis einer Datei
von
http://en.radzio.dxp.pl/sed1520/
Bin gerade dabei das Programm auf den DIP180 mit seinen 3 SED1520
Controllern anzupassen.
Sobald der Code fertig ist, stelle ich ihn hier rein. Wenn ihn schon
jemand
vorher benötigt, kann er mich gerne per eMail kontaktieren.
OK, dann hier mal mein Beitrag... das ein oder andere kann man sicher
noch verbessern/schöner/schneller/anders machen, aber so klapperts im
Moment ganz ordentlich.
Das sind nur die LowLevel-Routinen für ein EA DIP180B-5NLW, 180x32 Pixel
verteilt auf 3 SED1520, Linien, Kreise etc gibt es ja zuhauf...
Da ich diese Routinen in ähnlicher Form auch für die DOG-Displays nehme
(aus denen man ja das DisplayRAM nicht zurücklesen kann) benutze ich
auch hier ein ShadowRAM im Controller für den Displayinhalt
Die Portdefinitionen sind im zugehörigen Headerfile (kommt gleich)
Kommentare, Hinweise zu Fipptehlern, Fehlern, Verbesserungen, Tips etc
sind willkommen!!
Hier der versprochene Code. Damit läßt sich z.B. das Dip180 (180x32
pixel mit 3 SED1520 Controllern) ansprechen.
Es ist eine einfache Font Datei mit dabei.
Funktionen wie GLCD_Rectangle, GLCD_Line, GLCD_Circle, GLCD_WriteString,
GLCD_SetPixel sind getestet und funktionieren über die Controllergrenzen
hinweg.
Es gibt noch mehr Funktionen in den graphics Dateien. Diese sind jedoch
noch nicht getestet.
Ich hoffe das hilft dem ein oder anderen Zeit bei der Ansteuerung von
graphischen Displays zu sparen.
Viele Grüße
Stephan
Hallo.
Versuche gerade den Code von gamps zum laufen zu bringen.
Mein Problem ist, dass ich keinen Kopletten Port frei habe.
kann ich die Zeilen
#define SED1520_DATA_PORT PORTD //Data Port
#define SED1520_CONTROL_PORT PORTA //Control Port for RW, Ao,
E1,E2,E3,RES
auch auf mehrer ports verteilen? also
(pseudocode)
#define SED1520_DATA_PORT = [PORTA0,PORTA2,PORTB4,PORTB7,...]
#define SED1520_CONTROL_PORT = [PORTC0,PORTC1,PORTD0,PORTD2,...]
(/pseudocode)
Wenn ja wie? oder geht das nicht?
Danke schon mal..
Natürlich kannst du die benötigten acht Bit auf mehrere Portpins
verteilen. Allerdings nicht so, wie du das hier geschrieben hast.
Du mußt schon die einzelnen Bits auf den jeweiligen Portpin schreiben,
z.B. so (in ein schönes Define verpackt):
#define SED1520_DATA_PORT(a) PORTA0 = a & 0x01; /* Bit 0 */ \
PORTA2 = (a >> 1) & 0x01; /* Bit 1 */ \
PORTB4 = (a >> 2) & 0x01; /* Bit 2 */ \
...
Das ganze ist halt für den Controller ein wenig aufwendiger und drückt
dementsprecht die Gesamtperformance. Anstatt eines 8bit Portzugriffs
müssen mehrere Schiebe-, Maskier- und Schreibzugriffe durchgeführt
werden.