Author Topic: Fluke 8840A Faulty CPU  (Read 4120 times)

0 Members and 1 Guest are viewing this topic.

Offline essele

  • Regular Contributor
  • *
  • Posts: 177
  • Country: gb
Fluke 8840A Faulty CPU
« on: May 21, 2019, 06:22:25 pm »
I picked up a couple of faulty 8840A’s a little while ago and have just got around to having a quick look.

Both were completely blank screens, with one doing absolutely nothing, and the other clicking a relay fairly regularly.

Focusing on the first one I did a bit of prodding around and came to the conclusion that the CPU was faulty ... a quick swap with the second CPU and it all sprang into life and looks good.

So the main CPU is a Zilog Z0861108PSC and these seem available online from China at least, but a bit of googling shows that they have a 4K write-once prom, so I’m assuming I can’t just replace it?

There are some comments about potentially reading and re-writing the prom, but I can’t find anything that makes me think anyone has been successful.

Does anyone know if this is possible? Or a source for a properly programmed one?

Thanks.

On a side note, both units came with the AC option (which was a surprise), but both of them seem to drag the power rail down and cause the blank-screen relay clicking, I’m hoping it’s as simple as a shorted tantalum, but I’ll get to that later!
 

Offline bdunham7

  • Frequent Contributor
  • **
  • Posts: 325
  • Country: us
Re: Fluke 8840A Faulty CPU
« Reply #1 on: May 21, 2019, 07:36:01 pm »
In a sane world your best source for a replacement Z8 CPU would be a parts unit.  I doubt they fail often.  However, as you may know--and I know from looking for parts for my 8842a--these go for stupid money.  A wrecked unit that looks like it fell out of one lorry only to be run over by another and was then scraped off the road by a vagrant goes for $50-75 USD here. 

I can't answer your question as to reading out and writing the PROM, but what did you test to determine the CPU was bad?  I had a similar problem with a different brand DMM and the "dead" ADC chip turned out to be an instability in the crystal oscillator, presumably caused by too high impedance of the crystal.  It is possible that I could have replaced the chip and the new one would shift things enough to start the oscillator, but it turned out simply replacing the crystal with a lower impedance "full-sized" AT cut model solved the problem entirely.  I just wonder if maybe you have something similar going on.  In my case, one the tests I did was to connect a 10M oscilloscope probe to a signal generator putting out the correct clock frequency sine wave  (8 MHz in your case) at 1V P-P or so and probing the 2 XTAL pins on the chip.  When I got the right one it started right up.  Just an idea to try.

 

Offline essele

  • Regular Contributor
  • *
  • Posts: 177
  • Country: gb
Re: Fluke 8840A Faulty CPU
« Reply #2 on: May 21, 2019, 09:01:56 pm »
Thanks for the reply ... I initially followed the troubleshooting guide looking for display related signals on the various display chips but saw nothing.

Eventually I started looking at the CPU, I could see a valid clock, but no activity on any of the data or address lines, so it wasn’t even starting to try to read memory, so I then switched it and all was fine.

It has crossed my mind that it could have been not properly making contact with the socket, so I will try it again, but I suspect it’s dead.
 

Offline ignilux

  • Supporter
  • ****
  • Posts: 31
  • Country: us
Re: Fluke 8840A Faulty CPU
« Reply #3 on: May 21, 2019, 10:12:11 pm »
I have no idea if this will help you or not, but I have an 8840A that needed some TLC before earning a permanent place on my bench. Mine would be working perfectly fine for 15 minutes or so, then the screen would go blank and sometimes a relay would click. After some time of combing the forum, I found someone who had different erratic problems (I don't have the link saved unfortunately). Turns out that it's somewhat common for the solder joints on the main transformer to be cold / incomplete / cracked. I cleaned and redid all of the pins, and it's been rock solid ever since.

I'm not saying it's your problem, but it might be worth a shot before spending some cash on a new CPU.
 

Offline essele

  • Regular Contributor
  • *
  • Posts: 177
  • Country: gb
Re: Fluke 8840A Faulty CPU
« Reply #4 on: May 22, 2019, 07:09:04 am »
Thanks Ignilux, but the clicking relay issue is a separate one and that only happens when the AC module is plugged in, my guess is it's either a power supply not being up to the task (although they all check out ok) or a fault on the AC board. I do have two AC boards exhibiting exactly the same problem, but also the same problem in two different 8840A's .. so there is some investigation still to do. I will check out the transformer joints though, thanks.

The CPU issue (I think) is pretty clear cut ... absolutely nothing going on, replace the CPU and it all works. I do need to just stick the old one back just to make sure it wasn't a seating issue, but my money is definitely on a dead CPU.
 

Offline essele

  • Regular Contributor
  • *
  • Posts: 177
  • Country: gb
Re: Fluke 8840A Faulty CPU
« Reply #5 on: May 22, 2019, 02:40:38 pm »
So a bit more investigation on the CPU...

The Z8611 has a 4K mask programmed ROM, so not re-programmable, so the only option using this specific device would be to grab one from an otherwise broken 8840A.

But, there are other options...

There is a Z8613 which is effectively a prototyping solution where it has a non-ROM version with a piggy-back socket for an EPROM.

There is also a 44pin version of the Z8611 which includes a ROMless pin which disables the ROM, so you could build something similar to the above.

There's the Z8681 which seems to be a romless version, so again you could build a small module that included some glue logic and an EPROM.

There is also a Z86E11 which has the EPROM built in ... although you need to jump through a few hoops to program it with a normal programmer.

Most of these seem very difficult to obtain ... the Z8681 and Z86E11 being the most available via eBay but at a bit of a premium, but still may be worth a punt. It's also not clear how easy it would be to read the contents from the original Z8611 rom to even be able to write it somewhere else.

More investigation needed...
 

Offline Paul Moir

  • Frequent Contributor
  • **
  • Posts: 875
  • Country: ca
Re: Fluke 8840A Faulty CPU
« Reply #6 on: May 22, 2019, 04:18:10 pm »
. It's also not clear how easy it would be to read the contents from the original Z8611 rom to even be able to write it somewhere else.
http://www.bitsavers.org/components/zilog/z8/1983_Z8_Microcomputer_Technical_Manual.pdf
Ch 8 pg 4 talks about the test mode which will allow you to execute your own code on an external ROM.  You can use that to read out the internal ROM.  Still a bit of work.
 

Offline bdunham7

  • Frequent Contributor
  • **
  • Posts: 325
  • Country: us
Re: Fluke 8840A Faulty CPU
« Reply #7 on: May 22, 2019, 06:33:49 pm »
So, not to hijack a thread, but I was looking around for a parts 8840a thinking the OP and I could share--I would like a VFD, handle and maybe some bits--when I ran across this unknown (to me) option.  Anyone know what it is?
 

Offline essele

  • Regular Contributor
  • *
  • Posts: 177
  • Country: gb
Re: Fluke 8840A Faulty CPU
« Reply #8 on: May 22, 2019, 07:42:15 pm »
@Paul -- thanks for the info, that's useful ... sounds like quite a lot of work, but may be fun.

@bdunham7 -- one of my units has that "option" ... I'm not sure it really is an option, I think it just takes some of the power and ground lines (that would normally feed the GPIB board) out to that connector on the back ... not sure what it's for, I had assumed it was really just a glorified blanking plate.

So I've done a bit more experimenting ... the CPU was definitely dead, swapping them around gives entirely consistent results.

The fact that both the AC boards caused the relay clicking issue concerned me, so I just jumpered the 'ac sense' pin to simulate the board being installed and I got the same behaviour ... further digging showed that it's actually the watchdog reset from the A/D which triggers if there is no activity on CS7. So at this point I'm a bit confused as CS7 is driven by U208 which is obviously fine when the AC board isn't installed... and the input for U208 is directly from the CPU, so it almost feels like a firmware issue. I might try reading the EPROM to see if I get consistent results (I think the official firmware is around somewhere as well.)

The second unit has a different behaviour (when I put the good CPU in it) ... but I haven't checked power supplies or anything yet. So I'll probably want to do a bit more digging before considering breaking for parts.

EDIT: I pulled both ROMs and checked them, the first looked OK (version 2.5, checksum 0x0006 0x6c48) although I have nothing to compare it with and can only find v2.3 anywhere online. Does anyone have a v2.5 prom they could dump?

The second one was garbage. When I put the first EPROM into the second unit it was fine, but had the same issue with the AC board, which makes me think it's still a firmware issue as it's unlikely that both units (and two AC boards) have the same hardware fault ... although I only have the one 'working' CPU, so that could also be at fault.
« Last Edit: May 22, 2019, 08:10:04 pm by essele »
 

Offline xwarp

  • Frequent Contributor
  • **
  • Posts: 340
  • Country: us
Re: Fluke 8840A Faulty CPU
« Reply #9 on: May 22, 2019, 10:47:30 pm »
I believe I might have 1 or 2 8840 boards in storage. I'll try to look this weekend. If I do, I'll let you know.
 

Offline essele

  • Regular Contributor
  • *
  • Posts: 177
  • Country: gb
Re: Fluke 8840A Faulty CPU
« Reply #10 on: May 23, 2019, 03:44:45 pm »
Looking at the various CPU options I'm finding it really difficult to understand how you would attach an external PROM to replace the internal one without using an extra address line ... I'm sure it's possible as I've found a few comments about it, but I just can't seem to get my head around it.

So, I'm liking the Z86E40 ... it seems to be a modern version and is reasonably priced and available (Mouser and Digikey) it has a different pinout, and a few more capabilities, but it seems to be backwards compatible from a register perspective, and it has a fairly standard method for programming once you translate the pins, therefore using it in a PLCC or LQFP format you could probably build a simple board that includes the pinout for programming and then use a normal TL866 type programmer.

I'll look at this in some more detail once I get a bit more time.
 

Offline essele

  • Regular Contributor
  • *
  • Posts: 177
  • Country: gb
Re: Fluke 8840A Faulty CPU
« Reply #11 on: May 24, 2019, 05:21:43 pm »
You only seem to be able to get the PLCC or DIP40 version of the Z86E40, so I've pulled together a couple of board designs based on the PLCC44, one is the actual board that would go into the 8840A and the second is the one you'd use to program it (the schematic is mostly taken from the Z86E40 data sheet.)

They were both a real pain to route, but I think they are ok.

I'm just going to check a few things (like will it actually fit in the 8840A) and go through the data sheet in a bit more detail to make sure that it stands a chance of working.


 

Offline Kleinstein

  • Super Contributor
  • ***
  • Posts: 6786
  • Country: de
Re: Fluke 8840A Faulty CPU
« Reply #12 on: May 24, 2019, 06:54:19 pm »
For such an adapter board I would also include a decoupling capacitor close to the chip. One can still not populate it, but it can help to have the option.
 

Offline essele

  • Regular Contributor
  • *
  • Posts: 177
  • Country: gb
Re: Fluke 8840A Faulty CPU
« Reply #13 on: May 25, 2019, 10:58:07 am »
Thanks Kleinstein ... I've added a decoupling cap as close to the socket as I could sensibly get it.

The boards are being made now, so hopefully I should have then in about a week.
 

Offline essele

  • Regular Contributor
  • *
  • Posts: 177
  • Country: gb
Re: Fluke 8840A Faulty CPU
« Reply #14 on: May 27, 2019, 05:09:41 pm »
I've just found an old 8840A/AF which also wasn't working ... and I've learnt the hard way that the bloody newer TL866II Plus doesn't actually have the capability to burn older EPROMS requiring >18V, so I had to buy a new programmer. Grrrr.

So I now have two different "working" CPU's ... one from the second 8840A and one from the 8840A/AF.

The prom from the AF (v2.5) matched one I found online, the label EPROM sticker was floating around in the device, so I assumed it was not going to work, but it seemed fine (I've burnt a new copy anyway.)

I've also found two different v2.3 images online, including one with a matching image for the Z8.

The v2.3 images didn't work with either CPU ... but that's to be expected as I understand you need a match between Z8 firmware and the EPROM.

The 8840A/AF cpu in the first 8840A didn't work with the v2.5 original image, however it did work with the newly burnt v2.5 which matched the one actually in the 8840A/AF ... which was strange since that combination didn't work in the AF, so that's either a chip seating problem, or there is another issue with that unit (one for another day.)

So now I have one complete 8840A, with a working RMS board, and it seems to be really nicely calibrated.

The second unit now has the prior "working" CPU with the original v2.5 image and it's still showing the problem with the RMS board ... so I'm no nearer to really understanding this, it could still be the CPU or the PROM since they are paired.

And I have the 8840A/AF which is now missing a CPU and PROM.

So ... I'm now fairly dependent on my adapter and programming boards. I have the v2.3 paired versions which I'm hoping I can get onto the Z8. The boards are due to arrive on Friday, so I can see the weekend being fun ;-)

The other option is to use the 'test mode' that Paul suggested to see if I can read the image from the working CPU I have, but that's going to mean rigging up a test bed with a clock, an octal latch for the address/data demultiplex, and writing some code to read the ROM and spit it out the serial port ... sounds like a great project, but a real time burner!
 

Offline essele

  • Regular Contributor
  • *
  • Posts: 177
  • Country: gb
Re: Fluke 8840A Faulty CPU
« Reply #15 on: June 01, 2019, 05:54:07 am »
Some slight progress... I’ve managed to find a disassembler for the Z8 (surprisingly hard to find a free one, finally found one as part of MAME, unidasm) and it’s really clear why the CPU code and prom code need to match ... the prom is just an extension of the CPU code, so it’s effectively a single 8K image. So even a minor difference won’t work as the location of subroutines will be different.

My boards and components arrived (very impressed with JLCPCB again, and this was my first with KiCad!) ... although the programmer doesn’t appear to work!

Just trying read I’m getting an overcurrent error if I use the TL866ii plus (set to a 13v Vpp) and if I use a GQ-4X then I get inconsistent results that aren’t all 0xFF (and it’s the same without the external 12.5v supply, so it doesn’t look like it’s latching into EPROM mode.)

I need to double check all the programming voltages and then start looking at the timings, but re-reading the data sheet has worried me as there are some errors and inconsistencies in it.

The other issue is that the Z86E40 doesn’t have a serial port (it has two comparators instead), this seems to be only used for the GPIB card, so that wouldn’t be a viable option with this solution, even if I could get it to program.
 

Offline TheDefpom

  • Frequent Contributor
  • **
  • Posts: 276
  • Country: nz
  • YouTuber Nerd
    • The Defpom's Channel
Re: Fluke 8840A Faulty CPU
« Reply #16 on: June 07, 2019, 01:05:56 am »
FYI Some time ago I received a faulty 8840A / 8842A unit and found it had the WRONG AC board in it, there is a connection difference between the two units, BUT the same AC board can indeed be used in both units, you just have to modify the interconnect wiring a little bit.

I will see if I can dig that info up for you, I did note it down somewhere for my future reference, it might have even been in one of my repair videos.
« Last Edit: June 07, 2019, 01:08:36 am by TheDefpom »
 

Offline TheDefpom

  • Frequent Contributor
  • **
  • Posts: 276
  • Country: nz
  • YouTuber Nerd
    • The Defpom's Channel
Re: Fluke 8840A Faulty CPU
« Reply #17 on: June 07, 2019, 01:07:31 am »
Here you go, I found it.


Offline essele

  • Regular Contributor
  • *
  • Posts: 177
  • Country: gb
Re: Fluke 8840A Faulty CPU
« Reply #18 on: June 07, 2019, 12:01:24 pm »
Thanks Defpom - that is really interesting.

That difference is very relevant since it also impacts one of the outputs of U208 which would be effectively shorted to GND when it shouldn't be, which could well be impacting CS7 and the associated watchdog.

I have got three AC boards, one of which (the one from the AF) is fairly different looking to the other two so I will check the out.

I'm assuming that pin 1 and 8 is also just swapped on the motherboard side (because of U208) so it's likely to be a pure hardware change and not a software related issue ... which doesn't explain why swapping CPU and PROM fixed it ... which probably means it's not my actual issue, but there are enough similarities that it definitely needs to be checked.

Thanks.

BTW ... I am losing the will to live with the Z86E40 ... will spend some more time this weekend, but I'm not hopeful about even being able to program it successfully.

UPDATE: I checked all three and they are all the same, the boards match the first diagram (pin 1 connected to U803 pin 11) and the motherboards all have pin 8 directly connected to the CPU. So they would all seem to be compatible. I have now given up on the Z86E40, I have decided I hate Zilog, and I'm looking at the feasibility of a radical approach! More later.
« Last Edit: June 08, 2019, 11:15:08 am by essele »
 

Offline essele

  • Regular Contributor
  • *
  • Posts: 177
  • Country: gb
Re: Fluke 8840A Faulty CPU
« Reply #19 on: June 21, 2019, 08:48:17 am »
Further info on my radical approach ... I'm going to try sticking in a PSoC4 running a kind of Z8 emulator!

Initially I was considering a pure Z8 instruction emulator, however I don't think the performance will be there, the PSoC is 48MHz vs. the Z8 at 8MHz and the arm is pretty efficient, but for full emulation I don't think it's enough headroom to get close to native speed given the emulation complexity of some of the instructions that the Z8 handles in a very few clock cycles. [I'm not sure that performance is a particular issue in this case, so may be something to experiment with later.]

So option 2 is to re-spin the firmware and effectively translate it into C with probably some assembly if needed, although the compiler will probably be better at optimising than I would be.

I have written a simple disassembler in Perl ... stage 1 was to completely match the output of the MAME disassembler which is done (with the exception of the indexed LD instructions for which the datasheet is really vague and the MAME one seems to disagree with ... but thankfully it's not a problem.)

Stage 2 was to update the disassember to actually follow the code paths so that I could work out which bits of the firmware were code and which were data (which is the reason why the indexed LD isn't a problem!) -- this is also done.

The next step here is to update it again to isolate truly independent subroutines (i.e. ones that aren't jumped into by something else) so that they can be pulled out as separate functions, and then to start looking at detecting reads and writes to the control registers. The actual control registers look to be simple, RP is only set to 0xF0 in one place and is then followed by a load of RP relative code, the rest of the firmware uses a fully qualified read or write (for want of a better phrase.) So I'm working on having the disassembler identify RP relative access that can be fully qualified because no other code path gets in between the RP set and the access. The port access reads/writes are going to be a little more challenging and unfortunately some might need to be checked at run-time.

There is a minor issue in the keyboard interrupt code since this uses a jump table in the firmware, so I think this is probably going to have to be manually re-written in C, although I want to try to avoid this if I can so the code translation is as automated as possible to cope easily with different versions.

Other than that, from a software perspective, I think this is entirely doable. I would like to get my hands on other versions of the actual Z8 bit of the firmware.

Hardware wise ... I've looked at the PSoC capability of driving the "external bus" using pure software, and whilst I think it might work, it's a bit fraught, it's at the limits of the performance of the device (using direct register writes, none of this API rubbish), interrupts would probably need to be disabled for most of the time, and it just feels wrong.

I've put together a hardware bus component using verilog which is an approximation of the bus access process for both read and writes, mostly to see if it would fit within the available logic and it seems fine (with a fair amount of headroom), so it feels like that's the way to go. The good thing about the PSoC is that the same board could easily use the hardware or software option, and in fact reconfiguring the ports to not be address/data bus can be achieved through software so it would be possible to emulate that as well (although not needed for the 8840, other than a test mode I've found in the firmware.)

The clock is an interesting point ... the IMO on the PSoC isn't as accurate at the crystal in the 8840, which may or may not be a problem. My plan was to use the IMO to generate the 8MHz clock internally and output it on XTAL2 so it can be used by the ADC (leaving XTAL1 unconnected.) I'm not convinced timing is critical (it's not an integrating ADC as far as I can tell) so this may be fine. There are three other alternatives ... (1) an external crystal on the board, (2) an external WCO to trim against, or (3) use the 8840's 8MHz crystal directly ... I think I can put together a board where all of these are an option, I just need to make sure it doesn't screw up the routing as some of the clock inputs are right in the middle of a contiguous port on the device I'm considering.

Reset is another interesting consideration, if you use a normal pin for reset input you can choose to ignore the watchdog reset in the device which will simplify debugging.

So next step on the hardware is to put together a board, I think I can squeeze a TQFP64 in between the DIP40. Once I have a board then I can start debugging in a live unit.

Yes ... I know I'm mad.
 

Offline coromonadalix

  • Super Contributor
  • ***
  • Posts: 2172
  • Country: ca
Re: Fluke 8840A Faulty CPU
« Reply #20 on: June 22, 2019, 06:03:07 am »
Im "mad"ly impressed by your tought process

I hope it will work for you, i would like to have this kind of knowledge,  i have a crazy idea for a new controller board ( arduino based / mega 2560 ) for an meter Ie: keithley 196 or an tektronix dm5120, the analog board is controlled by shift registers and the analog board values are read by somekind of a pwm signal ...
 

Offline fixitanonymous354

  • Contributor
  • Posts: 7
Re: Fluke 8840A Faulty CPU
« Reply #21 on: June 26, 2019, 02:39:36 am »
Hi i have recently acquired an 8842A with the Z8613RS and have dumped the 2732 roms for the CPU and IEEE board using an Enhanced Willem.
I had to use an VCC jumper fix described on the Willem forums to get the Willem to read the ROMS but the U222 ROM matches to whats available on xDevs so i think the dumps are reliable.

U202 is rom on top of main CPU
U901 is rom on the GPIB board
U222 was the same as available on xDevs
 

Offline essele

  • Regular Contributor
  • *
  • Posts: 177
  • Country: gb
Re: Fluke 8840A Faulty CPU
« Reply #22 on: June 26, 2019, 09:54:48 am »
Thanks for these ... I’ll have a look at them in the next couple of days ... I believe there are quite a few differences between the 8840a and the 8842a, but I can’t see a reason why the same approach couldn’t be adopted.
 

Offline essele

  • Regular Contributor
  • *
  • Posts: 177
  • Country: gb
Re: Fluke 8840A Faulty CPU
« Reply #23 on: June 28, 2019, 03:46:27 pm »
Making some progress...

First stab at a PSoC based board ... only done some very simple testing so far, it powers up, can be seen and programmed by the MiniProg3, and I can generate an 8Mhz clock, unfortunately the pins for the external crystal don't allow routing, so if the native 8840A crystal doesn't work I'm stuck with a PWM generated clock, but that all seems ok based on this first test.

Step 2 will be putting it on some breadboard with a crystal, then step 3 will be in the 8840A. Hopefully the native crystal will be fine. Not sure if I'll be able to power it from the MiniProg and leave the 8840 powered off for now, I suspect not.

Oh ... and yes, I will populate the decoupling caps - I was just keen to see if the MiniProg would see it!

UPDATE: just tried it in some breadboard with a random 8Mhz external crystal in the 8840A configuration (i.e. no caps, and 10M in parallel) works fine as a source for the PSoC, I can generate a much more accurate 1Mhz test signal from the ECO rather than the IMO, however pin 2 doesn't swing much (looks like 1V max) so I am doubtful if this will be sufficient to drive the ADC, but I'll try it over the weekend as it may be different with the particular crystal, or may well be sufficient.

FURTHER UPDATE: doesn't seem to work from the onboard crystal, it's oscillates but only at just under 1V, I can see the 8MHz signal getting to the ADC, but no sign of the 1MHz output. Programming whilst installed works fine, and a quick test of the 8MHz PWM output seems to work, I see a 1MHz output from the ADC and that reaches the keyboard/screen controller. So this should be sufficient to start working on the bus access bit in Verilog. I should be able to get a test program to read the EPROM or maybe even attempt to update the screen. I may consider a separate crystal for the next version, although I'm still not sure how important accuracy (or matching the onboard one) is.


« Last Edit: June 28, 2019, 05:53:22 pm by essele »
 

Offline essele

  • Regular Contributor
  • *
  • Posts: 177
  • Country: gb
Re: Fluke 8840A Faulty CPU
« Reply #24 on: July 01, 2019, 07:05:20 am »
Well it's getting a bit exciting ... I've now got a working bus read capability, and I can read bytes from the U222 EPROM using my Verilog bus access module, this should also work for reading from the ADC, the Cal Memory, and the keyboard/display controller (assuming I've got the timing right.)

Next step is the write side of it .. testing that is going to be slightly harder, I guess I'm going to need to get the display to output something!

One slight worry at this stage ... because the XTAL2 pin (chosen because of the potential use of the external crystal) is not routable inside the PSoC then my only output option for an 8MHz clock is a PWM. This is then not synced with the UDB 8MHz clock that's used for the read/write logic ... not sure if it's really a problem, but it feels like something I should fix. I may just bodge another pin over to it for now so I can directly output a clock.
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf