Week 7

Embedded programming

Week 6 Week 8

Oct 20, 2021


  1. Read the data sheet for your microcontroller
  2. Program your board to do something
  3. Compare the performance and development workflow for other architectures

1. SAMD11C datasheet

Scanning the 981 page datasheet, I was particularly curious about using capacitive touch with the D11C microcontroller.

Page 854 goes over different architectures for self- and mutual-capacitance. I wanted to try out the self-capacitance functionality and create a Makey-Makey esque fruit controller.

self capacitance

However, I found that (according to this) access to Atmel’s Peripheral Touch Controller (PTC) is close-sourced and hence not accessible through the Arduino IDE.

Libre PTC is a casual library that attempts to provide access to the PTC functionality by reverse engineering. Unfortunately, I got stuck in the same way as in one of the issues on the GitHub repo. Perhaps the library has become outdated since it was last updated 4 years ago.

2. Do something

cat in the sun

I had already gotten my board to work in Week 5, and I wanted to try extending it with capacitive touch functionality. While trying to get Atmel PTC to work, I found that when I did not set up the D11C internal pull up resistor, my finger could actually trigger the LED without directly pressing the button. Funny!

3. Architecture comparisons

It appears that all of us in the EECS section used the D11C architecture. For the above project, I also considered using an ATTiny chip as it would allow me to skip the 3.3V regulator. However, it has a different programming method and would not have a USB connector.

For ease of implementing capacitive touch, I could also have used a D21C microcontroller, as Adafruit had worked with Atmel (allegedly) to create a QTouch-compatible library for these chips.