SO, I blew up some stuff by not paying attention to sound design principles...
It appears I've blown up the first LED device in both of my LED strings. In my rush to experiment with the strings and the PIC driver code I neglected to place a series resistor in the data line. While troubleshooting the dead LED strings, my oscilloscope revealed significant over and undershoot spikes on the pulse edges which may have damaged the WS2811 in the first device on each string. I've now inserted a 100 Ω resistor in series with the data line and the pulse edges look much better now. I've ordered replacement LED devices so I can fix the strings, so I'll be back in business soon.
Step into my time tunnel
In the mean time, I was doing a little tidying and I found a relic from my past that got me thinking about the evolution of electronics and more so about how the experience of working with microprocessors and micro-controllers has changed over the last few decades. In the 1990's and early 2000's it seemed to me that it would be difficult to become an electronics hobbyist because hardware was moving to surface mount architecture and getting smaller and harder to work with. Thankfully user-friendly experimenter platforms emerged like the Arduino, the Raspberry Pi, the Beaglebone and myriad others. Now hobbyists can start out with a debugged, professionally assembled hardware platform that is often inexpensive and feature rich.
My hobbyist days began in the late 1970's, about the same time Bill Gates got interested in personal computing. I thought the best way to learn about digital electronics and microprocessors would be to design and build a personal computer. So I did. I selected the Z80 CPU as the basis of my computer and the S100 bus as the form factor and backbone architecture. After spending many hours designing a complete computer system on paper, I set to work building the hardware. Using a vector board and a neat prototyping system of point-to-point IC sockets with punch down wiring made by 3M, I built the single board computer shown in the photograph below.
The date stamps on the ICs range from 1984 to 1987. The board is intact except for a button cell battery holder that was removed from the lower right corner. The button cell provided standby power for the Real Time Clock (RTC) chip. Most everything that is on this board now fits easily in your everyday garden variety micro-controller from any manufacturer you care to name.
My skills grew enormously through the toil I put into this project. I learned about signal integrity, timing, loading, buffering, clock distribution, power supply filtering, serial data communication, parallel data communication, memory mapping, address decoding, register maps, real time clocks, direct memory access (DMA), counter timer circuits (CTCs), universal asynchronous receiver transmitters (UARTs), erasable programmable read only memory (EPROM) and about firmware.
If you look at the back side of the board (below), you will see that I also learned patience, discipline and wiring layout. Note that every single one of those 30 AWG wires is correctly placed. Every feature designed into this board worked - by the time I was done troubleshooting; perhaps the most important skill I acquired by devising my own personal computer.
After getting the CPU hardware working, I developed an EPROM blaster, a print buffer that held 2k of text and automatically spooled it out to a 9-pin dot matrix printer, a joystick interface, and a programmable sound generator.
All of the firmware that animated my hardware creations was written in machine language. Not assembly language, C or Python script, but in machine language. I couldn't afford an assembler and a BASIC compiler was out of the question, so I learned to program microprocessors and embedded hardware in Z80 machine language. Below is the first page of the machine code I wrote to make a basic text editor. My programs were stored on cassette tape and backed up on paper. The only permanent semiconductor storage I had on the board was an 8k byte ultraviolet erasable PROM. Changing the contents of that chip meant taking it out of its socket, putting it in an ultraviolet eraser for 15 minutes, then moving it to the programmer (commonly referred to by the misnomer "blaster" - nothing ever blew up when I used it), blasting code into it and moving it back to its home on the CPU board. Cassette tape storage was much more convenient. The cassette tapes were long ago lost or erased. Any that may have survived at the bottom of a drawer have deteriorated into a useless state - and where would I find a cassette player to play them? The paper copy on the other hand is intact and readable, over 30 years after it was generated, without the use of any extra-human technology. Hmm, I feel my inner Luddite stirring.
Comparing my hobbyist experience of about 30 years ago to what is available to hobbyists today shows how far the embedded controller industry has evolved. Much of what I learned in the 1970s and 1980s is not a priority to today's hobbyist (or engineer for that matter). Is all or any of it still important? Probably not. Today's hobbyists have a much shorter path from idea to implementation and they probably have as much fun getting from one to the other as I did all those years ago. I have evolved with the industry and now program PICs in high level languages on pre-assembled hardware that I connect to breakout boards and whatever else looks interesting.
I'm curious to know how others learned about digital electronics and embedded systems. What is your story?