Author Topic: Some old school instruments showing how it's done (HP 3325A and Fluke 8506a)  (Read 59682 times)

0 Members and 1 Guest are viewing this topic.

Offline garrettm

  • Frequent Contributor
  • **
  • Posts: 319
  • Country: us
Re: Some old school instruments showing how it's done (HP 3325A and Fluke 8506a)
« Reply #200 on: February 08, 2021, 02:51:07 am »
[...]
I started to look at the TL866CS programmer.  It's cheap enough but after seeing the comment about reading the parts three times to make sure they are right and then there were several posts about the company having malware in their software.   But, then again, you get all these crazy adapters and such for under $100.  What's been your experience with it?

I like to verify each step of the process since I tend to be overly cautious. I would hate to upload something that ended up wasting people's time... So that comment of mine wasn't intended to sound like an implied failing of the TL866II, but rather that I didn't mess something up while copying the contents of the ROMs. Even if I had a 1000 dollar programmer, I would have still checked for consistent results before uploading the ROM dumps for others to use.

I picked up my TL866II Plus for only $30 off eBay new. But it can't do higher than 18V peak programming voltage, so the older 2764s are unable to be programmed using it. The TL866CS or A models however can do the required 21V and should be found for less than $50 buy-it-now without any sockets/adapters. You need to be careful to avoid getting a TL866II since the CS and A models are discontinued (but still useful to have for programming older EPROMs).

The major issue with the CS and A model programmers was China being China, i.e. it was cloned. This lead to bricked units during firmware updates. I found the whole situation ironic. For everyone else, it was a shit-show that led to the development of open source software and firmware that is compatible with the original and cloned TL866CS/A/II programmers.
 

Offline garrettm

  • Frequent Contributor
  • **
  • Posts: 319
  • Country: us
Re: Some old school instruments showing how it's done (HP 3325A and Fluke 8506a)
« Reply #201 on: February 08, 2021, 02:54:32 am »
[...]
40 ASCII character readings per second would be 2.8 readings a second with 14 characters but I was seeing data much faster than this.   It's odd they would use the term Readings as they defined that to mean display updates in the manual.   I wouldn't be surprised it they turn off the display in these high speed modes.    Still, I don't buy it.  The reason is because I never see the sync running that fast with no data being transferred.   Then again, maybe reading in this context is that rate the ADC is making decisions, not how fast the display is being updated.
[...]

I interpret "ASCII character readings" to mean one 6.5 digit reading sent via a 13-character string with <CR><LF>  tacked on for a total of 15 chars per "reading". Although, this rate could require command J to suppress <LF>, reducing to 14 chars per reading.
« Last Edit: February 08, 2021, 03:03:13 am by garrettm »
 

Offline SilverSolderTopic starter

  • Super Contributor
  • ***
  • Posts: 6126
  • Country: 00
Re: Some old school instruments showing how it's done (HP 3325A and Fluke 8506a)
« Reply #202 on: February 08, 2021, 02:54:45 am »
The way VirusTotal works is they have ~50 scanners that are all "polled" about their opinion about a particular piece of software that is uploaded to the VirusTotal site.  Some of those scanners are better than others, and pretty much all of them can be provoked into false positives depending on the type of code being uploaded.  Getting just a handful of positives is not really a sign of "sure fire danger",  but I would be concerned if - say - more than half the scanners think there's something wrong.  In that case, I might install the software in a virtual machine first, to keep things contained.

This time I just created a restore point, then installed the software, so I had a way to roll back if something went wrong.

I opened the TL866CS up, it actually seems quite well made inside.  The socket on mine is marked "Aries" and feels solid enough, better than expected.  It is a black socket, not the green one I see on most pictures.  I guess one could always modify one of these with a real 3M part, but that might cost half as much again as the whole programmer!  :)



 

Offline SilverSolderTopic starter

  • Super Contributor
  • ***
  • Posts: 6126
  • Country: 00
Re: Some old school instruments showing how it's done (HP 3325A and Fluke 8506a)
« Reply #203 on: February 08, 2021, 02:58:59 am »
Re binary mode:  3 bytes is enough for an ADC reading (21 bits plus a sign bit). 

It seems the 500 readings per second literally consists of taking an ADC reading and pumping it out on the interface, with no processing at all!

If we can get that to work, we could do the averaging externally as discussed.


