Domov / Avatar / Firmvér mk. Proces flashovania mini PC. Vybavenie pre firmware MK

Firmvér mk. Proces flashovania mini PC. Vybavenie pre firmware MK

decembra 2015

1. Výhody navrhovanej metódy

Obvody zariadení na báze mikrokontrolérov (MC) sa zvyčajne vyznačujú kombináciou dvoch ťažko kombinovateľných vlastností: maximálnou jednoduchosťou a vysokou funkčnosťou. Funkcionalitu je navyše možné v budúcnosti meniť a rozširovať bez akýchkoľvek zmien v obvode – jednoduchou výmenou programu (blikaním). Tieto vlastnosti sú vysvetlené skutočnosťou, že tvorcovia moderných mikrokontrolérov sa pokúsili umiestniť na jeden čip všetko, čo môže vývojár elektronických zariadení potrebovať - ​​aspoň čo najviac. V dôsledku toho došlo k presunu dôrazu od obvodov a montáže k softvéru. S použitím MK je teraz menej potrebné „zaťažovať“ obvod detailmi, medzi komponentmi je menej spojení. To samozrejme robí obvod atraktívnejším pre skúsených aj začínajúcich elektrotechnikov, aby si ho zopakovali. Ale ako to už býva, za všetko treba platiť. Ani tu sa to nezaobišlo bez ťažkostí. Ak si kúpite nový MK, nainštalujete ho do okruhu správne zostaveného z opraviteľných častí a použijete napájanie, potom nič nebude fungovať - ​​zariadenie nebude fungovať. Mikrokontrolér potrebuje program.

Zdá sa, že s tým je všetko jednoduché - na internete nájdete veľa schém s bezplatným firmvérom. Ale je tu jeden háčik: firmware musí byť nejakým spôsobom "naplnený" do mikrokontroléra. Pre niekoho, kto to nikdy predtým nerobil, sa takáto úloha často stáva problémom a hlavným odpudzujúcim faktorom, ktorý ho často núti opustiť čaro používania MK a hľadať schémy založené na „voľnej“ a rigidnej logike. Ale všetko nie je také ťažké, ako by sa mohlo zdať na prvý pohľad.

Po analýze publikácií na internete to možno vidieť tento problém najčastejšie sa to rieši jedným z dvoch spôsobov: kúpou hotového programátora alebo výrobou domáceho. Zverejnené schémy podomácky vyrobených programátorov sú zároveň veľmi často neprimerane zložité – oveľa komplikovanejšie, než je skutočne potrebné. Samozrejme, ak sa má flashovať MK každý deň, je lepšie mať "cool" programátora. Ak sa však potreba takéhoto postupu z času na čas vyskytne zriedka, potom sa vo všeobecnosti môžete zaobísť bez programátora. Samozrejme, že nie, rozprávame sa nejde o to naučiť sa to robiť silou svojej mysle. To znamená, že ak pochopíme, ako programátor interaguje s mikrokontrolérom pri písaní a čítaní informácií v jeho programovacom režime, môžeme si vystačiť s dostupnými nástrojmi na širší účel. Tieto nástroje budú musieť nahradiť softvér aj hardvér programátora. Hardvérová časť musí zabezpečovať fyzické prepojenie s MK čipom, schopnosť dodávať logické úrovne na jeho vstupy a čítať dáta z jeho výstupov. Softvérová časť musí zabezpečiť fungovanie algoritmu, ktorý riadi všetky potrebné procesy. Upozorňujeme tiež, že kvalita záznamu informácií v MK nezávisí od toho, aký je váš programátor „v pohode“. Nič také ako „lepšie“ alebo „horšie“ neexistuje. Sú len dve možnosti: „zapísaný“ a „nezapísaný“. Je to spôsobené tým, že samotný MC riadi proces nahrávania vo vnútri kryštálu. Je potrebné poskytnúť mu iba vysokokvalitné napájanie (žiadne rušenie a vlnenie) a správne usporiadať rozhranie. Ak sa podľa výsledkov kontrolného čítania nezistili žiadne chyby, potom je všetko v poriadku - ovládač môžete použiť na určený účel.

Aby sme mohli napísať program do MK bez programátora, potrebujeme prevodník portov USB-RS232TTL a tiež. Prevodník USB-RS232TTL umožňuje pomocou USB portu vytvoriť COM port, ktorý sa od „skutočného“ líši len tým, že na jeho vstupoch a výstupoch sú použité logické úrovne TTL, teda napätie v rozsahu od 0 do 5 voltov (ďalšie podrobnosti nájdete v článku " "). V každom prípade je užitočné mať takýto prevodník v „domácnosti“, takže ak ho ešte nemáte, určite by ste si ho mali kúpiť. Čo sa týka logických úrovní, v našom prípade je TTL dokonca výhodou oproti bežnému COM portu, pretože vstupy a výstupy takéhoto portu je možné priamo pripojiť k akémukoľvek mikrokontroléru napájanému 5 V vrátane ATtiny a ATmega. Ale nepokúšajte sa použiť bežný COM port - tam sa používajú napätia v rozsahu od -12 do +12 V (alebo -15 ... + 15V). Priame pripojenie k mikrokontroléru je v tomto prípade neprípustné!!!

Myšlienka vytvorenia skriptu pre program "Perpetuum M", ktorý implementuje funkcie programátora, vznikla po prečítaní množstva publikácií na internete ponúkajúcich určité riešenia pre firmvér MK. V každom prípade sa našli vážne nedostatky alebo prílišné zložitosti. Často sme sa stretávali s programátorskými obvodmi obsahujúcimi mikrokontrolér a pri tom sa celkom vážne dávali rady typu: "...a aby sme naprogramovali mikrokontrolér pre tento programátor, potrebujeme...je to tak - iného programátora!" . Potom bolo navrhnuté ísť za priateľom, hľadať platená služba a tak ďalej. Kvalita softvéru distribuovaného na sieti na tieto účely tiež nebola pôsobivá - bolo zaznamenaných veľa problémov s funkčnosťou aj so „zakalením“ používateľského rozhrania. Často trvá veľa času, kým pochopíte, ako program používať - ​​musíte sa ho naučiť aj kvôli vykonávaniu najjednoduchších akcií. Iný program dokáže niečo robiť dlho a usilovne, ale že sa do MK nič nezapisuje, používateľ spozná až po dokončení celého firmvéru a následnom kontrolnom čítaní. Existuje aj taký problém: používateľ sa pokúša vybrať svoj MK zo zoznamu podporovaných kryštálov, ale nie je v zozname. V tomto prípade nebude možné program využiť - spravidla sa neposkytuje zaradenie do zoznamu chýbajúcich MK. Ručný výber ovládača zo zoznamu navyše vyzerá zvláštne, vzhľadom na to, že programátor si v mnohých prípadoch dokáže určiť typ MK sám. Toto všetko nie je povedané preto, aby sme hádzali blato na existujúce produkty, ale aby sme vysvetlili dôvod vzniku skriptu pre program „Perpetuum M“ opísaný v tomto článku. Problém skutočne existuje a týka sa predovšetkým začiatočníkov, ktorým sa nie vždy podarí prekonať túto „stenu“, aby urobili prvý krok do sveta mikrokontrolérov. Navrhovaný skript zohľadňuje nedostatky zistené v iných programoch. Bola implementovaná maximálna "transparentnosť" algoritmu, extrémne jednoduché užívateľské rozhranie, ktoré nevyžaduje štúdium a nenecháva šancu zmiasť sa a "kliknúť na nesprávne miesto". V prípade absencie požadovaného MK medzi podporovanými je možné pridať jeho popis sami, pričom potrebné údaje prevezmete z dokumentácie stiahnutej z webovej stránky vývojára MK. A čo je najdôležitejšie, scenár je otvorený na štúdium a úpravu. Ktokoľvek ho môže po otvorení v textovom editore študovať a upravovať podľa vlastného uváženia a meniť ho podľa svojho vkusu existujúce funkcie a doplniť chýbajúce.

Prvá verzia scenára vznikla v júni 2015. Táto verzia podporuje iba MCU radu ATtiny a ATmega od spoločnosti Atmel s funkciami zápisu / čítania z pamäte flash, s nastavenými konfiguračnými bitmi, s automatická detekcia typ ovládača. Zápis a čítanie EEPROM nie sú implementované. Plánovalo sa doplniť funkčnosť skriptu: pridať zápis a čítanie EEPROM, implementovať podporu pre PIC radiče atď. Z tohto dôvodu scenár ešte nebol zverejnený. Ale kvôli nedostatku času sa realizácia plánu oneskorila, a aby sa najlepší nestal nepriateľom dobra, bolo rozhodnuté zverejniť existujúcu verziu. Ak už implementované funkcie nestačia, nebuďte naštvaní. V takom prípade sa môžete pokúsiť pridať požadovanú funkciu sami. Nebudem to skrývať: myšlienka vytvorenia tohto skriptu má spočiatku aj vzdelávací význam. Po pochopení algoritmu a pridaní niečoho vlastného k nemu budete môcť lepšie pochopiť fungovanie MK v programovacom režime, takže sa v budúcnosti neocitnete v pozícii dievčaťa pred zlomeným auto, zamyslene sa pozerá do jeho útrob a nechápe, prečo „nejde“.

