Vienam projektuke nutariau pabandyti panaudoti ATTINY1614-SSNR, o jis programuojamas per UPDI (Unified Program and Debug Interface). Man labiausiai patiko, kad komunikacija daroma vienu laidu/kontaktu. O kadangi UPDI palaikymas yra standartiškai įdiegtas moderniuose Microchip AVR mikrokontroleriuose, ypač naujausiose tinyAVR ir megaAVR šeimose – manyčiau visuose ateities projektuose pradėsiu naudoti valdiklius tik su UPDI. Iš Wikipedijos nukarosinau gabaliuką lentelės su UPDI palaikančiais valdikliais:
| Device (family) | Max clock (MHz) | Flash (KiB) | SRAM (bytes) | EEPROM (bytes) | USART (UART) | I²C (TWI) | SPI | Timers 16/12/8/R (bits) | ADC pins | GPIO pins | IC Packages | GCC arch ID | Pgm / Dbg |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ATtiny202, ATtiny402 (0-series) | 20 | 2, 4 | 128, 256 | 64, 128 | USART* | master, slave | master, slave | 2 / 0 / 0 / RTT | 6 | 6 | SO150-8 | avrxmega3 | UPDI |
| ATtiny204, ATtiny404, ATtiny804, ATtiny1604 (0-series) | 20 | 2, 4, 8, 16 | 128, 256, 512, 1024 | 64, 128, 256 | USART* | master, slave | master, slave | 2 / 0 / 0 / RTT | 10 | 12 | SO150-14 | avrxmega3 | UPDI |
| ATtiny406, ATtiny806, ATtiny1606 (0-series) | 20 | 4, 8, 16 | 256, 512, 1024 | 128, 256 | USART* | master, slave | master, slave | 2 / 0 / 0 / RTT | 12 | 18 | SO300-20, VQFN-20 | avrxmega3 | UPDI |
| ATtiny807, ATtiny1607 (0-series) | 20 | 8, 16 | 512, 1024 | 128, 256 | USART* | master, slave | master, slave | 2 / 0 / 0 / RTT | 12 | 22 | VQFN-24 | avrxmega3 | UPDI |
| ATtiny212, ATtiny412 (1-series) | 20 | 2, 4 | 128, 256 | 64, 128 | USART* | master, slave | master, slave | 2 / 1 / 0 / RTT | 6 | 6 | SO150-8 | avrxmega3 | UPDI |
| ATtiny214, ATtiny414, ATtiny814, ATtiny1614 (1-series) | 20 | 2, 4, 8, 16 | 128, 256, 512, 2048 | 64, 128, 256 | USART* | master, slave | master, slave | 2 / 1 / 0 / RTT | 10 | 12 | SO150-14 | avrxmega3 | UPDI |
| ATtiny416, ATtiny816, ATtiny1616, ATtiny3216 (1-series) | 20 | 4, 8, 16, 32 | 256, 512, 2048 | 128, 256 | USART* | master, slave | master, slave | 2 or 3 / 1 / 0 / RTT | 12 | 18 | SO300-20, QFN-20, VQFN-20 | avrxmega3 | UPDI |
| ATtiny417, ATtiny817, ATtiny1617, ATtiny3217 (1-series) | 20 | 4, 8, 16, 32 | 256, 512, 2048 | 128, 256 | USART* | master, slave | master, slave | 2 / 1 / 0 / RTT | 12 | 22 | VQFN-24, QFN-24 | avrxmega3 | UPDI |
| ATtiny424, ATtiny824, ATtiny1624, ATtiny3224 (2-series) | 20 | 4, 8, 16, 32 | 512, 1024, 2048, 3072 | 128, 128, 256, 256 | 2 USART* | yes | yes | 3 / 0 / 0 / RTT | 9 | 12 | SO-14, TSSOP-14 | avrxmega3 | UPDI |
| ATtiny426, ATtiny826, ATtiny1626, ATtiny3226 (2-series) | 20 | 4, 8, 16, 32 | 512, 1024, 2048, 3072 | 128, 128, 256, 256 | 2 USART* | yes | yes | 3 / 0 / 0 / RTT | 15 | 18 | SO-20, SSOP-20, VQFN-20 | avrxmega3 | UPDI |
| ATtiny427, ATtiny827, ATtiny1627, ATtiny3227 (2-series) | 20 | 4, 8, 16, 32 | 512, 1024, 2048, 3072 | 128, 128, 256, 256 | 2 USART* | yes | yes | 3 / 0 / 0 / RTT | 15 | 22 | VQFN-24 | avrxmega3 | UPDI |
Hardwaras – dviračio neišradinėjau, nusipirkau UPDI Friend iš Adafruit.
Viskas su juo gerai, mažiukas, turi galimybę maitinti valdikliuką 3V arba 5V, USB-C jungtis kompiuteriui. Šito žaisliuko pagrindas – CH340E mikroschema. Aš tik pasirinkau kitokią programavimo jungtį. Originaliai pridėti „spygliai” prototipų plokštei, bet aš prilitavau 4 laidukų plokščią kabelį (panaudoti 3 laidukai) o kitame gale uždėjau specialią 4 kontaktų programavimo jungtį WURTH 490107670412. Ta jungtelė man patiko, nes ant PCB nereikia lituoti papildomos jungties, užtenka metalizuotų kiaurymių.
Šitą jungimo būdą programavimui naudoju jau seniai ir man patinka, tai dėl to išlaikau tą pačią jungtelę ir čia.




Ar UDPI draugelis palaiko ir debuginimą?
PS. aliexprese yra UDPI draugo klonų, kurie turi ir HV (high voltage) versiją, kuri teoriškai leidžia panaudoti RESET/UDPI piną kaip GPIO. Pats nebandžiau. negaliu garantuoti, kad veikia.
Aš naudoju pigų USB į TTL konverterį su varža, kaip aprašyta megaTinyCore dokumentacijoje, bet be debuginimo.
Manyčiau ta tikrąja debuginimo prasme (su breakpoint’ais ir [an.) – nepalaiko. Čia labiau programatorius, negu debugeris.