[Edit]  3 bytes times 500 readings per second is 1500 bytes per second, probably requiring a min baud rate of something like 19,200 to transmit?   I don't think 9,600 sounds enough?
« Last Edit: February 08, 2021, 03:04:00 am by SilverSolder »
 

Offline garrettm

  • Frequent Contributor
  • **
  • Posts: 319
  • Country: us
Re: Some old school instruments showing how it's done (HP 3325A and Fluke 8506a)
« Reply #204 on: February 08, 2021, 03:16:43 am »
Re binary mode:  3 bytes is enough for an ADC reading (21 bits plus a sign bit). 

It seems the 500 readings per second literally consists of taking an ADC reading and pumping it out on the interface, with no processing at all!

If we can get that to work, we could do the averaging externally as discussed.


[Edit]  3 bytes times 500 readings per second is 1500 bytes per second, probably requiring a min baud rate of something like 19,200 to transmit?   I don't think 9,600 sounds enough?

I like the idea of taking the raw output from the ADC. Though doing all the math (cal corrections, scaling, offset, etc.) makes it a bit of a challenge to get the actual reading, but it might be worth it for the increased sampling speed.

A 3-byte binary payload with <CR><LF> termination gives 5-bytes per reading. Assuming 8N1 serial frames, that’s 10 bits per byte. So 5[bytes/reading]*10[bits/byte]*500[readings/s] = 25000 bits per second minimum. So a modded Bit Serial Interface module with 19200 baud could in theory transmit 384 readings/s.

Assuming Fluke's specifications aren't a broken promise, I think we have a new eevblog forum challenge! Who can get their 8505/6A to read the fastest! Bonus points awarded for achieving 500 readings/s.
« Last Edit: February 09, 2021, 05:02:36 pm by garrettm »
 

Offline SilverSolderTopic starter

  • Super Contributor
  • ***
  • Posts: 6126
  • Country: 00
Re: Some old school instruments showing how it's done (HP 3325A and Fluke 8506a)
« Reply #205 on: February 08, 2021, 03:33:30 am »
Re binary mode:  3 bytes is enough for an ADC reading (21 bits plus a sign bit). 

It seems the 500 readings per second literally consists of taking an ADC reading and pumping it out on the interface, with no processing at all!

If we can get that to work, we could do the averaging externally as discussed.


[Edit]  3 bytes times 500 readings per second is 1500 bytes per second, probably requiring a min baud rate of something like 19,200 to transmit?   I don't think 9,600 sounds enough?

I like the idea of taking the raw output from the ADC. And again, the high speed mode assumes doing all the math remotely, i.e. calibration corrections, scaling, offset, etc. are performed by the PC.

A 3-byte binary payload with <CR><LF> termination gives 5-bytes per reading. Assuming 8N1 serial frames, that’s 10 bits per byte. So 5[bytes/reading]*10[bits/byte]*500[readings/s] = 25000 bits per second minimum. So a modded Bit Serial Interface module with 19200 baud could in theory transmit 384 readings/s.

Assuming Fluke's specifications aren't a broken promise, I think we have a new eevblog forum challenge! Who can get their 8505/6A to read the fastest! Bonus points awarded for achieving 500 readings/s.

From the manual:  The HighSpeed Reading
mode provides a shortened 3-byte binary two's
complement format response representing the input to
the DMM's A/D Converter. Speeds up to 500 readings
per second are possible in this mode of operation.


Also:  The response data from the DMM will be in 3-byte format, as shown below,for each voltage or current reading.

I don't think there is any record separator characters...  no CR-LF !   Basically, your application has to keep track of the count...


 

Offline SilverSolderTopic starter

  • Super Contributor
  • ***
  • Posts: 6126
  • Country: 00
Re: Some old school instruments showing how it's done (HP 3325A and Fluke 8506a)
« Reply #206 on: February 08, 2021, 03:39:00 am »
I have found a much better disassembler for the 8080 machine code, called "DASMx".

Also, one of the universe's most closely guarded secrets was revealed:  where does an 8080 begin executing code when it starts?  (Answer: it starts at zero, no reset jump vectors or anything like that - but the 8080 manual assumed that everyone knows that...  maybe all processors did back in the day).

So, I think the attached disassembly is quite reasonable, and probably accurate for the first few steps of the processing on startup at least.  It might be possible to glean how it figures out if it is an 8505A or an 8506A, for example.

It looks like they were pressed for space, and might have used "creative" coding to do a lot with a little  - this is something that causes headaches for disassemblers, so to really "crack the code" would likely require an experienced 8080 assembly programmer to take a look.

« Last Edit: February 08, 2021, 03:43:09 am by SilverSolder »
 

Online joeqsmith

  • Super Contributor
  • ***
  • Posts: 12277
  • Country: us
Re: Some old school instruments showing how it's done (HP 3325A and Fluke 8506a)
« Reply #207 on: February 08, 2021, 04:06:46 am »
[...]
40 ASCII character readings per second would be 2.8 readings a second with 14 characters but I was seeing data much faster than this.   It's odd they would use the term Readings as they defined that to mean display updates in the manual.   I wouldn't be surprised it they turn off the display in these high speed modes.    Still, I don't buy it.  The reason is because I never see the sync running that fast with no data being transferred.   Then again, maybe reading in this context is that rate the ADC is making decisions, not how fast the display is being updated.
[...]

I interpret "ASCII character readings" to mean one 6.5 digit reading sent via a 13-character string with <CR><LF>  tacked on for a total of 15 chars per "reading". Although, this rate could require command J to suppress <LF>, reducing to 14 chars per reading.

Using your interpretation, it's close to what I was able to achieve, with or without the serial interface running.   

Quote
A 3-byte binary payload with <CR><LF> termination gives 5-bytes per reading. Assuming 8N1 serial frames, that’s 10 bits per byte. So 5[bytes/reading]*10[bits/byte]*500[readings/s] = 25000 bits per second minimum. So a modded Bit Serial Interface module with 19200 baud could in theory transmit 384 readings/s.

I wasn't able to get the high speed mode to work with with the serial port, however with the async mode only sending  5 bytes as I show with the one scope shot, it should still reach the 384 readings/sec.   Even using this mode, the 40 readings/sec seems to be a stretch as the serial port does not appear to be the limiting factor.       

Thank you both for the feedback on the programmer.   I hadn't realized there were clones of it.  My old programmer could test the old CMOS and TTL parts.  Not knowing if the part was good, I would just plug them in.  It could normally ID the parts (if they were good) which also proved useful.   I did manage to blow one of the drivers once but they used a fairly common part that easy enough to change.     

While I sort out what to get to replace mine, I'll borrow one and program up some PROMs to try.  Not holding out that I will see any gains in speed but maybe some of the other strange problems I see have been addressed.   

Offline garrettm

  • Frequent Contributor
  • **
  • Posts: 319
  • Country: us
Re: Some old school instruments showing how it's done (HP 3325A and Fluke 8506a)
« Reply #208 on: February 08, 2021, 06:00:51 am »
Using 1kV range, zero off and internal triggering at the DMM and a 10 second gate time at the counter, I got the following results using the Scan Advance.

S0:  19.5 Hz,  51.3 ms / reading  (51.3 ms / sample)
S1:  18.0 Hz,  55.6 ms / reading  (27.8 ms / sample)
S2:  16.5 Hz,  60.6 ms / reading  (15.2 ms / sample)
S3:  14.0 Hz,  71.4 ms / reading  (8.9 ms / sample)
S4:  10.9 Hz,  91.7 ms / reading  (5.7 ms / sample)
...
S10: 0.234 Hz,  4273 ms / reading  (4.2 ms / sample)
S11: 0.117 Hz,  8547 ms / reading  (4.2 ms / sample)

If you factor in the number of ADC samples per reading, you can see that we converge on an average of about 4.2 ms per sample from the ADC. From what SilverSolder has said, the meter takes 4 samples per mains cycle when in synchronous mode. That implies 4.17 ms per sample with a 60 Hz AC mains and correlates with my rough measurements.

So Fluke isn't completely full of BS. However, the meter appears to add a variable delay between groups of sequential readings used for the average. The question is, how, or even if, we can minimize this internal delay.

I assume the Controller averages the raw sequential ADC readings and then applies the range scaling, calibration corrections and possible math functions afterward. I doubt this process makes up for the observed delay.

Using 4.16... ms as the digitizing time required for each individual sample and multiplying this by the number of sequential samples for each mode, we obtain the total digitizing time. Subtracting this from the previous reading period, we obtain the following delays.

S0:  47.13 ms  (51.3 - 4.16...*2^0)
S1:  47.27 ms  (55.6 - 4.16...*2^1)
S2:  43.93 ms  (60.6 - 4.16...*2^2) 
S3:  38.07 ms  (71.4 - 4.16...*2^3)
S4:  25.03 ms  (91.7 - 4.16...*2^4)
...
S10:  6.33 ms  (4273 - 4.16...*2^10)
S11:  13.67 ms  (8547 - 4.16...*2^11)

« Last Edit: February 08, 2021, 07:37:24 am by garrettm »
 

Offline SilverSolderTopic starter

  • Super Contributor
  • ***
  • Posts: 6126
  • Country: 00
Re: Some old school instruments showing how it's done (HP 3325A and Fluke 8506a)
« Reply #209 on: February 08, 2021, 06:09:34 am »
[...] So I looked at the schematic and I notice U24 routes A13.  Then we see U23 ties pin 26 high.  Looking at my original manual, it is also routed like this.   They must have planned on adding some features to U24 at one point and decided to support the 27128.  [...]

The disassembler found three jumps outside the confines of the 16K available:

Ignoring branch outside ROM to 40D8 at address 25A2
Ignoring branch outside ROM to 40E9 at address 25B9
Ignoring branch outside ROM to 40CB at address 2555


So perhaps there are some special versions of this meter that have extra functionality?  - slowly, light is beginning to dawn on the disassembly effort...  thanks to help from @retiredfeline in a separate thread on 8080 assembly coding.

[Edit]  Another thing: The code appears to start in U24 (at address 0000 in that EPROM), and continues into U23.  A 'gotcha'!  :D
« Last Edit: February 08, 2021, 06:49:16 am by SilverSolder »
 
The following users thanked this post: garrettm

Offline SilverSolderTopic starter

  • Super Contributor
  • ***
  • Posts: 6126
  • Country: 00
Re: Some old school instruments showing how it's done (HP 3325A and Fluke 8506a)
« Reply #210 on: February 08, 2021, 06:54:04 am »
Using 1kV range, zero off and internal triggering at the DMM and a 10 second gate time at the counter, I got the following results using the Scanner Advance.

S0:  19.5 Hz,  51.3 ms / reading  (51.3 ms / sample)
S1:  18.0 Hz,  55.6 ms / reading  (27.8 ms / sample)
S2:  16.5 Hz,  60.6 ms / reading  (15.2 ms / sample)
S3:  14.0 Hz,  71.4 ms / reading  (8.9 ms / sample)
S4:  10.9 Hz,  91.7 ms / reading  (5.7 ms / sample)
...
S10: 0.234 Hz,  4273 ms / reading  (4.2 ms / sample)
S11: 0.117 Hz,  8547 ms / reading  (4.2 ms / sample)

If you factor in the number of ADC samples per reading, you can see that we converge on an average of about 4.2 ms per sample from the ADC. From what SilverSolder has said, the meter takes 4 samples per mains cycle when in synchronous mode. That implies 4.17 ms per sample with a 60 Hz AC mains and correlates with my rough measurements.

So Fluke isn't completely full of BS. However, the meter appears to add a variable delay between groups of sequential readings used for the average. The question is, how, or even if, we can minimize this internal delay.

I assume the Controller averages the raw sequential ADC readings and then applies the range scaling, calibration corrections and possible math functions afterward. I doubt this process makes up for the observed delay.

Using 4.16... ms as the digitizing time required for each individual sample and multiplying this by the number of sequential samples for each mode, we obtain the total digitizing time. Subtracting this from the previous reading period, we obtain the following delays.

S0:  47.13 ms  (51.3 - 4.16...*2^0)
S1:  47.27 ms  (55.6 - 4.16...*2^1)
S2:  43.93 ms  (60.6 - 4.16...*2^2) 
S3:  38.07 ms  (71.4 - 4.16...*2^3)
S4:  25.03 ms  (91.7 - 4.16...*2^4)
...
S10:  6.33 ms  (4273 - 4.16...*2^10)
S11:  13.67 ms  (8547 - 4.16...*2^11)


The issue might be that the internal auto-trigger works at a leisurely pace, that cannot be increased?

