Embedded Programming¶
Group Assignment¶
- Compare the performance and development workflows for other architectures
- Document your work to the group work page and reflect on your individual page what you learned
Group FAQ¶
-
Is it enough for the group assignment if we compare different microcontrollers in theory?
- Answer: No, You need to program at least two different family MCU’s.
-
Do I have to design and make a new board for this week
- Answer: No, You can use the board you made in electronics design
LEARNING OUTCOMES¶
Task: Embedded Programming
Identify relevant information in a microcontroller datasheet.
Implement programming protocols.
Alan¶
See Alan’s full documenattion here: Alan - Embedded Programming
Alan explored:
microcontrollers and datasheets:
- ESP32-PICO-D4
- samd11c
- 1515 RGB LED 4-Pin with Integrated IC for connor cosplay
development workflows:
- Microchip Studio
- edbg
- Arduino core
- Atmel Studio 7
Programmers:
- Atmel-ICE
Dan¶
See Dan’s full documenattion here: Dan - Embedded Programming
Dan explored:
Microcontrollers datasheets:
- ATtiny 3226 Data Sheet by Microchip Technology Inc
- ESP32-WROOM-32x Data Sheet by Espressif
Development workflows:
- Microcontrollers
- ATTiny 3226
- ESP-32
- EDA: KiCad
- CAM: Carbide Create
- Arduino Programmming Language (variant of c/c++) using the Arduino IDE (AVR Dude)
- Programming with trouble shooting
- UPDI programming with a USB to TTL Serial adapter by FTDI
- MicroPython
- Thony IDE
- Serial port programming using a USB to TTL Serial adapter by FTDI
- uPyCraft (failed, difficult to install)
Programmers Tried:
- FABTinyISP
- Atmel ICE
- USB to TTL Serial adapter by FTDI
Using the Development workflows above Dan felt that:
Compare the performance and development workflows¶
Development workflows¶
Using the Development workflows above I felt that:
The ESP-32 was ok to program with a simple USB to TTL Serial adapter cable. However designing a board for an ESP-32 is quite a bit more difficult due to the number of pads on the ESP-32 MCU. The Thony IDE was easy to install in Linux Mint (Debian) with the bash install script suggested at Thonny Wiki, Linux, Installing. However the MicroPython firmware install process was a somewhat complex extra step that was not required with The ATtiny 3226 and Arduino.
The ATtiny 3226 was easy to design a board for in KiCad. However, since I mistakenly put an Resistor Capacitor circuit on the RESET pin, that was also the UPDI programming port, a lot of trouble shooting was done before he realized the problem. Once the Resistor Capacitor circuit was removed, and the required resistor was in place per the programming with the Arduino IDE was quite easy.
There was a bit of one time command line setup using SerialUPDI software to get the USB to TTL Serial adapter by FTDI to speak the UPDI protocol to program the ATtiny 3226 via the Arduino IDE. But this process was easy.
The ATtiny 3226 was also easy to use without having to learn how to set fuses, which I needs more time to fully understand.
Personally I like the ESP-32 MCU design and programming workflows better, but that may because I have spent more time reading ESP-32 data sheets, and have used the ESP-32 in more projects. I think for most people it would be much easier to start with the ATtiny 3226 and Arduino IDE.
Performance¶
Both the ESP-32 and ATtiny 3226 were more than fast enough for this assignment. However the ESP-32 was surprisingly easy to program. The fact that the ESP-32 can be programmed initially with a simple low cost USB to Serial converter cable is great. Also once the ESP-32 is programmed to connect to WiFi it can be programmed that way with no physical cables needed going forward. However ESP-32 MCU’s are quite a bit more expensive than ATtiny MCU’s
The ATtiny 3226 is a great low cost MCU and it is easy to program if no circuits are placed on the RESET/UPDI pin, except the resistor, or better yet a diode, that is required per the megaTinyCore and SerialUPDI documentation.
Kyle-Pierre¶
See Kyle-Pierre’s full documenattion here: Kyle-Pierre - Embedded Programming