Arduino is a form factor, hardware platform and software development environment. Atmel's 8-bit AVR ATmega microcontroller is at the heart of the original Arduino prototyping system that has garnered support from a range of developers, vendors, and universities. There have been other microcontrollers placed in an Arduino form factor but Digilent's latest offering puts Microchip's 32-bit PIC32 microcontroller into the mix. That is significant but what is more significant is that the full Arduino development system is also supported.

I recently got my hands on Digilent's $26.95 chipKIT Uno32 (Fig. 1) and $49.50 chipKIT Max32 (Fig. 2). They come in tiny boxes that only contain the boards. I downloaded the software from Digilent's website. The Arduino Processing-based IDE supports Windows, Linux and MacOS. What Digilent and Microchip have done is to bring the Microchip's C compiler support to the IDE and the Arduino runtime.

For those unfamiliar with Arduino, the platform is designed for new developers, hobbyists and other casual developers. To simplify the system, Arduino provides a limited starting point for users. It uses C and provides a basic interface and support runtime library. Actually, the underlying system is a full C/C++ compiler so it is possible to use C++ code. The libraries provide functions like delay() and I/O functions that are typically used when introducing new programmers to embedded design.

Arduino also uses its own terms for peripheral expansion. Add-on boards are called "shields." They use headers with pass through pins so shields can be stacked. Some signals can be shared among shields like the I2C and Onewire port while others, like the analog inputs, will be dedicated to a particular board. This means many board combinations are supported but some would not be due to pin usage conflicts.

The Arduino standard utilize a single row of pins for its I/O. It includes analog inputs and digital I/O including SPI, PWM and serial port signals. Digilent uses a double row in some areas to provide access to the larger number of I/O pins available on the PIC32. I didn't have any shields handy but it is easy enough to wire up other devices including some servos I have in the lab.

Installing the software was easy and I had to find a USB cable. Just to highligh compatibility, the URLs for reference material and sample applications refer to the Arduino site.

Arduino's program framework hides C's main() function. Instead programs must have a setup() and loop() function definition. The first function is called once and the second repeatedly.

It was a trivial exercise to load, compile, download and run the sample Arduino applications. This is the key advantage of Digilent's approach. There is a significant amount of class materials, examples and support for Arduino. Most, although not all, will be directly usable with the chipKIT platforms.

The basic Arduino system is single tasking. There are a number of open source operating systems that have been configured for the ATMega target. One is DuinOS based on FreeRTOS. Most of these are written in C and would port over to the PIC32 but there are issues that will have to be addressed such as interrupt and timer support.