2. Rozhranie MK v režime programovania

Je ich viacero rôznymi spôsobmi uveďte regulátor do programovacieho režimu a v tomto režime s ním pracujte. Najjednoduchšie implementovateľné pre radiče ATtiny a ATmega je pravdepodobne SPI. Budeme ich používať.

Predtým, ako pristúpime k zváženiu signálov potrebných na vytvorenie SPI, urobíme niekoľko výhrad. Mikrokontrolér má konfiguračné bity. Je to niečo ako prepínače, ktorých prepínanie vám umožňuje meniť niektoré vlastnosti mikroobvodu v súlade s potrebami projektu. Fyzicky sú to bunky energeticky nezávislej pamäte, ako sú tie, do ktorých je zapísaný program. Rozdiel je v tom, že ich je veľmi málo (do troch bajtov pre ATmega) a nie sú zahrnuté v adresnom priestore žiadnej pamäte. Zápis a čítanie konfiguračných údajov sa vykonáva samostatnými príkazmi programovacieho režimu MK. Teraz je dôležité poznamenať, že niektoré konfiguračné bity ovplyvňujú samotnú schopnosť používať SPI. Pri niektorých ich hodnotách sa môže ukázať, že SPI nemožno použiť. Ak narazíte na takýto mikrokontrolér, metóda navrhovaná v tomto článku vám nepomôže. V tomto prípade budete musieť buď zmeniť nastavenia konfiguračných bitov v programátore, ktorý podporuje iný programovací režim, alebo použiť iný mikrokontrolér. Tento problém sa ale týka len ojazdených MK, prípadne tých, s ktorými sa už niekto neúspešne "hral". Faktom je, že nové MK prichádzajú s nastaveniami konfiguračných bitov, ktoré nebránia použitiu SPI. Potvrdzujú to výsledky testovania skriptu programátora pre program „Perpetuum M“, počas ktorého boli úspešne flashované štyri rôzne MK (ATmega8, ATmega128, ATtiny13, ATtiny44). Všetky boli nové. Počiatočné nastavenie konfiguračných bitov bolo v súlade s dokumentáciou a nezasahovalo do používania SPI.

Vzhľadom na vyššie uvedené by ste mali venovať pozornosť nasledujúcim častiam. Bit SPIEN explicitne povoľuje alebo zakazuje použitie SPI, preto v našom prípade musí byť jeho hodnota povolená. Bit RSTDISBL dokáže jeden z mikroobvodových výstupov (vopred určený) prepnúť na signálový vstup "reset", alebo nezapnúť (v závislosti od hodnoty zapísanej do tohto bitu). V našom prípade je nutný vstup "reset" (ak chýba, nebude možné preniesť MK do programovacieho režimu cez SPI). Existujú aj bity skupiny CKSEL, ktoré špecifikujú zdroj hodinového signálu. Nebránia použitiu SPI, ale treba ich mať na zreteli, pretože ak neexistujú žiadne hodinové impulzy, alebo ak je ich frekvencia nižšia ako povolená pre danú rýchlosť SPI, tiež z toho nič dobré nebude. Zvyčajne majú nové MCU, ktoré majú interný RC oscilátor, nastavené bity skupiny CKSEL, aby ho používali. Sme s tým celkom spokojní - taktovanie je zabezpečené bez akéhokoľvek ďalšieho úsilia z našej strany. Nepotrebujete spájkovať kremenný rezonátor, ani nemusíte pripájať externý generátor. Ak uvedené bity obsahujú iné nastavenie, budete sa musieť postarať o taktovanie v súlade s nastavením. V tomto prípade môže byť potrebné pripojiť k MK kremenný rezonátor alebo externý generátor hodín. Ale v rámci tohto článku nebudeme uvažovať o tom, ako sa to robí. Príklady pripojenia MK na programovanie obsiahnuté v tomto článku sú navrhnuté pre najjednoduchší prípad.

Ryža. 1. SPI komunikácia v režime programovania

Teraz prejdime na obrázok 1, prevzatý z dokumentácie pre MK ATmega128A. Zobrazuje proces odoslania jedného bajtu do MCU a súčasného prijatia jedného bajtu z MCU. Oba tieto procesy, ako vidíme, používajú rovnaké hodinové impulzy prichádzajúce z programátora do mikrokontroléra na jeho vstupe SCK - jeden z kolíkov mikroobvodu, ktorému je táto úloha priradená v režime programovania SPI. Ďalšie dve signálové linky zabezpečujú príjem a prenos dát jeden bit na hodiny. Cez vstup MOSI dáta vstupujú do mikrokontroléra a načítané dáta sa preberajú z MISO výstupu. Všimnite si dve bodkované čiary nakreslené od SCK po MISO a MOSI. Ukazujú, v akom momente mikrokontrolér „zhltne“ dátový bit nastavený na MOSI vstupe a v akom momente nastaví vlastný dátový bit na MISO výstupe. Všetko je celkom jednoduché. Ale aby sme MK dostali do programovacieho režimu, potrebujeme ešte signál RESET. Nezabudnime ani na spoločný vodič GND a napájanie VCC. Celkovo sa ukazuje, že k mikrokontroléru je potrebné pripojiť iba 6 vodičov, aby ste ho preblikli cez SPI. Nižšie to rozoberieme podrobnejšie, ale zatiaľ dodáme, že výmena dát s MK v programovacom režime cez SPI prebieha v paketoch po 4 bajtoch. Prvý bajt každého paketu je v podstate úplne vyhradený na kódovanie príkazu. Druhý bajt, v závislosti od prvého, môže byť pokračovaním príkazového kódu alebo časťou adresy, alebo môže mať ľubovoľnú hodnotu. Tretí bajt sa používa hlavne na prenos adries, ale v mnohých príkazoch môže mať ľubovoľnú hodnotu. Štvrtý bajt zvyčajne nesie dáta alebo má ľubovoľnú hodnotu. Súčasne s prenosom štvrtého bajtu prijímajú niektoré príkazy dáta prichádzajúce z MK. Podrobnosti o každej inštrukcii nájdete v dokumentácii kontroléra v tabuľke s názvom "SPI Serial Programming Instruction Set". Zatiaľ len poznamenávame, že celá výmena s radičom je postavená zo sekvencie 32-bitových paketov, v každom z nich sa neprenáša viac ako jeden bajt. užitočná informácia. To nie je veľmi optimálne, ale vo všeobecnosti to funguje dobre.

3. Pripojenie MK pre programovanie

Aby sa zabezpečilo, že všetky potrebné signály sú dodávané na vstupy mikrokontroléra na organizáciu rozhrania SPI a čítanie údajov z jeho výstupu MISO, nie je potrebné vytvárať programátor. Toto je jednoduché urobiť s najbežnejším prevodníkom USB-RS232TTL.

Na internete často nájdete informácie, že takéto prevodníky sú podradné, že sa s nimi nedá nič vážne robiť. Ale pre väčšinu modelov prevodníkov je tento názor chybný. Áno, sú na predaj prevodníky, ktoré oproti štandardnému COM portu nemajú k dispozícii všetky vstupy a výstupy (napríklad len TXD a RXD), pričom majú nerozoberateľné prevedenie (mikroobvod je vyplnený plastom - je nemožno dospieť k jeho záverom). Ale tieto sa neoplatí kupovať. V niektorých prípadoch môžete získať chýbajúce vstupy a výstupy portu spájkovaním vedenia priamo do mikroobvodu. Príklad takéhoto "vylepšeného" prevodníka je znázornený na obrázku 2 (mikroobvod PL-2303 - viac o účele jeho kolíkov v článku ""). Jedná sa o jeden z najlacnejších modelov, ale pri použití v domácich dizajnoch má svoje vlastné výhody. Rozšírené sú aj plnohodnotné adaptérové ​​káble so štandardným deväťkolíkovým konektorom na konci ako COM port. Od bežného COM portu sa líšia iba v úrovniach TTL a nekompatibilite so zastaranými softvér a nejaké staré vybavenie. Možno tiež poznamenať, že šnúry založené na čipe CH34x sa v rôznych extrémnych testoch ukázali ako oveľa spoľahlivejšie a stabilnejšie v porovnaní s prevodníkmi založenými na PL-2303. Pri bežnom používaní však rozdiel nie je badateľný.

Pri výbere prevodníka USB-RS232TTL si treba dať pozor aj na kompatibilitu jeho ovládača s verziou použitého operačného systému.

Pozrime sa podrobnejšie na princíp pripojenia mikrokontroléra a prevodníka USB-RS232TTL na príklade štyroch rôznych modelov MK: ATtiny13, ATtiny44, ATmega8 a ATmega128. Obrázok 3 zobrazuje všeobecnú schému takéhoto spojenia. Možno vás prekvapí, že sa zneužívajú signály RS232 (RTS, TXD, DTR a CTS). Ale nebojte sa: program Perpetuum M s nimi dokáže pracovať priamo - nastavovať výstupné hodnoty a čítať stavy vstupov. Každopádne, široko používané prevodníky USB-RS232TTL založené na čipoch CH34x a PL-2303 takúto možnosť poskytujú - overené. Problémom by nemali byť ani ďalšie obľúbené prevodníky, keďže na prístup k portu slúžia štandardné funkcie Windows.

