Hlavní navigace

Osmibitové mikrořadiče AVR řady ATtiny a ATmega

15. 3. 2011
Doba čtení: 18 minut

Sdílet

Dnes se budeme zabývat popisem dvou řad osmibitových mikrořadičů AVR. Jedná se o mikrořadiče, které stojí na opačné straně cenového i výkonnostního spektra. První řada těchto mikrořadičů – ATtiny – se někdy též nazývá „programovatelné součástky“, zatímco druhá řada ATmega.

Obsah

1. Osmibitové mikrořadiče AVR řady ATtiny a ATmega

2. „Programovatelné součástky“ – mikrořadiče ATtiny

3. Funkce vstupně-výstupních pinů

4. Speciální moduly v mikrořadičích AVR ATtiny

5. Analogově-digitální převodník a napěťový komparátor

6. Osmibitové mikrořadiče řady ATmega

7. Mikrořadič ATmega644

8. Obsah následující části seriálu

9. Odkazy na Internetu

1. Osmibitové mikrořadiče AVR řady ATtiny a ATmega

V předchozích dvou částech seriálu o architekturách počítačů jsme se seznámili se strukturou osmibitových mikrořadičů AVR. Taktéž jsme si řekli základní informace o instrukční sadě těchto mikrořadičů, při jejímž návrhu se tvůrci inspirovali mikroprocesory typu RISC (v instrukční sadě AVR můžeme najít podobnost například s mikroprocesory MIPS). Dnes se budeme zabývat popisem dvou řad osmibitových mikrořadičů AVR, které stojí na opačné straně cenového i výkonnostního spektra: jedná se o řadu malých ale užitečných „programovatelných součástek“ ATtiny a na druhé straně spektra o mikrořadič ATmega644, který sice nepatří mezi zcela nejvýkonnější čipy nabízené společností AVR, ale jedná se o poměrně oblíbený mikrořadič s plnými 64 kB paměti typu FLASH, 4 kB datové paměti typu SRAM a výpočetním výkonem dosahujícím až 20 MIPS. Tento mikrořadič je použit například v herní konzoli Uzebox, jejímž popisem se ještě v tomto seriálu budeme zabývat, na rozdíl od Arduina, kterému již bylo na stránkách Rootu.cz věnováno hodně prostoru (a to, nutno říci, zaslouženě).

Obrázek 1: Herní konzole Uzebox obsahující osmibitový mikrořadič AVR řady ATmega. Podrobnější informace o tomto poněkud neobvyklém použití osmibitového mikrořadiče si řekneme v následující části tohoto seriálu.

Osmibitové mikrořadiče ATtinyATmega mají i přes velké výkonnostní rozdíly (nehledě již na zcela odlišný počet vstupně-výstupních pinů) do značné míry podobnou architekturu – jsou totiž založeny na shodné aritmeticko-logické jednotce i řadiči, což mj. znamená i dopřednou kompatibilitu programů psaných v assembleru při převodu programů z čipů ATtiny na čipy ATmega. Zpětná kompatibilita je ovšem poněkud složitější, protože u mikrořadičů ATtiny nejsou implementovány některé instrukce, počet pracovních registrů se zmenšil z 32 na 16 a i další parametry, například bitová šířka programového čítače PC, je u čipů ATtiny menší, než u mikrořadičů ATmega, což může znamenat nutnost netriviálních změn v programech. U aplikací psaných v programovacím jazyku C je zapotřebí si dát pozor především na různý počet portů i instalovaných modulů (PWM, ADC, čítače/časovače, sériový port atd.) u jednotlivých typů mikrořadičů; od ostatních systémově závislých vlastností je programátor poměrně dobře odstíněn.

Obrázek 2: Porovnání velikosti osmibitového mikrořadiče AVR ATtiny-4 s jednocento­vou mincí.

2. „Programovatelné součástky“ – mikrořadiče ATtiny

Nejmenšími osmibitovými mikrořadiči AVR jsou čipy nesoucí označení ATtiny4, ATtiny5, ATtiny9 a ATtiny10. Jedná se o mikrořadiče umístěné v pouzdrech s pouhými šesti či osmi piny, které jsou vybaveny pamětí FLASH o kapacitě 512 nebo 1024 bajtů (počet přepisů obsahu této paměti přesahuje hodnotu 10000 a záznam by měl při pokojové teplotě vydržet minimálně 100 let) a datovou pamětí SRAM o velikosti 32 bajtů. Tyto čipy jsou, podobně jako nejmenší mikrořadiče PIC, považovány za užitečné a mnohostranně využitelné programovatelné elektronické součástky, které mohou díky přítomnosti analogově-digitálního převodníku, napěťových komparátorů a modulu pro PWM (pulsní šířkovou modulaci) zpracovávat jak digitální, tak i analogové signály. Funkci „programovatelné součástky“ odpovídají i velmi malé energetické nároky – tyto čipy lze napájet napětím v rozsahu 1,8V až 5,5V, jejich spotřeba při činnosti dosahuje pouze několik stovek mikroampér (200µA při použití napájecího napětí 1,8V a hodinovém kmitočtu 1MHz) a při režimu nečinnosti dokonce pouze několika desítek mikroampér.

Obrázek 3: Osmibitový mikrořadič AVR ATtiny-4 s šestipinovém pouzdru SOT-32 určeném pro povrchovou montáž.

Navzdory výše uvedeným spíše minimalistickým hodnotám se ve skutečnosti jedná o plnohodnotné osmibitové mikrořadiče, které mohou být i poměrně výkonné. Díky tomu, že většina instrukcí je provedena za jediný takt, dosahuje se při hodinové frekvenci 12 MHz špičkového výpočetního výkonu až 12 MIPS. Jednotlivé typy nejmenších čipů řady ATtiny se od sebe odlišují kapacitou paměti FLASH a taktéž tím, zda obsahují analogově-digitální převodník (ADC). Základní údaje o všech čtyřech dále popsaných mikrořadičích jsou vypsány v následující tabulce:

Mikrořadič I/O prostor SRAM Flash Organizace Flash ADC
ATtiny4 64 adres 32 bajtů 512 bajtů 256×16 bitů ne
ATtiny5 64 adres 32 bajtů 512 bajtů 256×16 bitů ano
ATtiny9 64 adres 32 bajtů 1024 bajtů 512×16 bitů ne
ATtiny10 64 adres 32 bajtů 1024 bajtů 512×16 bitů ano

Obrázek 4: Osmibitový mikrořadič AVR ATtiny-4 s osmipinovém pouzdru, kde je ovšem ve skutečnosti zapojeno pouze šest pinů, podobně jako na předchozím obrázku.

3. Funkce vstupně-výstupních pinů

Vzhledem k tomu, že nejmenší osmibitové mikrořadiče AVR řady ATtiny mají vyvedeno pouze šest aktivních pinů, je některým z těchto pinů přiřazeno větší množství funkcí, které je možné programově přepínat. Dva z těchto pinů jsou určeny pro napájení, tj. pro přivedení Ucc (napájecího napětí) a GND (země). Další čtyři piny jsou u mikrořadičů ATtiny4, ATtiny5, ATtiny9 a ATtiny10 součástí portu B, tj. jedná se o programovatelné vstupně-výstupní piny. Ve výstupním režimu mají tyto piny dostatečný výkon na to, aby dokázaly rozsvítit LED bez nutnosti použití externího zesilovače (pouze je nutné připojit ochranný rezistor omezující proud tekoucí přes LED). Ve vstupním režimu může být každý pin uveden do stavu vysoké impedance, popř. k němu může mít připojen interní pull-up rezistor, na jehož druhý konec je napojeno Ucc (tato konfigurace se dá využít například při konstrukci jednoduché sběrnice).

