Hey Leute, Ihr hab doch gerade nicht viel zu tun, da dachte ich sammle mal ein paar brauchbare Ideen fuer einen leider etwas komplizierteren SPI-Slave ein. .-) Hintergrund: Ich spiele mit dem Gedanken das normale LCD meines alten HP48SX gegen ein 2.4" Oled auszutauschen. Die CPU da drin beschreibt einfach zwei LCD-Treiber mit den Pixeldaten. Die muesste ich nur einlesen und dann auf das Oled schreiben. Also eigentlich Kinderkram. :) Das Problem ist leider es werden 67 mal jeweils 2Bit ausgegeben. Meine Ideen bisher: RP2040 nehmen und was eigenes mit der PIO implementieren. Mikrocontoller nehmen, zwei SPI-Schnittstellen parallel laufen lassen, 4x8Bit normal einlesen, und sich fuer die letzten drei Bits was lustiges einfallen lassen. Ist halt bloed das 67 eine Primzahl ist... Kombination aus CPLD plus kleine MCU. (Das Problem ist halt das man erstmal das Oled konfigurieren muss) Allerdings haette ich immerhin schon mal einen Berg fetter CPLDs rumliegen. Sollte ich allerdings so nett sein das hinterher zu veroeffentlichen fuehrt das bei Nachbauern aber zu Schnappatmung. Ausserdem ist das CPLD auch von der PCB-Flaeche recht gross. Bruteforce ueberabtasten und alles von Hand zaubern, seufz. Der Taschenrechner ist natuerlich Batterie betrieben. Daher sollte die Loesung nicht zuviel Saft brauchen auch wenn es sicher nicht extremst Lowpower sein muss da ich wegen dem Oled vermutlich sowieso auf einen Lithiumakku umrueste. Olaf
olaf schrieb: > Das Problem ist leider es werden 67 mal jeweils 2Bit ausgegeben. Parallel auf zwei Leitungen oder seriell auf einer? Und was macht das CS-Signal? Wan wackelt es? Und (auch nicht ganz unwichtig) über welchen SPI-Takt reden wir hier?
> Parallel auf zwei Leitungen oder seriell auf einer? Immer zwei Bits parallel auf zwei Leitungen. Ich haenge mal ein besseres Bild an. Die Signalbezeichnungen stehen rechts am Bildrand. > Und was macht das CS-Signal? Wann wackelt es? Das LP Signal geht einmal kurz hoch. Ist leider hier auf dem Bild nicht zu sehen. Hm..ich haenge noch ein zweites Bild an. Das erste zeigt eine Bildzeile bestehend aus 67clocks a 2Bit. Das zweite ist dann rausgezoomt, es zeigt also 64Zeilen von jeweils 67x2Bit, also ein gesamte Bild von 131x64pixel. Olaf
> 67 mal jeweils 2Bit
Eine Zeile - es gibt deren 64.
Lässt sich das nicht einfach abtasten ('pollen'): der Clarke-Prozessor
läuft mit 2 MHz; Bildwiederholrate ist 64 Hz. So ad hoc sieht mir das
relativ bequem aus.
> Irgendwo ist da ein Fehler
Ja, ich verstehe es auch nicht: sowohl im pdf-Schaltplan von M. Flipse
(99-05-15, für den GX, also Yorke) als auch in der Textdatei von Matthew
Mastracci (Rev. 1.0b von 1998) haben die Treiber nur 2*64 Ausgänge -
woher bekommt das LCD die restlichen 3 Pixel pro Zeile?
Liegt Ihnen das Datenblatt des SED1181LFA vor? Würde mich interessieren.
> Liegt Ihnen das Datenblatt des SED1181LFA vor?
Ja, mal schauen ob ich es hier angehaengt bekomme.
Der vollstaendigkeitshalber, ich hab einen HP48SX, der Schaltplan von
M.Fliepse ist wohl von einem GX. Allerdings habe ich meinen SX auf 4Mhz
uebertaktet. Laeuft im uebrigen seit 91 problemlos. Aber ist vielleicht
wichtig zu wissen wenn jemand mit einem normalen SX ueber das Timing
nachdenkt.
Ich hab ein paar unueberpruefte Theorien die sich heute beim rumspielen
zwischen meinen Ohren gebildet haben. Im Schaltplan von M.Fliepse sieht
man das eine ganze Menge Leitungen an der MCU nicht belegt sind. Ich
denke das ein Teil davon auch zum LCD geht. Wie man im Datenblatt sieht
ist dort noch extra ein Zeilentreiber vorgesehen den es im HP nicht
gibt. Also wird der HP die wohl selber ansteuern.
Jetzt ist es aber so das dieses LCD 131x64 Pixel hat. Die muessen auch
angesteuert werden. Das geht aber nicht mit 2x2x32Bit Registern im
SED1181. Daher vermute ich auch das HP diese Pixel persoenlich
ansteuert. Ausserdem gibt es ja auch noch ueber den Pixeln diverse
Indikatoranzeigen fuer Shifttaste und Batterie-Leer Anzeige. Letzere ist
IMHO sogar aktiv wenn man den ausschaltet.
Daher denke ich das der HP die auch direkt ansteuert.
Bleibt natuerlich die Frage wieso takten die da 67clocks rein wenn drei
sofort wieder hinten aus dem Register rausfallen. Es gibt von den Teilen
eine Spezialversion fuer Lehrer wo man einen overhead-lcd anschliessn
konnte und wo diese Ansteuersignale des SED1181 nach aussen gelegt
wurden um das Zusatzlcd anzuschliessen. Ich vermute mal das der Rechner
deshalb diese Signale die er selber ansteuert auch nochmal in den
Bitstream stellt damit das externe HP-Overhead-LCD diese Information
auch bekommt. Aber wie gesagt, ist jetzt alles mal geraten.
Ich probiere jetzt die Tage mal den Bitstream mit SPI einzulesen indem
ich einfach das Frame-Signal als CS verwende mit einem 8Bit breiten
Register. So bekomme ich ja 67x64Bit und das ist durch 8 teilbar. So
muesste ich mit zwei SPI-Einheiten und ganzen Daten in mein
Controllerram bekommen. Allerdings wird man danach wohl eine Menge Bit
verschieben muessen bis es fuer das Oled passt. Bloed ist leider auch
das die Oleds nur 128x64Pixel haben. Mal sehen wie das dann wird. Ich
wuesste echt mal gerne wie die damals ausgerechnet auf 131x64pixel
gekommen sind. Das ist doch eine echt absurde Zahl.
Olaf
Danke für das Datenblatt. Den Gedanken mit der teilweisen Direktansteuerung des LCD durch den Prozessor hatte ich auch spontan, als ich sah, dass im Schaltplan die Hälfte (!) der Prozessoranschlüsse nicht weitergeführt wird. Und ja, richtig, der obere Statusbereich mit den sechs Symbolen muss ja auch noch angesteuert werden. Damit hört es bei mir aber schon auf, denn da die Rechner vernietet sind, habe ich nie einen geöffnet (die berüchtigte Z-Diode lebt noch), kann folglich zur Hardware nicht viel beitragen. Ich beschränke mich auf die Nutzung sowie die Programmierung in SystemRPL und Assembler - lese aber hier bei Ihnen sehr gerne mit.
Hilft Ihnen dies hier? Aus dem Hewlett-Packard Journal June 1991: (SX - im Schaltplan des GX kann ich keinen 1LT8 finden) The 64-row-by-131-column STN LCD is driven by two commercial column drivers, each driving 64 columns, and the 1LT8 which drives 64 rows, 3 columns, and 7 annunciator lines. The column drivers receive their data, timing and control signals, and voltage levels from the 1LT8. One of the problems with the commercial column drivers is that they require a negative voltage. To overcome this, we connect their +V line to our VH (+ 8.5V) supply, their GND to VDD (+ 4.4V) and their negative supply to GND. This requires all data and control signals received from the 1LT8 to swing from 4.4V to 8.5V. Display data is stored in system RAM, and the 1LT8 display controller interrupts the CPU for 22 to 23 us every 244 us to access it. As display data is received, it is serially shifted to the column drivers. When the column drivers have received 128 bits of data, they store it and output it to the display synchronously with a row driver output from the 1LT8.
> Hilft Ihnen dies hier? Aus dem Hewlett-Packard Journal June 1991: > (SX - im Schaltplan des GX kann ich keinen 1LT8 finden) Hm..sagen wir mal so, ein IC mit >64Beinen und es ist nicht zu sehen. Muesste dann ja unter dem LCD sein. Aber ich muss das ganze sowieso nochmal durchdenken. Ich hab heute mal ein 2.4" Oled vermessen. Je nach eingeschalteten Pixel braucht das zwischen 30 und 200mA. Das ist vielleicht etwas heftig. Olaf
Ah - jetzt - ja: '1LT8' ist der SX-'Clarke': https://www.keesvandersanden.nl/calculators/saturn.php Und die Beschreibung, "< COMPANY CONFIDENTIAL >" von anno 1990, lässt sich auch im Internet finden. Ob das allerdings eine gute Idee ist mit dem OLED, bei der Einschränkung auf 128*64 und dem Stromverbrauch? - Which I am doubtful of.
> Ob das allerdings eine gute Idee ist mit dem OLED, bei der Einschränkung > auf 128*64 und dem Stromverbrauch? Mit etwas hoeherem Stromverbrauch koennte ich leben. Ich wuerde ja sowieso die Batterien rauswerfen und da einen Lithiumakku reinmachen. Wenn man den dann zweimal im Jahr aufladen muss, okay... Und in aller Regel sind ja nicht sehr viele Pixel an. Aber natuerlich wenn man aus irgendeinem Grund mal etwas macht wo sehr viele Pixel an sind dann muss die Spannungsversorgung damit klarkommen. Ich muss mal einen meiner zahlreichen HPs einschalten und das in Ruhe durchrechnen. :-D Olaf
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.