If we use binary mode via GPIB, we would have to send a '?' to trigger every ADC reading individually.  Another option might be to trigger using the BNC input on the back, using a square wave generator, and see if the speed can be increased that way?
 

Offline garrettm

  • Frequent Contributor
  • **
  • Posts: 319
  • Country: us
Re: Some old school instruments showing how it's done (HP 3325A and Fluke 8506a)
« Reply #211 on: February 08, 2021, 07:19:19 am »
I ran the numbers again using period measurements on the frequency counter with averaging turned on. The data looks a little less noisy than before. The variable delay is interesting. The numbers indicate sequential sampling is perfomed by the ADC. The single sample digitizing period matches what Fluke has promised. As SilverSolder has suggested, we may need to send manual triggers over the bus to get higher acquisition speed.

Code: [Select]
Sampling	Reading		AVG Digitizing		AVG Processing	Digitizing
Exponent Period Time / Sample Delay         Period
0         52.2         52.20         48.03         4.17
1         55.2         27.60         46.87         8.33
2         60.3         15.08         43.63         16.67
3         68.8         8.60                 35.47         33.33
4         89.4         5.59                 22.73         66.67
5         137.5 4.30                 4.17         133.3
6         270.9 4.23                 4.23         266.7
7         537.7 4.20                 4.37         533.3
8         1071 4.18                 4.33         1067
9         2140 4.18                 6.67         2133
10         4273 4.17                 6.33         4267
11         8540 4.17                 6.67         8533

I played with the external trigger input and couldn't get the meter to trigger faster than when in free-run via the internal triggering. Max 17 Hz externally, and about 19-20 Hz internally. I did notice that I could use a larger trigger frequency (30 Hz) when I use S1 sampling or higher. Interestingly, the scan advance was then half the frequency of the external trigger signal. Although, I didn't mess with this much further.

*Formating tables on this forum is like herding cats!
« Last Edit: February 08, 2021, 09:32:34 am by garrettm »
 
The following users thanked this post: SilverSolder

Offline dietert1

  • Super Contributor
  • ***
  • Posts: 2473
  • Country: br
    • CADT Homepage
Re: Some old school instruments showing how it's done (HP 3325A and Fluke 8506a)
« Reply #212 on: February 08, 2021, 10:05:54 am »
After some fiddling with setup strings i just got 100 separate readings from each of our Fluke 8502s within 859 msec, so that is about 8 msec per reading. This is with  a GPIB over USB setup, with high speed reading mode "!" and sending a separate trigger "?" for each reading. In this mode the instruments do not follow the samples per reading command characters "Sn". And i don't yet understand the meaning of "T" or "T1" continuous reading modes. Expected a continuous stream of samples without repeating trigger commands. But without, the process gets stuck with a GPIB query timeout when trying to read the second sample.

The readings look reasonable with about +/- 1 ppm noise, so averaging them should yield averages without "sticky levels". Have to check that yet.

Regards, Dieter
 
The following users thanked this post: SilverSolder, garrettm

Online joeqsmith

  • Super Contributor
  • ***
  • Posts: 12277
  • Country: us
Re: Some old school instruments showing how it's done (HP 3325A and Fluke 8506a)
« Reply #213 on: February 08, 2021, 12:34:34 pm »
After some fiddling with setup strings i just got 100 separate readings from each of our Fluke 8502s within 859 msec, so that is about 8 msec per reading. This is with  a GPIB over USB setup, with high speed reading mode "!" and sending a separate trigger "?" for each reading. In this mode the instruments do not follow the samples per reading command characters "Sn". And i don't yet understand the meaning of "T" or "T1" continuous reading modes. Expected a continuous stream of samples without repeating trigger commands. But without, the process gets stuck with a GPIB query timeout when trying to read the second sample.

The readings look reasonable with about +/- 1 ppm noise, so averaging them should yield averages without "sticky levels". Have to check that yet.

Regards, Dieter

I would like to see the commands you are sending.  Maybe I was doing something wrong when trying to get the serial port to work in high speed mode.

Online joeqsmith

  • Super Contributor
  • ***
  • Posts: 12277
  • Country: us
Re: Some old school instruments showing how it's done (HP 3325A and Fluke 8506a)
« Reply #214 on: February 08, 2021, 12:36:39 pm »
[...] So I looked at the schematic and I notice U24 routes A13.  Then we see U23 ties pin 26 high.  Looking at my original manual, it is also routed like this.   They must have planned on adding some features to U24 at one point and decided to support the 27128.  [...]