Obrázek 5: Struktura jednoho vstupně-výstupního pinu mikrořadiče AVR. Povšimněte si možnosti připojit na pin interní pull-up rezistor ovládaný programově.

Kromě přímého ovládání všech čtyř pinů přes port B, tj. zápisu logické hodnoty ve výstupním režimu či čtení logické hodnoty v režimu vstupním, může mít každý pin více funkcí, které jsou vypsány v následující tabulce:

Pin 0 1 2 3
programový vstup/výstup PB0 PB1 PB2 PB3
vstup externího přerušení PCINT0 PCINT1 PCINT2, INT0 PCINT3
čítač/časovač OC0A OC0B/OC0B T0
externí hodiny CLKI CLKO
A/D převodník (ADC) ADC0 ADC1 ADC2 ADC3
Komparátor AIN0 AIN1
Programování mikrořadiče TPIDATA TPICLK RESET

Obrázek 6: Velmi jednoduchý kit s mikrořadičem AVR ATtiny, který je možné propojit s PC pomocí USB sběrnice.

Pro zajímavost si ukažme, jak lze využít pin PB3 ve výstupním programovatelném režimu pro blikání LED. Do série s LED je vhodné zapojit ochranný rezistor omezující protékající proud:

#include <stdlib.h>
#include <util/delay.h>

int main(void)
{
    const int msecsDelayPost = 100;

    // Set up Port B pin 3 mode to output
    DDRB = 1<<DDB3;

    // Set up Port B data to be all low
    PORTB = 0;

    while (1) {
        // Toggle Port B pin 3 output state
        PORTB ^= 1<<PB3;

        // Pause a little while
        _delay_ms (msecsDelayPost);
    }
    return 0;
}

Poznámka: vhodným naprogramováním čítače/časovače lze LED blikat zcela automaticky bez nutnosti tvorby programové smyčky.

4. Speciální moduly v mikrořadičích AVR ATtiny

Ve druhé kapitole jsme si řekli, že mikrořadiče ATtiny 4,5,9 a 10 obsahují paměť typu FLASH s kapacitou 512 nebo 1024 bajtů. Z předchozí části tohoto seriálu již víme, že paměť FLASH, tj. paměť, kde je uložen program a popř. různé uživatelské tabulky, není organizována po jednotlivých bajtech, ale po celých šestnáctibitových slovech. Většina instrukcí má totiž šířku šestnáct bitů, pouze několik instrukcí obsahuje za instrukčním slovem šestnáctibitovou konstantu. To mj. znamená, že zmíněných 512 nebo 1024 bajtů odpovídá 256 nebo 512 adresovatelným slovům; z tohoto důvodu má programový čítač PC u mikrořadičů ATtiny 4,5,9 a 10 šířku pouze devíti bitů. Paměť SRAM má u těchto mikrořadičů kapacitu 32 bajtů a speciální funkční registry (neboli I/O prostor) zabírají 64 bajtů. Vzhledem k malé velikosti čipu i relativně malé kapacitě paměti FLASH byl navíc snížen i počet pracovních registrů z 32 na 16 (již minule jsme si řekli, že z důvodu kompatibility jsou tyto registry pojmenovány R16R31).

Obrázek 7: Ukázka přímého napojení LED s ochranným rezistorem na jeden ze vstupně-výstupních pinů osmibitového mikrořadiče AVR ATtiny. Díky tomu, že tyto mikrořadiče obsahují zabudovaný generátor hodinových pulsů, jediné, co je zapotřebí udělat pro spuštění (naprogramovaného) ATtiny je připojení napájecího napětí (například dvou monočlánků ) a vstupních či výstupních periferií (tlačítek, LED…). Vzhledem k naprosté jednoduchosti těchto zapojení jsou mikrořadiče ATtiny vhodné například při výuce mikroprocesorové techniky.

