Rob Gray - Freelance Embedded Electronics Designer
I was living in London for a year between 1978 and 1979. At the time I was a photographer but I’ve always had an interest in electronics since I was a lad; I remember wanting to control the direction of a motor when I was about 10 years old, so I made what I now recognize as an H-bridge from switches and wires nailed to a square of chip board.
I’ve also always had an interest in model railways, so moving on 15 years and several continents, I found myself sitting in my London flat wondering how I would control the boom gates on a model train layout such that when a train approached a crossing the gates would lower and cars would stop.
I started drawing circuits using the technology that I was familiar with, namely magnets and reed switches, and while the results weren’t very clever the seed was sown.
I then bought some books, most notably one called “The CMOS Cookbook,” and was amazed at the possibilities these little black multi-legged devices offered.
On my return to Australia I started door knocking at all the engineering firms I could find in the phone book. I had nothing but my enthusiasm and some rolled up circuit diagrams under my arm and while I’m sure my circuits didn’t impress anyone, my enthusiasm obviously did, and I found myself changing vocations after talking to the owner of the first firm I approached.
Without doubt my logic analyser. How anyone can design microprocessor/controller systems without one I have no idea, and I’ve used them since the 80s although the requirements have changed over the years. In those days most peripherals were external to the processor and we were dealing with both data flow and timing issues so a wide and fast (read: expensive) analyser was needed.
These days most high speed peripherals are internal to the controller, the hard stuff has been done by the IC manufacturer so while there are still some timing issues, it’s more a case of looking at data flow on serial links of various persuasions. For this you can get a really good analyser with serial decoders for $150 and a fantastic one for about twice that.
My PC-based logic analyser client application.
I don’t remember the details but it was with some code running on a 2900 series bit-slice processor. The processor had a very limited stack depth, maybe only four or five levels, and the program was large and had been around a long time so it was impossible to analyse the stack depth at any particular part of the code. So when a code patch was decided upon you were never game to insert a call to a function. The result was a program that was all but impossible to follow where half the code was jumps to patches within jumps to patches, and the custom 64-bit wide instruction set didn’t help.
One bug took days to track down and this was in a core part of the network co-processor on a mainframe, so the pressure was on.
As is often the case, it was a simple error—something like code that fell through to a return or performed a push when it shouldn’t have—it’s the finding of it that was the hard part. Not the stuff of legends but pretty difficult at the time.
One book on VB.NET, one on Swing, two about PHP and a single Java tome. There are also three bird-watching guides, and a hot air soldering station. The usual mix really. That’s a total of eight books, of which none are applicable to embedded processor design.
These days I find that there is no need to have multiple shelves groaning under the weight of books as I did in the past. Most information can be found on the web in PDF or other formats, for example IC data books. I used to have maybe 20 Natsemi data books, each one 2” thick, then maybe another 15 from TI, a few Zilog publications and a dozen from Motorola just to name a few. Now if I want data on an IC I let my fingers do the walking and Google do the searching.
With modern SMD components it’s no longer practical or even possible to connect test equipment directly to the component for debugging prototypes. And trying to hold a probe on a TQFP leg is an accident waiting to happen. This means a method of connecting test gear should be implemented on the PCB and the most obvious method is to add a header.
However these same SMDs also mean smaller and tighter boards, even a 6-way standard-pitch header consumes a huge amount of board real estate.
My solution is distributed test points.
I identify the signals that will be needed for debugging and ensure that there is an access point somewhere on the board for those signals.
This can be as simple as not having solder mask tenting on a via, but normally I place an over-sized via on the signal, either replacing an existing via or just dropped on the signal trace in a convenient location.
This test via is hexagonal in shape to help identify it and I often add an overlay label as well. It also has a larger hole to make it easier to securely hold a probe on the test point or even solder in a flying wire.
Probably a wireless remote cattle trough monitor I designed in the late 80s. This had two halves, the remote was a 6805-based solar-powered unit that slept for most of the time but woke occasionally to test the water level in the trough and transmit a short burst of data to a base station.
The base station used a popular Z80-based personal computer of the day. The computer provided keyboard and screen IO but it used audio tapes to load programs and I considered this to be a major stumbling block for what was essentially a consumer product. So I designed a mezzanine board that had EPROMs to hold the application code, a real time clock and a serial port to interface with the RF receiver.
Then I had the problem of turn-around time for program iterations when developing, as that required EPROMs to be burnt, so I designed an EPROM emulator that featured a 20V10 programmable logic array and a Z8 microcontroller.
The “Romulator” as it became known earned me the “Inventor of the year” award for my home state and went on to be a product in its own right. In fact, it was much more successful than the system it was designed to help build.
C cross-compilers were expensive then and they weren’t very efficient at generating code for these resource-challenged processors, so all the above was written with thousands of lines of Z80, Z8 and 6805 assembly code.
Those were the days.
While working in the R&D section of a large multi-national computer firm I was asked to cycle the power on one of the mainframes. The computer in question had been shut down with all apps terminated, disks spun down, and databases closed. All I had to do was press the power button.
The button in question was a type that did nothing electrically when pressed but went open circuit when released which was fortunate because the instant I pressed it I realised I was about to pull the rug from under the wrong mainframe. Now killing the power of a mainframe in mid stride is a very bad thing but I had not released the button so no harm was done, but like a soldier standing on a landmine I couldn’t move and therefore couldn’t tell anyone of my predicament.
Eventually someone came into the room, they informed all concerned parties and an orderly mainframe shutdown was started. However I had to stand there for some time providing the chief source of office entertainment until I could release the button.
On a more serious note, I was electrocuted once (well several times really but once of particular note). With digital clocks in every home appliance from TVs to toothbrushes it can be a real pain to reset them all after disconnecting power from a house, so given that I’m a lazy fellow I tend to work on simple jobs with the wiring “hot.” Normally the first time I touch a bare wire I use the back of my hand so if it’s live my muscles will pull the hand away, but on this occasion I was not concentrating and grabbed the bare wires between my thumb and first finger.
The experience is not something I would recommend and my hand would not let go of the wires. It all happened very fast but I think what saved me was the fact that my bicep also contracted and pulled my arm away from the wire, as the wire was short and mechanically fixed at the other end my arm muscles overrode my finger muscles and pulled my hand off the wire.
For some time I had burn holes in my skin, and I no longer have any mains-driven digital clocks.
And in the “famous last words” category, I remember looking at a microprocessor data sheet for the first time in the early 80s and thinking “These things are useless.”
I have two major fields of interest, serial monitoring and control networks and embedded processor debugging tools. I’m currently spending a large part of my time designing two specific projects in these domains.
The networking project is called BUSnet and it has an associated project called MAXX that is a monitoring and control system.
On the debugging tool front I’m working on a tool that will help with the debugging and testing of embedded microprocessor designs. Its working title is “QUADD” which stands for Quite Useful All-purpose Debugging Device and it sports an LPC1768 as the control processor. This project will also let me work with some PC-based GUI programming, another field I enjoy.
After what I consider to be a reasonably successful career in IT and embedded design, I semi-retired in 1999 at the age of 45. I have no real need to work, and in fact I have not done so since. I do miss the embedded design world though and have recently thrown my hat back in the ring as a freelance designer under the name GRAYnomad Designs. If you’ve seen my web site you’ll understand where the “nomad” part comes from.
So I guess my “direction” is to work with projects that I find really interesting.
I don’t have my finger on the pulse as much as I used to, but that actually may have allowed me to see some things clearer. I think I may see changes more than someone who’s been in the job all that time, in the same way that you can keep buying larger jackets over the years and not notice that you are getting fat, and then you try on your old school blazer and find that you’d need a second one to make the ends meet.
In light of that rather tenuous analogy, one thing I am noticing after an absence from the game is the short lifespan of some components. There was a time when you could design a circuit using a few 74xx00-series ICs and be reasonably certain that your grand kids would use the same components should they become an engineer. That is definitely no longer the case. For example, I spent some time recently selecting a particular IC, I found one that had just the right features and started working it into a design. Then I thought I should check its price as there is no point including a $10 chip in a project with a $20 retail price point.
Blow me down if the chip was already listed as end of life, and it wasn’t that old.
In general I find that everything is moving too fast. We all joke about a product being obsolete by the time it gets to the shops but that has to mean reduced time spent in R&D and therefore reduced quality.
So I suppose one challenge will be to get reliable products out in less time than we used to. Fortunately, the tools are much better these days and that helps, but I hate the fact that something I design may have the life span of a house fly.