Post Reply 
3421A CAL RAM
03-30-2017, 05:49 AM (This post was last modified: 04-11-2017 05:44 PM by Dave Frederickson.)
Post: #1
3421A CAL RAM
In the Feb 83 issue of the HP Journal in the article on the 3421A, under Advanced Instruction Set on p.15 it lists:

CAL Calibration RAM (1 if read, 2 if write)

It also states:
The calibration constants can also be read or written to by an HP-IL controller through the instrument's I/O interface.

This could be interesting, but this is the only reference to this command I can find.

If the method for doing so can be determined then it might be possible to clear a CAL RAM error without a costly calibration service. The best I've been able to figure out is that issuing the CAL write with the CAL Enable switch off generates an error. With the switch on no error occurs. Any attempt to read data just gives the reading from the front terminals.

It does say "by an HP-IL controller" so maybe it requires low-level commands. Anybody know how to do this?

Dave
Find all posts by this user
Quote this message in a reply
03-30-2017, 09:14 AM
Post: #2
RE: 3421A CAL RAM
currently away from my 3468 and also not in possession of a 3421, but CAL ram error most likely points to a flat CAL ram battery (at least true for 3468), and therefore, it's very likely that the CAL data are already lost. You may want to check that first. you may want to post your question in the eevblog forum's repair section. The folks over there are toying with all kinds of vintage equipment and have already helped me out many times. They can probably provide you with the proper command sequence and a set of CAL data for your 3421. That won't bring back your instrument to factory accuracy level, but would at least allow you to exercise it, before you are doing a full cal & adjustment.
Find all posts by this user
Quote this message in a reply
03-30-2017, 03:30 PM (This post was last modified: 03-30-2017 03:50 PM by Dave Frederickson.)
Post: #3
RE: 3421A CAL RAM
(03-30-2017 09:14 AM)Hans Brueggemann Wrote:  currently away from my 3468 and also not in possession of a 3421, but CAL ram error most likely points to a flat CAL ram battery (at least true for 3468), and therefore, it's very likely that the CAL data are already lost. You may want to check that first. you may want to post your question in the eevblog forum's repair section. The folks over there are toying with all kinds of vintage equipment and have already helped me out many times. They can probably provide you with the proper command sequence and a set of CAL data for your 3421. That won't bring back your instrument to factory accuracy level, but would at least allow you to exercise it, before you are doing a full cal & adjustment.

Yes, the battery was dead and has been replaced on both of my 3421A's along with the 6V SLA battery. I procrastinated and did not order another battery for my 3468 and now it has a CAL RAM checksum error, too. The solution to clearing the error is to perform a complete calibration, that is, write new calibration factors to the CAL RAM. Problem is I don't have the calibration standards necessary. However, nearly half of the steps in the calibration procedure can be performed using a shorting plug.

The other way to write new parameters to the CAL RAM would be to use this undocumented CAL command. I have a pretty good idea of the default parameters.

Excellent idea to consult eevblog. That is where I got the information on replacing the battery, from an HP 3457A post. BTW, the replacement battery for the 3421A and 3468 is a 2/3A 3V lithium, available from Digi-key.
http://www.digikey.com/product-detail/en...6-ND/61161

Dave
Find all posts by this user
Quote this message in a reply
03-30-2017, 05:10 PM
Post: #4
RE: 3421A CAL RAM
(03-30-2017 05:49 AM)Dave Frederickson Wrote:  The calibration constants can also be read or written to by an HP-IL controller through the instrument's I/O interface.

I'm kind of interested in the "read" part, too. The 3468 is a headache to calibrate without specific equipment, so having a backup would be nice.
Find all posts by this user
Quote this message in a reply
03-30-2017, 05:50 PM
Post: #5
RE: 3421A CAL RAM
(03-30-2017 05:10 PM)BobVA Wrote:  
(03-30-2017 05:49 AM)Dave Frederickson Wrote:  The calibration constants can also be read or written to by an HP-IL controller through the instrument's I/O interface.

I'm kind of interested in the "read" part, too. The 3468 is a headache to calibrate without specific equipment, so having a backup would be nice.

