Hallo zusammen,
vor gut 10 Jahren stellte ich hier meinen Umbau eines HP3478A Tischmultimeters vor, bei welchem das batteriegepufferte CMOS-SRAM durch eine AVR-MCU "emuliert" wurde: Beitrag "HP3478A: SRAM durch ATmega48 ersetzt"
Nachdem ein zweites HP3478A hier seit Jahren auf diesen Umbau wartet, nutzte ich die Gelegenheit, um Schaltung und Leiterplatte grundlegend zu überarbeiten: Die MCU ist nun ein ATtiny417 im 24-beinigen VQFN Gehäuse, der auch für 20MHz Taktfrequenz keine externe Beschaltung benötigt.
Das Layout ist sehr einfach: Port C0--C3 sind mit der unteren Hälfte des Datenbus' verbunden, Port B mit dem Adressbus und die obere Hälfte von PortA mit den Steuersignalen CE2,OD, /CE1 und R/W. Programmiert wird die MCU über die UPDI-Schnittstelle, die auf drei Pads geführt ist.
Die Abgleichdaten des HP3478A liegen in gepackter Form im EEPROM des ATtiny417, jeweils zwei Nibbles in einem Byte, wobei das mit der kleineren Adresse im unteren Nibble liegt. Beim Einschalten kopiert das C-Programm der MCU die Daten aus dem EEPROM in ihr SRAM und springt eine Assemblerfunktion an, welche mit den Daten im RAM arbeitet, wobei Schreibzugriffe diese aktualisieren. Einen Reset des HP3478A erkennt die MCU daran, dass CE2 auf low geht und springt dann zurück in das C-Programm. Wurden die Daten aktualisiert, so werden die veränderten Bytes in das EEPROM der MCU geschrieben.
Die Daten aus dem batteriegepufferten CMOS-SRAM können über die GPIB-Schnittstelle ausgelesen werden, siehe: Beitrag "Re: Alte 6502/Z80-Systeme:Ohne CPU betreibbar zum Batterie-RAM Auslesen?" -- und auf diesem Weg dann auch in die "RAM-Emulation" geschrieben werden, wobei sich der Frontplattenschalter "CAL ENABLE" in senkrechter Stellung befinden muss. Noch ein Hinweis für die Verifizierung der Daten: Das HP3478A prüft regelmäßig, ob es Schreibzugriff auf das SRAM besitzt, indem des die RAM-Adresse 0 abwechselnd mit 0 oder 16 (hex. F) beschreibt.
In dem zitierten Thread aus dem EEVBLOG-Forum findet sich auch eine Analyse des Formats der Abgleichdaten. Damit können diese in die Werte Offset und Gain zurückverwandelt werden. Somit ist es möglich den Abgleich des HP3478A anzupassen.
Da ich von den winzigen Leiterplatten viel zu viele herstellen ließ, biete ich hiermit an, ein paar unbestückte Exemplare kostenlos abzugeben, solange mein Vorrat reicht. Selbstverständlich übernehme ich keinerlei Gewährleistung und schließe eine Haftung für Schäden kategorisch aus! Der Einbau dieser Hardware erfolgt ausschließlich auf eigenes Risiko. Einen Reparatur-, Bestück-, Programmier- oder Einbauservice kann und will ich nicht anbieten, ebenso biete ich keinen Support.
Die Firmware wurde in zwei Modellen des HP3478A erfolgreich getestet (Datecode der verbauten ICs: 1983 und 1988). Eine Garantie, dass die Schaltung in sämtlichen hergestellten HP3478A funktioniert, kann ich jedoch nicht abgeben!
Die Leiterplatte kann entweder in 70771 Echterdingen abgeholt werden oder gegen Zusendung eines ausreichend frankierten und adressierten Rückumschlags zugesendet werden, wobei ich darum bitte, zuvor per PM nachzufragen, ob noch Leiterplatten vorhanden sind, denn das Angebot gilt nur solange, wie mein Vorrat reicht, was m.E. selbstverständlich sein sollte. :-/
Das Hexfile mit der Firmware für den ATtiny417 sende ich per eMail zu. Dafür bitte eine PM mit der eigenen eMail-Adresse übermitteln. Hexfiles für die pinkompatiblen MCUs ATtiny817, --1617 oder --3217 kann ich erzeugen, aber nicht testen. Vermutlich passen auch ATtiny807 und ATtiny427, jedoch kann ich das nicht testen.
Nachtrag: Im EEVBLOG-Forum findet sich ein nettes Skript, welches den "Calibration data string" eines HP3478A auf Korrektheit der Prüfsummen testet und dann die Werte für Offset und Gain berechnet: https://www.eevblog.com/forum/repair/hp-3478a-how-to-readwrite-cal-sram/msg5426804/#msg5426804
Grüßle, Volker
P.S.: Da wir hier in Deutschland sind, bitte ich darum, in der PM expizit zu erwähnen, dass mein Haftungsausschluss akzeptiert wird und der Einsatz von Leiterplatte und Firmware auf eigenes Risiko erfolgt.


