So you’ve found a reason to move beyond the Arduino IDE and are ready to step into the wide world of other MCUs. You found this nifty board called the USB Bit Whacker 32 (or UBW32 for short) and aren’t sure exactly where to start. This first blog entry will go over the board features and layout. Read on for a taste of the power of the UBW32, and some good reasons to want to switch from the Arduino.

The UBW32 is a board built around a PIC32MX795F512L. Even the MCU chip name seems confusing compared to the ATMega328p. It helps to understand the PIC naming convention if you break it down: PIC32 refers to the chip architecture. This is a 32-bit PIC chip, and follows the standard PIC32 programming conventions and instruction set, just as the ATMega chips use the same code and instructions among iterations. MX795 refers to the specific chip number, like 328P refers to the chip number on an Arduino. The F512L part specifies the a specific model of the 795, including the amount of memory the chip has, which is 512KB of program memory. The ATMega328p has only one chip model, so it does not require additional specification in the part number like the PIC does. Not quite as intimidating when it’s broken down now, is it?
Comparing the PIC32MX795 to a typical Arduino is a bit silly. The MX795 is a 32-Bit MCU while the ATMega line is an 8-Bit MCU series. The 795 we’re using comes in a surface mount TQFP 100-pin package while the ATMega comes in a 28-pin DIP package. Despite these major differences, the two chips have many of the same features (though the UBW32 usually has many times more of a feature than the 328). They both support UART communications, SPI, TWI/I2C, Analog Inputs, and much more. Here’s a list of prominent feature comparison for you:
| PIC32MX795F512L | ATMega328p |
| 80MHz Clock* | 16MHz Clock* |
| 512KB of Program Memory | 32KB of Program Memory |
| 0 Bytes EEPROM Memory | 1024 Bytes of EEPROM Memory |
| (78) General Purpose Digital I/O Pins | (20) General Purpose Digital I/O Pins |
| (6) UART Serial Modules | (1) UART Serial Module |
| (5) External Interrupt Pins | (2) External Interrupt Pins |
| (16) Analog Input Pins | (6) Analog Input Pins |
| (0) Hardware PWM Output Pins | (6) Hardware PWM Output Pins |
| (4) SPI Interfaces | (1) SPI Interface |
| (5) TWI/I2C Interfaces | (1) TWI/I2C Interface |
| (1) USB Interface | |
| (1) Ethernet Interface | |
| (1) Control Area Network | |
| (1) Parallel Master Port | |
| (1) Real-Time Clock and Calendar Module* |
*Requires external crystal to be added to function
It is worth noting that the UBW32 comes with switches connected to two of its pins for user-configurable operation and 4 user-configurable LEDs on-board. The Arduino Uno (Currently their flagship product) comes with no user-configurable switches by default and only one user-configurable LED on-board. The Arduino Uno also comes with an ATMega8U2 chip on-board to facilitate serial communication over USB, but it also uses the ATMega’s only UART pins to do so. Both have a bootloader to facilitate easy USB programming, and both have a means by which to program the MCU directly which requires additional hardware.
As you can see, the UBW32 has many more features and supports several more communication protocols than the ATMega328p chip does. The UBW32 also supports the PIC32 Multi-Vector Interrupt system, which gives you the ability to use system interrupts (which I will cover in a later blog post) to process changes in program states or external inputs immediately. This is a powerful system for your projects and allows almost instantaneous reactions to external inputs and built-in triggers. It should be easy to see why the UBW32 is a good board for implementing larger projects than the Arduino. The next blog post will cover getting files onto the UBW32, so you too can begin programming your UBW32 and accessing some of these features.
I recently got a Digilent ChipKit Max32, basically a PIC32MX that can also run Arduino sketches. I’ve wanted to delve deeper into MPLAB. Look forward to reading your future posts.
Hi David. I should have a post up about getting MPLAB setup and working on windows this weekend, assuming everything goes well time-wise. I intend to go over using a PICKit3 programmer and using the bootloader on my UBW32 board, so hopefully it’ll be what you’re looking for.