Simply reading the CAL factors won't clear the checksum error. Writing them should calculate new checksums and then clear the error, but this doesn't calibrate the instrument, it just clears the error.
Find all posts by this user
Quote this message in a reply
04-02-2017, 04:20 PM (This post was last modified: 04-02-2017 04:43 PM by Dave Frederickson.)
Post: #6
RE: 3421A CAL RAM
(03-30-2017 05:10 PM)BobVA Wrote:  
(03-30-2017 05:49 AM)Dave Frederickson Wrote:  The calibration constants can also be read or written to by an HP-IL controller through the instrument's I/O interface.

I'm kind of interested in the "read" part, too. The 3468 is a headache to calibrate without specific equipment, so having a backup would be nice.

The 3468 cal data can be read as a 255 character string using the B2 command, per the label on the bottom of the DMM.
Find all posts by this user
Quote this message in a reply
04-02-2017, 04:59 PM
Post: #7
RE: 3421A CAL RAM
(04-02-2017 04:20 PM)Dave Frederickson Wrote:  The 3468 cal data can be read as a 255 character string using the B2 command, per the label on the bottom of the DMM.

Thanks! I'll put that on my to-do list. I wanted to have a copy in case it could be written back after a cal ram error. (And of course if I was so prepared, I'd never *have* a cal ram error!)
Find all posts by this user
Quote this message in a reply
04-02-2017, 05:24 PM
Post: #8
RE: 3421A CAL RAM
(04-02-2017 04:59 PM)BobVA Wrote:  
(04-02-2017 04:20 PM)Dave Frederickson Wrote:  The 3468 cal data can be read as a 255 character string using the B2 command, per the label on the bottom of the DMM.

Thanks! I'll put that on my to-do list. I wanted to have a copy in case it could be written back after a cal ram error. (And of course if I was so prepared, I'd never *have* a cal ram error!)

Please share your cal data. Mine's corrupt so I'd like to see what good data looks like.

That reminds me, I need to order another battery.

Thanks, Dave
Find all posts by this user
Quote this message in a reply
04-02-2017, 07:53 PM
Post: #9
RE: 3421A CAL RAM
(04-02-2017 05:24 PM)Dave Frederickson Wrote:  ... The 3468 cal data can be read as a 255 character string using the B2 command, per the label on the bottom of the DMM....

Please share your cal data. Mine's corrupt so I'd like to see what good data looks like.

That reminds me, I need to order another battery.

Thanks, Dave

That for the B2 hint! I just experimented with it, and yes, the HP3468 sends 255 (not 256) characters following the B2 command.
Here is my HP71 program:
10 !
15 DIM A$[256]
20 A=DEVADDR("HP3468")
40 REMOTE
50 OUTPUT :A ;"B2"
60 ENTER :A USING "#,255A";A$
70 DISP A$

and the result is:
@@@@@@@@@@@@OOOO
IIIIII@@BMOKODLH
@@@@@@@@BLL@OMML
@@@@@@F@BM@OOILO
@@@@@@@@BLMNOBM@
@@@AFGC@L@LOOCNK
IIIIIIF@NBMDOLLC
@@@@BDA@ACCOI@EC
@@@@@@@@AA@COLLO
@@@@@@@@ABCKODLH
@@@@@@@@ANBNOLLC
@@@@@@@@ALNKOGM@
IIIIIIDANMMLOH@D
@@@@@@@@@@@@OOOO
@@@@@@@@@@@@OOOO
@@@@@@@@@@@@@@@

I added the line breaks each 16 bytes manually for clarity. Note the missing character is the last line, since there are 255 characters.

Observations:
all bytes are regular ASCII characters, which makes the manipulation of calibration data easier,
the characters are all in the range @-O that is 16 values: each calibration byte holds a 4-bit nibble,
there is no visible checksum.

It may be that the checksum is held in the 256th location of the calibration RAM and is not transmitted in the B2 response.
We can imagine that the B3 command to write calibration data also asks for 255 bytes and automatically adds the checksum.
I don't want to try - don't want to risk to corrupt my HP3468 calibration - but maybe Dave can you try ? :-)

J-F
Visit this user's website Find all posts by this user
Quote this message in a reply
04-02-2017, 07:56 PM (This post was last modified: 04-02-2017 07:58 PM by Hans Brueggemann.)
Post: #10
RE: 3421A CAL RAM
here you go...

Code:

HP3468B
@@@@@@@@
@@@@@@@@
IIIIIHF@
MKADNJLD
IIIIIII@
MCDDOHM@
@@@@@@G@
LKCOOCFO
@@@@@@@@
LDNKOBN@
@@@AICH@
NKDKDMEC
IIIIIII@
@EODOHOH
@@@@@@@@
ACD@OIMG
@@@@@@@@
AANKOJLC
@@@@@@@@
AABBOOLC
IIIIIII@
AODCOOMG
@@@@@@@@
@AMBOAN@
IIIIIFB@
NMMB@AD@
@@@@@@@@
@@@@@@@@
@@@@@@@@
@@@@@@@@
@@@@@@@@
@@@@@@@
Code:

HP3468A
@@@@@@@@
@@@@@@@@
IIIIIFFO
BADB@CLC
IIIIIIGO
BEO@OOEO
@@@@@@CO
AC@OONML
@@@@@@AO
BLELOFEO
IIIIBA@O
OMMALNNL
IIIIIHD@
@ONMNGGG
IIIIIIH@
@BCNOHFH
IIIIIIH@
@AAAOFFC
IIIIIII@
@NDOOCNG
IIIIIIH@
@N@NOGFH
IIIIIII@
@A@OOHNL
@@@@@AE@
LNM@NEN@
@@@@@@@@
@@@@@@@@
@@@@@@@@
@@@@@@@@
@@@@@@@@
@@@@@@@

LOL... J-F beats me to the minute!
Find all posts by this user
Quote this message in a reply
04-02-2017, 08:43 PM
Post: #11
RE: 3421A CAL RAM
Excellent!

So perhaps the 3421A is sending a string as well. Sure enough! 256 characters in this case.
3421A:
O@@@@@@@@@@@@@@@
IIIIIHHOMCADNCED
IIIIIIIOMDMBOOLC
@@@@@AAONADDNNDG
@@@@@@AONB@OOBDL
@@@CEDE@AMLDMNLO
IIIIIIA@@EMLOJGG
IIIIIII@AKAOOBLD
IIIIIII@ALNAODM@
IIIIIII@ALMCOEMG
IIIIIII@AKDOOGLD
IIIIIII@@ANLOENG
@@ABAIH@@@@@DGDG
IIGIDHG@@@@@MHEC
IIGHDIG@@@@@MHDG
OOOOOOOOOOOOOOOO


A description of electronic calibration can be found in the same issue of the HP Journal in the 3468 article.

What is known:
* There are two constants per Function/Range. Zero (offset) and Gain. The default value for Zero is zero and Gain is one.
* There are a total of 12 sets of calibration constants saved for the 3468 and 14 for the 3421.
* The RAM was mapped is such a way that the constants for a each Function/Range would be in a unique row in RAM. This was so that if there was an ESD event while Write (CAL) Enable was true then it would only affect one Function/Range, minimizing the recalibration task.
* The RAM device is physically organized in a 32x32 array, so room for 14 sets of 64-bit calibration constants
* Each Function/Range constant includes parity. There is also a checksum. If the checksum is in addition to parity or the same as, I don't know.

So now the task is to calibrate one constant at a time and then examine the cal data to determine where the constants for each Function/Range are mapped. Then, figure out how the constants are encoded.

Any help would be appreciated.

Thanks, Dave
Find all posts by this user
Quote this message in a reply
04-03-2017, 12:46 AM
Post: #12
RE: 3421A CAL RAM
@@@@@@@@@@@@@@@@
IIIIGHE@M@DB@AML
IIIIIGI@MOCLAKMK
@@@@@D@@MOENKFML
@@@@@@F@MNACOHLD
IIIIEFI@AMBELMLD
IIIIGBB@ABMNJMDL
IIIIIGB@A@LLALEH
IIIIIGB@AMBBAADG
IIIIIGA@AMALAOD@
IIIIIGA@AMNKAGDG
IIIIIGB@BLDDACED
@@@@AB@@@@BDLIOO
@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@


This is from my 3468A, if you want samples from a 3421A I can dump both of mine for you. I am not surprised that this works on the 3421A, the meter part seems to be pretty much the same as a 3468.
Find all posts by this user
Quote this message in a reply
04-03-2017, 12:57 AM (This post was last modified: 04-03-2017 08:54 PM by Dave Frederickson.)
Post: #13
RE: 3421A CAL RAM
Thanks to MarkL over on EEVBlog Forum for confirming something I suspected.

All the bytes are offset by 0x40 to make them displayable characters.

Also, there's an undocumented command for the 3478, W(addr), for reading the CAL RAM data.

https://www.eevblog.com/forum/repair/hp-...msg1177119

Dave

Edit:
(04-02-2017 07:53 PM)J-F Garnier Wrote:  Observations:
all bytes are regular ASCII characters, which makes the manipulation of calibration data easier,
the characters are all in the range @-O that is 16 values: each calibration byte holds a 4-bit nibble,
there is no visible checksum.

Sorry, I didn't see this at first.
Find all posts by this user
Quote this message in a reply
04-03-2017, 01:12 AM
Post: #14
RE: 3421A CAL RAM
(04-02-2017 04:20 PM)Dave Frederickson Wrote:  The 3468 cal data can be read as a 255 character string using the B2 command, per the label on the bottom of the DMM.

Except my 3468 has no external labels on it, I can't even tell what serial number it is! That is very strange, I'd never noticed that until I took it apart to remove the dead battery a couple of days ago.
Find all posts by this user
Quote this message in a reply
04-03-2017, 02:17 AM
Post: #15
RE: 3421A CAL RAM
(04-03-2017 01:12 AM)cruff Wrote:  
(04-02-2017 04:20 PM)Dave Frederickson Wrote:  The 3468 cal data can be read as a 255 character string using the B2 command, per the label on the bottom of the DMM.

Except my 3468 has no external labels on it, I can't even tell what serial number it is! That is very strange, I'd never noticed that until I took it apart to remove the dead battery a couple of days ago.

Here you go.

[Image: 2jbpgm8.jpg]
Find all posts by this user
Quote this message in a reply
04-03-2017, 05:26 PM (This post was last modified: 04-03-2017 05:35 PM by Dave Frederickson.)
Post: #16
RE: 3421A CAL RAM
Here's a program for the 3468 to print the ASCII data converted to hex nibbles.

10 DIM C$[256]
20 REMOTE :1
30 OUTPUT :1 ;"B2"
40 ENTER :1 ;C$
50 FOR K=1 TO 255
60 PRINT DTH$(NUM(C$[K,K])-64)[5,5];
70 IF K/16=INT(K/16) THEN PRINT
80 NEXT K


For the 3421A.
10 DIM C$[256]
20 OUTPUT :2 ;"CAL1"
30 ENTER :2 ;C$
40 FOR K=1 TO 256
50 PRINT DTH$(NUM(C$[K,K])-64)[5,5];
60 IF K/16=INT(K/16) THEN PRINT
70 NEXT K


Converted data:
F000000000000000
9999988FD314E354
9999999FD4D2FFC3
0000011FE144EE47
0000001FE20FF24C
000354501DC4DECF
9999991005DCFA77
999999901B1FF2C4
999999901CE1F4D0
999999901CD3F5D7
999999901B4FF7C4
9999999001ECF5E7
0012198000004747
997948700000D853
997849700000D847
FFFFFFFFFFFFFFFF
Find all posts by this user
Quote this message in a reply
04-04-2017, 04:08 PM (This post was last modified: 04-04-2017 04:10 PM by BobVA.)
Post: #17
RE: 3421A CAL RAM
I managed to get the cal information out of my 3468A, but only after this hilarious goose chase:

- Dig out 82160A HP-IL interface, only to realize HP-41 has packed up.
- Fix HP-41, connect to 3468A then realize that 41 only accepts 24 characters in an HPIL response.
- Dig out PILBox and set that up on bench computer. Side trip on failed quest looking for second HP-IL cable. Bodge something.
- Realize ILCtrl can't issue a "Talk" command, so even though I can send the "B2" command, there's no way to read it.
- Consider learning C++ or VB so I can modify it to do this, but then realize I'm not smart enough.
- Re-read 82160A manual and realize that the entire string *can* be read by the HP-41 using multiple "INA" commands. Bang head on bench.
- Connect printer to HP-41 and use 5 line program to read and print cal data.

Done! :-)

(Still not sure how I'd write it back if I had to, but perhaps the B3 command followed by the data would work from ILCtrl, since a response isn't needed.)
Find all posts by this user
Quote this message in a reply
04-04-2017, 05:16 PM
Post: #18
RE: 3421A CAL RAM
(04-04-2017 04:08 PM)BobVA Wrote:  I managed to get the cal information out of my 3468A, but only after this hilarious goose chase:

