Electronics > Repair
HP 3478A: How to read/write cal SRAM
fenugrec:
--- Quote from: lmester on March 11, 2018, 11:12:04 am ---I've just recently found this thread. I don't check EEVBLOG very often. Im very late geting to this party :(
--- End quote ---
I know, the traffic on these forums is insane - come back after a few days, there's enough "recent posts" to fill a few pages !
Glad you managed to port the checksum code succesfully.
I've been working a bit on analyzing the firmware for these, I almost wanted to resurrect the 3-year old thread https://www.eevblog.com/forum/testgear/3478a-cal-ram-readout-idea/25/
but I don't have much to add yet. However I did add my annotated copy of the disassembly on my repo, https://github.com/fenugrec/hp3478a_utils/tree/master/ROM_disasm . I've identified GPIB code, lots of BCD arithmetic, some leads into the display code (hint : the're not saved as plain ASCII strings...).
Anyone else interested in working on the disasm ? I'm trying to accomplish two things,
- determine the format of the cal constants
- long-term : change one button function to enable relative measurements (save offset when pressed, subtract from display).
Miti:
--- Quote from: fenugrec on March 08, 2018, 10:10:03 pm ---Nice !
can't wait to try this on my unit. In the meantime I've written a small utility that verifies checksums and dumps each cal "entry" . Not super useful yet but it's mainly a starting point for when we figure out what each cal entry does.
--- End quote ---
I was thinking, when I altered the calibration values in my meter (on purpose) to validate the write function in pigrew's program , it shows "UNCALIBRATED" for a moment but then it works. However, when you select the range that was altered, it shows the "CAL" sign. This way we can play with the calibration entries and see what ranges they affect. No risk at all now that we know how to restore it.
Moreover, reading the manual, only 15 ranges need to be calibrated (DCV 30mV, 300mV, 3V, 30V, 300V, ACV 3V, DCA 300mA, 3A, Ohms 30, 300, 3K, 30K, 300K, 3M, 30M). ACA constants are calculated using DCV, DCA and ACV, unless you want to calibrate that range.
Looking at all the dumps posted and saved from my meters, there are 3 entries that are always @@@@@@@@@@@OO so I assume they are not used and above the first row of @@@@@@@@@@@OO there are 5 entries... maybe DCV?
Just saying...
fenugrec:
--- Quote from: Miti on March 24, 2018, 02:38:58 am ---This way we can play with the calibration entries and see what ranges they affect. No risk at all now that we know how to restore it.
--- End quote ---
Agreed. It could also be done simply be setting one range on the dmm, and writing bogus entries to the cal RAM until the reading changes.
--- Quote ---Looking at all the dumps posted and saved from my meters, there are 3 entries that are always @@@@@@@@@@@OO so I assume they are not used
--- End quote ---
Good observation, and my analysis of the firmware agrees - there are no references to those 3 entries (5, 0x10 and 0x12)
Also, there is definitely a separation between the first 6 nibbles and the last 5. Look at the "beautified" data of one of the dumps posted here (iainwhite) :
--- Code: ---**** \dev\hp3478\hp3478a_utils\hp3478util.exe
**** (c) 2018 fenugrec
entry 00: 0 0 0 2 1 9 2 D C F D
entry 01: 0 0 0 0 2 2 2 C 4 E 2
entry 02: 0 0 0 0 0 2 2 D D D 1
entry 03: 9 9 9 9 9 5 2 D 0 D C
entry 04: 9 9 9 9 9 9 2 D 3 D 1
entry 05: 0 0 0 0 0 0 0 0 0 0 0
entry 06: 0 0 0 6 6 3 1 4 1 1 3
entry 07: 9 9 9 8 7 9 1 C C 5 1
entry 08: 9 9 9 9 8 8 0 5 3 3 0
entry 09: 9 9 9 9 9 8 1 C C 0 1
entry 0A: 9 9 9 9 9 9 0 5 4 5 D
entry 0B: 9 9 9 9 9 8 0 5 4 3 4
entry 0C: 9 9 9 9 9 9 1 C C 0 C
entry 0D: 9 9 9 9 9 9 0 5 4 2 5
entry 0E: 0 0 0 2 6 2 3 C 3 1 0
entry 0F: 0 0 0 0 2 6 3 C 5 1 5
entry 10: 0 0 0 0 0 0 0 0 0 0 0
entry 11: 0 0 0 6 6 3 2 4 2 2 3
entry 12: 0 0 0 0 0 0 0 0 0 0 0
--- End code ---
I like to think those 999999 values are "negative BCD" numbers but I haven't made it that far in my analysis. If someone would like to help me look at the BCD arithmetic, that would be awesome. So far I've made some pretty good progress - identified GPIB, display and keypad code, as well as some of the internal comms to the floating ADC controller.
Miti:
First 6 nibbles = Gain, next 3 = Offset, last 2 = Checksum?
fenugrec:
--- Quote from: Miti on March 27, 2018, 03:26:57 am ---First 6 nibbles = Gain, next 3 = Offset, last 2 = Checksum?
--- End quote ---
Not quite, my tool already strips the checksums - what is printed is all data.
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version