A convenient UPDI programmer with automatic UART / UPDI selectionDesigned by MCUdude in Norway
What is it? The MCUdude SerialUPDI programmer is a tiny programmer for use with any AVR that has a UPDI programming interface. It can also be used as a standard USB to serial adapter for easy serial …Read More…
The MCUdude SerialUPDI programmer is a tiny programmer for use with any AVR that has a UPDI programming interface. It can also be used as a standard USB to serial adapter for easy serial debugging.
I made this board because there doesn't exist a SerialUPDI-based programmer that can automatically switch between UART and UPDI mode. It's also very convenient that the board can supply either 3.3V or 5V to the target. Unlike the microUPDI programmer, this programmer supports the AVR-DA, AVR-DB, and AVR-DD series as well. It's also significantly faster than the microUPDI.
When the programmer is set to AUTO, it is the RTS handshake line that determines the mode. This means that the upload tool has to set this to active (low level) in order for the programmer to switch over to UPDI mode. On the other side, the serial monitor program has to set the RTS line to inactive (high level) in order for the programmer to switch over to UART mode. Avrdude and Pymcuprog set the RTS line active when programming, but serial monitors aren't that consistent. If the upload tool or serial monitor doesn't do anything with the RTS line, the RTS line would do whatever the default behavior is, depending on the OS driver.
|SerialUPDI AUTO mode||Windows||MacOS||Linux|
|Arduino serial monitor||Works||Works some times||Not yet tested|
|Platformio serial monitor||Works||Works||Works|
When using the SerialUPDI programmer with the PlatformIO serial monitor, please add the following snippet to your platformio.ini file. (I have no idea why their serial monitor, Miniterm, believes the RTS pin actually is DTR, but it works!)
monitor_dtr = 0
|Supported targets||All AVRs with UPDI||ATtiny and ATmega's with UPDI|
|Fully assembled||Yes *||No (Pro Micro not included)|
|Microchip Studio / MPLAB X support||No||Yes|
|USB to serial/UART||Yes (native)||Yes (emulated, limited baud rate)|
|Target power||5V / 3.3V / none||5V / 3.3V / none|
* 6-pin programming connector not soldered
The SerialUPDI programmer is designed to be used with Avrdude 7 or newer, but can also be used with Pymcuprog.
A compatible version of Avrdude is automatically installed when you install MegaCoreX, but you can also compile your own. Pre-built, static binaries for your favorite system can be downloaded from the Arduino Avrdude-packaging repo. For more information om how to use Avrdude, see the official documentation.
In order for the programmer to behave consistently in AUTO mode, the
-x rtsdtr=high flag needs to be present.
Write to flash and EEPROM:
avrdude.exe -C /path/to/avrdude.conf -c serialUPDI -P COMx -x rtsdtr=high -U flash:w:my_program.hex:i -U eeprom:w:my_program.eep:i
Read flash and EEPROM, and write the content to flash_content.hex and eeprom.hex:
avrdude.exe -C /path/to/avrdude.conf -c serialUPDI -P COMx -x rtsdtr=high -U flash:r:flash_content.hex:i -U eeprom:r:ee_content.hex:i
Write SYSCFG0 fuse:
avrdude.exe -C /path/to/avrdude.conf -c serialUPDI -P COMx -x rtsdtr=high -U syscfg0:w:0xC9:m
Note that there are a few optional flags you can add:
-C path/to/avrdude.confflag is not needed if the avrdude.conf and avrdude executable are located in the same folder
-b [baudrate]sets the upload speed. Defaults to 115200 if not specified
-vvvvsets the verbosity level to 1, 2, 3 or 4
-tenters terminal mode, where all memories can be read and written to at a byte level
1x SerialUPDI board, assembled 1x 6-pin female header 1x 6-pin male header
No country selected, please select your country to see shipping options.
No rates are available for shipping to .
Enter your email address if you'd like to be notified when SerialUPDI programmer can be shipped to you:
Thanks! We'll let you know when the seller adds shipping rates for your country.
|Shipping Rate||Tracked||Ships From||First Item||Additional Items|
Honver | May 10, 2023
Chris | March 23, 2023
We recognize our top users by making them a Tindarian. Tindarians have access to secret & unreleased features.
We look for the most active & best members of the Tindie community, and invite them to join. There isn't a selection process or form to fill out. The only way to become a Tindarian is by being a nice & active member of the Tindie community!