Programowanie ATmega4808 w środowisku Arduino IDE

Programowanie ATmega4808 w środowisku Arduino IDE

Mikrokontrolery ATmega4808 oraz ATmega4809 wydają się godnymi następcami sławnej 328-ki. Większy rozmiar pamięci Flash i SRAM (odpowiednio 48 kB i 6 kB), akceptacja zarówno 3,3 V jak i 5 V, wbudowany generator taktujący umożliwiający pracę z pełną prędkością czyli 16...20 MHz, brak potrzeby instalacji bootloadera a także atrakcyjna cena, czynią te mikrokontrolery idealnymi dla różnorodnych zastosowań.

Problem pojawia się wtedy, gdy chcemy te układy zaprogramować w środowisku Arduino IDE. Jak to zrobić? W internecie znajdują się propozycje użycia płytki Arduino UNO lub NANO w roli wymaganego programatora UPDI. Wiąże się to z koniecznością uprzedniego zaprogramowania wybranej płytki oraz instalacją zewnętrznych bibliotek, a także wykonaniu kilku połączeń. Sądząc po komentarzach umieszczonych na listach dyskusyjnych, skuteczność powyższego rozwiązania jest wątpliwa – mi ani razu nie udało się w ten sposób zaprogramować żadnego mikrokontrolera.

Rozwiązanie problemu

Pomysłem na rozwiązanie problemu jest zakup płytki zgodnej z Arduino Every lub Arduino UNO Wi-Fi Rev2 koniecznie wyposażonej w jeden z tytułowych mikrokontrolerów, następnie wylutowanie tego mikrokontrolera i podłączenie własnego, który chcemy zaprogramować. Do połączenia wystarczą tylko trzy przewody – GND, VDD oraz UPDI. Pierwszą płytką, którą poddałem modyfikacji była płytka Seeeduino Crypto bazująca na układzie ATmega4809 i zgodna z Arduino UNO Wi-Fi Rev2. W celu ułatwienia wykonywania połączeń między płytką a programowanym układem, dostępny pad połączony z nóżką UPDI wylutowanego układu poprowadziłem do nieużywanego wolnego złącza Gold Pin (rysunek 1).

Rysunek 1. Schemat połączenia nowego programatora i umieszczonego na przejściówce SMD-DIP mikrokontrolera ATmega4808

Kolejnym krokiem jest wybranie w menu Narzędzia → Płytka: Arduino UNO Wi-Fi Rev2. W menu Narzędzia → Register emulation wybrałem ATMEGA328. Tak, to nie pomyłka. Po wybraniu ATMEGA328 zamiast ATMEGA4809 uzyskujemy bezpośredni dostęp do portów, dzięki czemu możemy wyeliminować potrzebę korzystania z instrukcji digitalWrite a tym samym znacząco zwiększyć prędkość operacji na rejestrach. Wadą wyboru trybu emulacji ATMEGA328 jest całkowita zmiana numeracji pinów i konieczność odszukania tych których potrzebujemy.

Czy za pomocą płytki Seeeduino Crypto, która była wyposażona w ATmega4809 można programować również układy ATmega4808? Jest to możliwe. W tym celu należy dokonać drobnych zmian w pliku konfiguracyjnym avrdude.conf znajdującym się w katalogu podobnym do:

C:\Users\nazwa_uzytkownika\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf

Należy odszukać w sekcjach ATmega4808 oraz ATmega4809 linie zawierające sygnatury mikrokonrolerów odpowiednio:

Podsumowanie

Nagrodą za udaną przeróbkę jest kosztujący kilkadziesiąt złotych programator oraz wylutowany mikrokontroler do ponownego wykorzystania. Wymaga to jednak zachowania szczególnej ostrożności i oczyszczenia padów po wylutowanym układzie, tak aby nie pozostawić żadnych zwarć. Jednak zaznaczam, że modyfikacje z pewnością spowodują utratę gwarancji i są dokonywane na własne ryzyko.

Piotr Chodnicki
piotr@akademia.warszawa.pl

Artykuł ukazał się w
Elektronika Praktyczna
lipiec 2021

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik maj 2022

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio maj - czerwiec 2022

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka Podzespoły Aplikacje kwiecień 2022

Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna maj 2022

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich maj 2022

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów