New Board Design

A project log for Clipper - A Clip on Tuner for Musical Instruments

Minimalist LED strobe style clip on instrument tuner using a SAM D11C and a piezo sensor with LED readout.

rrace001rrace001 09/06/2019 at 20:500 Comments

I removed the USB because I cannot fit the code on the board with the Arduino Bootloader.  I am going bare metal on this to save about 7k of room. This gave me two more pins to use.  

I used one to add another line to the tri-state multiplexed LEDs which increased the LEDs from 20 to 30.  I added 8 to the strobe which increased it from 8 to 16 and put them in a straight line for better viewing.  I rearranged the LEDs from a 7 segment to a dot matrix type arrangement.  Should look a little better.  One LED was left from this so I put it on the top right corner of the dot matrix for a sharp indicator.

I used the other pin with a transistor to switch the ground on the opamp.  This so when it shuts down it does not draw any current.  The last version had drawn about 2 mA which is too much for standby. 

I also added room for a AAA.  I am hoping to just use a CR2032 so I have footprints for both.  I am not sure I can get the full performance amp draw down to 3 mA so the AAA will have no problem if needed.  This required adding a 3v3 booster and inductor.  Since I took out the usb then I did not need the regulator.

I have never done baremetal on a SAMD but found an excellent github repository for SAMD processors called mcu-starter projects.  This is very minimalistic and is serving as a great starter for SAMD baremetal.  It has Atmel Studio files but I have never used them.  There is a make file for generating binaries using GCC.  The binary files produced from this are very compact.  The author also made a very unique hardware abstraction layer file which is blazing fast.  I had clocked the io pins using this and it seems it is no different then directly manipulating the registers using CMSIS.  CMSIS (Cortex Microcontroller Software Interface Standard) files are in the repository and are a slight version different from what Arduino uses but no problem. I am so glad I found this because it has only a few files which I am not familiar and that is the linker and startup files.  No need to edit but should great to learn from.  The only bit of learning I needed to do to switch from my Arduino sketches was that I had to figure out to get the clocks up and running.  Only the default is setup in the repository but after going through the Arduino startup file then I was able to get the clocks up and running for the timers.  So far so good.

I got a couple weeks while waiting on the new boards so I am hoping to have all of my code in the baremetal version up and running before they get back.  Already thinking about a SAMD 21 tuner so I can use the Arduino bootloader and maybe Circuitpython.  I had built a POV fidget spinner with Circuitpython and it worked great.  Only thing is I could not figure out how to access the registers.  Not sure if Circuitpython supports this or if there is a way to compile a different version using CMSIS but that is well over my head at this moment.  I believe Micropython has the ability to manipulate the registers but that is on STM.  Not sure which rabbit hole to head down...