The disassembler found three jumps outside the confines of the 16K available:

Ignoring branch outside ROM to 40D8 at address 25A2
Ignoring branch outside ROM to 40E9 at address 25B9
Ignoring branch outside ROM to 40CB at address 2555


So perhaps there are some special versions of this meter that have extra functionality?  - slowly, light is beginning to dawn on the disassembly effort...  thanks to help from @retiredfeline in a separate thread on 8080 assembly coding.

[Edit]  Another thing: The code appears to start in U24 (at address 0000 in that EPROM), and continues into U23.  A 'gotcha'!  :D

They have 2K of RAM.  I wonder are they jumping there?   The RAM may have been faster so they may have copied critical routines from ROM to RAM.   Just a guess. 

Online joeqsmith

  • Super Contributor
  • ***
  • Posts: 12277
  • Country: us
Re: Some old school instruments showing how it's done (HP 3325A and Fluke 8506a)
« Reply #215 on: February 08, 2021, 12:40:48 pm »
Using 1kV range, zero off and internal triggering at the DMM and a 10 second gate time at the counter, I got the following results using the Scan Advance.
...

Thank you for taking the time to look into it.  It makes more sense to me now after reading your posts.   

Offline SilverSolderTopic starter

  • Super Contributor
  • ***
  • Posts: 6126
  • Country: 00
Re: Some old school instruments showing how it's done (HP 3325A and Fluke 8506a)
« Reply #216 on: February 08, 2021, 03:20:47 pm »
Quote
[...]
The code appears to start in U24 (at address 0000 in that EPROM), and continues into U23.  A 'gotcha'!  :D

They have 2K of RAM.  I wonder are they jumping there?   The RAM may have been faster so they may have copied critical routines from ROM to RAM.   Just a guess.

That's a good thought - but the 8080 reads the EPROM at a very moderate pace...  even slow EPROMs are already as fast as the 8080 is ever going to be able to read anything, is my (limited) understanding.  When I get some more time, I'll try to decode what is going on around those calls, to see if it is intentional or just a problem with the disassembly process.  This is not something I have ever attempted before...  may get stuck in the snow occasionally!  :D
 

Offline SilverSolderTopic starter

  • Super Contributor
  • ***
  • Posts: 6126
  • Country: 00
Re: Some old school instruments showing how it's done (HP 3325A and Fluke 8506a)
« Reply #217 on: February 08, 2021, 03:33:05 pm »
[...] And i don't yet understand the meaning of "T" or "T1" continuous reading modes.  [...]

You got to 125 readings per second, very nice!  :D

The T command appears to control whether the ADC is triggered synchronously with the mains waveform, or whether it just triggers immediately on receiving the '?' character (faster).

So, we would expect the full 500 readings per second speed to be theoretically achievable in asynchronous mode, and 240 readings per second to be theoretically achievable in Synchronous mode (4 readings per mains cycle, as the meter can trigger on 4 flanks of the curve).  (200 readings per second in Germany with 50Hz mains!)

To this, we have to add any latency in our GPIB setup - which doesn't have to be much to cause issues at this repetition frequency!


 

Offline dietert1

  • Super Contributor
  • ***
  • Posts: 2473
  • Country: br
    • CADT Homepage
Re: Some old school instruments showing how it's done (HP 3325A and Fluke 8506a)
« Reply #218 on: February 08, 2021, 04:46:46 pm »
...
I would like to see the commands you are sending.  Maybe I was doing something wrong when trying to get the serial port to work in high speed mode.

Configuration string is "R2S7F1!T," and then for each reading the trigger string "?". As i wrote, "S7" is ignored and continuous triggering isn't working as expected. The DVM front panel is dark except the power LED. Meanwhile i noticed that total data taking time for 1600 samples is between 10015 and 11531 msec, so there seems to be "interference" between the USB 1 msec service period and ADC timing. Meanwhile the lower limit would be 10015 msec / 1600 = 6.3 msec per reading. This cycle includes four GPIB transactions (send two triggers and then read two results).

Standard deviation of the readings are 21 and 19 uV for the two instruments. When i look at the averages of those 1600 readings, their standard deviation is about 1 uV over 10 or 20 minutes. This includes the noise of the source (ovenised JVR).

Regards, Dieter
 

Online joeqsmith

  • Super Contributor
  • ***
  • Posts: 12277
  • Country: us
Re: Some old school instruments showing how it's done (HP 3325A and Fluke 8506a)
« Reply #219 on: February 08, 2021, 06:01:35 pm »
Quote
[...]
The code appears to start in U24 (at address 0000 in that EPROM), and continues into U23.  A 'gotcha'!  :D

They have 2K of RAM.  I wonder are they jumping there?   The RAM may have been faster so they may have copied critical routines from ROM to RAM.   Just a guess.

That's a good thought - but the 8080 reads the EPROM at a very moderate pace...  even slow EPROMs are already as fast as the 8080 is ever going to be able to read anything, is my (limited) understanding.  When I get some more time, I'll try to decode what is going on around those calls, to see if it is intentional or just a problem with the disassembly process.  This is not something I have ever attempted before...  may get stuck in the snow occasionally!  :D

I had to learn the 8080 at one time in my life but the only thing I remember is having to learn it and stories of may classes.   Looks like the data sheets have been scanned and are on-line. 

There may have been other reasons to jump to RAM.  For example, they may have had some self modifying code to save space. 

I did program up a few PROMs.  These are Toshiba 27128-20s.  Ethically, something just doesn't seem right about using them in the meter.  I just mirrored the image to both the lower and upper bank.   

Configuration string is "R2S7F1!T," and then for each reading the trigger string "?". As i wrote, "S7" is ignored and continuous triggering isn't working as expected. The DVM front panel is dark except the power LED. Meanwhile i noticed that total data taking time for 1600 samples is between 10015 and 11531 msec, so there seems to be "interference" between the USB 1 msec service period and ADC timing. Meanwhile the lower limit would be 10015 msec / 1600 = 6.3 msec per reading. This cycle includes four GPIB transactions (send two triggers and then read two results).

Standard deviation of the readings are 21 and 19 uV for the two instruments. When i look at the averages of those 1600 readings, their standard deviation is about 1 uV over 10 or 20 minutes. This includes the noise of the source (ovenised JVR).

Regards, Dieter
Thank you very much for providing this information.  I will give it a try and report back what I find.

Offline SilverSolderTopic starter

  • Super Contributor
  • ***
  • Posts: 6126
  • Country: 00
Re: Some old school instruments showing how it's done (HP 3325A and Fluke 8506a)
« Reply #220 on: February 08, 2021, 06:13:20 pm »

Thank you @joeqsmith, that confirms the slow read speed of the 8080 and we should be in good shape with pretty much any old EPROM of the right size (or double size, love your trick).

Also got to love how the DMM says "HI" to you when it starts.  How many other DMMs are that cheerful when they wake up?  :)

 

Offline SilverSolderTopic starter

  • Super Contributor
  • ***
  • Posts: 6126
  • Country: 00
Re: Some old school instruments showing how it's done (HP 3325A and Fluke 8506a)
« Reply #221 on: February 09, 2021, 02:13:51 am »

More disassembler magic, this time using NSA's 'Ghidra' software reverse engineering (SRE) suite of tools!

Amazingly, the NSA has open sourced that tool and made it available for download here:  https://ghidra-sre.org


This tool is so powerful, it turns the machine code back into a C program!  - a "decompiler", basically.

This function is the first thing the 8505/6A does when it starts...  you can clearly see it ending up in what looks like the program's main loop, after doing a couple of other things first!

Code: [Select]
void RST0(void)

{
  ushort uVar1;
  short sVar2;
  undefined in_L;
  undefined *puVar3;
  byte bVar4;
 
  *(undefined *)CONCAT11(0xc0,in_L) = 0xff;
  puVar3 = (undefined *)CONCAT11(0xe0,in_L);
  do {
    *puVar3 = 0xff;
    bVar4 = (char)((ushort)puVar3 >> 8) + 1;
    puVar3 = (undefined *)((ushort)puVar3 & 0xff | (ushort)bVar4 << 8);
  } while (bVar4 != 0);
  sVar2 = 0x452c;
  do {
    uVar1 = (ushort)sVar2 >> 8;
    bVar4 = (byte)sVar2;
    sVar2 = sVar2 + -1;
  } while ((byte)((byte)uVar1 | bVar4) != 0);
  disableMaskableInterrupts();
  _DAT_ram_47fe = 0x41;
  FUN_ram_0091();
  DAT_ram_41fd = 0;
  _DAT_ram_47fe = 0x48;
  FUN_ram_2938();
  _DAT_ram_47fe = 0x4b;
  FUN_ram_01ed();
  do {
    _DAT_ram_47fe = 0x4e;
    FUN_ram_0214();
    DAT_ram_41f8 = 0;
    _DAT_ram_47fe = 0x55;
    FUN_ram_34a3();
    _DAT_ram_47fe = 0x58;
    FUN_ram_087d();
    _DAT_ram_47fe = 0x5b;
    FUN_ram_2201();
    _DAT_ram_47fe = 0x5e;
    FUN_ram_0e62();
    _DAT_ram_47fe = 0x61;
    FUN_ram_0eab();
    _DAT_ram_47fe = 100;
    FUN_ram_0962();
    _DAT_ram_47fe = 0x67;
    FUN_ram_0445();
    _DAT_ram_47fe = 0x6a;
    FUN_ram_26e0();
    _DAT_ram_47fe = 0x6d;
    FUN_ram_0500();
    _DAT_ram_47fe = 0x73;
    FUN_ram_2848();
    _DAT_ram_47fe = 0x76;
    FUN_ram_16b8();
    _DAT_ram_47fe = 0x79;
    FUN_ram_007c();
  } while( true );
}

 
The following users thanked this post: garrettm

Offline garrettm

  • Frequent Contributor
  • **
  • Posts: 319
  • Country: us
Re: Some old school instruments showing how it's done (HP 3325A and Fluke 8506a)
« Reply #222 on: February 09, 2021, 03:04:07 am »
I did program up a few PROMs.  These are Toshiba 27128-20s.  Ethically, something just doesn't seem right about using them in the meter.  I just mirrored the image to both the lower and upper bank.

That was a clever EPROM trick! Will the 200ns access time of the new EPROMs have any meaningful affect on performance, or is the 8080 too slow to benefit?

I am happy to see the meter working with the new firmware. Hopefully, with that and triggering over the bus you'll see much faster read speeds.

I finally got my GPIB up and going today. Turns out my USB to GPIB adapter is faulty, but I have a working RS232 to GPIB converter from IOGear that can do 57600 baud. I'm still learning how to control the 8506A and might need to adjust the dip switches on the Serial488A Bus Converter but I should have some data to share in the next day or two.
« Last Edit: February 09, 2021, 03:49:36 am by garrettm »
 

Online joeqsmith

  • Super Contributor
  • ***
  • Posts: 12277
  • Country: us
Re: Some old school instruments showing how it's done (HP 3325A and Fluke 8506a)
« Reply #223 on: February 09, 2021, 05:38:02 am »
The 607 firmware effects some of the formatting of the serial data which required a few changes to my software to support it.  Some things are still a bit odd.  For example, when using binary format with the trigger set to anything other than T@, the meter will send 5 bytes.  However, in the T@ mode, it adds a CR for some reason.  The old firmware had odd behaviors like this as well.

Outside of that, I am not noticing any differences.   Maybe they were just minor bug fixes or they made changes to features I am not using.   Too bad we don't have some sort of change log.

The new PROMs won't have any effect on the performance.  These Toshiba PROMs were the only virgin parts I had. 

With the software working again, I had another look at the high speed mode.   If I had to guess, the firmware makes a decision to ignore the command if the hardware doesn't support it.  Except, if I try to enable it, then select the async internal trigger mode, the trigger will only fire once.   So the ! has an effect but nothing I tried seemed to enable it.   

I then tried repeating all of my other tests to see if there was any improvements.   Sadly, there were no changes in the speed I could achieve.   


 

Offline dietert1

  • Super Contributor
  • ***
  • Posts: 2473
  • Country: br
    • CADT Homepage
Re: Some old school instruments showing how it's done (HP 3325A and Fluke 8506a)
« Reply #224 on: February 09, 2021, 06:57:53 am »
Yes, in the description of "!" mode the manual does not mention the serial interface. But it mentions "Fluke Application Bulletin 25". That document should have more details. On ebay i just found "Fluke AB-15", so maybe someone can find "AB-25" for us.

Regards, Dieter
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf