Fear of the Unknown

Humans are strange creatures. In general we like things to be nice and predictable; the same tomorrow as today, and the same as yesterday. I don’t have any hard data to reference, but I suspect that, overall, the human race is rather conservative. We don’t like new things that challenge our current beliefs and knowledge. This is ironic, considering that we now live in a time where change is about the only reliable constant, and new things are appearing at an astounding pace.

This type of mindset is especially evident when dealing with technology. Case in point: I once knew an electronics engineering technician (a good one, too) who knows how to work with PIC microcontrollers. Well, actually, one type of PIC, to be precise. Now, I think that the PIC microcontrollers are OK, but I don’t think they are the only thing out there. There are AVR devices, 8051-based parts, the MSP430 series from TI, ARM Cortex M3, and numerous others. At one point this person was faced with the prospect of using an AVR in a new design, and I thought he was going to wet his pants. At first it was somewhat amusing, but as the pressure to consider a new part for a new design mounted it became painful to watch. Well, the issue went away on its own so he managed to avoid the trauma and kept using his beloved PIC.

Why was this guy so adverse to change? Because it was something new, and he didn’t know it. It would have required that he work outside his comfort zone, put in extra time learning a new device, and in this case the subject of the discussion was the Arduino, and that was something he really objected to. He declared that is was just some kind of toy with a strange programming language, not a real microcontroller. But I think the real reason was that he was afraid he might fail.

All I could say to that was: Wow.

Actually, I’ve encountered this kind of reaction to using small microcontroller boards such as the Arduino on several occasions. In every case it seems to boil down to (a) because it’s new and strange, and (b) there is a misconception that just because the maker crowd likes it then it must be some kind of toy.

Nothing could be further from the truth. An Arduino is nothing more than a reference design from Atmel. Period. There is absolutely nothing special about the Arduino hardware. It is just a PCB with an AVR microcontroller, perhaps a second AVR to handle the USB interface (or a dedicated USB-to-serial chip from FTDI), and a voltage regulator or two. That’s it. There is no buffering between the MCU and the I/O pins, so an Arduino is basically just a break-out for an AVR.

A powerful example of this is the Arduino Nano. This little board will easily mount on a large PCB. You could have many of them on a larger carrier PCB. And each one will act just like an ATmega328 MCU. It’s all a matter of form-factor, not intrinsic functionality. The fact that these things come with the Arduino bootloader firmware is actually irrelevant–you can blow that away and load your own code into the chip, if that is what you want to do.

Part of the problem with the perception of the Arduino lies with how it is presented to potential users. The Arduino team does say, in several places, that the Arduino PCBs are nothing special, but then they put the emphasis on ease of programming using the Arduino IDE. Well, that’s fine, because it is a valid point. But what they aren’t telling people up front is that the Arduino is just using a derivative of the Processing IDE to wrap the gcc/g++ tool chain.

But another part of the problem are those who, intentional or not, spread misinformation about anything except the thing they understand and prefer. I have a book on the AVR where the author refers to “the Arduino language” and implies that it is inferior to “normal” C or C++. What the heck is that about? Excuse me, but Arduino is an AVR, and the language of the Arduino IDE is C/C++. Another place to find misinformation are hobbyist web sites and publications that cater to folks who know what they know and aren’t really interested in leaning some new-fangled thing. Sadly, the AVR has been around for about 20 years now, so it doesn’t really qualify as “new-fangled”. Then again, even the Wikipedia article on Wiring has it wrong when it refers to Arduino using “a simplified version of the C++ language”. There is nothing simplified about it–it’s all there if you want to use it.

I once asked a fellow technical author, who happens to specialize in the PIC microcontrollers, why Microchip seemed to hide the fact that one of their high-end parts is actually based on a 32-bit MIPS core. His answer surprised me. He told me that it was because a lot of “old guys” were so tightly entwined with the smaller PIC processors that they would likely freak out if they knew that the 32-bit part had a core that was once used in minicomputers and high-end workstations. It’s not a PIC in any way, shape, or form. It’s a MIPS CPU.

Over the years I’ve worked with a wide variety of mainframe computers, microprocessors, and microcontrollers. What I found was that, after a while, they all started to look the same. CISC or RISC, one accumulator or 32, huge pipelines or none at all, it doesn’t change the fact that they are all computers. Some are better for certain applications than others, some are faster, and some have extra bells-and-whistles, but in the final analysis they all do essentially the same thing. They process data.

When it comes to microcontrollers, anyone who decides that their way is the one true way is simply deluded at best. There is no one true way, no one processor that can do everything, or even one design approach that will work in all cases, and it changes constantly. That is the nature of reality, and in order to cope with constant change we have to be able to able to accommodate changes and select the optimum solutions. Sometimes those adaptations will take us outside of our comfort zones, but that’s part of the adventure, and the reward is gaining new experience and new skills. The alternative is to refuse to change and watch as the world passes by.

You can read more about the internal architecture of the AVR microcontrollers from Atmel, and the various types of Arduino boards available that use them, in my book “Arduino: A Technical Reference“.

0 Responses to “Fear of the Unknown”

  1. Leave a Comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Follow Crankycode on WordPress.com

Little Buddy

An awesome little friend

Jordi the Sheltie passed away in 2008 at the ripe old age of 14. He was the most awesome dog I've ever known.

%d bloggers like this: