ISP programátor (USBasp)
Desky Arduino a jejich klony je (většinou) možné snadno programovat pomocí USB. Předpokládá to ale, že v MCU je zaveden bootloader, tj. programový blok, který zavedení pomocí USB (popř. UART) umožní. Pokud se ale rozhodneme pracovat s "holými" nenaprogramovanými MCU, např. ATmega328 nebo Attiny85, narazíme na potřebu zavést do nich kód (což může být třeba právě bootloader) jinak. Narozdíl od STM32 totiž AVR procesory nemají bootloader pro UART obsažený přímo v čipu. A k tomuto nám právě poslouží popisovaný ISP programátor. Další možností, kdy se hodí zavedení programu pomocí ISP, je situace, kdy se nedostává paměti pro program. Absence bootloaderu pak nějaký prostor ušetří.
Na Aliexpressu jsem si pořídil tuto variantu programátoru:
Hlavním záměrem pro nákup programátoru bylo to, že jsem pořídil také několik MCU ATmega328P. Přestože pro jejich "inicializaci" se dá využít např. i Arduino naprogramované jako ISP programátor, je to celkem otravné, především kvůli zdlouhavému propojování kabeláže a celkem velkému prostoru k omylu při jejím zapojování. No a nekup to, když USBasp se dá pořídit za cca $2.
Pro programování holých MCU je taky šikovné mít k ruce něco takového:
(pozn: na obrázku je ZIF patice do DPS vložena opačně)
Tato vývojová deska umožňoje práci s 28pin AVR čipy (ATmega8/48/88/168/328...). Výhodou je, že na DPS je osazen konektor pro připojení IPS - ten je možné 1:1 propojit (plochým kabelem) přímo s USBaps či jiným ISP programátorem. Při zkoumání zapojení desky jsem zjistil, že vývod AREF je propojen s VCC, což pro samotné programování není na závadu, ale znemožňuje to alternativní řešení referenčního napětí pro analogové vstupy.
Upgrade firmware
Při práci s USBasp v ArduinoIDE jsem narazil na výpis chybových hlášení v průběhu programování. Eliminace těchto hlášení je možná zavedením nového firmwaru podle TOHOTO NÁVODU, nicméně programování funguje bez ohledu na tato chybová hlášení.
Další využití programátoru
Kromě zavádění bootloaderu lze ISP programátor využít i k přímému zavádění programu do Arduina či AVR čipů. Z ArduinoIDE to lze provést klávesovou zkratkou Ctrl+Shift+U, popř z menu "Projekt\Nahrát pomocí programátoru".
Je samozřejmě třeba mít správně zvolený typ programátoru "USBasp" v menu "Nástroje\Programátor:". Předpokládám, že v případě tohoto programování je přepsán bootloader, takže pokud takto programujeme Arduino, které budeme později chtít využívat standardně, budeme pak do něj muset bootloader zavést znovu.
ATmega 328 BB
Zajímavou alternativou k Arduinu je pro malé jednoduché projekty využití samostatného čipu ATmega 328 na vývojové desce (BB = BreadBoard). Jak nastavit Arduino IDE pro práci s tímto MCU lze najít na internetu na různých místech, v češtině je to napříklat na https://www.itnetwork.cz/hardware-pc/arduino/hardware/arduino-samostatny-cip-atmega328p.
Pro snazší práci s čipem je dobré na něj nalepit štítek s popisem pinů, jeden takový je zmiňován na výše uvedeném idkazu z ITnetwork, ale mě se podařilo najít a zvětšit praktičtější:
Na štítku jsou jen základní rozlišovací popisky, vzhledem k omezenému prostoru si ale asi víc nelze rozumě přát. Zeleně jsou označeny analogové piny, modře digitální (Arduino PIN), vlnovkou jsou označeny piny využitelné pro časovač či PWM. AR je vstup pro analogovou externí referenci. Pro více informací je pak třeba nahlédnout do dokumentace MCU, či na jeho PINOUT.