Werte Bastler,
vor längerer Zeit habe ich mir Speicherkarten für die HP-48-Taschenrechner gebaut. Die Original-Dinger werden mit (für meine Verhältnisse) unverhältnismäßig viel Geld aufgewogen, wenn man sie denn überhaupt bekommt. Da sich im Restelager noch etliche SRAM mit genügend Kapazität fanden, hatte ich diese Platine entworfen und gebaut.
Funktioniert tadellos. Lässt sich unterschiedlich bestücken, fasst 512KByte oder 1MByte. Sie ist per Jumper auf 128K beschränkbar, dies ist nötig für den Slot1 im HP-48GX, der maximal 128KB adressieren kann.
Im hp 85620 Mass Memory Module werden ebenfalls Speicherkarten eingesetzt, allerdings von HP mit anderer Bezeichnung (hp. Mechanisch schienen die zu passen, die elektrischen Signale waren äquivalent, also mutig mal so eine Karte ausprobiert. Was kann schon schiefgehen außer Rauchzeichen (Wir sind Papst!) aus einem hp 8563E oder einem (bisher ungesicherten) gelöschen hp 85620 mass memory module? Eine frittierte Speicherkarte erschien mir (auch wegen der geringen Materialkosten, die Platine ist da noch am teuersten) am unwahrscheinlichsten.
Funktionierte so natürlich nicht. Nach einigem Grübeln und der Analyse der Schaltung des 85620 (ich war bereits am Überlegen die Firmware zu reverse-engineeren) im Zusammenhang mit meiner Karte bin ich dann auf die Lösung gekommen: Die Firmware im 85620 erwartet offenbar 2 zusätzliche Signale von der Karte, beschriftet mit CST und CRD. Weiterhin können nur maximal 128K oder 256K adressiert werden, ja nach Version des 85620. Also flugs an die unbenutzen Pins mal eben zum Testen Drähte angelötet und getestet: Funktioniert. Selbst der Write-Protect/Write Enable, der sehr hochohmig ausgeführt ist (der HP-48 nutzt CMOS) funktioniert.
Jetzt habe ich das Speicherkartenprojekt aktualisiert, die Karte kann nun per Jumper auch auf weitere Größen dezimiert werden und ich werde ein paar Platinen bestellen. Als nächstes werde ich ein USB-Speicherkartenlesegerät dafür ins Auge fassen.
Speicherkarten für HP 85620
- ProgBernie
- Beiträge: 617
- Registriert: 19 Dez 2018, 22:49
- Wohnort: Labenz
Speicherkarten für HP 85620
Gruß Bernd
Re: Speicherkarten für HP 85620
Tolles Projekt! Da wundert man sich, dass das noch keiner gemacht hat 
Grüße
Jan
Grüße
Jan
73 de DL3JCW
- ProgBernie
- Beiträge: 617
- Registriert: 19 Dez 2018, 22:49
- Wohnort: Labenz
Re: Speicherkarten für HP 85620
Weihnachten ist die Zeit des Lötkolbens, wenn heimeliger Duft von der Spitze aufsteigt und die Widerstände gemütlich glühen.
JLC hat die Platinen geliefert. Nach der Bestückung mit Bauteilen laufen die beiden gebauten Karten im hp 85620 (hoffentlich) einwandfrei. Gleichzeitig habe ich nach Fassungen (Kartenrandsteckverbinder) für die Karten gesucht. 40 polig einreihig, 1.27mm Pitch. Erstaunlicherweise gab es die nicht ohne weiteres von den üblichen Verdächtigen wie TE, aber im Makerbedarf. Und dort habe ich gelernt, daß es sich um Fassungen für den BBC Micro:Bit handelt. Also gleich mal welche bestellt um dann festzustellen, daß die Steckkarten mechanisch nicht reinpassen: Sie sind etwa 1.5mm zu breit. Nichts was eine Schlüsselfeile nicht richten kann. Mit den Fassungen habe ich mir auch Platinen mit Lötpunktraster 1.27mm bestellt um darauf etwas zu basteln, bevor es an die nächste Platinenbestellung geht. Soweit bin ich aber noch nicht, derzeit überlege ich noch welchen Prozessor ich genau einsetze. Für den Laboraufbau wollte ich eigentlich ein Bluepill oder Blackpill-Board nehmen, aber die haben zu wenig GPIO-Leitungen herausgeführt. Dann fliegt hier noch ein STM32L152-Discoveryboard und eines mit einem F407 herum. Ich denke ich werde das mit dem F407 für die Tests nehmen und die spätere Version mit einem STM32F401 im LQFP64 oder LQFP100-Gehäuse, die haben genug Pins sodaß ich auf gemultiplexte und gelatchte Adressleitungen verzichten kann. Auch muß ich mir noch das ganze Ökosystem darum ansehen, so ganz habe ich das noch nicht durchdrungen, da wird z.B. im Reference Manual zum F103 beschrieben, daß man die GPIO nur Wortweise ansprechen kann/darf:
Aber im Forum wird dann so etwas als schnellste Zugriffsmöglichkeit um die oberen 8 bits von PortA zu setzen diskutiert:
Nuja, das kriegt man alles irgendwie hin, sonst kann man auch mit geschickter Maskierung die BitSet/Reset-Ports GPIOA->BSRR nutzen.
JLC hat die Platinen geliefert. Nach der Bestückung mit Bauteilen laufen die beiden gebauten Karten im hp 85620 (hoffentlich) einwandfrei. Gleichzeitig habe ich nach Fassungen (Kartenrandsteckverbinder) für die Karten gesucht. 40 polig einreihig, 1.27mm Pitch. Erstaunlicherweise gab es die nicht ohne weiteres von den üblichen Verdächtigen wie TE, aber im Makerbedarf. Und dort habe ich gelernt, daß es sich um Fassungen für den BBC Micro:Bit handelt. Also gleich mal welche bestellt um dann festzustellen, daß die Steckkarten mechanisch nicht reinpassen: Sie sind etwa 1.5mm zu breit. Nichts was eine Schlüsselfeile nicht richten kann. Mit den Fassungen habe ich mir auch Platinen mit Lötpunktraster 1.27mm bestellt um darauf etwas zu basteln, bevor es an die nächste Platinenbestellung geht. Soweit bin ich aber noch nicht, derzeit überlege ich noch welchen Prozessor ich genau einsetze. Für den Laboraufbau wollte ich eigentlich ein Bluepill oder Blackpill-Board nehmen, aber die haben zu wenig GPIO-Leitungen herausgeführt. Dann fliegt hier noch ein STM32L152-Discoveryboard und eines mit einem F407 herum. Ich denke ich werde das mit dem F407 für die Tests nehmen und die spätere Version mit einem STM32F401 im LQFP64 oder LQFP100-Gehäuse, die haben genug Pins sodaß ich auf gemultiplexte und gelatchte Adressleitungen verzichten kann. Auch muß ich mir noch das ganze Ökosystem darum ansehen, so ganz habe ich das noch nicht durchdrungen, da wird z.B. im Reference Manual zum F103 beschrieben, daß man die GPIO nur Wortweise ansprechen kann/darf:
Code: Alles auswählen
9.2.4 Port output data register (GPIOx_ODR) (x=A..G)
...
Bits 31:16 Reserved, must be kept at reset value.
Bits 15:0 ODRy: Port output data (y= 0 .. 15)
These bits can be read and written by software and can be accessed in Word mode only.Code: Alles auswählen
uint8_t value = 0x37;
*(((__IO uint8_t *)&GPIOA->ODR ) + 1) = value;
Gruß Bernd