Week 07
Embedded Programming
The Boards
At the very end of last week/beginning of this week, I redesigned the board I had made last week that didn't work on account of the incorrect wiring of the regulator. Below is the corrected schematic, layout and PNG for milling. This board
runs on the SAMD11C. The SAMD11C requires 3.3v so there is a regulator that drops the 5v from USB down to 3.3v. There is a bypass capacitor connecting the OUT of the regulator to ground to help prevent noise from entering the system. I've
added an LED with a 499 ohm current limiting resistor and a button. To size the resistor, I took the specs found on the product page and used the following equation: Resistance = (Supply Voltage - Forward Voltage) / Current. The
resistor is sized for a supply voltage roughly twice the size of the actual supply voltage, which is reccommended here.
In addition to the board described above, I also made Neil's SAMD11C programmer design. Once Free-DAP is flashed to the chip you can use it to program other boards. For now I can just use the Atmel ICE in the lab but it would be convenient to be able to program boards at home. I was
able to flash
Free-DAP to the board and have my computer recognize the device but then encountered the following error below when trying to use it as a programmer: "incorrect DAP_INFO_CAPABILITIES size". I will try to resolve this in the coming weeks.
Programming
To get programming, I had to first install edbg and its dependencies. From there I could execute edbg in terminal to flash binary files to the boards. First, I used the Atmel ICE to flash the bootloader to the board. The
bootloader is a small program that enables it to read new programs you upload. It's possible to program the board without flashing a bootloader but it means that a programmer will always have to be attached to the board.
With the bootloader on the chip it was time to set up the Arduino IDE to work with the SAMD11C. This just involved going into the board manager and installing the MattairTech SAMD core for Arduino. Then it was time to program! I started by
running Neil's echo program just to make sure the board was actually working.