Forum: Mikrocontroller und Digitale Elektronik Implementation eines komplexen SPI-Slaves


von olaf (Gast)


Angehängte Dateien:

Lesenswert?

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

von c-hater (Gast)


Lesenswert?

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?

von olaf (Gast)


Angehängte Dateien:

Lesenswert?

> 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

von S. Landolt (Gast)


Lesenswert?

> 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.

von S. Landolt (Gast)


Lesenswert?

Aha - das hat sich jetzt überschnitten.

von S. Landolt (Gast)


Lesenswert?

> 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.

von olaf (Gast)


Angehängte Dateien:

Lesenswert?

> 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

von S. Landolt (Gast)


Lesenswert?

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.

von S. Landolt (Gast)


Lesenswert?

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.

von olaf (Gast)


Lesenswert?

> 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

von S. Landolt (Gast)


Lesenswert?

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.

von Olaf (Gast)


Lesenswert?

> 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
Noch kein Account? Hier anmelden.