Mikropočítače jsou, podobně jako LCD moduly, součástky nové generace (konstruktérů). Běžně se s nimi setkáváme - v kalkulačkách, v automatech na jízdenky, v počítačích PC a i tam, kde bychom to třeba nečekali. Mají uplatnění především tam, kde je toho potřeba hodně udělat na malém prostoru. Jsou to obvody velmi vysoké integrace.

Přestože je jejich programování docela obtížné, začíná se jich v elektronických časopisech hodně používat. Podezírám je z toho, že si tak trochu usnadňují práci. Ono je to jednoduché. Moderní zapojení - minutka do kuchyně. Když moderní, tak s mikropočítačem ! Nemáte programátor a ani neumíte programovat ? Nevadí ! Dodáme Vám stavebnici i s naprogramovaným mikropočítačem ! Stačí jen vložit do patice...a je hotovo ! To vše za úžasných...(několik set Kč). To už je lepší postavit minutku klasicky s 1 tranzistorem, 1 kondenzátorem, 1 rezistorem a spínačem. Vyjde to na 10 Kč, je to stejně velké a plní to zhruba stejnou funkci. U složitějších zapojeních (třeba 5 integrovaných obvodů) je však použití mikropočítače kolikrát jednodušší a většinou i levnější. Výhodné je použití mikropočítačů také tam, kde by bylo nutno vyrobit zakázkový integrovaný obvod, který stojí desetitisíce. Mikropočítače stojí od asi 75 Kč (!) výše a pokud je člověk umí programovat, lze s nimi vyřešit téměř každé zapojení. Většinou v sobě mají i AD převodník, takže jejich použití není jen v číslicových zapojeních. Pokud Tě mikropočítače zaujaly a chtěl by si s nimi i něco sám naprogramovat, budou následující řádky (stránky) patřit jen a jen Tobě. Připomínám, že dotazy můžeš směřovat na adresu marekzprahy@seznam.cz.

Základní pojmy

Řadič (Control Unit, Controller) - lze použít pro označení libovolného automatu, zkrátka něčeho, co je schopné víceméně samostatně pracovat. Řadičem lze tedy nazvat i mikropočítač. Z čeho se skládá bude vysvětleno dále.

Doba (Time-Period) - všechny mikropočítače jsou synchronizovány tzv. hodinovým signálem, v jehož rytmu pracují. Doba (perioda) je časový úsek mezi dvěma impulsy hodin (stejnolehlými body). Hodinový signál většinou zajišťuje krystal. Doba je důležitá např. při programování čekacích smyček.

Takt (Machine Cycle) - jedná se o skupinu dob, která je nějak významná z hlediska činnosti mikropočítače. Často se nazývá krok, strojový cyklus nebo instrukční subcyklus.

Instrukční cyklus (Instruction Cycle) - Instrukční cyklus je skupina všech dob, které jsou nezbytné k uskutečnění jedné strojové instrukce. Instrukční cyklus se skládá z jednoho nebo i více taktů.

Strojová instrukce - kódovaný příkaz k vykonání strojové instrukce, často se mluví jen o instrukci. Každý mikroprocesor má určitou předem definovanou sadu instrukcí uloženou ve své paměti.

Toto byly základní pojmy, které se Ti budou možná hodit při čtení odborné literatury. Ještě více termínů nalezneš v knize Pavla Valáška a Borise Dědiny Mikroprocesory a mikropočítače, Nakladatelství technické literatury, n.p., Praha, 1983. To, že je kniha o něco starší, nevadí, protože se technické termíny většinou nemění a navíc je to značně nadčasová kniha. Mají ji např. v Městské knihovně v Praze (www.mkp.cz) nebo ve Státní technické knihovně v Praze (www.stk.cz).

Až dosud to bylo všechno společné pro všechny mikropočítače, dokonce i počítače. Nyní se začne kruh uzavírat. Mikroprocesory vyrábí řada firem - Motorola, Atmel, Arizona Microchip, kterou v ČR výhradně zastupuje fa. GM Electronic (www.gme.cz) a jiné. "Štěstí" se však přiklonilo k druhé jmenované firmě, protože nabídla dobrý "kompromis" (nejnižší cena, dobrá dostupnost, vnitřní paměť Flash od 1KB do 8KB,...viz dále parametry).

Atmel

Pokud se Ti zdá akční rádius ATMEL příliš malý, tak je mi líto, ale ještě se zúží. A to na mikroprocesory Atmel řady AT89CX051 (x udává počet KB vnitřní paměti - vyrábí se pro x = 1, 2, 4 a prý i 8).

Všechna níže uvedená data se dají víceméně použít pro všechny výše uvedené typy, nicméně hlavním typem, ke kterému se vše bude vztahovat je...

AT89C2051

Datasheet ke stažení zde, od firmy Atmel. Nepamatuji si ale přesně adresu , ze které je to staženo, tak je to na mém mujwebu (200KB,zip,pdf).

Pokud Tě nic nepřesvědčilo ke stažení (je tam i dost obrázků a schémat) nebo neumíš anglicky, nevadí, protože dost z toho je uvedeno zde.

 

Základní parametry:

Pohled dovnitř AT89C2051

V blokovém schématu firmy Atmel jsem vyznačil překlad u částí, které jsou důležité. U ostatních jsem se překladu zdržel, protože by byl zavádějící a navíc zbytečný.

Co tam tedy je?

Poznámka mimo: pokud se Ti zdá obrázek nečitelný, otevři jej větší v novém okně.

Nejdůležitější součástí je Aritmeticko-logická jednotka (ALU). Právě ta vykonává ty nejdůležitější funkce, operace (sčítání, odčítání, AND, OR, Inc.,...). Dále je zde vidět několik paměťových registrů - akumulátor, nejpoužívanější (nejedná se tedy o akumulátor, který by napájel mikroprocesor, ale o akumulátor aktuálních dat!), Stack pointer (SP), Flash - hlavní paměť mikroprocesoru, v níž je uložen program, RAM - operační paměť o velikosti 128x8 bitů a další. Důležitý je také čítač/časovač, a to zvláště vývod reset, který je důležitý při spouštění (nulování) mikroprocesoru. Mezi další součásti patří oscilátor, který pracuje buď s připojeným krystalem, nebo je možno do něj zavést externí signál. Zajímavý je také analogový komparátor, s jehož pomocí lze porovnávat dva analogové signály. No a samozřejmě jsou důležité dva vstupně-výstupní porty. Přestože jsou pouze dva, jsou označeny jako "první" a "třetí". To je proto, že jsou typy ATX051 o ten druhý v rámci úspornosti ochuzeny. Zrovna tak P3.6 nelze použít, protože je na něj vyveden výstup komparátoru. Označení portu P3 se uplatní při programování.

Než ale přikročíme k programování, dokončím základní informace...

 

Pohled vně AT89C2051, pinová konfigurace

Pinová konfigurace AT89C2051

Mikropočítač AT89C2051 a podobné typy se vyrábějí v pouzdru PDIP/SOIC 20, které vypadá podle mě jako DIL20. Na vstup Vcc se přivede napětí 3 - 5 V, na vývody XTAL1 a XTAL2 se připojí krystal od "0 Hz" do 24 Mhz nebo se na vstup XTAL1 přivede externí obdélníkový signál. Na vstup RST, který obvykle bývá přes nějaký rezistor uzemněn, je nutné pro úspěšný start mikropočítače přivést log. 1 a potom je do 1 sekundy mikropočítač připraven. Port 1 má na vývodech 0 a 1 umístěn komparátor, tyto vývody jsou OK (open collector), a proto je nutné pro dosažení log.1 na jejich vývody přidat "pull up" rezistory (asi 2K7 proti Vcc). Všechny vývody portu 1 je možno zatížit proudem až 20 mA, lze tedy přímo budit LED. Pokud je na vývodech portu 1 přítomen nějaký signál po dobu 1s, lze je použít jako vstupy. Port 3 sice nemá na vstupech 0 a 1 komparátor, zato má na vývodu 0 RDX sériový vstup do portu, na vývodu 1 je TDX sériový výstup portu, na vývodu 2 je externí přerušení* nižší dominanty INT0, na vývodu 3 je externí přerušení* vyšší dominanty INT1 a na výstupech 4 a 5 jsou externí vstupy časovače. Vývod 6 je vnitřně spojen s výstupem komparátoru a nelze jej použít k jiným účelům. Všechny vývody portu 3 je možno zatížit proudem až 20 mA, lze tedy přímo budit LED. Pokud je na vývodech portu 3 přítomen nějaký signál po dobu 1s, lze je použít jako vstupy. Vývod GND je nutno uzemnit. *Externí přerušení jsem pochopil tak, že pokud je aktivováno, mikropočítač přeruší svou dosavadní činnost a začne dělat činnost naprogramovanou pro dané přerušení. Přerušení je dvojího typu - to s menší dominantou lze přerušit tou s větší dominantou, ale naopak to nelze. Každopádně odkazuji na literaturu.

O principech programování (jak a co na který vývod, po jak dlouhou dobu,… - zkrátka informace pro sestrojení vlastního programátoru) se můžeš dočíst v datasheetu (anglicky), pro mne to nikdy moc velký význam nemělo - přišel jsem k hotovému. Snad jen: Nový (nenaprogramovaný) mikroprocesor má ve své FLASH samé jedničky (Fka), je to výrobně jednodušší.

Z obecné teorie o mikropočítačích by to bylo asi vše, pro další informace si mi napiš nebo použij již dvakrát zmíněnou literaturu či datasheet. A teď…

PROGRAMOVÁNÍ MIKROPROCESORU AT89C2051

Programátor

Pokud si nechceš kupovat “značkový” programátor za cenu od jednoho tisíce korun výše, můžeš si postavit tento. Vyjde mnohem levněji, ale zatím nemá úplně ideální software. Nicméně, jde to.

OTEVŘI ZAPOJENÍ PROGRAMÁTORU (NOVÉ OKNO)

Programování

K programování je, bohužel, zapotřebí se naučit nový jazyk symbolů instrukcí, jazyk ASEMBLERU. Bohužel se mi zatím nikde nepodařilo získat seznam instrukcí přesně na míru pro ATMELa. Nicméně zde uvádím seznam instrukcí pro mikroprocesory řady 89CXXXX, kteří jsou "ATMELovi příbuzní". Z tohoto důvodu upozorňuji na to, že některé instrukce tu mohou chybět. Doufám, že to nebude naopak. Úplná tabulka je k dispozici v literatuře, zde je pouze to nejdůležitější. Něco o instrukcích se dozvíš také v datasheetu. Instrukce asembleru jsou součástí funkcí v Pascalu.

Tabulka instrukcí

Symbol

Zápis

Poznámka

     
     
     
     
     
     
     
     
     
     
     
     
     
     
     

 

 

 

Tabulka instrukcí pro AT89C2051

Tabulka důležitých adres v mikropočítači

a samozřejmě