Co-processor decision

The ADC problem as well as cost of the voltage level shifter leads me to think having a co-processor is the best solution.  The last two posts look at 8 bit and 16/32 bit processors I could use for this purpose.  For firmware update, I want the co-processor to have USB capability.  This would allow me to get rid of the USB to serial bridge chip.

The choices:

I ended up with Microchip as the manufacturer for both architectures. The PIC16 line of controllers and the SAM32C21 line of controllers.


I am very familiar with the PIC16 controllers.  They are generally fast for simple processes like data transfer.  They are also generally less expensive.  The development environment is MPLAB X provided by Microchip.  It is available on the three Major desktop OSs.


The SAM32C21 line of controllers are ARM core M0+ based. I have never programmed any ARM systems at the bare metal level.  I would expect to have a large learning curve getting started with ARM systems.  I don’t know what development looks like for ARM systems. I do know there are compilers available on the three major Desktop OSs.

I have ordered some ARM based controller development boards.  A couple of STM32F103s from china, and a 1 bitsy with a Black Magic Probe from Kickstarter(STM32F415).  These are a great place to get started in ARM Cortex M architecture.  I think learning the ARM Cortex M architecture is a good side project after I am done designing the Arduino Compass Toy.

The decision:

I have decided on the PIC16 line of chips.  The important specifications are Built in USB, Wide voltage range, an SPI port that can work with DMA capabilities, and a protectable USB bootloader.

Arduino Compass Toy:

I played with OLED display this week and made a little progress.  I was able to send a power on command and I measured a current change when that happened.  I removed the serial data pins and the current stayed the same.  So, now I know the display is receiving and acting on commands sent over serial.  However, I sent a turn all pixels command on and supplied the high voltage and I never saw any light come out of the display.

Moving Forward:

Over the next few weeks, I will decide on the exact PIC16 chip I will use and start prototyping it into the circuit.  The first things I want it to be able to do is reprogram the ESP-12F and have it’s own USB bootloader.

Would you have chosen differently? The ARM chips are significantly more powerful, would you have preferred that?


Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.