ATtiny1616 Development Board is a small and handy development board built around new generation of ATiny series. It is pin and size compatible with Arduino Nano board and can be used as it's direct replacement (with certain limitations). It can be programmed using both Arduino IDE and Platformio IDE, as well as vanilla console tools.
I'm a big fan of early ATtiny series chips, I even made my own ATtiny Flasher tool for productive development and few educational kits based on ubiquitous ATtiny85. Time has come to extend my horizons and look into the modern line of ATtiny chips, specifically so called 1-series and 2-series line of MCUs.
No need to mention that they went far ahead old series, and having resources comparable with old ATmega series. This gave me an idea to make Arduino Nano pin compatible development board, so I can start using it the projects, where I'd normally pick Arduino Nano. In my practice the best way to get familiar with new hardware is to start using it in the actual projects.
ATiny1616 is a mid-range chip in new ATtiny 1-Series line. Generally they offer considerably more than older Tiny-series chip, and comparable with classic ATmega AVRs, offering at the same time new MCU features, not available in older series.
ATTINY88 | ATTINY1616 | ATmega168P | ATmega328P | |
---|---|---|---|---|
Max Frequency | 20 Mhz | 16Mhz | 16Mhz | |
Flash | 8KB | 16KB | 16KB | 32KB |
SRAM | 512B | 2KB | 1KB | 2KB |
EEPROM | 64B | 128B | 512B | 1024B |
GPIO count | 28 | 18 | 23 | 23 |
UART | No | Yes | Yes | Yes |
I2C | Yes | Yes | Yes | Yes |
SPI | Yes | Yes | Yes | Yes |
Timers | 2 | 4 | 3 | 3 |
PWM channels | 2 | 4 | 6 | 6 |
ADC pins | 8 | 12 | 8 | 8 |
Spence Konde created and maintains Arduino Core. This is a great place to start to get to know new chips better, and understand what is supported and what isn't.
Another great writeup by the same author on the flashing routines for the new chips. Short summary below
Method (c) is disqualified on 1-Series chip because of RESET/UPDI pin collision, and both (a) and (b) work equally well. Difference being what is easier for you: (a) dedicate Arduino Nano board for programming or (b) do solder job on your USB-serial adapter (upd: no longer required).
Method | Connection |
---|---|
jtag2updi | |
SerialUPDI(recommended) |
Starting from revision B diode between TX and RX pins are included on the board, so you can use unmodified USB-Serial adapter.
Method | Connection |
---|---|
jtag2updi | |
SerialUPDI(recommended) |
Working on one of the projects, it came to me, hey, there is already USB-Serial adapter on the board, serving Serial communication. Why not to use it for flashing. So revision C came, no programmer needed, plug-n-play. Drawback is that you lose Serial communication via built-in USB.
As explained in many details by Spence, 1-Series chips cannot provide Arduino-like one-click-upload with Optiboot behavior without some sacrifice. Reason for that is pin collision: UPDI and RESET are the same pin, so you need to decide which you'd prefer. If you use auto-reset, you lose UPDI, specifically possibility to change fuses easily (this is important in my opinion). If you use UPDI you need 2 connections to your MCU - one via programming interface, another one for Serial communication.
Personally I prefer to keep UPDI and use direct programming without custom bootloader, having extra wire is minor inconvenience for me, but losing fuses permanently is not an option.