Pokud potřebujeme naplnit procesor od výrobce Atmel, máme k dispozici různé možnosti jak to udělat: vytvořit si programátor například z Arduina (Arduino jako ISP), nebo si koupit nějaký hotový programátor. Tento článek pojednává o "levném" programátoru AVRProg pro procesory AVR z rodiny Atmel...
Programátor jsem zakoupil v prodejně gme.cz https://www.gme.cz/programator-avrprog-usb-v3 za 549,- Programátor vyrábí firma http://and-tech.pl/, kde je možné získat další informace a například i nový firmware pro programátor.
AVR PROG USB v3 je určen k programování mikroprocesorů z rodiny AVR. Spolupracuje například s prostředím Bascom, AVRStudiem a dalšími programy. Kompatibilní i s OS Linux s programem AVRDUDE.
K dispozici má dva pracovní režimy: COM nebo HID, díky kterému programátor pracuje s libovolným operačním systémem, včetně Windows 10. Programátor obsahuje 50 cm dlouhý kabel zakončený 2x5 pinovým ISP konektorem.
Zařízení mám otestované ve Windows 10 (32/64 bit edici) a funguje spolehlivě (test 20. 2. 2017). Pomocí tohoto programátoru lze nastavovat - načítat pojistky, nahrávat - načítat EEPROM paměť, nahrávat - načítat flash paměť.
Programátor AVRProg
Pohled na DIP přepínače
- 1 spínač VCC -> Když je v poloze ON, tak VCC pin na konektoru ICSP se propojí s USB +5V na USB portu. Když je náš procesor napájen 3.3V namísto 5V, tak musíme spínač 1 dát do pozice OFF a naše zařízení napájet ze svého zdroje 3.3V. Při větším odběru zařízení je lepší vždy napájet ze svého zdroje zařízení, než používat USB port jako napájení.
- 2 spínač DU/ST -> Když je ON, tak programátor pracuje s AVR Studiem, jinak pracuje s BASCOM a AVR Dude (tento režim je použit viz obrázky níže).
- 3 spínač NONE -> Nemá žádnou funkci.
- 4 spínač BOOT -> Spínač se používá pro vstup do módu načtení firmwaru (změna programu programátoru AVR Prog). Přepněte na ON a po jedné vteřině změňte zpět na OFF. V normálním módu musí být spínač 4 BOOT v pozici OFF.
Zapojení programovacího 10-pinového ISP konektoru (standard KANDA)
Rudá strana kabelu ISP (proužek na šedivém kabelu) značí konec + VCC na konektoru...
Instalace do počítače
- Nainstalujeme z přílohy pod článkem program "AVR Jungo USB.exe".
- Připojíme programátor k USB počítače (měla by se rozsvítit zelená LED na desce, pokud se tak nestane je nutné aktualizovat "automaticky on-line" ovladač ve správci zařízení Windows).
- Nainstalujeme z přílohy pod článkem program "Lib Usb Dot Net Setup.exe" a dle postupu v manuálu (pdf v příloze) přiřadíme pomocí filtru k USB.
Jak dostat program z Arduina do procesoru?
Arduino ve výchozím stavu (bez různých zásahů do samotného Arduina) neumí používat tento programátor! Nevadí, použijeme avrdude :-)
Z přílohy pod článkem stáhneme, rozbalíme a spustíme program "AVR dude" -> tedy grafické rozhraní "avrdude-GUI"
V programu AVR dude nastavíme
- Programmer - Atmel AVR ISP mkII (avrispmkII).
- Port - usb (pozor ne USB!).
- Device - požadovaný procesor, který chceme programovat.
V Arduino IDE nastavíme vývojovou desku (procesor bod 1) a parametry desky. Provedeme kontrolu našeho programu (kompilace bod 2). Následně klikneme na "Vypálit zavaděč" v záložce "Nástroje" bod 3. Díky operaci "Vypálit zavaděč" se dozvíme jak následně nastavit pojistky (L,H,E FUSE) do programu AVR dude (i bez počítání a dalších nástrojů například zde http://www.engbedded.com/fusecalc/) viz obrázek níže. Pojistky se samozřejmě v tuto chvíli nikam nezapisují (Arduino nezná tento programátor AVRProg a nikam nic nezapíše), ale nastavení pojistek potřebujeme znát pro program AVR dude.
Co jsou to pojistky?
Pojistky FUSEs u mikroprocesorů nastavují parametry procesoru jako například jaký používáme oscilátor (interní, nebo externí oscilátor, detekce podpětí atd...)
Poznámka: Pokud máme nový prázdný procesor (nebo chceme upravit stávající na jiné nastavení), musíme nejprve nastavit pojistky (FUSE) a následně nahrát program (FLASH). Například TINY85 má z výroby nastaven interní oscilátor 1MHz, pokud pojistky nezměníme na interní oscilátor 8MHz, tak v programu funkce delay(1000) - tedy jedna vteřina nebude trvat jednu vteřinu, ale 8 vteřin. Nebo musíme do delay dávat číslo 8x menší než při oscilátoru 8MHz. Tedy 1000/8 = 125 potom bude delay(125) a výsledkem bude také čekání 1 vteřinu.
Dalším krokem po pojistkách je naplnění paměti FLASH (programu do procesoru našeho zařízení). Pokud máme program v Arduino IDE hotový provedeme "kompilaci" tedy překlad programu (tlačítko "nike"). Ve stavovém řádku uvidíme název a cestu ke kompilovanému souboru. Výchozí cesta býva v %appdata% v tempu Windows - viz obrázek níže. Důležitým souborem ve složce build je pro nás soubor, který se jmenuje *.hex
Tento soubor budeme nahrávat pomocí programátoru AVRProg a nástroje dude do procesoru.
Soubor hex, který je v tempu (po překopírování například na plochu) přiložíme a stikneme tlačítko "Erase-Write-Verify" a je to :-)
Poznámka
Pokud ve stavovém oknu v Arduino IDE nevidíme stav kompilace, nebo nastavení pojistek je nutné si v nastavení Arduino IDE toto zobrazení nejprve aktivovat!
Pokud máme na plošném spoji dostatek místa pro osazení ISP konektoru a víme předem, že budeme často program v procesoru měnit (například při ladění zařízení), tak je výhodné tento konektor osadit a ušetřit si práci s vyndáním procesoru - naprogramováním někde v patici - vložením procesoru - a opět vyndáním - atd... Konektor ISP (2x5 pinů) stojí pár korun a pokud nevyžadujeme přímo USB port na zařízení, ušetříme slušnou částku za FTDI převodník + USB převodník...
Jak dostat do Arduina IDE podporu pro ATTINYxx procesory?
Zde je postup, jak podporu do Arduina přidáme...