Hlavní navigace

Osmibitové mikroprocesory a mikrořadiče firmy Motorola (2)

4. 11. 2010
Doba čtení: 20 minut

Sdílet

V dnešní části seriálu o architekturách počítačů se budeme zabývat podrobnějším popisem osmibitových mikrořadičů 68HC05 a 68HC08 firmy Motorola. Tyto mikrořadiče postavené na jádru, které bylo vyvinuté na bázi mikroprocesoru MC6800 popsaného minule, jsou – spolu s jejich pravděpodobně mnohem známějším nástupcem 68HC11 – dodnes používány například v automobilovém průmyslu nebo byly instalovány do telekomunikačních družic.

Obsah

1. Sada registrů osmibitového mikrořadiče Motorola 68HC05

2. Instrukční sada mikrořadiče 68HC05

3. Aritmetické, logické a bitové operace s jedním operandem

4. Aritmetické, logické a bitové operace s dvojicí operandů; instrukce nepodmíněného sko­ku

5. Organizace paměti mikrořadiče 68HC05

6. Osmibitový mikrořadič 68HC08 – komerčně úspěšný následovník 68HC05

7. Rozšířená instrukční sada mikrořadiče 68HC08

8. Čítače a časovače mikrořadiče 68HC08, modul provádějící PWM

9. Odkazy na Internetu

1. Sada registrů osmibitového mikrořadiče Motorola 68HC05

V předchozí části seriálu o architekturách počítačů jsme se seznámili se známým osmibitovým mikroprocesorem Motorola MC6800, z něhož je mj. odvozeno i několik řad osmibitových mikrořadičů vyráběných v minulosti jak samotnou firmou Motorola, tak i některými dalšími výrobci, kteří si zakoupili příslušné licence. Po nepříliš známých „dvoučipových“ mikrořadičích MC6801 a MC6802 navrhli inženýři firmy Motorola mikrořadič MC6805, který se později vyvinul v první skutečný jednočipový mikrořadič nazvaný 68HC05. Z pohledu programátora se jedná o osmibitový mikrořadič s von Neumannovou architekturou (což je rozdíl oproti již popsaným čipům MCS-48, MCS-51 či PIC). To mj. znamená, že všechny řídicí registry, paměť ROM i paměť RAM jsou mapovány do jediného adresního prostoru o teoretickém rozsahu 216=65536 bajtů, který je však u mikrořadičů 68HC05 zmenšen na 213=8192 bajtů, protože čítač instrukcí má horní tři bity trvale nastaveny na nuly.

Obrázek 1: Blokové schéma cvičného mikroprocesoru ze čtvrté části tohoto seriálu se v několika ohledech podobá interní struktuře osmibitového mikroprocesoru Motorola MC6800, ovšem s tím poměrně důležitým rozdílem, že MC6800 navíc obsahoval i šestnáctibitový index registr X používaný při adresování operandů uložených v operační paměti.

Oproti původnímu procesoru MC6800 došlo i k několika dalším zjednodušením centrální procesorové jednotky mikrořadiče 68HC05 (což mimochodem z tohoto mikrořadiče dělá téměř ideální čip pro výuku, jehož jedinou nevýhodou je, že se již nevyrábí a jeho následovníci již nemají tak čistý design). Především byl zcela odstraněn druhý akumulátor B, šířka indexového registru X se zmenšila na 8 bitů (což je, jak uvidíme dále, pro mnoho operací dostatečné), počet skutečně využitelných bitů ukazatele na vrchol zásobníku SP se zmenšil ze šestnácti na šest (zásobník tedy může mít kapacitu pouze 64 bajtů) a dokonce byl odstraněn i jeden příznakový bit z registru CCR. Jedná se o bit V (overflow), což však mj. znamená, že je poněkud složitější pracovat s čísly se znaménkem (signed), protože kvůli absenci tohoto příznaku nejsou k dispozici ani skokové instrukce, které u původního procesoru MC6800 mohly být použity po porovnání dvou znaménkových hodnot. V následující tabulce jsou vypsány všechny registry, které může programátor mikrořadiče 68HC05 při práci v assembleru použít:

Označení Šířka (b) Využito bitů Název registru Význam registru
A 8 8 accumulator A jediný universální pracovní registr
X 8 8 index register používán při adresování operandů
PC 16 13 program counter používán při adresování instrukcí
SP 16 6 stact pointer použit při operacích se zásobníkem
CCR 8 5 condition code register obsahuje příznakové bity

Obrázek 2: Základní technické parametry první generace osmibitových mikroprocesorů firem Intel, Motorola a Zilog. V tomto grafu není uveden poslední „velký hráč“ na poli osmibitových CPU – MOS 6502, jehož parametry se podobají právě čipu MC6800.

2. Instrukční sada mikrořadiče 68HC05

Díky absenci druhého akumulátoru B a současnému zmenšení šířky indexového registru X došlo (ani ne tak překvapivě) ke zjednodušení instrukční sady, která je v některých ohledech více ortogonální, než instrukční sada původního osmibitového mikroprocesoru MC6800. Indexový registr X totiž může být u mnoha instrukcí ze třetí skupiny (viz též tabulka pod odstavcem popř. celá instrukční sada zobrazená na třetím obrázku) použit jako plnohodnotný pracovní registr, tj. podobným způsobem jako akumulátor A. Z 256 instrukčních kódů je jich využito celkem 210, zbývajících 46 kódů je rezervováno pro budoucí použití (jdou obsazeny například v dále popsaném mikrořadiči 68HC08 nebo 68HC11). Instrukce lze podle jejich funkce i podle počtu operandů rozdělit do pěti skupin, které se od sebe liší obsahem horních čtyř bitů (horního nibble) instrukčního slova. Tyto skupiny jsou vypsány v další tabulce:

Skupina Prefix (hexa) Význam
1 0–1 bitové operace s prvními 256 bajty paměti
2 2 relativní skoky
3 3–7 operace s jedním operandem (registrem nebo pamětí)
4 8–9 řídicí instrukce
5 A–F operace s dvojicí operandů (registrem a pamětí) + instrukce skoku

V první skupině zabírající celou osminu všech instrukčních kódů, se nachází čtyři instrukce, pomocí nichž lze provádět bitové operace s prvními 256 bajty paměti. Jedná se o instrukci BCLR sloužící pro vynulování vybraného bitu, dále o instrukci BSET pro nastavení bitu do stavu logické jedničky. Hodnotu libovolného bitu lze testovat instrukcemi BRCLR (branch if clear) a BRSET (branch if set) – na základě hodnoty příslušného bitu je proveden relativní skok v rámci ± 127 bajtů a navíc je nastaven příznak carry. Každá ze zmíněných instrukcí je v sadě instrukcí použita osmkrát, protože součástí operačního kódu je i index nastavovaného, nulovaného či testovaného bitu. Tyto instrukce jsou, jako podobně navržené instrukce u mikrořadičů MCS-51, velmi užitečné, protože do prvních 256 adres paměti jsou adresovány řídicí registry (jejichž jednotlivé bity mají různý význam) i část uživatelské RAM.

Obrázek 3: Instrukční sada mikrořadiče M68HC05.
(Zdroj: Freescale Semiconductor, Ltd. MC68HC05B6/D Rev. 4.1 08/2005)

Dalších šestnáct instrukcí může být využito pro provádění podmíněných i nepodmíněných relativních skoků. Relativní skok je proveden takovým způsobem, že se k PC připočte osmibajtová konstanta se znaménkem (offset), což mj. znamená, že adresy cílů skoků není zapotřebí přepočítávat v případě, že se program v operační paměti posune. Instrukce BRA (branch always) provede relativní skok vždy, zatímco instrukce BRN (branch never) naopak odpovídá dvoubajtové instrukci NOP. Následujících čtrnáct instrukcí slouží pro provedení relativního skoku na základě aktuálních hodnot příznakových bitů nebo jejich kombinací. Taktéž je možné provést skok v případě, že je externí signál přerušení IRQ buď nulový nebo jedničkový (tento typ skoku lze využít i v případě, že je přerušení zakázáno). Význam jednotlivých bitových příznaků ukládaných do registru CCR, které se používají u jednotlivých skokových instrukcí, je vysvětlen v další tabulce. Zajímavé je, že kromě příznaku I (interrupt mask) nejsou ostatní příznaky změněny po RESETu, podobně jako se při této operaci nemění obsah buněk v operační paměti:

Bit# Označení příznaku Jméno příznaku Význam
7 × × neobsazeno
6 × × neobsazeno
5 × × neobsazeno
4 H Half-Carry Flag nastavený při přenosu ze třetího do čtvrtého bitu; tento příznak je použit při BCD aritmetice
3 I Interrupt Mask příznak, pomocí něhož lze povolit či naopak zakázat maskovatelné přerušení (IRQ)
2 N Negative Flag tento příznak je nastaven, pokud poslední aritmetická či logická operace vygenerovala záporný výsledek, tj. bajt s nejvyšším bitem rovným jedničce (0×80 až 0×FF)
1 Z Zero Flag tento příznak se nastaví, pokud poslední aritmetická či logická operace vygenerovala osmibitovou hodnotu 0×00, spolu s předchozím příznakem lze zjišťovat relace typu: <0 ≤0 =0 ≥0 >0 ≠0
0 C Carry Flag přetečení ze sedmého do (neexistujícího) osmého bitu při mnoha operacích (rotace, aritmetické operace); tento příznak je taktéž nastavovaný nebo nulovaný při bitových operacích v prvních 256 bajtech paměti

Obrázek 4: Interní struktura mikrořadičů M68HC05.
(Zdroj: Freescale Semiconductor, Ltd. MC68HC05B6/D Rev. 4.1 08/2005)

3. Aritmetické, logické a bitové operace s jedním operandem

Ve třetí skupině instrukcí se nachází instrukce provádějící aritmetické, logické a bitové operace s jedním operandem (jedná se tedy o unární operace). Každá z těchto instrukcí existuje v pěti variantách, které se od sebe liší především tím, jakým způsobem je operand určen. Tímto operandem může být akumulátor A, indexový registr X, nebo se může jednat o bajt umístěný v paměti RAM, ROM nebo dokonce o některý z řídicích registrů mapovaných do adresového rozsahu procesoru. Adresu příslušného bajtu/řídicího registru je možné specifikovat pomocí osmibitové adresy (existuje zde tedy omezení na prvních 256 adres – takzvaná nultá stránka paměti), dále pak osmibitovou adresou, k níž je připočten obsah indexového registru X (omezení na prvních 511 adres) nebo šestnáctibitovou adresou, ke které je připočten obsah indexového registru X (bez omezení). Všechny operace patřící do této skupiny nejprve načtou hodnotu z příslušného zdroje (registr, paměť), provedou zadanou operaci a posléze hodnotu opět uloží. Jedná se o tyto operace:

Zkratka Význam
ASL aritmetický posun bajtu doleva (synonymum pro LSL)
ASR aritmetický posun bajtu doprava
LSL bitový posun bajtu doleva
LSR bitový posun bajtu doprava
ROL rotace doleva přes příznak C
ROR rotace doprava přes příznak C
CLR vymazání (dosazení hodnoty 0×00)
COM jedničkový doplněk (negace)
NEG dvojkový doplněk (změna znaménka)
DEC dekrementace, snížení o 1 (často používané pro index registr)
INC inkrementace, zvýšení o 1
TST test na záporné číslo a/nebo nulu

Poznámka: při pohledu na tabulku instrukcí na třetím obrázku zjistíme, že se ve třetí skupině navíc nachází i instrukce MUL (celočíselné násobení), která však má dva operandy a navíc jsou tyto operandy specifikovány implicitně – jedná se o akumulátor a indexový registr.

Obrázek 5: Základní způsob zapojení mikrořadiče 68HC05.
(Zdroj: Freescale Semiconductor, Ltd. MC68HC05B6/D Rev. 4.1 08/2005)

4. Aritmetické, logické a bitové operace s dvojicí operandů; instrukce nepodmíněného skoku

I v páté skupině instrukcí můžeme najít instrukce provádějící aritmetické, logické a bitové operace, tentokrát se však jedná o operace s dvojicí operandů. V tomto případě je prvním operandem – a taktéž místem, kam se ukládá výsledek operace – vždy akumulátor A. Druhým operandem je buď osmibitová konstanta nebo bajt načtený z paměti RAM, ROM či z některého řídicího registru. Adresa tohoto bajtu může být zadána přímou osmibitovou adresou (omezení na nultou stránku paměti), šestnáctibitovou adresou, indexovým registrem, osmibitovou adresou přičtenou k indexovému registru nebo šestnáctibitovou adresou přičtenou k indexovému registru. V této skupině instrukcí se navíc nachází i instrukce pro načtení a uložení akumulátoru A či indexového registru X z/do paměti a rovněž instrukce skoku JMP a skoku do podprogramu JSR. U těchto instrukcí je zajímavé především to, že cíl skoku je specifikován stejně, jako je tomu u aritmetických a logických operací popsaných výše (kupodivu však byla vynechána varianta JMP A, tj. skok na adresu uloženou v registru A, která by mohla být užitečná například při konstrukci „vektorizované­ho“ kódu):

Zkratka Význam
ADD přičtení druhého operandu k akumulátoru
ADC přičtení druhého operandu a příznaku C k akumulátoru
SUB odečtení druhého operandu od akumulátoru
SBC odečtení druhého operandu a příznaku C od akumulátoru
CMP porovnání akumulátoru s druhým operandem
CPX porovnání indexového registru s druhým operandem
AND bitová operace AND
ORA bitová operace OR
EOR bitová operace XOR
BIT bitová operace AND bez uložení výsledku (podobné jako CMP)
LDA nastavení hodnoty akumulátoru
LDX nastavení hodnoty index registru
STA uložení akumulátoru
STX uložení index registru
JMP nepodmíněný skok
JSR skok do podprogramu

Obrázek 6: Zapojení pinů osmibitového mikrořadiče 68HC05K0.
(Zdroj: MC68HC05K0/K1 Rev. 1 TECHNICAL DATA, Motorola, CSIC Microcontroller Division)

5. Organizace paměti mikrořadiče 68HC05

V předchozích kapitolách jsme si mj. řekli, že mikrořadič 68HC05 má (či přesněji řečeno měl) šířku indexového registru X zmenšenou na osm bitů a taktéž to, že mnoho instrukcí umožňuje jako svůj operand použít jednu z prvních 256 popř. 511 adres. Mohlo by se sice zdát, že kvůli omezení na 256 či 511 adres jsou tyto instrukce, resp. jejich adresní režimy, prakticky nepoužitelné. Ve skutečnosti to však zdaleka není pravda, protože do „pouhých“ 256 bajtů je možné vložit překvapivě mnoho informací. Jednou z variant mikrořadičů 68HC05 jsou mikrořadiče 68HC05K0 a 68HC05K1 s deseti I/O piny umístěné v šestnáctipinovém pouzdru typu PDIP nebo SOIC, které mají organizaci paměti uspořádanou takovým způsobem, aby se do prvních 256 adres mapovaly ty nejdůležitější a nejpoužívanější oblasti paměti (připomeňme si, že pro prvních 256 adres je možné navíc použít bitové operace). V následující tabulce je vypsána organizace paměti u mikrořadičů 68HC05K0 a 68HC05K1:

Rozsah Význam
32 bajtů řídicí registry (I/O porty, časovač atd…)
192 bajtů první část ROM či EPROM
32 bajtů RAM a zásobník


256 bajtů první stránka paměti
   
496 bajtů druhá část ROM či EPROM
8 bajtů watchdog a 7 rezervovaných adres
8 bajtů čtveřice vektorů použitá při příchodu různých typů přerušení

Obrázek 7: Organizace paměti mikrořadiče 68HC05K0.
(Zdroj: MC68HC05K0/K1 Rev. 1 TECHNICAL DATA, Motorola, CSIC Microcontroller Division)

Z tabulky zobrazené výše je patrné, že do takzvané nulté stránky paměti, tj. do prvních 256 bajtů adresového rozsahu, jsou u mikrořadičů …K0 a …K1 mapovány jak všechny řídicí registry, tak i část operační paměti ROM/EPROM (zde jsou obsaženy často volané rutiny) a taktéž celá paměť RAM, která má u těchto velmi jednoduchých a levných mikrořadičů kapacitu pouze 32 bajtů (což je porovnatelné s některými variantami mikrořadičů PIC a taktéž s MCS-48). Zejména namapování řídicích registrů je velmi výhodné, protože tyto registry velmi často obsahují jednobitové příznaky či řídicí bity, takže pro přístup k těmto informacím lze použít již zmíněné instrukce BCLR (bit clear), BSET (bit set), BRCLR (branch if clear) a BRSET (branch if set). Poznámka: kvůli poměrně malému rozsahu obsazených adres je čítač instrukcí, neboli registr PC, omezen na rozsah jednoho kilobajtu, což znamená, že pouze spodních 10 bitů je možné měnit a horních šest bitů tohoto registru má konstantní hodnotu 0.

Obrázek 8: Interní struktura mikrořadiče 68HC05K0.
(Zdroj: MC68HC05K0/K1 Rev. 1 TECHNICAL DATA, Motorola, CSIC Microcontroller Division)

6. Osmibitový mikrořadič 68HC08 – komerčně úspěšný následovník 68HC05

Dalším osmibitovým mikrořadičem, který byl navržen firmou Motorola, je mikrořadič nesoucí označení 68HC08. Jedná se o v mnoha směrech vylepšenou variantu původního mikrořadiče 68HC05, který svým uživatelům nabízel jak větší množství vstupně-výstupních portů, více časovačů a osmikanálový analogově-digitální převodník, tak i rozšířenou kapacitu pamětí ROM a RAM. Došlo i ke změně v konfiguraci registrů a rozšíření instrukční sady tohoto mikrořadiče – zejména byly přidány nové adresní režimy, které umožňovaly lépe využít zvětšenou kapacitu pamětí ROM a RAM (viz též následující kapitolu). V následující tabulce jsou vypsány všechny registry centrální procesorové jednotky, které mohly být využity při programování v assembleru. Povšimněte si především toho, že došlo k rozšíření původně osmibitového indexového registru X na šestnáctibitový registr H:X, jehož obě osmibitové části lze zpracovávat odděleně. Taktéž se rozšířila bitová šířka registrů PC a SP na plných šestnáct bitů, zatímco u mikrořadiče 68HC05 měl PC měnitelných pouze 13 spodních bitů a SP dokonce jen 6 spodních bitů:

Označení Šířka (b) Využito bitů Název registru Význam registru
A 8 8 accumulator A jediný universální pracovní registr
H:X 16 16 index register používán při adresování operandů
PC 16 16 program counter používán při adresování instrukcí
SP 16 16 stact pointer použit při operacích se zásobníkem
CCR 8 6 condition code register obsahuje příznakové bity

Obrázek 9: Zapojení pinů osmibitového mikrořadiče 68HC08.
(Zdroj: Technical Data – MC68HC08AB16A, Freescale Semiconductor)

Došlo i k rozšíření počtu příznaků uložených v registru CCR – nyní již bylo možné používat příznak V (overflow) nastavovaný mnoha aritmetickými operacemi:

Bit# Označení příznaku Jméno příznaku Význam
7 V Overflow tento příznak je nastavený při přenosu ze šestého do sedmého bitu, což v případě znaménkové aritmetiky značí přetečení hodnoty čísla do bitu vyhrazeného pro znaménko
6 × × neobsazeno
5 × × neobsazeno
4 H Half-Carry Flag nastavený při přenosu ze třetího do čtvrtého bitu; tento příznak je použit při BCD aritmetice
3 I Interrupt Mask příznak, pomocí něhož lze povolit či naopak zakázat maskovatelné přerušení (IRQ)
2 N Negative Flag tento příznak je nastaven, pokud poslední aritmetická či logická operace vygenerovala záporný výsledek, tj. bajt s nejvyšším bitem rovným jedničce (0×80 až 0×FF)
1 Z Zero Flag tento příznak se nastaví, pokud poslední aritmetická či logická operace vygenerovala osmibitovou hodnotu 0×00, spolu s předchozím příznakem lze zjišťovat relace typu: <0 ≤0 =0 ≥0 >0 ≠0
0 C Carry Flag přetečení ze sedmého do (neexistujícího) osmého bitu při mnoha operacích (rotace, aritmetické operace); tento příznak je taktéž nastavovaný nebo nulovaný při bitových operacích v prvních 256 bajtech paměti

Obrázek 10: Interní struktura mikrořadiče 68HC08.
(Zdroj: Technical Data – MC68HC08AB16A, Freescale Semiconductor)

7. Rozšířená instrukční sada mikrořadiče 68HC08

Na jedenáctém obrázku zobrazeném pod tímto odstavcem jsou vypsány všechny instrukce mikrořadiče 68HC08. Při porovnání této sady instrukcí s instrukcemi mikrořadiče 68HC05 na obrázku číslo 3 můžeme najít větší množství odlišností. Především došlo k rozšíření adresních režimů mnoha instrukcí – nově je možné adresovat operandy ležící v RAM či ROM pomocí adresy vypočtené jako součet obsahu SP a osmibitového či šestnáctibitového offsetu. Tyto adresní režimy jsou poměrně důležité, protože je lze použít při překladu programů napsaných v některém vyšším programovacím jazyce (zde se jednalo zejména o jazyky PL/1, Modulu a C). Tyto jazyky pro každou volanou funkci vytváří takzvaný zásobníkový rámec (stack frame), v němž jsou uloženy jak parametry funkce, tak i lokální proměnné. A právě při adresování parametrů a lokálních proměnných lze využít oba dva nové adresní režimy. Taktéž si povšimněte, že instrukce používající tyto dva režimy mají před instrukčním kódem prefix 0×9E.

Obrázek 11: Instrukční sada mikrořadiče 68HC08.
(Zdroj: Technical Data – MC68HC08AB16A, Freescale Semiconductor)

Kromě instrukcí pracujících s horními osmi bity dvojregistru H:X došlo též k přidání dalších užitečných instrukcí, především CBEQ (compare and branch if equal), což je instrukce odpovídající (až na negaci podmínky) instrukci CJNE známé z mikrořadičů MCS-51. Taktéž byla přidána instrukce DBNZ (decrement and branch if not zero), jejíž obdobu můžeme na architektuře MCS-51 najít v instrukci DJNZ – zatímco firma Intel z historických důvodů používá pro všechny typy skoků termín „jump“, firma Motorola se drží termínu „branch“ v případě, že se jedná o relativní skoky, u nichž je cílová adresa specifikována pomocí offsetu. V předchozí kapitole jsme si řekli, že do sady příznaků byl přidán i příznak V (overflow). Tento příznak je použit u čtyř nových podmíněných skoků prováděných většinou po instrukcích CMP a CPX. Nové skokové instrukce, používané při práci s celými čísly se znaménkem (signed short integer, signed char), jsou vypsány v následující tabulce:

Zkratka Význam
BGT skok, pokud platí podmínka operand1 > operand2
BGE skok, pokud platí podmínka operand1 ≥ operand2
BLT skok, pokud platí podmínka operand1 < operand2
BLE skok, pokud platí podmínka operand1 ≤ operand2

8. Čítače a časovače mikrořadiče 68HC08, modul provádějící PWM

Mikrořadiče 68HC08 byly rychlejší než původní řada 68HC05 – kromě urychlení některých instrukcí došlo i ke zvýšení mezní frekvence na 8 MHz (minimální frekvence byla 0 Hz s možností plynulé změny až do 8 MHz). Kapacita paměti RAM byla rovna jednomu kilobajtu, kapacita ROM 16 kB, k nimž byla u některých typů čipů přidána i paměť FLASH s kapacitou až 32 kB. Ovšem nejpodstatnějším rozdílem, který především zajímal konstruktéry elektrických zařízení, bylo zvýšení počtu I/O portů. Celkem se jednalo o osm paralelních portů označovaných jmény PORT A až PORT H. Pět z těchto portů bylo osmibitových, další porty měly vyvedeny menší množství pinů. Jak je u mikrořadičů dobrým zvykem, byla většina I/O pinů konfigurovatelná a mohla pracovat ve více režimech – například piny portu E (PORT E) mohly alternativně sloužit k vytvoření sériových komunikačních kanálů: sériového asynchronního portu (RxD, TxD) a současně i sériového synchronního portu či sběrnice SPI (MISO, MOSI, SS, SPSCK).

Obrázek 12: Struktura čítačů a časovačů mikrořadiče 68HC08.
(Zdroj: Technical Data – MC68HC08AB16A, Freescale Semiconductor)

UX DAy - tip 2

Vstupně/výstupní piny dalších portů navíc mohly sloužit pro potřeby čítačů a časovačů. Právě čítače a časovače tvořily velmi důležitou součást mikrořadiče 68HC08 a zejména ony byly s velkou pravděpodobností rozhodujícím důvodem pro použití těchto mikrořadičů v poměrně velkém množství průmyslových výrobků (v našich zemích jsou tyto mikrořadiče známé již méně, což souvisí s dlouhou tradicí výroby klonů čipů firmy Intel, mezi jinými i mikrořadiče MCS-48). Mikrořadiče 68HC08 obsahovaly dva samostatně pracující moduly se šestnáctibitovými čítači/časovači – modul A (timer interface module A – TIMA) a modul B (timer interface module A – TIMB). Každý z těchto modulů obsahoval čtyři vstupně/výstupní kanály konfigurovatelné (nezávisle na sobě) jako vstupní či jako výstupní kanál. Každý kanál konfigurovaný do režimu vstupu umožňoval zachytit stav čítače ve chvíli, kdy na tomto vstupu došlo ke stanovené změně připojeného signálu (přechod L→H, přechod H→L či libovolný z těchto přechodů).

Pokud byl kanál naopak nakonfigurovaný do výstupního režimu, mohl v daném časovém okamžiku či se zadanou periodou generovat signály různých tvarů, dobou trvání a frekvencí. Kanál pracující ve vstupním režimu navíc mohl vygenerovat při změně signálu (přivedeného na jeho pin) přerušení, stejně jako kanál pracující v režimu výstupním při dosažení nastavené hodnoty čítače. Každý kanál nastavený do výstupního režimu byl samozřejmě schopný generovat signál s konstantní periodou a proměnnou střídou, což je základ PWM – pulsní šířkové modulace. V praxi to znamenalo, že jediný mikrořadič 68HC08 umožňoval současně a v podstatě bez jakéhokoli většího programátorova úsilí ovládat pomocí PWM až osm zařízení, například motorů, topných spirál atd. (samozřejmě při použití vhodného elektrického rozhraní).

9. Odkazy na Internetu

  1. Wikipedia: Motorola 68HC05
    http://en.wiki­pedia.org/wiki/Mo­torola_68HC05
  2. Wikipedia: Freescale 68HC08
    http://en.wiki­pedia.org/wiki/68HC08
  3. Wikipedia: Freescale 68HC11
    http://en.wiki­pedia.org/wiki/68HC11
  4. Wikipedia: Freescale 68HC12
    http://en.wiki­pedia.org/wiki/Fre­escale_68HC12
  5. HC05 Processor Families
    http://www.fre­escale.com/we­bapp/sps/site/o­verview.jsp?no­deId=016246844­98633
  6. HC08 Processor Families
    http://www.fre­escale.com/we­bapp/sps/site/o­verview.jsp?no­deId=016246844­97663
  7. Digital Core Design 68HC08 – HDL IP Core
    http://www.dcd­.pl/acore.php?id­core=82
  8. Freescale 68HC11
    http://www.fre­escale.com/we­bapp/sps/site/ta­xonomy.jsp?no­deId=016246844­98635
  9. Lifecycle of a CPU:
    http://www.cpushac­k.net/life-cycle-of-cpu.html
  10. Most wanted CPU of the world:
    http://www.cpu-galaxy.at/CPU/In­tel%20CPU/3002–8008/4004%20G­rey.jpg
  11. Wikipedia: 6502:
    http://en.wiki­pedia.org/wiki/6502
  12. The Western Design Center, Inc.:
    http://www.wes­terndesigncen­ter.com/
  13. Apple II History Home:
    http://apple2his­tory.org/
  14. www.6502.org:
    http://www.6502­.org/
  15. Stránky firmy Microchip Technology
    http://www.mi­crochip.com/
  16. 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
  17. Ř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
  18. Ř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
  19. Ř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
  20. Ř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
  21. Další výběr z různých modelů mikrořadičů PIC
    http://www.mi­crochip.com/map­s/microcontro­ller.aspx
  22. PIC microcontroller (Wikipedia EN)
    http://en.wiki­pedia.org/wiki/PIC_mi­crocontroller
  23. Mikrokontrolér PIC (Wikipedia CZ)
    http://cs.wiki­pedia.org/wiki/Mi­krokontrolér_PIC
  24. FLASHFORTH for the PIC18F and the dsPIC30F
    http://flashf­orth.sourcefor­ge.net/
  25. FlashForth
    http://www.sou­rceforge.net/pro­jects/flashfor­th
  26. Free Pic software tools
    http://softwa­repic.50webs.com/fre­esoft.html
  27. What is Amicus?
    http://www.pic­basic.org/pro­ton_lite.php
  28. Amicus FAQ
    http://www.my­amicus.co.uk/faq­.php?s=2e8d12e7f4c23e775­776f4916876354b&
  29. Microcontrollers development tools
    http://www.gnu­pic.dds.nl/
  30. gpsim (Wikipedia EN)
    http://en.wiki­pedia.org/wiki/Gpsim
  31. gpsim home page
    http://gpsim.sou­rceforge.net/gpsim­.html
  32. The FreeRTOS Project
    http://www.fre­ertos.org/
  33. FreeRTOS (Wikipedia)
    http://en.wiki­pedia.org/wiki/Fre­eRTOS
  34. Serial EEPROM (93C46 / 93CS46) Routines
    http://www.pjrc­.com/tech/8051/se­rial-eeprom.html
  35. Great Microprocessors of the Past and Present (V 13.4.0)
    http://jbayko­.sasktelwebsi­te.net/cpu.html
  36. SPI interface tutorial
    http://www.best-microcontroller-projects.com/spi-interface.html
  37. Serial Peripheral Interface Bus
    http://en.wiki­pedia.org/wiki/Se­rial_Peripheral_In­terface_Bus
  38. EUSB to SPI bus Kit
    http://www.ei­dusa.com/Elec­tronics_Kits_E­USB_To_SPI_BUS­.htm
  39. SPI Block Guide V03.06, Freescale Semiconductor
    http://www.fre­escale.com/fi­les/microcontro­llers/doc/ref_ma­nual/S12SPIV3­.pdf
  40. What is SPI?
    http://www.fpga4fun­.com/SPI1.html
  41. SPI – A simple implementation
    http://www.fpga4fun­.com/SPI2.html
  42. Bit-banging
    http://en.wiki­pedia.org/wiki/Bit-banging
  43. Joint Test Action Group
    http://en.wiki­pedia.org/wiki/JTAG
  44. I2C
    http://en.wiki­pedia.org/wiki/I2C
  45. Seriál o programovacím jazyce Forth:
    seriál o programovacím jazyce Forth
  46. Display Data Channel
    http://en.wiki­pedia.org/wiki/Dis­play_Data_Chan­nel
  47. I2 Background
    http://www.mi­croport.tw/blog­new.php?blog_no­=7#theory
  48. PIC16F87X, 28/40-pin 8-Bit CMOS FLASH Microcontrollers
    Microchip Technology Inc.
    http://www.mi­crochip.com

Byl pro vás článek přínosný?

Autor článku

Vystudoval VUT FIT a v současné době pracuje na projektech vytvářených v jazycích Python a Go.