Hi, Bin grade dabei eine eigene Lib für eine KS0108 zu schreiben (ja ich weiß es gibt schon viele, wollte es aber mal gerne selber machen um zu verstehen wie das funktioniert). Die grundlegenden Sachen wie Zeichen ausgeben und auf BUSY abfragen haben schonmal geklappt:). Jetzt wollte ich mal kurz zusammenfassen wie und ob ich das ganze verstanden hab, könntet ihr mich bitte korrigieren falls irgendwas falsch ist? Also: 1. Ich kann z.B. Kommandos an ein Display schicken indem ich RS = 0 und R/W = 0 setze, den Chip auswähle (also 1 oder 2) und dann das entsprechende Kommando (z.B. Set Address, Set Page,...) über den CMD_PORT ausgebe. Wenn Chip1 ausgewählt ist erhält er das Kommando wenn Chip2 ausgewählt ist bekommt Chip2 das Kommando. Hierbei sollte ich wenn möglich die Koordinaten vergleichen, um natürlich zu wissen welchen Chip ich auswählen muss. Um den Befehl zu übergeben muss ich immer meine ENABLE Leitung von 1 auf 0 switchen richtig? 2. Ich kann Daten auf dem Display ausgeben, indem ich RS = 1 und R/W = 0 setze. Nun werden die Daten an CMD_PORT Byteweise auf dem Display ausgebenen, wobei der Y-Poiter immer inkrementiert wird wenn ein Byte geschrieben wurde. Auch hier muss ich immer ENABLE von 1 auf 0 setzen um das Byte zu schreiben richtig? Ist es hier ratsam das BUSY Flag abzufragen um nich schon was neues zu schreiben wenn das Display noch beschäftigt ist oder geht das gar nicht? Habe leider noch nicht ganz verstanden wann es sicht lohnt das BUSY Flag abzufragen, kann mir das einer erklären? 3. Wenn ich RS = 0 und R/W = 1 setze kann ich den Status des Displays auslesen, also ob ON/OFF, Busy oder Reset. Ist es sinnvoll den Status auszulesen und auszuwerten bzw. wann ist dieses ratsam? 4. RS = 1 und R/W = 1 kann ich benutzen, um den Inhalt des Speichers auszulesen auf welchen mein Y-Pointer zeigt. Könnte ich z.B. ver- wenden wenn Zeichen fehlerhaft sind und ich den Inhalt überprüfen will (?). 5. Ich muss eig. immer meine ENABLE Leitung von 1 auf 0 setzen wenn ich einen Befehl ausführen möchte richtig? So das ist ne ganze Menge Text, aber ich hoffe jemand hat die Lust und die Zeit sich das mal durchzulesen und mir zu sagen ob ich das in etwa verstanden habe bzw. was noch verbesserungswürdig ist. Wollte nämlich mal anfangen dann selber Funktionen zu schreiben:) LG
>eigene Lib für eine KS0108 zu schreiben (ja ich >weiß es gibt schon viele, wollte es aber mal gerne selber machen um zu >verstehen wie das funktioniert) Dann schau für Erklärungen in die vorhandenen Quellcodes. Glaubst du es hat einer Bock dir jetzt das Datenblatt komplett vorzukauen? Zumindest zu dem Punkt gebe ich dir einen Tip: 3. Wenn ich RS = 0 und R/W = 1 setze kann ich den Status des Displays auslesen, also ob ON/OFF, Busy oder Reset. Ist es sinnvoll den Status auszulesen und auszuwerten bzw. wann ist dieses ratsam? Vergiss den Busy Check. Mach ein Delay.
Ah ok alles klar schonmal gut zu wissen, dann muss ich das schonmal nicht realisieren:) Und aus dem Datenblatt kann ich ja sehen dass ich einen Pegel min. 450ns anstehen lassen muss richtig?
Hmm aber den Enable muss ich schon immer toggeln um einen Befehl zu übernehmen oder?
..,- schrieb: > holger schrieb: >> Vergiss den Busy Check. Mach ein Delay. > > ... Geschmackssache ... Hab ich beim Lesen auch gedacht... Mit einem festen Delay in der Lib ist man wenig flexibel, falls mal Displays mit langsamerem Timing verwendet werden, kann es passieren, daß man trotz Delay zu früh wieder sendet und den Controller überfährt. Besser ist es daher, in einer wiederverwendbaren Lib das Busyflag auszuwerten. Gruß...Maschinist
Hmm ok dann werd ich mal schauen, denke dass ich das erstmal mit einem Delay mache und dann später vllt das BUSY Flag abfrage.
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.