Dennis Cecic, P. Eng. (firstname.lastname@example.org)
Senior Member, IEEE Toronto Section
You’ve completed a project scope assessment and developed a basic product architecture, identifying some key constraints for your next design (cost, power, throughout, memory, size/weight, end-user experience etc).
Now you can begin your search for a microcontroller. This can be a daunting task!
In this series, we’ll review key selection criteria to help you select an MCU family to begin your next project.
We will compare and contrast the architectural features of 3 Microchip PIC® Microcontroller Families based upon the following criteria:
- CPU Performance
- I/O Throughput
- Power Consumption
You will learn how the MPLAB X Development Ecosystem can be used to benchmark your C code execution. You will also learn about an online tool called (Microchip Advanced Part Selector – MAPS) which can be used to quickly identify and narrow down other MCU choices for your next project.
The following microcontroller devices are featured in the discussion. They span a wide range of performance and memory options and have a uniform register C coding syntax when using the MPLAB XC compilers. All are in a 64-pin TQFP package, which can be ordered soldered onto a breadboard-friendly 64-pin DIP pcb from Proto Advantage.
PIC16F19197 – Fully featured, general purpose 8-bit MCU
|8 MIPs Max. Core Speed Based on the Microchip 8-bit Enhanced Mid-Range (EMR) CPU Core 4 kB RAM Quick, cheap and easy to use Does your sump pump really need a 32-bit MCU?|
PIC24FJ1024GA606 – Fully featured, general purpose 16-bit MCU
|16 MIPs Max. Core Speed Based on the Microchip 16-bit CPU Core. 32 kB RAM. Hardware support for multiply/divide operations. Low-power operation.|
PIC32MZ1024EFH064 – High performance, 32-bit MCU
|200 MIPs Max. Core Speed Based on the MIPS 32-bit M-Class (M5150) CPU Core 512 kB RAM Native 32-bit ALU, with Single/Double Precision Floating Point Unit/ALU and DSP Accumulators|
Benchmarking MCU Performance
The most accurate way to evaluate MCUs is to create some benchmarking code and run it on basic hardware. We will wire up our 3 MCUs on a simple breadboard (basic connections only: Power, Clock, Program/Debug, 1-LED, 1-Switch, and a UART):
Simple benchmark code will be run to derive some CPU and Interrupt performance data, which will be used to compare these 3 MCUs.