Category: Maker Community
Makers, you can develop an embedded system like an engineer.
Semiconductor manufacturers will often showcase their microcontrollers in an engineering evaluation board. These boards are loaded with features and peripherals that are useful in various ways, and because of this they are often relatively expensive. They are usually out of the reach of the Maker community, and even some of the smaller design houses may avoid them due to cost.
But the Maker Community has become home to several low cost microcontroller boards that could be used in an engineering development environment. At the very least, it will allow hardware engineers, or even hardware technicians, to set up a low cost minimum platform that can be turned over to microchip firmware programmers for initial development and testing.
Even better, these boards can be coupled with low cost engineering-level hardware and software to provide a learning platform for those Makers who are interested in breaking into embedded systems programming.
The main two boards used by the Maker community are the Arduino and the Arduino-compatible Microchip / Digilent chipKIT. These two boards are designed to be easy to program using the standard Arduino Integrated Development Environment (IDE). But there is nothing that requires the Arduino IDE. Instead, relatively inexpensive engineering-level microcontroller design tools can be applied to these Maker boards.
Almost 15 years ago I designed a product around the Hitachi SuperH SH-2 microcontroller. It was a wonderful device and very powerful for its time. It was the engine that drove the Sega Saturn game console. These microcontrollers required the use of an In-Circuit Emulator (ICE) and a bond-out processor that cost tens of thousands of dollars. The ICE emulated every part of the microcontroller, and was popped into the prototype PCB for the software developer. The ICE allowed the programmer to see quite a lot of what was happening inside the SuperH microcontroller – including individual registers in near real-time. Once the firmware was developed and troubleshot, it was packaged and sent to a parts distributor, who programmed the SH-2s for us before our production line added them to the circuit board. Firmware changes were made with the ICE, and added to our Production pipeline through change orders.
Today, in-circuit emulation has been mostly replaced by on-chip debugging hardware. The Joint Test Action Group industry association implemented standards for on-chip testing using a dedicated debug port on microcontrollers. These debug test access ports are used with a protocol that gives the engineer access to the device logic levels and registers.
Different manufacturers implement JTAG somewhat differently, and many manufacturers (Microchip, for example) have their own device serial debugging ports. This has led to the use of JTAG programmers for programming the printed circuit board in an Automated Test Equipment environment, and to manufacturer specific In-Circuit Debuggers (ICD) used for developing an embedded system.
ICE is expensive, and with newer microcontrollers it is unnecessary. JTAG programmers are useful, but not as useful as an ICD. And In-Circuit Debuggers have become cheap enough for the Maker Community to purchase.
ATMEL makes the AVR microcontroller that is used on the Arduino. And while a Maker could use the Arduino IDE to create something new, there is really nothing stopping anyone from using the ATMEL engineering design system. The ATMEL IDE, Atmel Studio 7, can be downloaded for free. ATMEL recommends several different ICDs, from low-cost to professional level. The mid-range and low cost ICDs are under $60. The professional level ATMEL development ICD is about $660. All are useful for product development. The difference between the debuggers is mostly in the speed at which the ICD can communicate with the PC, which affects programming speed and the number and speed at which registers are displayed in the IDE.
Microchip (who recently purchased ATMEL) also has an IDE that you can download, called MPLAB. The most current version as of this writing is MPLAB X, and there is a version of MPLAB that can be used on the Cloud. Microchip has a lot of 3rd party ICDs and even more simple serial device programmers. It is quite possible to purchase an ICD for under $40 for the Microchip PIC microcontrollers. The Microchip “official” ICD is the ICD 3, a USB-connected ICD that is widely used for developing embedded systems. You can purchase the ICD 3 for about $280, including shipping, from Microchip Direct.
So a member of the Maker community could purchase an Arduino Uno, download the Arduino Software IDE, and start programming almost immediately.
OR, a Maker could get an Arduino Uno, download Atmel Studio 7, check out the ATMEGA 328P datasheet (PDF), purchase one of the recommended ICDs, and then learn how to interface it with the Arduino’s microcontroller. A Maker could do the same thing with Microchip’s chipKIT using MPLAB and a PIC compatible ICD – or the Microchip ICD-3.
No, this won’t be as simple as the Arduino environment normally used by Makers, but this is a good start for learning how to really design an embedded system. This is an excellent opportunity for anyone interested in learning the basics of embedded systems design and programming.
And finally, Arduino and chipKIT are not the only players on the market. There are others that are compatible, or not compatible with the Arduino IDE. And each manufacturer has either its own IDE, or is compatible with an open source IDE.
Microchip purchased Atmel – Some background and what this could mean to the Maker community
Traditionally if engineers needed a small microcontroller that was easy to use and program, they would likely choose a Microchip PIC. A design was still required to couple the microcontroller together with a power supply, clock, and I/O, but that was relatively simple for any engineer. The software was a little more difficult since the PIC was programmed using Microchip RISC assembly language.
This was less useful to the Maker community, who could understandably find hardware design and the Microchip PIC environment to be very confusing.
Then in 1992 the Basic Stamp 1 by Parallax came along. This device used a Microchip PIC on a small circuit board with its own clock, I/O, and power supply. It also had FLASH memory. The PIC ran an interpreter program, and the user could program it in a version of Basic (PBASIC). The most important aspect of the Basic Stamp is that it allowed the fledgling Maker community to create real microcontroller-based projects. But the Basic Stamp has always been too expensive for Makers.
In 2005 the Arduino was invented as a lower cost alternative to the Basic Stamp. Based on open-source hardware Arduino boards could be manufactured by anyone. It was originally designed to use the ATMEL AVR microcontrollers, and this tradition has continued on from 8-bit to 16 and 32 bit AVRs. Manufacturers have created Arduinos based on different microcontrollers too, which isn’t a problem as long as the board is compatible with the Arduino IDE and libraries.
Arduino boards have a wide range of abilities and features and can be programmed in multiple languages. A simple Arduino board can be purchased for under $20. These features make the Arduino a very handy device for the Maker community.
Microchip is still the 800-pound Gorilla in the microcontroller and memory marketplace. And this marketplace has been consolidating as margins grow tighter. Microchip just purchased Atmel for $3.6 billion.
What does this mean for the Maker community?
Microchip has always tried to be attractive to the Maker community. Its parts are very inexpensive, and it provides explicit guides of “how to” build a complete circuit board based around its PIC microcontrollers. For a while the Maker community seemed to be moving toward Microchip, with books like “Easy PIC’n” becoming somewhat popular. Microchip had a market share in the Maker community as long as they were competing with the Basic Stamp and its expensive counterparts. That seemed to fall away when the Arduino arrived.
Microchip, along with Digilent and Fubar Labs, decided to create their own open source hardware platform to compete with the Arduino and Raspberry PI. Billed as “Arduinos on Steroids” this platform is called the chipKIT, and it uses the very powerful PIC32 series of microcontrollers as its engine. The chipKIT boards were introduced in 2013 at $20 for the low-end boards. These boards were supposed to be able to port code created for the Arduino right into the chipKIT.
However, increased raw power and a different microcontroller have created problems with library compatibility. This isn’t a big problem for programmers who are used to tweaking libraries for their own use, but the Maker community values greater compatibility and ease of use, and many do not have a need for the power available in the chipKIT. The chipKIT has a decent market niche, but the Maker community really loves Arduino.
Now that Microchip owns chipKIT and Arduino, it will be interesting to see if a pathway is created to urge Makers on to more powerful products. A partial pathway already exists since chipKIT can be programmed with either the Arduino IDE or with MPLAB and its In-Circuit Debugger.
Microchip shines with excellent product support and online designer forums. But these tend to cater to engineers more than Makers. ChipKIT questions do not get the immediate response that other PIC questions elicit. Some engineers on the Microchip forums have a dismissive attitude toward the Maker community too.
It would be to Microchip’s advantage to create a Maker community forum as part of their otherwise excellent forums, with Maker-friendly moderators and assistance. They could combine this community with the Arduino and the chipKIT Makers. Maybe Makers can be encouraged to join the engineering career fields.
From a personal note – I’ve always loved the Microchip PIC, and have programmed it in RISC and C++. I’ve also programmed the Arduino in C++. If Microchip can make the libraries easier to use, the PIC32 has some serious power I’d love to play with in an Arduino environment.