Rezistory zobrazené v všeobecná schéma, v zásade nemôžete nainštalovať, ale stále je lepšie nainštalovať. Aký je ich účel? Použitím TTL "vstupov a výstupov prevodníka a päťvoltového napájacieho zdroja mikrokontroléra sa tým zbavíme potreby spájať logické úrovne - všetko je aj tak celkom správne. To znamená, že prepojenia môžu byť priame. počas experimentov sa môže stať čokoľvek. Napríklad podľa zákona podlosti môže skrutkovač spadnúť len na miesto, kde nemohol spadnúť a zavrieť niečo, čo by v žiadnom prípade nemalo byť zatvorené. V úlohe „ skrutkovač", samozrejme, všetko sa môže ukázať. Rezistory v tomto prípade niekedy zmierňujú následky. Jedným z ich účelov je eliminovať možný konflikt výstupov. Faktom je, že na konci programovania mikrokontrolér prejde do normálny režim práce a môže sa stať, že jeho výstup pripojený na výstup prevodníka (RTS, TXD alebo DTR) sa stane aj výstupom, podľa práve zaznamenaného programu v MK. V tomto prípade bude veľmi zlé, ak sa dva priamo spojené výstupy "bijú" - skúste nastaviť rôzne logické úrovne. V takomto „boji“ môže niekto „prehrať“, ale my to nepotrebujeme.

Hodnoty troch rezistorov sú zvolené na úrovni 4,3 kOhm. To platí pre prepojenia medzi výstupom prevodníka a vstupom mikrokontroléra. Presnosť rezistorov nehrá rolu: ich odpor môžete znížiť na 1 KΩ alebo zvýšiť na 10 KΩ (v druhom prípade sa však riziko rušenia zvyšuje pri použití dlhých drôtov na ceste k MK). Čo sa týka prepojenia medzi vstupom prevodníka (CTS) a výstupom mikrokontroléra (MISO), tu je použitý 100 Ohmový odpor. Je to spôsobené zvláštnosťami vstupu použitého prevodníka. Pri testoch bol použitý prevodník na čipe PL-2303, ktorého vstupy sú zjavne vytiahnuté až na výkon plus s relatívne nízkym odporom (rádovo niekoľko stoviek ohmov). Na "zabitie ťahu" som musel dať odpor s takým malým odporom. Nemôžete to však dať vôbec. Na prevodníku je to vždy vstup. Nemôže sa stať východom, čo znamená, že pri akomkoľvek vývoji udalostí nedôjde ku konfliktu východov.

Ak má integrovaný obvod samostatný kolík AVCC na napájanie A/D prevodníka (ako je ATmega8 alebo ATmega128), mal by byť pripojený k spoločnému napájaciemu kolíku VCC. Niektoré integrované obvody majú viac ako jeden napájací kolík VCC alebo viac ako jeden GND. Napríklad ATmega128 má 3 piny GND a 2 piny VCC. V trvalom dizajne je lepšie navzájom spájať závery s rovnakým názvom. V našom prípade môžete v čase programovania použiť jeden výstup VCC a GND.

A takto vyzerá pripojenie ATtiny13. Obrázok ukazuje priradenia pinov používané pri programovaní cez SPI. Vedľa fotografie - ako dočasné spojenie vyzerá v skutočnosti.


Niekto si môže povedať, že to nie je vážne - zapojenia elektroinštalácie. Ale my sme rozumní ľudia. Naším cieľom je naprogramovať mikrokontrolér s minimom času a iných prostriedkov a nie sa pred niekým predvádzať. Kvalita tým neutrpí. Metóda „na účtoch“ je v tomto prípade dosť účinná a opodstatnená. Firmvér ovládača je jednorazový postup, takže nemá zmysel ho zavesiť „kamienkami“. Ak sa má v budúcnosti zmeniť firmvér bez odstránenia ovládača z okruhu (v hotovom výrobku), berie sa to do úvahy pri inštalácii pri výrobe zariadenia. Väčšinou sa na tento účel inštaluje konektor (RESET, SCK, MOSI, MISO, GND) a MK je možné flashovať aj po osadení na dosku. Ale to sú už kreatívne pôžitky. Uvažujeme o najjednoduchšom prípade.

Teraz prejdime k ATtiny44 MK. Tu je všetko o tom istom. Podľa nákresu a fotografie nebude ani pre začiatočníka ťažké zistiť spojenie. Rovnako ako ATtiny44 môžete pripojiť MK ATtiny24 a ATtiny84 - priradenie pinov pre túto trojicu je rovnaké.


Ďalším príkladom dočasného pripojenia ovládača pre jeho programovanie je ATmega8. Existuje viac záverov, ale princíp je rovnaký - niekoľko drôtov a teraz je ovládač pripravený na "vyplnenie" informácií. Extra čierny drôt na fotografii, pochádzajúci z kolíka 13, sa nezúčastňuje programovania. Je navrhnutý tak, aby z neho odstránil zvukový signál potom, čo MK opustí programovací režim. Je to spôsobené tým, že počas ladenia scenára pre "Perpetuum M" bol program hudobnej skrinky stiahnutý do MK.


Často je v rôznych prípadoch k dispozícii jeden ovládač. V tomto prípade je priradenie záverov pre každý prípad rozdelené vlastným spôsobom. Ak puzdro vášho ovládača nevyzerá ako na obrázku, špecifikujte účel pinov podľa technickej dokumentácie, ktorú si môžete stiahnuť zo stránky vývojára MK.

Aby bol obraz úplný, pozrime sa na zapojenie čipu MK s Vysoké číslo„nohy“. Účel extra čierneho drôtu na fotografii vychádzajúceho z kolíka 15 je presne rovnaký ako v prípade ATmega8.


Pravdepodobne ste už videli, že všetko je celkom jednoduché. Kto vie, ako spočítať závery mikroobvodov (od značky v kruhu proti smeru hodinových ručičiek), príde na to. A nezabudnite si dávať pozor. Mikroobvody milujú úhľadne a neodpúšťajú neopatrný postoj k sebe.

Pred pokračovaním v softvérovej časti sa uistite, že je správne nainštalovaný ovládač prevodníka USB-RS232TTL (skontrolujte správcu Zariadenia so systémom Windows). Zapamätajte si alebo si zapíšte číslo virtuálneho COM portu, ktorý sa objaví po pripojení prevodníka. Toto číslo bude potrebné zadať do textu skriptu, o ktorom si môžete prečítať nižšie.

4. Skript - programátor pre "Perpetuum M"

Prišli sme na hardvérovú časť „programátora“. Už je polovica úspechu. Teraz zostáva zaoberať sa softvérovou časťou. Jeho úlohu bude vykonávať program "Perpetuum M" pod kontrolou scenára, v ktorom sú všetky potrebné funkcie pre interakciu s mikrokontrolérom.

Archív so skriptom by sa mal rozbaliť do rovnakého priečinka, kde sa nachádza program perpetuum.exe. V tomto prípade sa pri spustení súboru perpetuum.exe na obrazovke zobrazí ponuka so zoznamom nainštalovaných skriptov, medzi ktorými bude riadok „Programátor MK AVR“ (môže byť jediný). Toto je riadok, ktorý potrebujeme.

Skript sa nachádza v priečinku PMS v súbore „MK Programmer AVR.pms“. Tento súbor je možné prezerať, študovať a upravovať podľa potreby v bežnom textovom editore, akým je napríklad Windows Poznámkový blok. Pred použitím skriptu budete s najväčšou pravdepodobnosťou musieť vykonať zmeny v texte súvisiaceho s nastavením portu. Ak to chcete urobiť, skontrolujte v správcovi zariadení názov windows port, ktorý používate, a ak je to potrebné, opravte riadok "PortName="COM4";" - namiesto čísla 4 môže byť iné číslo. Taktiež pri použití iného modelu prevodníka USB-RS232TTL môže byť potrebné zmeniť nastavenia inverzie signálu (riadky skriptu začínajúce slovom „High“). Inverziu signálov prevodníkom USB-RS232TTL môžete skontrolovať pomocou jedného z príkladov obsiahnutých v návode k programu Perpetuum M (časť funkcií pre prácu s portom).

Podpriečinok MK_AVR obsahuje súbory s popismi podporovaných ovládačov. Ak požadovaný ovládač nie je medzi nimi, môžete požadovaný ovládač pridať sami, postupujte analogicky. Vezmite jeden zo súborov ako vzorku a použite textový editor zadajte potrebné údaje z dokumentácie k vášmu mikrokontroléru. Hlavná vec je byť opatrný, zadať údaje bez chýb, inak sa MK nenaprogramuje, alebo bude naprogramovaný nesprávne. Pôvodná verzia podporuje 6 mikrokontrolérov: ATtiny13, ATtiny24, ATtiny44, ATtiny84, ATmega8 a ATmega128. Skript implementuje automatické rozpoznávanie pripojeného ovládača - nemusíte ho manuálne špecifikovať. Ak medzi dostupnými popismi nie je načítaný žiadny identifikátor z MK, zobrazí sa hlásenie, že ovládač nebolo možné rozpoznať.

Archív so skriptom obsahuje aj Ďalšie informácie. Priečinok "AVR controllers inc files" obsahuje veľmi užitočnú a rozsiahlu zbierku súborov s popisom ovládačov. Tieto súbory sa používajú pri písaní vlastných programov pre MK. Štyri ďalšie priečinky „MusicBox_...“ obsahujú súbory s programom assembler a firmware pripraveným na stiahnutie do MK samostatne pre ATtiny13, ATtiny44, ATmega8 a ATmega128. Ak ste už pripojili jeden z týchto MK na programovanie, ako je navrhnuté v tomto článku, môžete ho okamžite flashovať - ​​získate hudobnú skrinku. Viac o tom nižšie.

Keď v menu skriptu vyberiete riadok "Programátor MK AVR", skript sa spustí. Zároveň otvorí port, odošle príkaz na prepnutie do programovacieho režimu na MC, dostane potvrdenie od MC o úspešnom prechode, vyžiada si identifikátor MC a vyhľadá popis tohto MC podľa jeho identifikátora medzi dostupné súbory s popismi. Ak nenájde požadovaný popis, vydá príslušnú správu. Ak sa nájde popis, otvorí sa hlavné menu programátora. Jeho screenshot môžete vidieť na obrázku 8. Nie je ťažké prísť na to ďalej – menu je veľmi jednoduché.

V prvej verzii skriptu nie sú implementované niektoré funkcie plnohodnotného programátora. Napríklad neexistuje spôsob, ako čítať a zapisovať do EEPROM. Ale ak otvoríte skript v textovom editore, uvidíte, že má veľmi malú veľkosť, napriek tomu, že to hlavné je už v ňom implementované. To naznačuje, že pridanie chýbajúcich funkcií nie je také ťažké - jazyk je veľmi flexibilný, umožňuje implementovať bohatú funkčnosť v malom programe. Vo väčšine prípadov však postačia aj existujúce funkcie.

Niektoré obmedzenia funkčnosti sú popísané priamo v texte skriptu:
//implementovaný záznam iba z adresy nula (Adresa rozšíreného segmentu je ignorovaná, LOAD OFFSET tiež)
//nie je kontrolované poradie a nadväznosť záznamov v HEX súbore
//kontrolný súčet nie je zaškrtnutý
Týka sa to práce s HEX súborom, z ktorého sa preberá firmvérový kód pre MK. Ak tento súbor nie je poškodený, skontrolujte kontrolný súčet nič neovplyvní. Ak je skreslený, nebude ho možné pomocou skriptu odhaliť. Zostávajúce obmedzenia vo väčšine prípadov neublížia, ale stále ich musíte mať na pamäti.

5. Hudobná skrinka - ľahké remeslo pre začiatočníkov

Ak máte jeden z týchto mikrokontrolérov: ATtiny13, ATtiny44, ATmega8 alebo ATmega128, ľahko ho premeníte na hudobnú skrinku alebo hudobnú kartu. Na to stačí do MK zapísať príslušný firmvér - jeden zo štyroch, ktoré sa nachádzajú v priečinkoch "MusicBox_..." v jednom archíve so skriptom. Firmvérové ​​kódy sú uložené v súboroch s príponou „.hex“. Použiť ATmega128 na takéto remeslo je samozrejme „tučné“, rovnako ako ATmega8. Ale môže to byť užitočné na testovanie alebo experimentovanie, inými slovami - na vzdelávacie účely. Priložené sú aj texty programu assembler. Programy nevznikali od nuly - ako základ bol vzatý program hracej skrinky z knihy A.V. Belova "Mikrokontroléry AVR v rádioamatérskej praxi". Pôvodný program prešiel niekoľkými významnými zmenami:
1. prispôsobené pre každú zo štyroch MK: ATtiny13, ATtiny44, ATmega8 a ATmega128
2. odpadajú tlačidlá - k ovládaču nie je potrebné nič pripájať, okrem napájania a zvukového žiariča (melódie sa prehrávajú jedna za druhou v nekonečnej slučke)
3. trvanie každej noty sa zníži o trvanie pauzy medzi notami, aby sa eliminovali poruchy hudobného rytmu
4. je spojená ôsma melódia, v knižnej verzii sa nepoužíva
5. subjektívne: niektoré "vylepšenia" pre optimalizáciu a jednoduchšie vnímanie algoritmu

V niektorých melódiách je počuť falošnosť a dokonca aj hrubé chyby, najmä v "Smile" - v strede. Kódy melódií sú prevzaté z knihy (presnejšie stiahnuté z webovej stránky autora spolu s pôvodným asm súborom) a neboli zmenené. Zjavne sú chyby v kódovaní melódií. Ale to nie je problém – tí, ktorí sú s hudbou „kamaráti“, na to ľahko prídu a všetko opravia.

V ATtiny13 kvôli chýbajúcemu 16-bitovému počítadlu na hranie nôt bolo potrebné použiť 8-bitové, čo viedlo k určitému zníženiu presnosti zvuku nôt. Ale sluchom je to sotva viditeľné.

O konfiguračných bitoch. Ich nastavenie musí zodpovedať stavu nového mikrokontroléra. Ak sa váš MCU už niekde používal, musíte skontrolovať stav jeho konfiguračných bitov a v prípade potreby ich zosúladiť s nastaveniami nového mikrokontroléra. Stav konfiguračných bitov nového mikrokontroléra zistíte z dokumentácie k tomuto MK (časť "Poistkové bity"). Výnimkou je ATmega128. Tento MCU má bit M103C, ktorý umožňuje režim kompatibility so starším ATmega103. Aktivácia bitu M103C výrazne znižuje možnosti ATmega128 a tento bit je aktívny na novom MK. Musíte resetovať M103C do neaktívneho stavu. Na manipuláciu s konfiguračnými bitmi použite príslušnú časť ponuky skriptu programátora.

Nemá zmysel uvádzať schému hudobnej skrinky: má iba mikrokontrolér, napájací zdroj a piezoelektrický vysielač. Napájanie je dodávané presne rovnakým spôsobom ako pri programovaní MK. Zvukový emitor je zapojený medzi spoločný vodič (GND výstup ovládača) a jeden z výstupov MK, ktorých číslo nájdete v súbore s kódom assembleru programu (*.asm). Na začiatku textu programu pre každú MK ​​v komentároch je riadok: " zvukový signál sa vytvorí na výstupe XX". Po ukončení programátora skriptov mikrokontrolér opustí režim programovania a prepne sa do normálneho režimu prevádzky. Melódie sa prehrajú okamžite. Pripojením zvukového žiariča to môžete skontrolovať. Môžete nechať zvukový vysielač pripojený počas programovania kryštálu iba vtedy, ak je zvuk prevzatý z kolíka, ktorý sa nepoužíva v SPI, inak môže dodatočná kapacita na kolíku rušiť programovanie.

Ako flashovať mikrokontrolér AVR? To je to, čo urobíme v tomto článku.

Čo je to „flash“ a „firmvér“?

Najprv si definujme, čo to slovo znamená "blesk"? Myslím, že ste často počuli frázy ako „flash the phone“, „firmware is letel“, „crooked firmware“ atď. Čo je "firmvér"?

Firmvér je, zhruba povedané, operačný systém pre malé zariadenia ako napr mobilný telefón, Mp3 prehrávač, digitálny fotoaparát atď. To znamená, že ide o malý program, ktorý ovláda toto zariadenie. Často môžete počuť aj toto: „Mám „buggy“ mobilný telefón, je to súrne potrebné „reflash“.

V tomto prípade to znamená, že musíte preinštalovať operačný systém do mobilného telefónu. znamená, "Flash MK" znamená do nej nahrať program, ktorý by ovládal tento MK a MK by už ovládal nejaké zariadenie. To znamená, že MK je teoreticky sprostredkovateľ medzi programom a nejakým zariadením, ktoré treba ovládať ;-)


Vybavenie pre firmware MK

Takže, čo potrebujeme na flashovanie MK?

  1. Samotný mikrokontrolér.
  2. Počítač s predinštalovaným softvérom (SW).
  3. Programátor.
  4. Niekoľko skokanov.
  5. Doska na chlieb. Odporučil by som si hneď kúpiť súpravu AVR pre začiatočníkov. Táto sada je napájaná cez USB.
  6. Rovné ruky vyrastajúce zo správneho miesta.

Dohodli sme sa na použití Atiny2313 MK v balíku DIP-20:

Príprava MK na firmvér

V minulých článkoch sme zvažovali programátora Gromova. Jeho hlavnou nevýhodou je, že potrebujeme COM port, ktorý teraz v počítači takmer nenájdeme, no USB konektor je na každom počítači. Preto bolo rozhodnuté kúpiť najlacnejší USB programátor pre AVR MK. Takýto programátor sa volá a vyzerá asi takto


Ak sa dobre pohrabete na Ali, nájdete za takého programátora veľmi sladkú cenu. Napríklad, . Možno to nájdete aj lacnejšie. Ak beriete od iného predajcu, pozorne si ho pozrite jeho nápisy a rádiové prvky boli umiestnené presne ako na mojej fotografii. V priemere je jeho cena v čase písania asi 120 rubľov. Takýto programátor v prípade bude stáť o niečo viac.

Tu je jeho pohľad zozadu:


Jeho pracovný konektor vyzerá asi takto:


K programátoru je dodávaný aj kábel


ktorý na jednom konci prilieha k pracovnému konektoru programátora:


Druhý koniec kábla prichytíme na MK.


Ak sa pozriete pozorne, môžete zistiť, ktorý kolík v konektore je prvý. Šípka bude ukazovať na prvý kolík konektora:


Keď viete, kde je prvý kolík, môžete ľahko identifikovať zvyšok kolíkov:


Našou úlohou je teda prepojiť výstupy MK s výstupmi programátora.

Za týmto účelom zapojíme vodiče do konektorov MOSI, RST, SCK, MISO, VTG (VCC), GND do konektora kábla. GND Zobral som 10. zásuvku, je to možné a ešte jednu, kde je napísané GND. Celkom 6 prepojovacích káblov:


VTG (aka VCC) lipneme na 20. nohe MK

SCK (UCSK) držíme sa na 19 nohe MK

MISO lipneme na 18. nohe MK

MOSI pre 17 nôh

GND na 10 nôh

RST na prvej nohe

Malo by to dopadnúť asi takto:


Po prvom zapojení programátora do USB portu počítača, správca zariadení dostaneme nové zariadenie:

Nebojíme sa, stiahnite si archivátor tu, rozbaľte ho a pri inštalácii „palivového dreva“ uveďte cestu k nemu. Keď je na programátor nainštalované „palivové drevo“, uvidíme niečo takéto:

Všetko je v poriadku, programátor je pripravený na boj.

V tom istom archíve nájdeme priečinok „avrdudeprog“, otvoríme ho, nájdeme tam spustiteľný súbor AVRDUDEPROG a spustíme ho. Toto je softvérový shell na flashovanie MK pomocou nášho programátora.

Vyzerá takto. Nezabudnite si v zozname vybrať našu MK.

Aby sme mohli flashovať MK, musíme vybrať súbor s príponou HEX. Takže tu je môj súbor. V prvom rade stlačím tlačidlo "Vymazať všetko". Co ak uz niekto pouzival MK a uz je tam nahrany nejaky program? Preto pred blikaním vymažeme pamäť MK. Ak bolo „umývanie“ úspešné, program nám dá niečo ako túto správu:

Blikanie MK AVR

Kliknite na tlačidlo výberu súboru:

A teraz vyberieme náš súbor “Lekcia 1.hex”. Toto je náš program.

A teraz stlačíme tlačidlo "programovanie"

Keď všetko prebehlo v poriadku, zobrazí sa niečo takéto:

Ale to nie je všetko! Ako si pamätáte, v minulom článku sme nastavili frekvenciu na 8 megahertzov. Aby sme sa vyhli nejasnostiam, teraz musíme túto frekvenciu vydeliť 8. Na tento účel je tu poistka, ktorá delí hodinovú frekvenciu 8. Umiestnime značku na „priame poistky“, potom zaškrtneme políčko CKDIV.

Po vykonaní týchto dvoch krokov kliknite na tlačidlo "Programovanie":

Kontrola MK v hardvéri

Teraz zostavíme náš obvod, ktorý bol spomenutý v minulom článku:


a užite si výsledok:

Týmto príspevkom chcem začať publikovať cyklus, v ktorom sa podrobne zvážia základné techniky vývoja, flashovania a nastavovania zariadení na mikrokontroléroch. Príspevky budú užitočné aj pre tých, ktorí sa chystajú iba opakovať hotové zariadenia bez toho, aby sa obťažovali ich vývojom a ladením. Dúfame (ja a administrácia stránky), že zverejnenie tohto cyklu pomôže mnohým začiatočníkom a nie až tak rádioamatérom začať s vývojom a (alebo) opakovaním zariadení na báze mikrokontroléra. Tento článok zhromažďuje a systematizuje materiály z rôznych otvorených zdrojov vrátane nášho obľúbeného rozhlasového časopisu. Stručne sa pozrieme na to, čo je MK a s čím sa konzumuje, prečo sú potrebné kompilátory a aké strašné zvieratá sedia v súboroch s *. HEX, *. kôš, *. asm , atď., ponoríme sa trochu do histórie a vytvoríme si konečne nášho prvého programátora SI-Prog (podľa mňa veľmi jednoduchý, spoľahlivý, univerzálny a nezaslúžene zabudnutý) a flashneme MK, navyše sa na konkrétnom príklade budeme zaoberať softvérovými shellmi RopuRgo g 2000 a IS-Prog . A tak začnime. Nie je žiadnym tajomstvom, že medzi digitálnymi integrovanými obvodmi dnes MK zaujímajú približne rovnaké miesto ako operačné zosilňovače medzi analógovými. Ide o univerzálne zariadenia, ich použitie v elektronické zariadenia na rôzne účely sa neustále rozširuje. Vývojom a výrobou MC sa zaoberajú takmer všetky veľké a mnohé stredne veľké firmy špecializujúce sa na oblasť polovodičovej elektroniky. Zoznam a hlavné parametre MK niektorých populárnych rodín nájdete napríklad na internete.

Moderné mikropočítače (kedysi sa im hovorilo jednočipové mikropočítače) v sebe spájajú výkonné procesorové jadro, pamäťové zariadenia na ukladanie spustiteľného programu a dát, zariadenia na príjem vstupných a generovaných výstupných signálov a početné pomocné uzly. Všeobecným trendom moderného „budovania mikrokontrolérov“ je znižovanie počtu externých prvkov potrebných pre bežnú prevádzku. Na mikroobvodovom čipe sú umiestnené nielen komparátory, analógovo-digitálne a digitálno-analógové prevodníky, ale aj všetky druhy záťažových a "pull-up" odporov, resetovacie obvody.

Výstupné nárazníky MK sú navrhnuté tak, aby priamo pripájali najtypickejšie záťaže, ako sú LED indikátory. Takmer ktorýkoľvek z výstupov MK (samozrejme s výnimkou výstupov spoločného vodiča a napájania) môže vývojár použiť podľa vlastného uváženia ako vstup alebo výstup. Výsledkom je, že zariadenie, ktoré je z hľadiska svojich funkcií pomerne zložité, môže byť často vykonávané iba na jednom mikroobvode.

Neustále znižovanie nákladov na MK a rozširovanie ich funkčnosť znížili prah zložitosti zariadení, ktoré je vhodné stavať na ich základe. Dnes má zmysel navrhovať na MK aj také zariadenia, ktorých implementácia tradičnými metódami by vyžadovala menej ako tucet logických mikroobvodov stredného a nízkeho stupňa integrácie. Možno hlavnou prekážkou na tejto ceste je konzervatívnosť developerov, z ktorých mnohí stále považujú MK za niečo nepochopiteľne zložité.

Medzitým sú procesy vývoja programu pre MK a konvenčnej schémy zapojenia digitálneho zariadenia v mnohých ohľadoch podobné. V oboch prípadoch je „budova" požadovaného tvaru postavená z elementárnych „tehál". Ide len o to, že „tehly“ sú odlišné: v prvom prípade - súbor logických prvkov, v druhom - súbor príkazov mikrokontroléra .

Namiesto interakcie medzi prvkami pomocou výmeny signálov po drôtoch, prenos dát z jednej pamäťovej bunky do druhej v rámci MK. Proces prenosu sa „rozprskne“, keď MK komunikuje s pripojenými snímačmi, indikátormi, akčnými členmi a externou pamäťou. Nástroje sú tiež odlišné. Ceruzku, papier, spájkovačku a osciloskop nahrádza počítač a programátor, hoci v poslednej fáze ladenia produktu sa bez osciloskopu a spájkovačky stále nezaobídete.

Ďalším problémom je nedostatok plnohodnotnej technickej dokumentácie a referenčnej literatúry v ruštine. Väčšina publikácií tohto druhu v periodikách a najmä na ruskojazyčnom internete často nie je ničím iným ako medziriadkovými prekladmi anglických originálov. Navyše prekladatelia, niekedy málo oboznámení s témou a terminológiou, interpretujú „temné“ miesta po svojom a ukáže sa, že sú dosť ďaleko od pravdy. Prakticky neexistujú žiadne softvérové ​​nástroje v ruskom jazyku na vývoj a ladenie programov MK.

Pre mnohých sa prvé zoznámenie s MK začína opakovaním jedného z návrhov podľa nich uverejnených v tom istom rozhlasovom časopise alebo inej publikácii. A tu sa okamžite prejavuje hlavný rozdiel medzi MC a konvenčným mikroobvodom: nie je schopný robiť nič užitočné, kým nie je zadaný program do jeho interného (niekedy externého) pamäťového zariadenia, t.j. súbor kódov, ktorý špecifikuje postupnosť operácií, ktoré sa majú vykonať. Postup zápisu kódov do pamäte MK sa nazýva jeho programovanie alebo firmvér (nemýliť si s predchádzajúcim procesom vývoja samotného programu s rovnakým názvom).