Kromě aritmeticko-logické jednotky, řadiče, pracovních registrů, datové paměti SRAM a programové paměti Flash obsahují tyto čipy samozřejmě i další moduly. Jedná se především o šestnáctibitový čítač/časovač s dvojicí kanálů pro PWM (pulsní šířkovou modulaci), dále pak o čtyřkanálový osmibitový analogově-digitální převodník (každý ze čtyř I/O pinů může sloužit jako vstup do ADC), napěťový komparátor, programovatelný watchdog a navíc, což je u takto malých čipů poměrně důležité i interní oscilátor s frekvencí 128 kHz a 8 MHz. Díky použití interního oscilátoru není ve většině případů nutné, aby se k mikrořadiči připojoval externí krystal, což je výhodné jak z cenového hlediska, tak i z hlediska prostorového. Externí hodinový signál se používá v případě, že mikrořadič musí pracovat s hodinovými frekvencemi 8 MHz až 12 MHz, ovšem v tomto případě je obsazen jeden z I/O pinů, konkrétně pin PB1, který je použit pro vstup hodin (CLKI).

Obrázek 8: Struktura napěťového komparátoru mikrořadičů ATtiny.

5. Analogově-digitální převodník a napěťový komparátor

Vzhledem k tomu, že se osmibitové mikrořadiče řady ATtiny poměrně často používají pro (před)zpracování signálů přicházejících z různých čidel, je nedílnou součástí těchto čipů i analogově-digitální převodník (ADC – Analog to Digital Converter). Jedná se o osmibitový převodník rozpoznávající 256 napěťových úrovní v rozsahu 0 až Ucc (hodnota napájecího napětí) s absolutní chybou nepřesahující váhu nejnižšího bitu. Zajímavé je, že multiplexor připojený před analogově-digitální převodník umožňuje použít libovolný I/O pin, nebo v mezním případě dokonce i všechny čtyři dostupné I/O piny pro konverzi analogové úrovně na její číslicové vyjádření (mikrořadič se tedy chová tak, jakoby obsahoval čtyři ADC). Převod analogové úrovně je možné spouštět buď programově, popř. lze konverzi spustit externím signálem nebo může konverze probíhat neustále dokola (v tomto případě každý převod trvá třináct strojových cyklů a záleží jen na programátorovi, jakým způsobem přečtené hodnoty zpracuje).

Obrázek 9: Implementace PWM na mikrořadičích ATtiny.

Kromě plnohodnotného analogově-digitálního převodníku je možné dva I/O piny mikrořadiče použít ve funkci napěťového komparátoru. Pokud se má komparátor použít, je pin PB0 využit jako AIN0 a pin PB1 jako AIN1. Činnost napěťového komparátoru je velmi jednoduchá – pokud je napětí přivedené na vstup AIN0 vyšší, než napětí přiváděné na vstup AIN1, je nastaven příznakový bit ACO, jenž může být přečten běžícím programem. Kromě toho je možné napěťový komparátor naprogramovat takovým způsobem, aby generoval přerušení při každé změně bitu ACO, při sestupné hraně (vynulování bitu ACO), nebo naopak při hraně vzestupné (nastavení bitu ACO na logickou jedničku). Právě možnost generování přerušení na základě stanovené podmínky, nezávislost na hodnotě napájecího napětí a taktéž prakticky okamžité generování přerušení jsou přednosti, které vedou k tomu, že se v některých aplikacích používá napěťový komparátor a nikoli univerzálnější ADC.

Obrázek 10: Čtyřkanálový analogově-digitální převodník osmibitových mikrořadičů ATtiny.

6. Osmibitové mikrořadiče řady ATmega

Zatímco u mikrořadičů řady ATtiny popsaných v předchozích kapitolách hrála velmi důležitou roli snaha o vytvoření co nejlevnějšího a současně i energeticky nenáročného čipu, jsou požadavky na osmibitové mikrořadiče ATmega poněkud odlišné. Tyto mikrořadiče jsou totiž navrženy s ohledem na dosažení co největšího výpočetního výkonu dosahujícího i několik desítek MIPS (samozřejmě s vědomím toho, že se stále jedná o relativně levné čipy s osmibitovou aritmeticko-logickou jednotkou) a firma Atmel taktéž nešetřila na počtu vstupně-výstupních pinů, takže se tyto typy mikrořadičů mohou používat i v zařízeních s větším množstvím čidel i ovládaných prvků (LED, displejů, servomotorků atd.). Některé piny mohou být přeprogramovány takovým způsobem, že je lze použít ve funkci sériového asynchronního či synchronního portu (USART) s možností plně duplexního přenosu dat, další piny lze použít pro implementaci dvouvodičového sériového rozhraní (2-wire Serial Interface) se signálovými vodiči SDA a SCL atd.

Obrázek 11: Další pohled na mikrořadič AVR ATtiny s připojenou LED. Mikrořadič je umístěn na nepájivém kontaktním poli. Na levém okraji fotografie můžeme vidět část modulu sloužícího pro propojení mikrořadiče a PC přes sběrnici USB.

Čipy z řady ATmega mají větší kapacitu pamětí Flash i SRAM a u některých typů se navíc objevuje i paměť typu EEPROM, v níž je možné – na rozdíl od paměti typu Flash – programově měnit hodnoty jednotlivých bajtů, podobně jako v paměti SRAM (jejíž obsah však není zachován při výpadku napájení). Vzhledem k tomu, že jednotlivé bajty v EEPROM lze přepsat minimálně stotisíckrát, mohou se do této paměti ukládat například parametry nastavené uživatelem, naměřené extrémní hodnoty, chybové stavy (log soubor) atd., protože u těchto typů dat většinou počet možných zápisů přesahuje fyzickou životnost zařízení. Dalším rozdílem mezi ATtiny a ATmega je odlišný počet pracovních registrů, který je u čipů ATmega zvýšen na 32. I instrukční soubor je rozšířen na zhruba 130 instrukcí (konkrétně 131 instrukcí v případě dále popsaného mikrořadiče ATmega644) s tím, že některé instrukce jsou upraveny takovým způsobem, aby bylo možné adresovat všechna slova umístěná v pamětech typu Flash, jejichž kapacita může přesáhnout 64 kilobajtů.

Obrázek 12: Fotografie osmibitového mikrořadiče AVR ATtiny-4 umístěného v pouzdru určeném pro povrchovou montáž.

7. Mikrořadič ATmega644

Známým a poměrně často používaným osmibitovým mikrořadičem řady ATmega je čip nesoucí označení ATmega644. Tento mikrořadič, který v prakticky všech parametrech – včetně ceny a spotřeby – překonává výše popsané mikrořadiče řady ATtiny, je vybaven čtyřmi kilobajty paměti SRAM, dvěma kilobajty elektronicky mazatelné paměti EEPROM a celými 64 kilobajty programové paměti Flash. Nejvyšší frekvence hodinového signálu je 20 MHz, což znamená, že špičkový výpočetní výkon se přibližuje 20 MIPS. Vzhledem k tomu, že je tento mikrořadič umístěn v pouzdru se čtyřiceti či 44 kontakty, mohl se razantně zvýšit i počet programovatelných vstupně-výstupních pinů. Těch je nyní 32 a jsou organizovány do čtyř osmibitových portů PA, PB, PC a PD. Tyto piny mohou být řízeny programově, tj. jejich výstupní logické hodnoty lze měnit zápisem do I/O registru, nebo je zde možné naopak přečíst úroveň přivedeného signálu v případě, že je pin nastaven do režimu čtení.

Obrázek 13: Funkce pinů mikrořadiče AVR ATmega 644 umístěného v pouzdru typu PDIP.

Kromě toho však má velké množství pinů i svou druhou či třetí volitelnou funkci. Mikrořadič ATmega644 totiž obsahuje napěťový komparátor i analogově-digitální převodník, který je zde osmikanálový a desetibitový (tj. rozpoznává se 1024 napěťových úrovní). Kromě toho lze další piny použít ve funkci sériového portu (USART) nebo dvouvodičového rozhraní (2-wire Interface), pomocí něhož lze zkonstruovat levnou sběrnici pro až 127 různých zařízení. I funkce čítačů a časovačů byla rozšířena – těch je nyní implementováno větší množství (konkrétně jeden šestnáctibitový a dva osmibitové čítače/časovače), s čímž souvisí i rozšíření počtu kanálů pro PWM, kterých je celkem šest. Pro testování zařízení s mikrořadičem ATmega644 lze použít i čtyři piny tvořící takzvaný JTAG Test Access Port (TAP), přes nějž lze číst či modifikovat obsah všech pamětí, číst obsah čítače instrukcí, krokovat program, zastavovat program na určité adrese či při čtení/zápisu dat z určité adresy atd. To, které funkce nabízené přes TAP budou využitelné, závisí především na tom, které funkce jsou podporovány vývojovým prostředím.

Obrázek 14: Moduly osmibitového mikrořadiče AVR ATmega 644.

8. Obsah následující části seriálu

V následující části seriálu o architekturách počítačů si popíšeme jednu poměrně neobvyklou aplikaci osmibitových mikrořadičů. Jedná se o herní konzoli nazvanou Uzebox, která se v současnosti využívá jak pro vývoj her v retro stylu založených na originálech pocházejících převážně z osmdesátých let minulého století, tak i pro programování dem a různých grafických programů (originály her většinou pochází z osmibitových počítačů, tehdejších herních konzolí první až třetí generace, popř. z herních automatů). Nedílnou a do značné míry ústřední částí této herní konzole je subsystém pro generování barevného video signálu – Uzebox se totiž dá připojit k běžné televizi, v originální verzi k televizoru pracujícího v systému NTSC, ovšem existují i úpravy pro televizory s normou PAL.

Obrázek 15: Předělávka slavné plošinovky z dob osmibitových počítačů Donkey Kong na herní konzoli Uzebox osazenou mikrořadičem AVR ATmega 644.

Samotné generování video signálu je poměrně zajímavé a dnes již zcela neobvyklé (i když například pamětníky herní konzole Atari 2600 to příliš nepřekvapí): protože mikrořadiče ATmega většinou nemají dostatečnou kapacitu datové paměti na to, aby zde mohl být uložen celý framebuffer (obrazová paměť), je obraz generován dynamicky přímo při jeho vykreslování na obrazovku televizoru. U většiny her se však obraz negeneruje pomocí nějakých náročných výpočtů, ale na základě spritů (řekněme moderně textur s malým rozlišením) uložených v programové paměti Flash. Programátoři her i dalších grafických programů tedy musí ve vhodné datové struktuře ukládat pozice a indexy jednotlivých spritů, které jsou následně grafickým subsystémem vykresleny. Důsledkem tohoto způsobu generování obrazu je to, že není prakticky žádný výkonnostní rozdíl mezi vykreslením statické scény a scény, v níž se pohybuje velké množství objektů. Příkladem může být například hra s plně scrollujícím pozadím (Boulder Dash, Moon Patrol), hra, v níž se pohybuje mnoho objektů (Frogger, Space Invaders), atd. Podrobnosti si řekneme v navazující části tohoto seriálu.

Obrázek 16: Další klasika předělávaná na herní konzoli Uzebox – Moon Patrol.

9. Odkazy na Internetu

  1. AVRFreaks Wiki
    http://www.avrfre­aks.net/wiki/in­dex.php/Main_Pa­ge
  2. Atmel AVR 8– and 32-bit
    http://www.at­mel.com/produc­ts/avr/
  3. tinyAVR
    http://www.at­mel.com/dyn/pro­ducts/devices­.asp?category_id=163&fa­mily_id=607&sub­family_id=791
  4. AT-Mini
    http://www.mi­kroe.com/eng/pro­ducts/view/649/at-mini-board/
  5. Arduino
    http://www.ar­duino.cc/
  6. AVR Microcontroller
    http://www.en­gineersgarage­.com/articles/a­vr-microcontroller
  7. Atmel AVR – Wikipedia
    http://en.wiki­pedia.org/wiki/At­mel_AVR
  8. AVR instruction set
    http://avr.hw­.cz/architektu­ra/instukce.html
  9. Porovnání jednotlivých procesorů AVR
    http://avr.hw­.cz/architektu­ra/porovnani.html
  10. 68HC11 Instruction Set
    http://www.cs­.uaf.edu/2007/fa­ll/cs441/proj1no­tes/sawyer/in­st.html
  11. 68HC11 OpCode Map
    http://home.e­arthlink.net/~tdic­kens/68hc11/68h­c11_opcode_map­.html
  12. A Simple Robot Using the 68HC11 Processor
    http://home.e­arthlink.net/~tdic­kens/68hc11/trp­2/trp2.html
  13. 68HC11 C-Compiler (Imagecraft)
    http://microcon­trollershop.com/pro­duct_info.php?pro­ducts_id=188
  14. GNU Development Chain for 68HC11&68HC12
    http://www.gnu­.org/software/m68hc11/
  15. GNU C for 68HC11 – documentation
    http://www.gnu­.org/software/m68hc11/m­68hc11_doc.html
  16. The P-Brain tm Microcontroller Kit
    http://www.fu­turebots.com/bra­in.htm
  17. Wikipedia: Motorola 68HC05
    http://en.wiki­pedia.org/wiki/Mo­torola_68HC05
  18. Wikipedia: Freescale 68HC08
    http://en.wiki­pedia.org/wiki/68HC08
  19. Wikipedia: Freescale 68HC11
    http://en.wiki­pedia.org/wiki/68HC11
  20. Wikipedia: Freescale 68HC12
    http://en.wiki­pedia.org/wiki/Fre­escale_68HC12
  21. HC05 Processor Families
    http://www.fre­escale.com/we­bapp/sps/site/o­verview.jsp?no­deId=016246844­98633
  22. HC08 Processor Families
    http://www.fre­escale.com/we­bapp/sps/site/o­verview.jsp?no­deId=016246844­97663
  23. Digital Core Design 68HC08 – HDL IP Core
    http://www.dcd­.pl/acore.php?id­core=82
  24. Freescale 68HC11
    http://www.fre­escale.com/we­bapp/sps/site/ta­xonomy.jsp?no­deId=016246844­98635
  25. Lifecycle of a CPU:
    http://www.cpushac­k.net/life-cycle-of-cpu.html
  26. Most wanted CPU of the world:
    http://www.cpu-galaxy.at/CPU/In­tel%20CPU/3002–8008/4004%20G­rey.jpg
  27. Wikipedia: 6502:
    http://en.wiki­pedia.org/wiki/6502
  28. The Western Design Center, Inc.:
    http://www.wes­terndesigncen­ter.com/
  29. Apple II History Home:
    http://apple2his­tory.org/
  30. www.6502.org:
    http://www.6502­.org/
  31. Stránky firmy Microchip Technology
    http://www.mi­crochip.com/
  32. Výběr z různých modelů (osmibitových) mikrořadičů PIC
    http://www.mi­crochip.com/ste­llent/idcplg?Id­cService=SS_GET_PA­GE&nodeId=2661
  33. Řada (rodina) osmibitových mikrořadičů PIC 10
    http://www.mi­crochip.com/Pa­ramChartSearch/char­t.aspx?branchID=1009&mi­d=10&lang=en&pa­geId=74
  34. Řada (rodina) osmibitových mikrořadičů PIC 12
    http://www.mi­crochip.com/Pa­ramChartSearch/char­t.aspx?branchID=1001&mi­d=10&lang=en&pa­geId=74
  35. Řada (rodina) osmibitových mikrořadičů PIC 14
    http://www.mi­crochip.com/Pa­ramChartSearch/char­t.aspx?branchID=1008&mi­d=10&lang=en&pa­geId=74
  36. Řada (rodina) osmibitových mikrořadičů PIC 16
    http://www.mi­crochip.com/Pa­ramChartSearch/char­t.aspx?branchID=1002&mi­d=10&lang=en&pa­geId=74
  37. Další výběr z různých modelů mikrořadičů PIC
    http://www.mi­crochip.com/map­s/microcontro­ller.aspx
  38. PIC microcontroller (Wikipedia EN)
    http://en.wiki­pedia.org/wiki/PIC_mi­crocontroller
  39. Mikrokontrolér PIC (Wikipedia CZ)
    http://cs.wiki­pedia.org/wiki/Mi­krokontrolér_PIC
  40. FLASHFORTH for the PIC18F and the dsPIC30F
    http://flashf­orth.sourcefor­ge.net/
  41. FlashForth
    http://www.sou­rceforge.net/pro­jects/flashfor­th
  42. Free Pic software tools
    http://softwa­repic.50webs.com/fre­esoft.html
  43. What is Amicus?
    http://www.pic­basic.org/pro­ton_lite.php
  44. Amicus FAQ
    http://www.my­amicus.co.uk/faq­.php?s=2e8d12e7f4c23e775­776f4916876354b&
  45. Microcontrollers development tools
    http://www.gnu­pic.dds.nl/
  46. gpsim (Wikipedia EN)
    http://en.wiki­pedia.org/wiki/Gpsim
  47. gpsim home page
    http://gpsim.sou­rceforge.net/gpsim­.html
  48. The FreeRTOS Project
    http://www.fre­ertos.org/
  49. FreeRTOS (Wikipedia)
    http://en.wiki­pedia.org/wiki/Fre­eRTOS
  50. Serial EEPROM (93C46 / 93CS46) Routines
    http://www.pjrc­.com/tech/8051/se­rial-eeprom.html
  51. Great Microprocessors of the Past and Present (V 13.4.0)
    http://jbayko­.sasktelwebsi­te.net/cpu.html
  52. SPI interface tutorial
    http://www.best-microcontroller-projects.com/spi-interface.html
  53. Serial Peripheral Interface Bus
    http://en.wiki­pedia.org/wiki/Se­rial_Peripheral_In­terface_Bus
  54. EUSB to SPI bus Kit
    http://www.ei­dusa.com/Elec­tronics_Kits_E­USB_To_SPI_BUS­.htm
  55. SPI Block Guide V03.06, Freescale Semiconductor
    http://www.fre­escale.com/fi­les/microcontro­llers/doc/ref_ma­nual/S12SPIV3­.pdf
  56. What is SPI?
    http://www.fpga4fun­.com/SPI1.html
  57. SPI – A simple implementation
    http://www.fpga4fun­.com/SPI2.html
  58. Bit-banging
    http://en.wiki­pedia.org/wiki/Bit-banging
  59. Joint Test Action Group
    http://en.wiki­pedia.org/wiki/JTAG
  60. I2C
    http://en.wiki­pedia.org/wiki/I2C
  61. Seriál o programovacím jazyce Forth:
    seriál o programovacím jazyce Forth
  62. Display Data Channel
    http://en.wiki­pedia.org/wiki/Dis­play_Data_Chan­nel
  63. I2 Background
    http://www.mi­croport.tw/blog­new.php?blog_no­=7#theory
  64. PIC16F87X, 28/40-pin 8-Bit CMOS FLASH Microcontrollers
    Microchip Technology Inc.
    http://www.mi­crochip.com

Autor článku

Pavel Tišnovský vystudoval VUT FIT a v současné době pracuje ve společnosti Red Hat, kde vyvíjí nástroje pro OpenShift.io.