The new cheap and powerful Arduino compatible ATtiny AVR XMEGA microcontroller series from 2018 (such as the ATtiny3217) has small packages. But the two required programming connectors FTDI / UPDI in the standard housings are too large in relation to the chip. That's why I came up with a smaller combined FTDI / UPDI connector.
I only use the ATtiny3217 from the ATtiny AVR XMEGA series, because it has the largest memory and is hardly more expensive (less than $1) than the others. In this article I am therefore only talking about the ATtiny3217.
ATtiny3217 advantages
Before 2018, the small Arduino compatible ATtiny microcontroller series (such as the ATtiny85) has disadvantages, for instance a small memory. With the ATtiny XMEGA microcontroller series, such as the ATtiny3217, this has been improved strongly. For new designs it is best to choose the ATtiny3217, if you do not mind the QFN-24 SMD package.
The biggest advantages are:
- 32 KB Flash, 2 KB SRAM
- UART interface for debugging via the serial USB interface
- No crystal needed
- Cheap, less than $1
See more on the Microchip website.
Changed auto reset R/C values for the USB serial interface together with UPDI for the ATtiny3217
If an Arduino ATtiny3217 requires an USB serial interface for programming and debugging and also an UPDI connector for burning the bootloader, this has consequences for the auto reset circuit. The auto reset R/C circuit is required for the serial USB interface. The used R/C values are normally 10k / 100nF, but these values are no longer usable in combination with a UPDI connector. I have figured out that 100k / 10nF works well and does not disturb the UPDI operation.
Programming by the FTDI / UPDI connector
Typically, debugging via the serial monitor and burning the bootloader requires 2 connectors:
- FTDI
For debugging and uploading the sketch, when there is no TTL / USB serial port adapter on the PCB.
- UPDI
For burning the boot loader (like the ICSP connector for the ATmega328)
I have combined the 2 connectors into one connector.
One solution is a modified 0.1” 6 pole FTDI connector. I also have a solution with smaller 0.05" connectors.
Combined 0.1" 6p FTDI / UPDI connector
The advantage of this solution is that you can use a standard FTDI board.
Since the CTS pin (5) is not used, this pin is used now for the RES signal for programming via UPDI. For programming via USB with an FTDI board, you have to disconnect the CTS signal from the FTDI board.
Combined miniature 0.05" FTDI / UPDI connector
- Due to the pin spacing of 1.27 mm, the connector is smaller
- Only 2 to 5 pins are required depending on the configuration.
- The 10nF capacitor is located on the adapter board en is not needed anymore on every target board.
- Due to the zig-zag configuration, a pin header is not needed, see this article.
Combined FTDI / UPDI connector
Only 2 to 5 pins are required depending on the configuration:
- 2-pins UPDI
- 3-pins UPDI + VCC
- 4-pins UPDI of FTDI
- 5-pins UPDI of FTDI + VCC
FTDI / UPDI connector circuit example
You can see that the new combined FTDI / UPDI connector is much smaller than 2 separate connectors:
Auto-reset capacitor
Previously, a 10nF capacitor was needed for the auto-reset with a bare Arduino microcontroller. But this capacitor belongs, just like the UART IC, to the FTDI adapter side.
FTDI / UPDI adapter board
R10 is optional.
The 10nF capacitor C1 is now required just once at the adapter board instead of at many target boards.
GitHub
Perhaps this connector can be raised to a standard?
Please contribute on GitHub: https://github.com/avandalen/FDTI-UPDI-connector