Potreba firmvéru sa na prvý pohľad môže zdať ako nevýhoda. V skutočnosti je to hlavná výhoda, vďaka ktorej vytvorením napríklad jednej dosky s MK a niekoľkých k nej pripojených LED indikátorov a tlačidiel, ak je to žiaduce, sa všetko zmení na frekvenčný merač, počítadlo impulzov, elektronické hodiny. , digitálny merač akejkoľvek fyzikálnej veličiny, diaľkové ovládanie a monitorovanie a mnoho ďalšieho.

Schopnosť utajiť programové kódy pomáha výrobcom zariadení na MK v boji s konkurenciou. Je pravda, že nadmerné utajenie programov často vytvára ďalšie ťažkosti pri oprave alebo zlepšovaní zariadení na MK „cudzieho“ dizajnu. Ale to je už iná vec.

Až donedávna, keď začal navrhovať štruktúru na MC, vývojár čelil problému, či je možné problém vyriešiť pomocou jemu známych zariadení jedného alebo dvoch typov. Dnes sa situácia radikálne zmenila. Zo súboru dostupných MC by ste si mali vybrať ten, pomocou ktorého sa problém vyrieši optimálnym spôsobom. Bohužiaľ, nie každý to robí. Dokonca existovala istá „móda“ výrobkov rôzneho druhu, vytvárajú sa svojrázne zoskupenia priaznivcov MK určitých rodín. Svoj výber zdôvodňujú spravidla na úrovni „páči sa mi – nepáči.“ Negatívny názor na zariadenie sa často vysvetľuje jediným neúspešným pokusom o jeho použitie, často bez snahy analyzovať a eliminovať príčiny zlyhania. Niektoré spoločnosti distribuujú dokumenty s názvom „Pravda o ...“ s „objektívnym“ porovnaním ich zariadení s produktmi konkurencie a spravidla v prospech prvého. Takýmto publikáciám by ste nemali obzvlášť dôverovať, vždy bude k dispozícii porovnávacia správa so spätnými výsledkami a závermi.

Chcem povedať, že tak ako v mnohých iných prípadoch neexistujú a ani nemôžu existovať žiadne zjavne dobré alebo zlé MK. Každý z nich je schopný preukázať vynikajúce výsledky pri riešení problémov určitej triedy a ťažko sa vyrovnáva s inými. Preto tá rôznorodosť typov. Zisk v jednom parametri je spravidla sprevádzaný zhoršením ostatných. Najjednoduchšie príklady: MK určený na viacnásobné preprogramovanie je vždy drahší ako jednorazový programovateľný analóg a rýchlejšie zariadenie je citlivejšie ako pomalé na impulzný šum a náročnejšie na sledovanie PCB. Samozrejme, existujú univerzálne zariadenia, ktoré sú dostatočne vhodné na riešenie širokej triedy problémov. Ak je však potrebné zopakovať iba jeden alebo druhý dizajn, nie je žiadna špeciálna príležitosť vybrať si MK, musíte použiť ten, ktorý je uvedený v popise alebo jeho úplný analóg, napríklad spomedzi tých, ktoré vyrábajú iné spoločnosti na základe licencie. . Na otázku, či je možné nahradiť MK jedného typu iným, je často potrebné odpovedať záporne, hoci teoreticky takáto možnosť existuje: stačí prepracovať program a ak počet a účel pinov z vymenených a nahrádzajúcich MK sú odlišné, potom doska plošných spojov.

Pokiaľ ide o výmenu mikrokontrolérov s podobnou štruktúrou a patriacich do rovnakej rodiny, alebo o nahradenie zastaraného produktu moderným analógom, spravidla je možné program prispôsobiť. Mikročip a ATMEL dokonca obsahuje odporúčania na takúto úpravu v referenčných údajoch svojho MV. Vo všeobecnosti si plnohodnotný prenos programu na iný MK vyžaduje prítomnosť nielen bežne publikovaného „firmvéru“ EPROM, ale aj úplného zdrojového textu, najlepšie s komentárom programátora. Výpis získaný v dôsledku demontáže „firmvéru“ má ďaleko od plnohodnotného ekvivalentu. Programátor bude potrebovať výrazne vyššiu kvalifikáciu, než je dostatočná na vývoj od nuly, a náklady na prácu nebudú nižšie.

Samostatný vývoj zariadenia na MK a samozrejme programu preň sa odporúča začať štúdiom a zostavením blokovej schémy algoritmu jeho prevádzky. Iba podľa výsledkov tejto fázy môžete urobiť správnu voľbu MC.

Náš ďalší príbeh postavíme na konkrétnom príklade. Nejako sa nedávno vyžadovalo počítadlo, ktoré by dokázalo počítať križovatky s určitým objektom určitej hranice v jednom a druhom smere. Pri prezeraní čísel časopisu Rádio som našiel vhodné zariadenie, ktoré sa mi však zdalo príliš komplikované (11 mikroobvodov vrátane veľkokapacitnej EPROM) a navyše nedisponovalo niektorými potrebnými funkciami, najmä možnosťou pre- nastaviť hodnoty merača a zapamätať si jeho stav po vypnutí napájania. Bol nápad vyrobiť potrebné zariadenie na MK. Z dôvodov uvedených nižšie bol zvolený MK PIC16F84 (PIC16F84А). Výsledkom bolo, že schéma zariadenia bola narodený ( ryža. 1),


obsahujúce iba dva mikroobvody. Zariadenie môže používať mikrokontroléry PIC16F84 a PIC16F84 A s akoukoľvek obmedzujúcou frekvenciou, typom puzdra a rozsahom prevádzkových teplôt (tieto parametre sú označené číselnými a abecednými indexmi za pomlčkou v označení čipu, napríklad -101 / P). A ak sa neočakáva zlepšenie programu, môžete použiť aj lacný jednorazový programovateľný analóg PIC16CR84, ak ho, samozrejme, nájdete.

Snímače pohybu objektu - tranzistorové optočleny s otvoreným kanálom AOT147B (U1, U2). Záťaž ich fototranzistorov sú interné odpory dostupné v MK. Je prípustné použiť optočleny pozostávajúce zo samostatných svetelných a fotodiód (fototranzistorov). Optické snímače sa v prípade potreby nahradia akýmikoľvek inými: magnetickými, kontaktnými, indukčnými. Dôležité je len to, aby sa pri ich spustení zmenili logické úrovne na zodpovedajúcich vstupoch MK.

Zariadenie využíva štvormiestny sedemsegmentový LED indikátor CA56-11SR od Kingbright. Je tiež možné použiť ľubovoľné sedem segmentové LED indikátory so spoločnýmanóda, napríklad štyri domáce ALS324B. Sada odporov DR1 môže nahradiť rodinukonvenčné 300 ohmové odpory.Je uvedený program, ktorý je potrebné zadať do pamäte MK DD2, aby sa zariadenie zmenilo na počítadlov tabuľke. 1. Keď je napájanie zapnuté, na všetkých čísliciach indikátora svietia nuly. Po každom vykonaní cyklu „U1 je zatienené“ - „U1 a U2 sú zatienené“ - „U1 nie je zatienené“ - „U2 nie je zatienené“, hodnoty sa zvýšia o jednu. Počítadlo je preto reverzibilné, keď snímače sú spúšťané v opačné poradie hodnoty sa znížia o rovnakú hodnotu. Maximálny počet je 9999, za ktorým nasleduje nula.

Ďalší článok cyklu bude rozprávať o tom, ako vznikal a ladil obvod a program počítadla, o jeho vylepšení a zavedení doplnkových funkcií. Tento príklad ilustruje hlavné funkcie PIC16F84 MK a ako pracovať s bezplatnými programovacími a ladiacimi nástrojmi. Sú spojené do balíka MPLAB, ktorého najnovšiu verziu je možné „stiahnuť“ z internetových stránok www.microchip.com alebo www.microchip.ru. Alebo zo stránky fóra ALEXANDRA Tiež podrobne popisuje, ako ho nainštalovať.

Aby ste mohli zadať kódy z tabuľky. 1 palec vnútorná pamäť MK, potrebuješ programátora. Ten však „nevie“ čítať kódy z internetových stránok, preto si v prvom rade musíte v počítači vytvoriť súbor s týmito kódmi vo formáte, ktorý je pre programátora „zrozumiteľný“. V tabuľke. 1 sú prezentované v takzvanom HEX formáte vyvinutom spoločnosťou Intel a ktorý sa stal de facto štandardom pre programovanie ROM na rôzne účely. (Musím povedať, že iné formáty s rovnakým názvom, napríklad Microchip HEX, neexistujú, takéto názvy sa používajú iba z nedorozumenia). Podobné formáty vyvinuté inými spoločnosťami nenašli široké uplatnenie a sú určené spravidla len pre hardvér a softvérové ​​nástroje vlastný dizajn, väčšina z nich „rozumie“ formátu Intel HEX.

Kódy sa zadávajú do počítača pomocou ľubovoľného textového editora vrátane Microsoft Word presne v takej forme, v akej sú uvedené tab. 1.


Ak máte skener a program na rozpoznávanie textu, ako je FineReader, môžete ich použiť. V druhom prípade sa však načítané údaje budú musieť porovnať s originálom, pretože automatické rozpoznávanie nie je dokonalé (sú možné chyby). Upozorňujeme, že v HEXsúbory, používa sa len dvojbodka, čísla a latinské písmená A - F. Každý riadok začína dvojbodkou na prvej pozícii a končí stlačením klávesu ENTER. Medzery nie sú povolené. Keď dokončíte písanie a skontrolujete kódy, uložte súbor v režime „Text DOS“ alebo „Len text“ s ľubovoľným názvom s príponou *.hex.

Pomerne často sa programové kódy zverejňujú vo forme takzvaného „výpisu pamäte“. Toto je vizuálnejšia tabuľka (ako v HEX formáte). Pozostáva z riadkov začínajúcich hexadecimálnou adresou (zvyčajne štyrmi číslicami), za ktorými nasledujú medzery oddelené dvojmiestnymi hexadecimálnymi kódmi uloženými v po sebe nasledujúcich pamäťových bunkách (bajtoch). Adresa na začiatku riadku sa vzťahuje na prvú z buniek a celkovo ich býva 16. Pre porovnanie v r. tab. 2 tu je výpis obsahujúci rovnaké údaje ako tab. 1. HEX a výpis možno jednoducho previesť z jedného na druhý nasledovne (pozri tab. 3).

Prvé dva znaky za dvojbodkou predstavujú počet bajtov informácie v reťazci. V tomto prípade je 16 (10 H ). Nasleduje adresa prvého bajtu (0020H), po ktorej nasleduje dvojmiestny kód priradenia riadku:

0 - riadok obsahuje údaje;

1 - posledný riadok súboru (:00000001 FF); neobsahuje žiadne údaje, počet bajtov a adresa v ňom sú nulové. V mnohých prípadoch stačí nula bajtov na rozpoznanie reťazca ako ukončujúceho;

2 - v dátovej oblasti je adresa pamäťového segmentu, vzhľadom na začiatok ktorého sa počítajú adresy uvedené v nasledujúcich riadkoch. Všimnite si, že dva bajty adresy segmentu sú vo vysokom a nízkom poradí. Číslo, ktoré sa má pridať k aktuálnym adresám, sa získa posunutím binárny kód adresa segmentu štyri bity doľava, to znamená jej vynásobením 16;

3 - v dátovej oblasti sú štyri bajty štartovacej adresy programu v bežnom formáte IBM PC CS:IP;

4 - v dátovej oblasti sú (v poradí od najvyššej po najnižšiu) štyri bajty absolútnej adresy, ktorých hodnota by sa mala bez akýchkoľvek transformácií pripočítať k adresám uvedeným v nasledujúcich riadkoch;

5 - to isté ako 04, ale určuje absolútnu hodnotu adresy spustenia programu.

Linky s cieľovými kódmi 02 a 04 sa používajú, ak je potrebné zadať adresy väčšie ako 0FFFFH. Na programovanie MCU s malou pamäťou (ako PIC16F84) nie sú potrebné. Niekedy sa však podobný reťazec špecifikujúci nulovú počiatočnú adresu umiestni na začiatok HEX súboru. Dá sa bezbolestne odstrániť.

Riadky s kódmi 03 a 05 sú veľmi zriedkavé, pretože počiatočná adresa programu MK je najčastejšie určená architektúrou programu MK a nemožno ju zmeniť. Pre MK z rodiny PICmicro je to nula.

Za cieľovým kódom nasleduje dátová oblasť s počtom bajtov zadaným na začiatku riadku. Reťazec je ukončený riadiacim bajtom. Algoritmus na výpočet jeho hodnoty je pomerne jednoduchý: osem najmenej významných bitov súčtu všetkých bajtov reťazca vrátane jeho dĺžky, dvoch bajtov adresy, cieľového kódu, údajov a kontroly sa musí rovnať nule.

Formát HEX bol pôvodne navrhnutý na ukladanie 8-bitových údajov. Kódy väčšej kapacity sú rozdelené na zodpovedajúci počet bajtov, ktoré sa zapisujú do súboru v poradí od nízkej po vysokú. Napríklad každej zo 14-bitových inštrukcií MK IS16F84 sú priradené dva bajty a dva najvýznamnejšie bity druhého bajtu zostávajú voľné (kód v tomto byte nepresahuje 3FH).

V dôsledku toho sa adresy v súbore HEX zdvojnásobia v porovnaní so skutočnými adresami inštrukcií programu. Napríklad linka

:080008008C0003088D000408C0 opisuje takúto sekvenciu programových kódov;

Kód adresy

4008 С

5 0803

6008D

7 0804

Niektoré softvérové ​​nástroje (spravidla nevedúce svoj rodokmeň z počítačov kompatibilných s IBM) zapisujú do súboru a vnímajú dátové bajty v opačnom poradí - starší, potom mladší. Na to by ste si mali dať pozor, ak je programátor „neposlušný“, nechce súbor správne prečítať.

Opísaný viacbitový formát reprezentácie údajov sa často označuje ako zlúčený. Príležitostne existuje iná možnosť: súbor HEX je rozdelený na dva, z ktorých jeden obsahuje všetky spodné bajty a druhý - všetky horné bajty slov programu. Tento formát sa nazýva Splitted.

Upozorňujeme, že súbor nemusí špecifikovať súvislú sekvenciu kódov. Napríklad medzi kódmi v prvých dvoch riadkoch tab. 1 medzera šiestich bajtov zostáva nevyplnená (tri programové inštrukcie). HEX formát neposkytuje žiadne informácie o ich obsahu. V závislosti od algoritmu programátora zostávajú v nenaprogramovanom počiatočnom stave alebo ukladajú kódy, ktoré boli predtým zaznamenané. IN tab. 2 nepoužité bunky sú vyplnené nulovými kódmi.

Ako viete, MK obsahuje permanentnú pamäť pre rôzne účely: FLASH alebo jednorazovo programovateľnú pre program, EEPROM pre dáta, špeciálne bunky pre konfiguráciu a identifikáciu MK. Informácie určené pre tieto oblasti sú často uložené v samostatných súboroch a

programovanie, musíte ručne určiť, kam presne to zapísať. Ale v rodine PICmicro bolo prijaté rozhodnutie spojiť všetko do jedného HEX súboru. Vyššie uvedené oblasti, ktoré sa nachádzajú pre procesor MK v rôznych adresných priestoroch, sú z pohľadu programátora spojené do jednej. Pre PIC16F84 je distribúcia nasledovná (v zátvorkách - "bajtové" adresy):

0-3FFH (0-7FFH) - programové kódy; pre MK s väčšou pamäťou je možné túto oblasť rozšíriť na 1FFFH (3FFFH);

2000N-2003N (4000N-4007N) - identifikačné kódy;

2007H (400EN, 400FH) - konfiguračné slovo;

2100H-213FH (4200H-427FH) - kódy zapisované na adresy 0-3FH EEPROM.

Napriek tomu, že organizácia EEPROM je osembitová, v tomto prípade má každý z kódov pre ňu určených v HEX súbore priradené dva bajty, z ktorých najvyšší má nulový obsah.

POKRAČOVANIE NABUDÚCE >>>>>

VŠETKY OTÁZKY ZAPNUTÉ

Ak je teda program nainštalovaný, začnime skúmať jeho možnosti.

Nainštalujeme mikrokontrolér do programovacieho panela, pripojíme programátor k počítaču a spustíme "PICkit 2 Programmer".

Po spustení sa program opýta programátora a podľa identifikačných bitov (tzv. ID zariadenia) automaticky určí typ programovaného mikrokontroléra. Pozor!Čipy rodiny Baseline, ako aj čipy EEPROM a KeeLOG nemajú ID zariadenia. Aby program fungoval s týmito mikroobvodmi, musíte si vybrať konkrétny produkt cez ponuku „Rodina zariadení“.

Ak sa namiesto takého priateľského obrázka objaví tento ...

Potom musíte skontrolovať, či je kábel USB správne pripojený, a prostredníctvom ponuky „Nástroje“ - „Skontrolovať komunikáciu“ znova pripojte zariadenie.

Otvorenie súboru firmvéru.

Ak chcete zapísať program MK do jeho pamäte, musíte vybrať položku ponuky "Súbor" - "Importovať hex".

Potom vyberte v okne, ktoré sa otvorí požadovaný súbor firmvéru.

Potom sa v okne pamäte programu (Pamäť programu) a údajov (Údaje EEPROM) zobrazí obsah súboru .hex.

Nahrávanie programu v MK.

Teraz môžete naprogramovať MK. Ak to chcete urobiť, kliknite na tlačidlo "Napísať". Proces nahrávania trvá 3 - 5 sekúnd.

Nápis „Programovanie úspešné“ vás upozorní na úspešné ukončenie postupu nahrávania.

Pre väčšiu istotu môžete vykonať overovací postup. Keď kliknete na tlačidlo "Overiť", program porovná údaje hex-súboru a údaje zaznamenané v MK. Ak bolo overenie úspešné, v okne so správou sa zobrazí „Overenie úspešné“.

Pozor! Ak blikáte mikrokontroléry PIC12F675, PIC12F629 a podobné mikrokontroléry s vnútorným generátorom hodín, počas overovania sa môže objaviť chyba. Faktom je, že programátor PICkit2 (verzia 6.21) uloží kalibračnú konštantu a potom ju zapíše do poslednej pamäťovej bunky MK. Je zrejmé, že pôvodný súbor firmvéru a údaje zaznamenané v pamäti sa budú líšiť. O kalibračnej konštante sa bude diskutovať neskôr.

Rýchle tlačidlá.

Tlačidlo „Auto Import Hex + Write Device“ osloví tých, ktorí chcú „nahnať firmvér“ do MK kliknutím na jediné tlačidlo. Jedno kliknutie a program vás vyzve, aby ste vybrali súbor firmvéru a potom ho okamžite zapísali do MK.

Tlačidlo "Načítať zariadenie + Export Hex súboru" plní opačnú funkciu - načíta údaje z MK a ponúkne uloženie súboru firmvéru do .hex súboru.

Zmena konfiguračných bitov.

Konfiguračné bity nastavujú základné parametre pre činnosť MK. Jedná sa o typ generátora (quartz, RC obvod), zapnutie / vypnutie tzv. "watchdog timer", nastavenie ochrany pred čítaním programovej pamäte a niektoré ďalšie. Spravidla sa pri písaní algoritmu na prevádzku MK (programu) zapisujú hodnoty, ktoré je potrebné zapísať do konfiguračných bitov. Pri flashovaní shell preberá konfiguračné údaje zo samotného súboru firmvéru a netreba ho nútiť špecifikovať tieto údaje.

Ale ako začiatočníci by nebolo zbytočné vedieť, ako zobraziť alebo zmeniť konkrétne konfiguračné bity. Ak to chcete urobiť, kliknite na nápis „Konfigurácia“. Otvorí sa okno Upraviť konfiguračné bity.

Ak potrebujete zmeniť 0 na 1, potom zmeňte - kliknite na "Uložiť". Prirodzene, je potrebné sa vedome meniť. Opakujem, že pri použití hotového súboru firmvéru nemusíte nič meniť, program urobí všetko automaticky.

Výber modelu mikrokontroléra.

Mikrokontroléry sú rôzne. Preto pri programovaní MK môže byť potrebné špecifikovať konkrétny model mikrokontrolér. Keď vyberiete položku ponuky „Rodina zariadení“, zobrazí sa zoznam rodín mikrokontrolérov. V tomto zozname sú aj pamäťové čipy EEPROM.

Na rozdiel od mikrokontrolérov nie sú pamäťové čipy EEPROM automaticky detekované príkazom „Tools“ – „Check Communication“. Preto pri čítaní / zápise čipov EEPROM v programe musíte zadať označenie čipu.

V ponuke vyberte položku "Rodina zariadení" - "EEPROMS" - "24LC".

Kalibračná konštanta.

Ako viete, mikrokontrolér vyžaduje na svoju činnosť generátor hodín. Prvok, ktorý nastavuje frekvenciu tohto generátora, môže byť externý kremenný rezonátor, RC - obvod. Ale medzi mikrokontrolérmi PIC sú také, ktoré obsahujú potrebné riadiace obvody vo vnútri samotného mikroobvodu. Takéto MK zahŕňajú napríklad PIC12F629, PIC12F675.

Z výroby je do pamäte takýchto mikrokontrolérov zapísaná špeciálna konštanta, ktorá nastavuje parametre vstavaného oscilátora na 4 MHz. Táto kalibračná konštanta 34xx sa zapíše na posledné miesto v pamäti programu pri 0x3FF.

Pri programovaní mikrokontroléra táto konštanta ľahko vymazať. A hoci PICkit2 Programmer verzia 2.61 túto konštantu automaticky uloží a následne zapíše počas programovania, nebude zbytočné zapisovať si hodnotu konštanty OSCCAL.

V prípade potreby je možné konštantu jednoducho zadať manuálne. Ak to chcete urobiť, vyberte položku ponuky "Nástroje" - "OSCCAL" - "Nastaviť manuálne".

V poli "Hodnota OSCCAL" zadajte predtým zaznamenanú hodnotu konštanty. Kliknite na tlačidlo "Nastaviť".

Teraz, keď ste oboznámení so základnými funkciami programátora PICkit2, môžete bezpečne začať skladať nejaké zariadenie na mikrokontrolér, napr.

Mikrokontroléry pre začiatočníkov. Video lekcia. Zapíšeme program do mikrokontroléra (flashujeme čip)

________________________________________________________________________________________________________

najprv najjednoduchší program, ktorý riadi napätie na výstupoch mikrokontroléra. Programovanie v editore CodeVisionAVR. Prenos programu do pamäte mikrokontroléra (firmvér čipu). Stiahnuť ▼(36 MB)


Obsah

Ak sa video nenahráva, nastavteFlash Player a skontrolujte zvuková karta, aleboStiahnuť ▼ materiál (36 MB). Ak je namiesto videa zelená obrazovka, preinštalujte flash player (stačí stiahnuť Najnovšia verzia). Ak sa video „trhne“, dajte ho na pauzu a nechajte ho trochu načítať. Prehrávač na prezeranie flash videa na domácom počítači. Rozbaľte video na celú obrazovku. Ak píšu „Video sa nenašlo“, „Video sa nenašlo“ - reštartujte video znova.

Editor CodeVisionAVR - oficiálna stránka

Ak mikrokontrolér nebliká, potom:
1) Netrápte sa. Odložte dizajn, oddýchnite si, dajte si šálku čaju a relaxujte. Skutočné návrhy zriedka začnú fungovať prvýkrát - to je normálne, najmä pre začiatočníkov (pretože existuje príliš veľa nezohľadnených faktorov, ktoré mozog nie je schopný okamžite pochopiť).
Profesionálni vývojári prerobia svoje návrhy niekoľko desiatok krát :)))
Zaujímavá vlastnosť mozgu: Ako povedal Mark Twain: "Neodkladaj na zajtra to, čo môžeš odložiť na pozajtra." Niekedy v bode prázdneho rozsahu nie je možné napísať program, vymyslieť elektronický obvod a tak ďalej. V tomto prípade nemusíte vynakladať ďalšie úsilie. Vložte úlohu do podvedomia a počkajte pár dní. Po prestávke sa všetko často vyrieši samo. A oveľa rýchlejšie a lepšie, ako keby ste trpeli tých istých pár dní od rána do večera.

2) Po odpočinku znova starostlivo skontrolujte:
Výživa - nie nižšie ako 4,5 voltu, je vhodné zobrať ho z USB počítača, ku ktorému je programátor pripojený (aby sa vylúčili prípadné vyrovnávacie prúdy). Skontrolujte napätie pomocou testera;
Sú káble z počítača do programátora príliš dlhé? Dochádza k interferencii s dlhými vodičmi a zvyšuje sa pravdepodobnosť zlyhania prenosu údajov;
Mohol by byť kábel vo vnútri zlomený? Zakrúžkujte všetky vodiče testerom.
Pomiešali sa drôty? MOSI, MISO, SCK, resetovať, GND, uviazol na správnom mieste?
Je programátor správne nastavený Nastavenie >> Programátor;
Projekt >> Konfigurovať >> C kompilátor;
Je typ kryštálu správny? Nástroje >> Programátor čipov;

Fuzy sa nedotkol? Ak sa dotknete, budete musieť vložiť externý kremeň.
Vyčistili ste čip pred blikaním? Nástroje >> Programátor čipov >> Program >> Vymazať čip;
Niekedy to pomôže kompletné čisteniečip Nástroje >> Programátor čipov veľký k
Tlačidlo Reset Chip (ekvivalent odoslania impulzu na kolík RESET);
Umiestnite ho na spodok okna Nástroje >> Programátor čipov tri kliešte Skontrolujte podpis, Skontrolujte vymazanie , Overiť ;
Alebo naopak - zrušte začiarknutie týchto políčok. Skúste to takto a takto.
Ak všetko ostatné zlyhá, potom objednať nový čip. Odniekiaľ vytiahnutý čip sa môže ukázať ako spálený a naladený na externý generátor a s vypálenými kolíkmi a podobne.
Áno, a v obchodoch sú niekedy vadné nasávané, tk. držia ktovie kde. Niekedy je jednoduchšie kúpiť nový čip, ako myslieť na to, čo sa stalo s tým starým (ale nevyhadzujte ho, keď získate skúsenosti - prestavte).
Ak nájdete starý počítač- skús
e robiť LPT programátor(náhle sa pošmykol chybný USB programátor?). Nie je nič jednoduchšie ako LPT programátor; Robil som to na desiatke počítačov – vždy to začalo fungovať hneď a nikdy sa nevyskytli žiadne poruchy.
Pred inštaláciou si zapamätajte uzemni si ruky o batériu, vodovodnú batériu alebo masívnu oceľovú konštrukciu (plot, knižnica), prípadne si kúpte antistatický remienok na zápästie alebo podložku (statická elektrina z rúk môže poškodiť krehké mikroobvody).
Nakoniec ten najzvrátenejší spôsob - skúste iný počítač. Stáva sa to základné dosky sú zabugované, vyhoreli na nich porty, vzdialili sa drôty od kontaktov atď.

Naučte sa mikrokontroléry nielen z videí z tejto stránky. Mozog potrebuje rozmanitosť. Čítajte knihy, fóra, Wikipédiu a iné stránky. Požiadajte o radu svojich priateľov z elektroniky. Cvičte a experimentujte na vlastnej koži. Zhromažďovať vedomosti a skúsenosti.