Programovanie pamäte programu typu FLASH
Úloha:
- Prečítajte obsah pamäte programu AT89S8252
- Rozhodnite či je pamäť programu prázdna, alebo nie.
- Zapíšte do pamäte programu od adresy 0 údaje 01 02 03 04 05 06 07 08 a text Ahoj
od adresy 8.
- Zapíšte do zvyšných pamätových buniek pamäte programu hodnotu 0
- Zapíšte do pamäte programu nejaký volne dostupný program pre mikroradič 8051.
- Vymažte obsah pamäte mikroradiča.
Čo budeme potrebovať:
Obvod AT89S8252 alebo AT89S51, AT89S52, AT89S53 |
Ja používam AT89S8252, pretože je to zlepšená 8051. Je síce
dosť drahý, ale zato má najviac možností a bezproblémovo sa
programuje pomocou programovacieho softvéru PonyProg. Kto chce šetriť
kúpi obvod AT89S51. Ten je najjednoduchší a najlacnejší. Plne však postačuje
aj na hodne zložité projekty.
|
kryštál
|
Kryštál slúži ako rezonančný prvok v obvode oscilátora mikroradiča,
ktorý vyráva hodinové impulzy potrebné pre chod mikroradiča.
Pre programovanie vyhovuje akýkoľvek z pracovného rozsahu, teda menší
ako 24 MHz.
|
dva kondenzátory 20pF - 40pF
|
Pripájajú sa medzi vývody kryštála a zem. Zabezpečujú rozbeh a chod
oscilátora.
|
ISP programátor |
Slúži na manipuláciu s vnútornou pamäťou mikroradiča. Sú rôzne typy.
Používam ISP programátor pripojený na paralelný port. Pôvodné
označenie je STK200. Dá sa kúpiť hotový, alebo postaviť zo stavebnice,
alebo postaviť amatérsky. Stavebnicu
programátora ISP01 si môžete objednať aj
na mojej adrese
. Existujú ďalšie druhy programátorov napríklad na sériový port,USB port.
|
Napájací zdroj |
K napájaniu je potrebný zdroj stabilizovaného jednosmerného napätia 5V.
Predpokladám že takýto zdroj sa nájde vo výbave každého záujemcu o eletrotechniku.
Dá sa jednoducho postaviť z hocijakého adaptéra s jednosmerným
napätím okolo 9V a integrovaného stabilizátora 7805.
|
Kontaktné pole
|
Pre pohodlné a rýchle zapájanie, overovanie činnosti obvodov je to neoceniteľný
prostriedok. Dá sa zakúpiť v obchode s elektrotechnickými súčiastkami.
|
Osobný počítač
|
Vyhovuje akýkoľvek PC aj veľmi chabej konfigurácie s OS Windows alebo Linux.
Kedže Windows je trochu viac rozšírený budem sa lekcia uberať windowsowskou
cestou. Linuxový užívateľ bude postupovať analogicky a určite si podľa
windows návodu poradí.
|
Program PonyProg
|
PonyProg je voľne dostupný program pre programovanie rôznych obvodov pomocou
rôznych typov ISP programátorov. Autorom je Claudio Lanconelli a získať sa
dá z jeho web stránky.
Existuje vo verzii pre OS Windows aj OS Linux. Treba používať verziu
označenú ako PonyProg2000. Ja mám momentálne verziu 2.06c.
|
Katalógový list AT89S8252
|
I keď sa dá veľa informácií získať na webových stránkach, často
sa tu nachádzajú drobné chybičky spôsobené preklepmi a niekedy
aj poriadne chyby spôsobené neznalosťou a neskúsenosťou autora.
Kátalógový list výrobcu je berná minca ktorá by mala uvádzať presné
informácie. (Aj výrobca sa v dokumentácii občas pomýli)
|
Teoretická príprava:
ISP (In Side Programming) je moderný spôsob programovania pamätí mikroradičov
pomocou sériového synchrónneho rozhrania. Ak nerozumiete pojmom sériové a
synchrónne rozhrianie vôbec to nevadí. Presný popis je v katalógovom liste
výrobcu pre každý typ mikroradiča. Pre náš účel zatiaľ postačí vedieť, že
pri programovaní sa využívajú štyri komunikačné signály RESET, MOSI, MISO a CLK.
Tieto sa nachádzajú jak na mikroradiči, tak na ISP programátore a treba ich
navzájom prepojiť. Okrem toho mikroradič potrebuje k svojej činnosti
zdroj hodinových impulzov a samozrejme napájanie stabilizovaným jednosmerným
napätím 5V.
Pamäť programu AT89S8252 má veľkosť 8kiBy a v nenaprogramovanom stave obsahuje
hodnotu logickej jedna. Z prázdneho obvodu by sme teda mali prečítať samé
hodnoty 0FFH (=11111111b=255). Inštrukcia skrytá pod číslom 0 je NOP,
čo je skratka slov No Operation (žiadna operácia).
Program pre mikroradič býva k dispozícii v dvoch rôznych tvaroch. Ten ktorý
využijeme teraz sa volá preložený strojový kód. Ten býva ukladaný vo formáte
Intel HEX. Súbor obsahuje binárne čísla v hexadecimálnej sústave
reprezentujúce jednotlivé inštrukcie programu. Ak sa do takéhoto súboru
pozriete uvidíte nezrozumitelnú tabuľka plnú čísel a písmen. Čo je nezrozumiteľné
pre človeka je ale čitatelné pre programovací program (PonyProg) a hlavne
pre mikroradič. Každé číslo označuje nejakú jednoduchú operáciu, ktorú vie vykonať.
Vhodným usporiadaním inštrukcí vzniká program ktorý plní nejakú funkciu.
Proces pri ktorom človek zapisuje za sebou jednotlivé inštrukcie tak aby vznikol
zmysluplný program sa volá programovanie v pravom slova zmysle.
Programovaním obvodu máme na mysli iba prenos a zapamätanie programu do pamäte
mikroradiča. Dnes sa to deje elektrickou cestou. Naprogramované údaje
sú volatilné - zostávajú v pamäti aj po odpojení napájacieho napätia až po dobu
10 rokov. A navyše sa tieto pamäte dajú opakovane preprogramovávať. Výrobca
zaručuje minimalné 1000 násobné preprogramovanie pamäte programu.
Je to tzv. technológia FLASH. Asi ju poznáte zo svojich USB klúčov a možno ste
ani netušili, že pôvodne bola vyvinutá práve pre mikroradiče. Názov FLASH totiž
označuje že takýto mikroradič môžete bleskovo naprogramovať, preprogramovať
čo u technológií používaných pre desiatimi rokmi trvalo desiatky minút, ba
staršie technológie vyžadovali čas až niekoľko mesiacov.
Schéma zapojenia:
Ako prvé pri práci s mikroradičmi si treba uvedomiť že tieto súčiastky sú
citlivé na statickú elektrinu. Statickým výbojom sa môžu zničiť.
Preto je vhodné minimalizovať nebezpečenstvo vzniku statickej elektriny a
nedotýkať sa zbytočne vývodov súčiastok rukami.
Schéma zapojenia je veľmi jednoduchá. Programovaný mikroradič je pripojený
k ISP programátoru štyrmi signálmi MOSI, MISO SCK a RESET. Okrem toho
k správnej činnosti potrebuje zapojený obvod oscilátora. Ten je zapojený presne
podľa výrobcom
doporučeného zapojenia s kryštálom.
Tvoria ho súčiastky Q1, C1, C2. Hodnoty súčiastok na schéme nie sú kritické.
Krystál môže mať ľubovolú rezonančnú frekvenciu menšiu ako 24MHz. Hodnoty kondenzátorov
môžu byť v rozsahu 20pF až 40pF.
K napájaniu je potrebných jednosmerných stabilizovaných 5V, ktoré sa pripájajú
k napájacím vývodom mikroradiča a ISP programátora. ISP programátor má ochrannú diodu
proti prepólovaniu napájacieho napätia.
Mikroradič by ale prepólovanie neprežil.
Treba si preto dať pri zapájaní pozor. Inak v zapojení nie je žiadna iná zrada.
Signál EA by pri programovaní nemusel byť pripojený na logicku jednotku (+5V).
Je to však urobené preto, aby sa po skončení programovania program rozbehol
z práve naprogramovanej vnútornej pamäte programu.
Zapojenie súčiastok
Zapojenie realizujeme najjednoduchšie na kontaktnom poli. Vyrábať plošný spoj
pre toto zapojenie nemá zmysel. Pri zapájaní sa orientujte podľa v katalógu
uvedeného
rozmiestnenia vývodov mikroradiča.
Pre pripojenie ISP je vhodné si postaviť jednoduchú redukciu tvorenú konektorom
LPH10S a konektorovými kolíkmi. Túto redukciu potom vložíme do kontaktného poľa
a poprepájame podľa schémy zapojenia.
Tieto obrázky ukazuju pohľad na vývody redukcie pri pohľade zhora.
Výsledné zapojenie na kontaktnom poli je na nasledujúcom obrázku.
Do konektora treba pripojiť kábel z ISP programátora a ISP programátor treba pripojiť
na paralelný port PC. Potom pripojíme napájacie napätie. Týmto sa skoncila práca
s hardware.
Nastavenie programu PonyProg:
Ako programovací software doporučujem program PonyProg Claudia Lanconelliho.
Je volne použitelný a získať ho môžete zo stránky www.lancos.com
Inštalácia programu je jednoduchá zaáležitosť a netreba ju popisovať.
Pri prvom spustení treba urobiť dve konfiguračné nastavenia. Ako prvú urobte kalibráciu
príkazom . Po vyvolaní
tejto funkcie sa objaví toto dialogové okno.
Kalibrácia slúži na detekciu rýchlosti počítača. Podľa nej sa potom nastaví
PonyProg tak aby časové priebehy programovacích signálov boli optimálne.
Kalibrácia trvá pár sekund a
stačí ju urobiť jeden jediný krát. Zostane zapamätaná v konfiguračnom súbore.
Druhé nastavenie vyvolajte príkazom
Červenou farbou označené časti treba nastaviť do tejto podoby. V prvom rade nastavte
paralelný port, pretože sem je pripojený programátor. Z ponuky v rozbaľovacom okne
vyberte možnosť AVR ISP IO. Posledná voľba ktorú treba urobiť pre obvody typu AT89S...
je aktivovať invertovanie signálu RESET. ISP programátor bol pôvodne určený
pre rodinu mikroradičov AVR a tieto majú aktívnu logickú úroveň logickú jednotku.
Čo je presne opačne ako je tomu u rodiny 8051 kde je RESET aktívny v logickej nule.
Ak máte operačný systém Windows NT alebo XP je potrebné mať administrátorské práva
aby, ponyProg mohol komunikovať s paralelným portom. Tieto OS nedovoľujú
za normálnych okolností aplikačným programom priamy prístup k vstupno výstupným
portom PC.
Ešte nás čaká posledné nastavenie typu programovaného obvodu v programe PonyProg.
Dá sa to dvoma spôsobmi. Oba sú zvýraznené červenou farbou na obrázku. Prvý postup je
pomocou meny postupom .
Druhou možnosťou je použiť rozbaľovacie voľby v prvej nástrojovej lište.
Tu vidíte prečo som doporučoval obvod AT89S8252. PonyProg vie programovať okrem neho
ešte AT89S53, ale nedokáže programovať AT89S52 a AT89S51. Mám taký pocit že som niekde
na webe čítal že úpravou konfiguračného súboru sa dá donútiť aj k programovaniu týchto obvodov.
Ale kedže ich nepoužívam neviem poradiť. Ak máte práve tieto obvody, treba sa poobzerať
po inom programovacom software. Určite taký na nete nájdete.
Čítanie pamäte programu:
Operácia čítania sa dá tiež urobiť niekoľkými spôsobmi. Zase sú tu dva postupy, pomocou menu
, alebo ikonou v nástrojovej lište
(oba spôsoby sú zvýraznené červenou farbou). Všimnite si, že na čítanie sú k dispozícii
celkovo až tri rôzne príkazy. Prvý príkaz je
druhý je
a tretí
.
Týmto trom príkazom zodpovedajú aj tri ikony v nástrojovej lište rozlíšené farbou.
V teoretickej príprave som zatajil že AT89S8252 má okrem pamäte programu aj datovú pamäť
typu EEPROM. Obe pamäte sa zobrazujú v tomto jedinom okne a sú odlíšené farebne.
Pamäť programu je vypisovaná zelenou farbou a pamäť dát je vypisovaná farbou modrou.
Netreba sa s tým teraz zaťažovať. Iba o tom treba vedieť, pretože je zbytočné
používať príkaz ak chceme pracovať iba s pamäťou
programu. Zbytočne by to zdržovalo čo bude ešte zjavnejšie pri operácii programovania.
Počas čítania sa zobrazuje postupujúci pruh ktorý symbolizuje množstvo prečítaných údajov.
Po skončení čítania sa objaví upozornenie na úspešne vykonané čítanie i keď
množstvo prečítaných údajov je trochu zavádzajúce. Veľkosť pamete programu je
8kiBy. Údaj v okne hovorí 10kiBy. To je celkový počet buniek pamäte programu a pamäte údajov.
Ak sa pri operácii čítania stane že stavový pruh stojí na začiatku a vôbec sa nehýbe
je zle. Programátor nedokáže prečítať pamäť programu. Možných príčin je hneď niekoľko:
- V systéme Windows XP a NT nemáte administrátorské práva.
- Nenastavili ste si správny typ obvodu.
- Nenastavili ste paralelný port, alebo AVR ISP I/O programátor.
- Nenastaveli ste inverziu signálu RESET.
- Nie je pripojený alebo zapnutý zdroj 5V napájania
- Chybne pripojené signály programátora k mikroradiču.
- Chybne zapojený obvod oscilátora.
- Zničený mikroradič napríklad prepólovaním.
Samozrejme že sú možné ešte aj iné príčiny prečo to nefunguje. Teraz nezostáva
nič iné len si všetko prejsť odznova a poriadne prekontroľovať. Chyba sa musí
skôr alebo neskor nájsť.
V prípade úspešného čítania to môže vyzerať napríklad takto:
V okne sa objavia tri oblasti, na obrázku zvýraznené červenou farbou.
Prvý stĺpec obsahuje adresu prvého údaja ktorý nasleduje za znakom zátvorka.
Adresa je vypísaná v hexadecimálnej sústave.
Prostredná časť zobrazuje údaje na jednotlivých adresách v pamäti programu a
neskôr aj v pamäti dát. Údaje sú opäť vypísané v hexadecimálnej sústave.
Jedna dvojica znakov predstavuje jedno pamäťové miesto. Celkovo je
v jednom riadku vypísaných 16 pamäťových miest. Adresa v nasledujúcom riadku
je preto o 10H viac ako v predchádzajúcom riadku. Ak sa Vám nezdajú tie počty
treba si uvedomiť že 16 desiatkovo je 10 hexadecimálne a už by to malo byť jasné.
Vedieť používať hexadecimálnu sústavu pri mikroradičoch je veľká výhoda.
V poslednom vyznačenom stĺpci sa tie isté údaje zobrazujú ako ASCII znaky.
Je to výhodné ak sa v pamäti nachádzajú uložené nejaké texty tak ich ihneď
uvidite. V pamäti programu ale hlavne bývajú inštrukcie a preto tento
znakový výpis vyzerá dosť úchvatne ako náhodná zmäť písmen. Pokiaľ hodnota
uložená na pamäťovom mieste sa nedá zobraziť ako znak tak je tam potom zobrazený
znak bodka. Celkovo si všimnite že sa tam nachádza 16 znakov bodka. Čo je zase
jeden riadok údajov ale v inom formáte ako v prostrednej časti.
Na obrázku je vidno že obsah pamäte je nejaký jednotvárny. Každá bunka
pamäte obsahuje hodnotu 0FFH. Ak si to prevedieme na binárne číslo tak je to
11111111 binárne. Na začiatku som v teórii naznačil že takáto pamäť je prázdna.
To je stav v akom sa dodáva mikroradič od výrobcu.
A takto to vyzerá ak pamäť programu nie je prázna a obsahuje nejaký program.
Teraz vidíme strojový kód programu pozostávajúci z jednotlivých inštrukcií
uložených za sebou v pamäti programu. Každé číslo predstavuje operačný kód, alebo
údajový parameter pre operačný kód. Všimnite si že niektoré časti pamäte sú možno
nenaprogramované, pretože obsahujú znaky 0FFH (napr od adresy 3 po adresu 0AH).
Možno sú to ale údaje, ktoré zhodou okolností majú tiež hodnotu 0FFH, alebo to
môže byť aj operačný kód instrukcie s hodnotou 0FFH. To sa takto bez hlbšieho
pohľadu nedá určiť.
Čo by sa ale určiť dalo je dĺžka programu. Treba nájsť sa nachádza posledná hodnota
nerovná 0FFh. Pozor na to že v pamäti môžu byť prázdne okná a tak treba hľadať až do konca.
Potom si odrátame adresu nasledujúcej bunky s hodnotou 0FFh (prvá volná bunka pamäte programu)
Hodnota tejto adresy je hľadaná dĺžka programu. Napríklade na obrázku je to
adresa 19EH čo je 414 desiatkovo. Program má teda celkovú dĺžku 414 byte.
Pre prevod z hexa do desiatkovej sústavy môžete použiť vedeckú kalkulačku z príslušenstva
windows.
Iste viete že programy sa často kradnú ich autorom. Mikroradiče preto obsahujú
bezpečnostnú poistku, ktorá po aktivovaní zabráni vyčítaniu pamäte programu.
Môže sa teda ľahko stať, že budete chcieť prečítať program z mikroradiča
ktorý ste zakúpili v nejakej stavebnici, alebo vám ho niekto poslal naprogramovaný.
Po čítaní sa však pamäť javí ako prázdna i keď určite viete že tam program je,
pretože v zariadení mikroradič funguje a vykonáva svoju činnosť. Znamená to len toľko
že autor si tento program cení a neuvoľnil ho k verejnému šíreniu. Neexistuje
žiadna možnosť ako ten program z mikroradiča vyčítať. Dá sa iba zistiť že program je
v pamäti uzamknutý, alebo sa dá pamäť aj uzamknutie vymazať.
Pozor ešte na jednu vec. Ak čítanie prebehlo úspešne ešte to neznamená že
ISP programátor naozaj komunikuje s mikroradičom. Pri niektorých chybách
v zapojení môže nastať stav, že čítanie síce prebehne ale namiesto skutočných
informácií z pamäte programu sa vyčítajú iba hodnoty 0FFH alebo 00, alebo rôzne pravidelné kombinácie.
Tieto chybné zapojenia sa prejavia najjednoduchšie pri pokuse naprogramovať
mikroradič.
Manipulácia s programovacím buferom:
Aby sme mohli vyskúšať programovanie pamäte programu je treba vložiť do oblasti
pamäte určenej k programovaniu nejaké hodnoty. Túto pamäť volá PonyProg programovací
bufer. Obsah bufera je vlastne zobrazený v okne a momentálne obsahuje údaje 0FFh.
Pre prvý pokus s programovaním sa ani nebudeme snažiť naprogramovať do mikroradiča
nejaký "rozumný" program. Na overenie toho že to naozaj funguje bude úplne stačíť
ak sa nám tam podarí zapísať niekoľko ľubovolných hodnôť (viz. zadanie na začiatku).
Aby sme mohli do bufera zapísovať treba zadať príkaz
. Opätovným zadaním príkazu
sa zápis do bufera zakáže. Počas povoléného zápisu môžete kliknúť na ľubovolné
miesto v pamäti a zmeniť ho. Dialogové okno umožňuje vkladať hodnoty v hexadecimálnej
a desiatkovej sústave alebo ako znak.
Vypniť celú pamäť programu predchádzajúcim spôsobom na rovnakú hodnotu by bolo zdĺhavé.
Blok pamäte sa dá nastaviť na nejakú hodnotu jedným príkazom
.
Zadáva sa počiatočná a koncová adresa bloku pamäte. Hodnoty sa zadávajú v štýle jazyka C
hexadecimálne čísla začínajú znakmi 0x, desiatkové hodnoty sa zapisujú priamo.
Vkladanie textu sa robí kliknutím na časť okna ktorá zobrazuje obsah pamäte
ako znaky. Treba si presne nájsť miesto kam treba kliknúť, aby sa text začal
vkladať od tej adresy. Jeden znak reprezentuje jedno pamäťové miesto.
V takomto dialogovom okne sa zadáva text. Dĺžka textu môže byťľubovolne dlhá.
Jednotlivé znaky sa budú ukladať za sebou do bufera.
Ak chcete splniť zadanie programovací bufer by mal vyzerať tak ako to vidíte na obrázku. Pre kontrolu
si prelistujte celú pamäť programu a uistite sa že celá obsahuje hodnotu 0 až do jej konca.
Pamäť programu poznáte podľa farby výpisu hodnôt, ktorá je zelená.
Na záver malé doporučenie. Ak už nehodláte meniť obsah programovacieho bufera
deaktivujte jeho editáciu postupom .
Budete si tak istý že sa programovací bufer nezmení nejakým nopatrným kliknutím.
Programovanie pamäte programu:
Ak sú v programovacom buferi pripravené údaje, ktoré chceme vložiť do pamäte
programu. Môžeme aktivovať funkciu zápisu. Podobne ako pri čítaní sú tu tri
príkazy a tri ikony.
Pretože ikony zakrýva rozbalené menu, tak som ich premiestnil na pravú stranu meny.
Červene označené príkazy treba používať ak chcete zapisovať iba pamäť programu.
Zápis pamäte dát trvá dosť dlhý čas a pokiaľ pamäť dát nepoužívame je použitie
príkazu zbytočné plytvanie časom.
Po vyvolaní niektorej operácie zápisu sa požiada dialogovým oknom o potvrdenie
zápisu.
Zápis je vážna vec, pretože sa touto operáciou prepíšu pôvodné údaje
v pamäti programu. Omylom vyvolaná funkcia zápisu by mohla zničiť cenný program.
Preto táto otázka. Ak chcete určite zapisovať potvrdte operáciu zápisu
tlačidlom Yes.
Operácia zápisu je podstatne pomalšia ako je čítanie. O priebehu zapisovania
nás informuje postupujúci pruh a percentuálne vyjadrenie počtu zapísaných údajov.
Po skončení zápisu sa automaticky spustí verifikácia zapísaných údajov. Po skončení verifikácie
sa už len zobrazí oznam o úspešnom zápise a mikroradič je naprogramovaný.
Moje skúsenosti sú, že ISP programovanie je veľmi spoľahlivé a verifikácia
po zápise nie je nutná. Ak chcete ušetriť trochu času, môžete v konfiguračnom súbore
programu PonyProg zmeniť riadok
VerifyAfterWrite=YES
na
VerifyAfterWrite=NO
Ušetríte tak čas potrebný na verifikáciu po každom programovaní. Pokiaľ by ste pri vypnutej
verifikácii predsa len niekedy chceli skontroľovať či sa obsah programovacieho bufera
zhoduje z obsahom pamäte programu mikroradiča môžete to urobiť príkazom
. Konfiguračný súbor
sa nachádza v adresári v ktorom je Ponyprog nainštaľovaný. Zvyčajne je to
C:\Program Files\PonyProg2000. Konfiguračný súbor sa volá PONYPROG2000.INI
a upravovať ho treba editorom ktorý nevkladá do textu formátovacie informácie,
napríklad notepadom z príslušenstva Windows.
Čas na programovanie sa dá skrátiť ešte viac ak počas programovania
vo vhodnom okamihu stlačíte tlačítko Abort. Ak viem, že program ktorý programujem
má 500byte je to niečo cez 10% celkovej kapacity pamäte. Tlačidlo Abort tak môžem s kľudom
stisnúť už vtedy, keď stavové okno signalizuje, že je už naprogramovaných 20% obsahu pamäte.
Ak sa po potvrdení zápisu podozrivo dlho nič nedeje a nakoniec sa objaví takého hlásenie.
Znamená to nefunkčnosť komunikácie medzi PonyProg - ISP programátorom - mikroradičom.
Možné dôvody som už popísal pri operácii čítania. Pozor
niektoré chyby zapojenia sa prejavia až pri zápise. Pri čítaní sa zdá že všetko funguje
ale to je len zdanie. Napríklad mne funguje čítanie aj pri vypnutom napájaní.
Akurát sa namiesto údajov vyčítajú samé hodnoty 0.
Načítanie programu do programovacieho bufera:
Pomaly ale isto sa blížime ku koncu tejto lekcie. V predošlej časti sme
si ukázali, že sa dá programovací bufer naplniť ručne potrebným strojovým
kódom a potom ním naprogramovať mikroradič. Táto cesta sa používa
veľmi výnimočne. Zvyčajne iba vtedy ak nemáme program uložený v súbore
a iba si ho vieme načítať z mikroradiča. Potom niečo ručne upravíme, napríklad
nejaké texty. A naspäť ho zapíšeme do mikroradiča. Za čias svojem mladosti, keď neexistoval
internet tak sa tieto programy v strojovom kóde publikovali v časopisoch a
záujemca si ich naozaj ručne prepisoval do programovacieho programu. Stačila
však jediná chybná číslica a program nepracoval úplne, alebo sa za určitých podmienok
zrútil. Oveľa pohodlnejšie by samozrejme bolo ak by sa dal
do programovacieho bufera načítať program v strojovom kóde z nejakého súboru.
Firma Intel nám k tomuto účelu vytvorila formát súboru označovaný
ako Intel Hex. Najjednoduchšie sa k takémuto súboru dopracujete tak,
že niekto ho zverejní na webovej stránke. Odtiaľ si ho bežným spôsobom
prenesiete na svoj počítač. Ako príklad môže poslúžiť moja stránka
z krajskéj súťaže Zenit v elektrotechnike 2002
kde som zverejnil aj výsledný strojový kód programu.
Program dostaneme do programovacieho bufera PonyProg pomocou príkazu meny
, alebo pomocou
ikony
Následne sa otvorí takéto dialogové okno
Najprv si treba vybrať typ súboru na koncovku HEX a potom ho nájsť a otvoriť.
Ako vidíte PonyProg dokáže čítaj aj iné formáty súborov než je Intel Hex.
Po otvorení sa súbor načíta do programovacieho bufera a môže sa ísť
zapisovať do mikroradiča.
Takto vyzerá program ZENIT02.HEX načítaný do programovacieho bufera. Vidieť
že má máličko pod 0,5 kiBy. To stačí na to aby dokázal robiť sedem rôznych svetelných
efektov s možnosťou zmeny rýchlosti blikania. Zvyšných 7,5 kiBy je prázdnych a
mohlo by sa ďalej využiť na tvorbu ešte sofistikovanejších svetelných efektov.
Pokiaľ si podľa schémy zariadenie postavíte a vložíte tam naprogramovaný
mikroradič musí to fungovať.
Vymazanie pamäte mikroradiča:
Mazať pamäť mikroradiča pred ďalším programovaním nie je nutné. Ba je to skôr
nežiadúce ako žiadúce. Pri programovaní a mazaní pamäťová bunka trpí a máličko
sa jej zhoršia parametre výdrže. Preto by sme mali obvody programovať
čo najmenej. Výrobca zaručuje minimálny počet programovacích cyklov 1000
pri dobe zapamätania informácie 10 rokov. Typ 89ATS... je konštruovaný tak,
že bunky sa môžu rovno prepisovať. Ak by ste ich najprv vymazali a potom
programovali trpia vlastne dvakrát.
Jediný dôvod prečo vymazávať pamäť mikroradiča je ak chcete aby sa
vymazal ochranný zámok ktorý zabraňuje prepísaniu a prečítaniu pamäte programu
alebo dát. Uzamykanie je bezpečnostná funkcia proti softvérovým zlodejom.
Uzamknutý obvod sa dá odblokovať jedine kompletným vymazaním všetkých pamätí.
Po operácii mazania sa mikroradič môže normálne programovať ďalej ako by nikdy
zamknutý nebol.
Dobre si ale rozmyslite či chcete vymazať zamknutý mikroradič. Po vymazaní
sa už nedá vrátiť pôvodný obsah pamätí späť. Teda funkciu ktorú vykonával už vykonávať
nebude. Žiadna operácia UNDELETE neexistuje.
Operácia mazania sa
aktivuje prikazom , alebo ikonou
. Kedže ide opäť o nebezpečnú operáciu nasleduje potvrdzovací dialóg
a po jeho potvrdení sa obvod prekvapivo rýchle vymaže. Operacia
mazania je spoločná aj pre pamäť programu aj pre pamäť dát aj pre uzamkýnacie bity.
Jeden príkaz tak kompletne vymaže celý obvod.
Nemusíte sa príliš obávať toho že sa mikroradič okamžite zničí
ak ho preprogramujete 1000 krát. Výrobca už len nezaručí že tam program
vydrží 10 rokov. Keď vytváram program pre mikroradič tak ho pokusne
naprogramujem denne aj 100krát. Za mesiac to môže byť podľa usilovnosti
a toho ako sa mi nedarí aj 2000 krát. Napriek tomu som ešte nevyhodil žiadny
vývojový mikroradič z dôvodu že by si už nechcel pamätať.
FLASH pamäť si stále pamätá dostatočne spoľahlivo aj keď
niektore už majú roky. Samozrejme takéto pokusné obvody
nemôžem dať do hotovej aplikácie.
Presný a úplný popis programovania radiča
AT89S8252 nájdete v katalógovom liste.
Záver:
Toto zapojenie programovacieho rozhrania na kontaktnej doske
doporučujem nerozoberať. Využijete ho v budúcich lekciách.
Na záver zhrniem čo všetko by ste mali vedieť po dôkladnom
preštudovaní a precvičení tejto lekcie:
- Zapojiť obvod oscilátora s kryštálom.
- Pripojiť ISP programátor k mikroradiču.
- Prečítať vnútornú pamäť programu.
- Zapísať vnútornú pamäť programu.
- Vymazať vnútornú pamäť mikroradiča.
- Vedieť analogicky postupovať pri iných mikroradičoch s ISP.
Na záver niekoľko úloh na overenie správnosti porozumenia problematike