- Dig out 82160A HP-IL interface, only to realize HP-41 has packed up.
- Fix HP-41, connect to 3468A then realize that 41 only accepts 24 characters in an HPIL response.
- Dig out PILBox and set that up on bench computer. Side trip on failed quest looking for second HP-IL cable. Bodge something.
- Realize ILCtrl can't issue a "Talk" command, so even though I can send the "B2" command, there's no way to read it.
- Consider learning C++ or VB so I can modify it to do this, but then realize I'm not smart enough.
- Re-read 82160A manual and realize that the entire string *can* be read by the HP-41 using multiple "INA" commands. Bang head on bench.
- Connect printer to HP-41 and use 5 line program to read and print cal data.

Done! :-)

(Still not sure how I'd write it back if I had to, but perhaps the B3 command followed by the data would work from ILCtrl, since a response isn't needed.)

Good, glad to see you followed the standard procedure. Smile

Here's what I've learned about the cal data for the 3468. First I loaded the CAL RAM with zeros (all @ characters) using the B3 command, then dumped the data after each step in the calibration procedure. This is what changed after each step.

Code:
.3V Zero,   Line 2: 999998500000E5FB
.3V Gain,   Line 2: 999998902B04EBCF
3V  Zero,   Line 3: 999999900000F9FF
3V  Gain,   Line 3: 99999991FCE0FAB7
30V Zero,   Line 4: 000000600000F6FF
30V Gain,   Line 4: 00000061F2B4FAA3
300V        Line 5:
ACV?        Line 6:
300 Zero,   Line 7: 00069500000050FF
3K  Zero,   Line 8: 000067500000E5FB
30K Zero,   Line 9: 000006700000977C
300K Zero, Line 10: 000000700000F77F
3M Zero,   Line 11: 000000200000F27F
30M Zero,  Line 12: 000000100000F17F
3A Zero,   Line 13: 000000500000F5FC

It looks like the first 7 nibbles in each row are the Zero, the next 5 the Gain, and the last 4 the checksums.

From the HP Journal:
Besides ESD, there is also a small chance that an alpha particle or a cosmic ray may alter a single bit of the memory. To protect against this rare occurrence, the two constants for each function and range have parity bits associated with them so that the 3468A's microprocessor can locate singlebit errors and detect double-bit errors. The processor can correct a single-bit error in a calibration constant and the instrument will remain calibrated. If the processor detects more than a single-bit error, the CAL annunciator is displayed and the error bits are set to warn the user that the readings are uncalibrated. When this type of error is detected, the processor uses default values of zero for Y and one for G.

What parity/checksum/CRC method can correct single-bit errors and detect double-bit errors?

I believe the 3468 and 3421 report CAL RAM errors on a per/range basis. I need to investigate.

Dave
Find all posts by this user
Quote this message in a reply
04-04-2017, 07:39 PM
Post: #19
RE: 3421A CAL RAM
You may want to read up on ECC memory the normal case for that is fix single bit and detect multi-bit
Find all posts by this user
Quote this message in a reply
04-04-2017, 08:38 PM (This post was last modified: 04-04-2017 08:45 PM by J-F Garnier.)
Post: #20
RE: 3421A CAL RAM
(04-04-2017 04:08 PM)BobVA Wrote:  - Realize ILCtrl can't issue a "Talk" command, so even though I can send the "B2" command, there's no way to read it.

ILCtrl can read data from a device, for sure, using the 'Enter' button. With the 3468, there is no problem to read the measurements.

Why doesn't it work with the 'B2' command? Because ILCtrl sends a 'Interface Clear' and re-addresses the loop (kind of 'RESTORE IO') before each action to make sure the HPIL addresses are valid, in case the loop configuration was changed. This is very similar to the way the HP41 operates.
This is the 'Interface clear' (IFC) message that interacts with the pending message response, between the 'Send' and 'Enter' actions. It should not but it does, obviously.
The HP71 sequence 'OUTPUT 1;"B2" @ RESTORE IO @ ENTER 1;A$' fails too.

I just corrected this aspect in ILCtrl v1.04 on my site. Now the calibration data can be read easily with a couple of keystroke in ILCtrl (ok, this is much less fun than setting a HP41 system up :-)

Quote: (Still not sure how I'd write it back if I had to, but perhaps the B3 command followed by the data would work from ILCtrl, since a response isn't needed.)

ILCtrl should be able to write back the cal data, but I didn't check.

J-F
Visit this user's website Find all posts by this user
Quote this message in a reply
Post Reply 




User(s) browsing this thread: 1 Guest(s)