Čipy PIC24 a dsPIC: na rozhraní mezi mikrořadiči a DSP

2. 5. 2017
Doba čtení: 20 minut

Sdílet

Mikrořadiče PIC jsme si již popisovali, ovšem prozatím jsme se zabývali pouze osmibitovými mikrořadiči. Svět čipů PIC je však rozsáhlejší, protože v něm nalezneme i šestnáctibitové mikrořadiče a dokonce i jednoduché DSP.

Obsah

1. Čipy PIC24 a dsPIC: na rozhraní mezi mikrořadiči a DSP

2. Historie mikrořadičů PIC

3. Rodiny mikrořadičů PIC

4. Řada PIC10

5. Řada PIC12

6. Řada PIC16

7. Řada PIC18

8. Šestnáctibitové mikrořadiče PIC24 a dsPIC

9. Sada pracovních registrů

10. Akumulátory u řady dsPIC

11. Stavový registr SRH+SRL

12. Řídicí registr CORCON

13. Instrukční soubor mikrořadičů PIC24 a dsPIC

14. Odkazy na Internetu

1. Čipy PIC24 a dsPIC: na rozhraní mezi mikrořadiči a DSP

S mikrořadiči řady PIC vyráběnými společností Microchip Technology jsme se již v tomto seriálu několikrát setkali, což samozřejmě není náhoda, protože tato firma v současnosti nabízí několik set (!) různých typů těchto čipů, které se od sebe odlišují jak počtem využitelných vstupně/výstupních pinů (GPIO), tak i kapacitou interní paměti dat (RAM) a taktéž interní paměti programu (ROM), počtem a typem modulů, které jsou na mikrořadiči implementovány (sběrnice, porty atd.), rozsahem povoleného napájecího napětí, rozsahem frekvencí hodinového signálu, kterým se čip řídí, přítomností hardwarové „DSP“ násobičky atd. Pod označením PIC se dnes skrývá celá řada čipů; od jednoduchých osmibitových mikrořadičů PIC10 a PIC12 („programovatelné součástky“), přes populární řady PIC16 a PIC18 až po šestnáctibitové čipy PIC24 a dsPIC, kterými se budeme podrobněji zabývat ve druhé části dnešního článku a v navazující části seriálu.

Obrázek 1: Pro vývoj aplikací určených pro osmibitové mikrořadiče PIC je možné použít i mnoho open source nástrojů. Na tomto screenshotu jsou zobrazena některá okna nástroje nazvaného gpsim (simulátoru mikrořadičů), který lze provozovat jak na Linuxu, tak i na systémech MS Windows. Tento nástroj v současné verzi simuluje mikrořadiče řady PIC10, PIC12, PIC16 i PIC18, tedy celou dnes dostupnou sérii osmibitových mikrořadičů.

2. Historie mikrořadičů PIC

Mikrořadiče PIC mají za sebou velmi dlouhý a v několika ohledech i zajímavý vývoj. Ten vlastně začal již v polovině sedmdesátých let minulého století, kdy vznikl mikrořadič nazvaný Signetics 8×300. Jednalo se o jeden z prvních mikrořadičů založených na Harvardské architektuře (tj. s oddělenou pamětí pro data a pamětí pro program), který ještě byl vytvořený na bázi bipolárních tranzistorů, podobně jako například logické obvody řady TTL. Tento mikrořadič ovšem postrádal některé důležité vlastnosti používané v praxi; například neměl zásobník, indexové registry a dokonce ani možnost zpracovávat přerušení (což souviselo, i když jen okrajově, s neexistencí zásobníku). Taktéž adresování paměti programu bylo poněkud složité – provádělo se přes osmibitový registr nazvaný IVB, navíc aritmeticko-logická jednotka dokázala provádět pouze instrukce MOV, ADD, AND, XOR a bitové posuny. Z výše uvedených důvodů se mikrořadič Signetics 8×300 v praxi příliš nerozšířil.

Obrázek 2: Vývojový kit BASIC Stamp ve verzi vybavené rozhraním universální sériové sběrnice (USB). Jedná se o jednodeskový mikropočítač vybavený mikrořadičem PIC a pamětí ROM s interpretrem programovacího jazyka BASIC. Po tomto kitu se začal prodávat kit nazvaný Spin Stamp vybavený pro změnu interpretrem programovacího jazyka SPIN (výrobcem je ve všech případech společnost Parallax).

V sedmdesátých letech minulého století ovšem vznikl i šestnáctibitový mikroprocesor s označením CP1600 firmy General Instruments (s touto firmou jsme se již ostatně v tomto seriálu setkali, protože stojí i za vznikem slavného zvukového čipu AY-3–8910, lidově „áýčka“). Aby se vylepšila výkonnost tohoto nepříliš úspěšného mikroprocesoru při provádění různých vstupně/výstupních operací, byl vytvořen pomocný čip nesoucí označení PIC1640, kde první tři písmena „PIC“ znamenala „Programmable Interface Controller“ a číslo 16 začalo označovat řadu čipů s podobnou (většinou zcela totožnou) instrukční sadou.

Obrázek 3: Vývojový kit Amicus s mikrořadičem PIC. Tento vývojový kit byl inspirován kitem Arduino určeným pro mikrořadiče Atmel AVR, i když ani zdaleka není tak populární.

Úkolem tohoto čipu byla skutečně komunikace s periferními zařízeními, kterou tak nemusel obstarávat mikroprocesor CP1600. Původní PIC1640 a na něj navazující čip PIC1650 obsahovaly interní paměť ROM programovanou pomocí poslední masky přímo při výrobě čipu (což je podobné prakticky všem čtyřbitovým mikrořadičům, jimž jsme se věnovali v předchozích pěti částech tohoto seriálu). Ovšem většího rozšíření se mikrořadiče PIC dočkaly až po oddělení divize mikroelektroniky z firmy General Instruments do nově vzniklé firmy s názvem Microchip Technology (tato firma existuje dodnes).

Obrázek 4: Hlavní okno simulátoru mikrořadičů PIC – aplikace gpsim.

Právě v této nové firmě došlo k zásadní proměně mikrořadiče – náhradě neměnné ROM za paměť EPROM (mazatelné ultrafialovým zářením přes okénko na čipu) a posléze i náhradě EPROM za EEPROM (elektronicky mazatelnou paměť) a Flash (vylepšenou EEPROM s větším množstvím zápisů a rychlejším blokovým algoritmem přepisu dat). Mimochodem – první mikrořadič PIC s pamětí typu EEPROM nesoucí jméno PIC 16C84 se díky svému významu pro další vývoj celého odvětví dostal i mezi 25 čipů, které (podle autora tohoto žebříčku) nejvíce změnily svět: „25 Microchips That Shoot The World“ (varianta PIC 16F84 již obsahovala Flash). PIC 16C84 je zde zmíněn například vedle známého časovače 555, osmibitového mikroprocesoru MOS 6502, 8/16bitového mikroprocesoru Intel 8088 (právě ten stál u vzniku platformy IBM PC, nikoli jeho výkonnější bráška Intel 8086) či 16/32bitového mikroprocesoru Motorola 68000 (majitelům osobních mikropočítačů značek Atari ST, Amiga či Macintosh 68k zajisté netřeba zdlouhavě představovat).

Obrázek 5: Editor paměti programu v simulátoru gpsim.

V současnosti se čipy PIC vyrábí právě ve firmě Microchip, ovšem někteří další výrobci nabízí čipy, které jsou z hlediska instrukční sady s PICy částečně či úplně kompatibilní. Mezi tyto výrobce klonů patří Parallax, Hycom, Holtek či ELAN.

3. Rodiny mikrořadičů PIC

Mikrořadiče označované jménem PIC jsou rozděleny do takzvaných rodin. Čipy z jednotlivých rodin se od sebe odlišují především počtem vstupně/výstupních portů (a tím pádem i pinů), počtem universálních registrů (neboli kapacitou paměti údajů), kapacitou paměti programu (EPROM, Flash) a v neposlední řadě také instrukční sadou – nejjednodušší mikrořadiče, konkrétně se jedná o mikrořadiče spadající do rodiny PIC10, mají ve své instrukční sadě pouze 33 instrukcí, pouzdra těchto čipů mají v extrémním případě jen šest vývodů (což je například méně než počet vývodů známého obvodu 555), kapacita paměti programu dosahuje 256 nebo 512 bajtů a počet universálních registrů je roven 16 nebo 24 (takže kapacita interní RAM je 16 či 24 bajtů). Naproti tomu některé mikrořadiče z rodiny PIC18 jsou umístěny v pouzdře s 28 až 40 piny, jejich instrukční sada má 75 instrukcí, paměť pro uložení programu může mít kapacitu 8 kB a počet universálních registrů dosahuje typicky 256 bajtů.

Obrázek 6: Source browser – součást nástroje gpsim zmíněného v úvodní kapitole.

Samostatnou skupinu tvoří mikrořadiče PIC24 a dsPIC, které jsou šestnáctibitové a jimiž se budeme podrobněji zabývat níže. Další samostatnou skupinou jsou mikrořadiče PIC32MX, PIC32MZ a PIC32MM založené na 32bitovém RISCovém jádru MIPS, tedy na druhé straně výkonnostního spektra v porovnání s řadami PIC1×.

Základní rozdělení osmibitových mikrořadičů PIC je znázorněno na následujícím obrázku. Povšimněte si, že jedním z hlavních ukazatelů je nejenom počet pinů (který omezuje i počet modulů, například přítomnost sériového portu, A/D převodníku či PWM) ale i bitová šířka instrukcí, protože u čipů s větším počtem universálních registrů (RAM) i větší kapacitou paměti programu (ROM) je nutné v instrukčním slově rezervovat větší množství bitů pro uložení indexu universálního registru nebo adresy, na které se má provést skok:

Obrázek 7: Základní rozdělení osmibitových mikrořadičů PIC. Skupiny se od sebe odlišují podle toho, jak široká jsou instrukční slova (z toho jsou odvozeny další vlastnosti, například velikost adresovatelné paměti atd.). Zdroj: firma Microchip Technology.

Pro lepší porovnání možností mikrořadičů z jednotlivých rodin jsou v následující tabulce vypsány parametry některých vybraných mikrořadičů PIC:

Mikrořadič
 
Frekvence
(MHz/MIPS)
Pinů
 
RAM
(bajtů)
ROM
(slov/kB)
Instrukční sada
(bitů)
Počet instrukcí
 
PIC10F200 4 6–8 16 256 12 33
PIC10F206 4 6–8 16 512 12 33
PIC12F683 8 14 128 2048 14 35
PIC16F87 až 20 18 368 4096 14 35
PIC18F1220 až 40 18–28 256 2048 16 78
PIC18F1320 až 40 18–28 256 4096 16 78
PIC24F04KA200 16 14 512 4096 24 94
PIC24FJ128GA010 16 100 8192 128kB 24 94
PIC24FJ128GA110 16 100 16384 256kB 24 94
dsPIC30F1010 30 28 256 6kB 24 110
dsPIC30F6015 30 64 8192 144kB 24 110
dsPIC33FJ256GP510A 40 100 16384 256kB 24 110

Poznámka: instrukční sady pro řady PIC18, PIC24 a dsPIC jsou navrženy takovým způsobem, aby se zefektivnil překlad z céčka, i když se nejedná o klasické RISCy. Zde se již příliš nepočítá s použitím assembleru, samozřejmě kromě specifických subrutin. Naproti tomu u řad PIC10, PIC12 a částečně i PIC16 se většinou programy zapisovaly v assembleru – ostatně jednalo se většinou o programy dlouhé několik desítek maximálně stovek instrukcí.

4. Řada PIC10

Mikrořadiče řady PIC10 (a PIC12) patří mezi nejmenší čipy PIC vůbec, a to jak z hlediska počtu pinů, tak i dostupné kapacity datové paměti RAM či programové paměti ROM. Instrukce mají konstantní šířku dvanáct bitů, což omezuje zejména možnosti adresování (jak operandů v rámci RAM, tak i cíle skoku v EPROM či Flash). Příkladem může být čip PIC10F200 nabízený v pouzdru s pouhými šesti či osmi piny – ostatně i z tohoto důvodu se těmto mikrořadičům přezdívá „programovatelné součástky“. Maximální hodinová frekvence tohoto čipu je 4 MHz (díky internímu oscilátoru není nutné připojovat externí hodinový signál), kapacita programové paměti 256 instrukcí (po dvanácti bitech) a kapacita datové paměti pouze šestnáct bajtů. Kromě vlastního CPU je na čipu umístěn i konfigurovatelný osmibitový čítač a v případě nepatrně upraveného obvodu PIC10F204 zde najdeme i jeden komparátor. Výhodou je i automatický reset (ušetření dalšího pinu).

Obrázek 8: Mikrořadič PIC10F2×x umístěný v pouzdru SOT-23. Celkové rozměry tohoto čipu jsou minimální: šířka 2,2mm, délka 2,7mm a výška 0,9mm.
(zdroj: PIC10F200/202/204/206 Data Sheet)

I tyto minimalistické mikrořadiče podporují programování pomocí protokolu In-Circuit Serial Programming (ICSP) vyvinutého samotnou firmou Microchip Technology. Tento protokol, jak již ostatně jeho název napovídá, umožňuje zápis dat do paměti programu pomocí třívodičového sériového kanálu – jedním vodičem se přenáší data a řídicí příkazy, druhý vodič slouží pro přenos hodinového signálu a třetí vodič je společná (datová) zem pro vysílač (například osobní počítač) i přijímač (kterým je mikrořadič). ICSP je patrná i na schématu zapojení pinů mikrořadiče PIC10F200, které je zobrazeno na následujícím obrázku:

Obrázek 9: Zapojení pinů mikrořadičů PIC10F200 a PIC10F202 při použití pouzdra typu SOT-23. Jak je z obrázku patrné, mají některé piny přiřazeno více funkcí, které lze samozřejmě uživatelsky konfigurovat.
(zdroj: PIC10F200/202/204/206 Data Sheet)

5. Řada PIC12

Další rodinou mikrořadičů PIC jsou čipy řady PIC12, které jsou již v mnoha ohledech lépe vybavené než mikrořadiče PIC10, a to při zachování příznivé ceny a v mnoha případech i zachování malého pouzdra, v němž jsou tyto mikrořadiče umístěny (víme již, že s rostoucím počtem pinů roste i cena, spotřeba a poruchovost celého zařízení, a to sice ne výrazně, ale při sériové výrobě se již může jednat o položku ovlivňující například koncovou cenu zařízení).

Obrázek 10: Starší mikrořadiče PIC s paměťmi typu EPROM mazatelnými ultrafialovým zářením (právě z tohoto důvodu jsou na čipech okénka propouštějící UV záření na buňky paměti EPROM).

Zástupcem rodiny PIC12 je mikrořadič PIC12F675, který prakticky ve všech ohledech překonává čipy PIC10F2×x popsané výše. Tento mikrořadič obsahuje interní paměť programu schopnou uložit až 1024 instrukcí. Paměť dat je rozšířena na 64 bajtů, k nimž je navíc přidáno 128 bajtů paměti EEPROM, jejíž buňky by měly umožnit až jeden milion přepisů (to například znamená, že pokud se výsledek nějakého měření zapíše do stejné buňky EEPROM jednou za čtvrt hodiny, překračuje životnost této paměti 28 let, tj. mnohonásobně plánovanou životnost celého zařízení). Tato paměť je samozřejmě nevolatilní, tudíž „přežije“ i výpadky napájení.

I další technické parametry tohoto mikrořadiče jsou oproti řadě PIC10 vylepšeny – například počet vstupně/výstupních pinů se zvýšil na šest (celkem čip používá 8 pinů), časovač byl rozšířen na šestnáct bitů a navíc byl přidán i čtyřkanálový analogově-digitální převodník, což mj. znamená, že čtyři vstupní piny mohou být využity pro čtení analogových údajů, což je na osmipinový čip poměrně zajímavá hodnota (převodník je jen jeden, ovšem je vybaven multiplexorem). Taktéž výpočetní rychlost se zvýšila, a to pětkrát – ovšem za předpokladu, že je použit externí oscilátor.

6. Řada PIC16

Řada PIC16, kam zařazujeme mj. i stále populární čipy PIC16F87 a PIC16F88, je sice uvedena až třetí v pořadí, ovšem ve skutečnosti právě tato řada stála za úspěchem celé série PIC. Čipy řady PIC16 používají instrukční sadu s instrukčními slovy širokými čtrnáct bitů (to mj. znamená, že se změnila i organizace paměti programu, resp. šířka ukládaných slov). Rozšíření každé instrukce o dva bity v porovnání s PIC12 se na návrhu instrukční sady projevilo třemi způsoby: aritmetické a logické instrukce mohou přímo adresovat až 128 bajtů operační paměti a registrů speciálních funkcí, skokové instrukce mohou obsahovat jedenáctibitovou cílovou adresu (0 až 2047) a současně se mohl zvýšit i celkový počet instrukcí. Přibyly například instrukce pro přičtení či odečtení osmibitové konstanty od obsahu akumulátoru W.

Obrázek 11: Mezi jedny z nejpoužívanějších mikrořadičů PIC patří řada PIC16F87, která konstruktérům nabízí příznivý poměr mezi cenou a velikostí čipu na jedné straně a jeho možnostmi na straně druhé. Písmeno „F“ v označení čipu naznačuje, že je tento mikrořadič vybaven Flash pamětí, podobně jako jeho slavný předchůdce PIC16F84.

Obecně je možné říci, že mikrořadiče řady PIC16 bývají po všech stránkách výkonnější v porovnání jak s PIC10, tak i s PIC12. Kapacita programové paměti se již počítá v jednotkách či desítkách kilobajtů (ovšem kapacity jsou stále na první pohled „divné“ kvůli 14bitovým slovům), typická kapacita operační paměti RAM je 128, 256, 512 či 1024 bajtů, hodinová frekvence bývá v rozsahu 16 MHz až 40 MHz a samozřejmě se zvýšil počet GPIO, čítačů, časovačů, komparátorů a objevují se i analogové I/O či PWM, nemluvě o podpoře sériových sběrnic atd.

Obrázek 12: Zapojení vývodů mikrořadiče PIC16F88.

7. Řada PIC18

Řada PIC18 vznikla z toho důvodu, že se společnost Microchip snažila své mikrořadiče, resp. přesněji řečeno především jejich instrukční sadu, upravit takovým způsobem, aby se i pro tyto čipy mohly psát programy v céčku či v některém dalším vyšším programovacím jazyku. To souviselo s posunem v celé oblasti mikrořadičů a firma Microchip nebyla jediná (opět si připomeňme například čipy S08 či H8). Především došlo ke zvětšení zásobníku na 31 prvků, což alespoň teoreticky umožňovalo implementaci klasických zásobníkových rámců (stack frame). Dále byly zavedeny klasické programové skoky, které doplnily pro PICy typickou instrukci SKIP (přeskok další instrukce v případě splnění podmínky). Zavedena byla i podpora pro adresování s index registrem. Teoretická maximální adresovatelná kapacita paměti RAM se zvětšila na 212 adres, protože k osmibitovému offsetu v instrukci se připojoval čtyřbitový registr s nastavenou bankou (takže vlastně práce C překladače zase tak jednoduchá nebyla :-).

8. Šestnáctibitové mikrořadiče PIC24 a dsPIC

Ve druhé části článku se budeme zabývat šestnáctibitovými mikrořadiči PIC24 a taktéž čipy dsPIC, které jsou založeny na PIC24, ovšem kromě toho mají přidanou podporu pro DSP operace (jinými slovy mají rychlou násobičku a obvody pro adresování používané v DSP aplikacích). Šestnáctibitové mikrořadiče PIC24 a dsPIC jsou rozděleny do šesti skupin vypsaných v následující tabulce:

Šestnáctibitové mikrořadiče
PIC24F
PIC24H
PIC24E
Šestnáctibitové digitální signálové procesory
dsPIC30F
dsPIC33F
dsPIC33E

Některé vlastnosti jsou všem šestnáctibitovým PICům společné. Týká se to jak instrukční sady, která se v mnoha ohledech odlišuje od instrukčních sad osmibitových mikrořadičů, tak i větší kapacity pamětí EPROM/Flash a RAM. Vzhledem k tomu, že programový čítač má šířku 23 bitů, je možné vytvářet mnohem větší programy. Programová paměť navíc používá slova široká celých 24 bitů, nikoli 12, 14 či 16 bitů. Kapacita datové paměti je sice omezena na 32k slov (tedy 64 kilobajtů), ovšem mnohé mikrořadiče podporují EDS (Extended Data Space), takže se i toto omezení může obejít. Mezi další novinky patří rychlá násobička 17×17 bitů se čtyřicetibitovými akumulátory, které najdeme u řady dsPIC (viz další text). Některé čipy mají i další podpůrné obvody, například obvod pro rychlé programové smyčky (DO-LOOP) atd.

Poznámka: některé vlastnosti řady PIC24 byly použity již v řadě PIC17, kterou jsme si nepopisovali z toho důvodu, že se jednalo o komerčně neúspěšné čipy, která již firma Microchip nevyrábí. Ovšem právě u PIC17 se objevila HW násobička (osmibitová) apod.

9. Sada pracovních registrů

Připomeňme si, že všechny osmibitové mikrořadiče PIC měly de facto pouze jediný pracovní registr nazvaný W (work register). Ostatní registry, a to včetně programového čítače, stavového registru, registru INDF používaného pro nepřímé adresování atd. byly mapovány přímo do paměti RAM. Tomuto uspořádání odpovídala i instrukční sada, protože všechny instrukce se dvěma operandy (ADDWF, SUBWF, ANDWF, IORWF, XORWF) akceptovaly jako jeden operand vždy registr W a druhým operandem byl libovolný registr f mapovaný do RAM (počet těchto registrů a tím i kapacita RAM je omezen zvolenou instrukční sadou). Podobně je tomu i u instrukcí pracujících s osmibitovou konstantou, v nichž je cílovým operandem vždy pracovní registr W. Toto uspořádání však není pro delší programy příliš vhodné, neboť existence jediného „akumulátoru“ může být limitující a nepříjemná zejména při překladu céčkových programů.

Naproti tomu u šestnáctibitových mikrořadičů došlo k výrazné změně, protože je zde k dispozici celkem šestnáct pracovních registrů, přičemž každý z těchto registrů má pochopitelně šířku šestnáct bitů. Všechny dostupné registry jsou vypsány v následující tabulce:

Registr Alternativní funkce/jméno
W0 WREG
W1  
W2  
W3  
W4  
W5  
W6  
W7  
W8  
W9  
W10  
W11  
W12  
W13  
W14 Frame pointer
W15 Stack pointer

Čítač instrukcí PC je od sady pracovních registrů oddělen, protože má šířku 23 bitů, zatímco pracovní registry mají šířku šestnáct bitů.

Poznámka: registr W0 s aliasem WREG je implicitně používán v těch adresovacích režimech, v nichž je druhým operandem buňka v RAM. V takové situaci totiž již v instrukčním slovu není dostatek volných bitů pro určení indexu pracovního registru.

10. Akumulátory u řady dsPIC

U čipů dsPIC30F, dsPIC33F a dsPIC33E se kromě pracovních registrů setkáme i s akumulátory pojmenovanými ACCA a ACCB, které se používají u mnoha operací pro zpracování signálu. Tyto akumulátory jsou dva a každý z nich má šířku 40 bitů, což je v oblasti DSP poměrně obvyklá hodnota (stačí si připomenout články o slavném digitálním signálovém procesoru TMS320C10). Z pohledu programátora je každý akumulátor složen ze tří registrů mapovaných do RAM:

Akumulátor Horních 8 bitů Prostředních 16 bitů Spodních 16 bitů
ACCA ACCAU ACCAH ACCAL
ACCB ACCBU ACCBH ACCBL

U čipů dsPIC33E je možné uložit výsledek operace MUL přímo do akumulátoru, takže se násobení může provádět paralelně s další instrukcí.

11. Stavový registr SRH+SRL

Stavový registr obsahuje stavové informace používané aritmeticko-logickou jednotkou a u čipů dsPIC i stavové informace DSP modulu. Z tohoto důvodu je obsazení jednotlivých bitů stavového registru závislé na konkrétním čipu, ovšem některé příznakové a řídicí bity jsou pro všechny procesory PIC24 i dsPIC shodné. Stavový registr, který se v assembleru označuje jménem SR, je šestnáctibitový a je rozdělen na dva osmibitové registry pojmenované jednoduše SRH a SRL. V následující tabulce je upřesněn význam jednotlivých bitů, přičemž především spodní čtyři bity jsou pro všechny čipy shodné:

Bit Označení Význam
0 C příznak přenosu či výpůjčky
1 Z příznak nulového výsledku
2 OV příznak přetečení
3 N příznak záporného výsledku
     
4 RA nastaveno ve chvíli provádění programové smyčky REPEAT
     
5 IPL0 tyto tři bity určují prioritu přerušení
6 IPL1 tyto tři bity určují prioritu přerušení
7 IPL2 tyto tři bity určují prioritu přerušení
     
8 DC příznak přetečení ze čtvrtého bitu
9 DA nastavený při provádění programové smyčky DO (jen dsPIC)
     
10 SAB SA or SB (jen dsPIC)
11 OAB OA or SB (jen dsPIC)
12 SB příznak saturace pro akumulátor B (jen dsPIC)
13 SA příznak saturace pro akumulátor A (jen dsPIC)
14 OB přetečení pro akumulátor B (jen dsPIC)
15 OA přetečení pro akumulátor A (jen dsPIC)

Posledních šest bitů je použito jen u čipů dsPIC vybavených akumulátory.

12. Řídicí registr CORCON

Tento registr je taktéž šestnáctibitový a obsazení jednotlivých bitů závisí na konkrétním čipu. Například u čipů PIC24F a PIC24H jsou obsazeny jen dva bity IPL3 (doplněk k již výše uvedeným bitům, což je dosti nesystematické) a taktéž bit PSV, který řídí adresování – CPU se může nastavit do režimu, v němž se část programové paměti mapuje do paměti datové, takže je umožněno jednoduché čtení konstant atd. U čipů PIC24E tento bit neexistuje a namísto něho je použit bit nazvaný SFA pro řízení chování zásobníkového rámce. A konečně u čipů dsPIC je v řídicím registru CORCON rezervováno několik bitů pro řízení DSP modulu – režimy saturace, provádění programových smyček DO atd.

13. Instrukční soubor mikrořadičů PIC24 a dsPIC

Jak jsme si již naznačili v osmé kapitole, je instrukční soubor mikrořadičů PIC24/dsPIC v několika ohledech odlišný od osmibitových mikrořadičů řady PIC10/12/16/18. Tvůrci PIC24 se rozhodli, že instrukční slova budou mít šířku 24 bitů, což umožnilo jak použití většího množství pracovních registrů, tak i přidání nových adresních režimů, zcela nových instrukcí apod.

bitcoin_skoleni

Podporovány jsou tyto instrukce:

Přesuny dat
Aritmetické operace
Logické operace
Bitové posuny a rotace
Bitové operace
Podmíněné skoky a podmíněný přeskok následující instrukce
Řízení běhu programu
Manipulace se zásobníkem
Další řídicí instrukce
U čipů dsPIC i instrukce specifické pro DSP modul

Podrobnější popis instrukcí, především instrukcí pro DSP modul, bude uveden v následujícím článku.

14. Odkazy na Internetu

  1. Stránky společnosti Microchip
    http://www.microchip.com/
  2. Mikrořadiče řady PIC10
    http://www.microchip.com/Pa­ramChartSearch/chart.aspx?bran­chID=1009
  3. Mikrořadiče řady PIC12
    http://www.microchip.com/Pa­ramChartSearch/chart.aspx?bran­chID=1001
  4. Mikrořadiče řady PIC16
    http://www.microchip.com/Pa­ramChartSearch/chart.aspx?bran­chID=1002
  5. Mikrořadiče řady PIC18
    http://www.microchip.com/Pa­ramChartSearch/chart.aspx?bran­chID=1004
  6. Šestnáctibitové mikrořadiče PIC
    http://www.microchip.com/Pa­ramChartSearch/chart.aspx?bran­chID=20
  7. Microchip's 32-bit MCUs
    http://www.microchip.com/design-centers/32-bit
  8. Development Tools (oficiálně dostupné nástroje pro PIC)
    http://www.microchip.com/development-tools/
  9. Vývojové nástroje pro osmibitové mikrořadiče PIC
    https://www.root.cz/clanky/vyvojove-nastroje-pro-osmibitove-mikroradice-pic/
  10. Mikroprocesory s architekturou MIPS
    https://www.root.cz/clanky/procesory-s-architekturou-risc-v-pracovnich-stanicich-a-serverech/
  11. gpsim Home Page
    http://gpsim.sourceforge.net/gpsim­.html
  12. Gpsim (Wikipedia)
    https://en.wikipedia.org/wiki/Gpsim
  13. Digital Signal Processors (stránky TI)
    http://www.ti.com/lsds/ti/pro­cessors/dsp/overview.page
  14. C674× Low Power DSP (stránky TI)
    http://www.ti.com/lsds/ti/pro­cessors/dsp/c6000_dsp/c674×/o­verview.page
  15. TMS320C30 (stránky TI)
    http://www.ti.com/product/tms320c30
  16. TMS320C6722B
    http://www.ti.com/product/tms320c6722b/des­cription
  17. Introduction to DSP
    http://www.ti.com/lit/wp/spry281/spry­281.pdf
  18. The Evolution of TMS (Family of DSPs)
    http://www.slideshare.net/mo­to_modx/theevo1
  19. ST10 16-bit MCUs
    http://www.st.com/en/micro­controllers/st10–16-bit-mcus.html?querycriteria=pro­ductId=LN1111
  20. XC800 family
    https://en.wikipedia.org/wi­ki/XC800_family
  21. C166 (stránky společnosti Infineon)
    https://www.infineon.com/cms/en/pro­duct/microcontroller/16-bit-c166-microcontroller/channel.html?chan­nel=ff80808112ab681d0112ab6b2e­af0759#ispnTab3
  22. C166 Family
    https://en.wikipedia.org/wi­ki/C166_family
  23. Zero-power Microcontrollers for Low-power and High-temperature Applications
    http://en.wikichip.org/w/i­mages/1/17/Atmel_MARC4_brochu­re.pdf
  24. MARC4 Micro-Controller (Wikipedia)
    https://en.wikipedia.org/wi­ki/MARC4_Micro-Controller
  25. MARC4 – Atmel
    https://en.wikichip.org/wi­ki/atmel/marc4
  26. MARC 4bit Microcontrollers Programmer's Guide
    https://en.wikichip.org/w/i­mages/4/44/MARC4_4-bit_Microcontrollers_Program­mer%27s_Guide.pdf
  27. MARC4 User's Guide qFORTH Compiler
    https://en.wikichip.org/w/i­mages/2/25/MARC4_User%27s_Gu­ide_qFORTH_Compiler.pdf
  28. Programovací jazyk Forth a zásobníkové procesory
    http://www.root.cz/clanky/programovaci-jazyk-forth-a-zasobnikove-procesory/
  29. Seriál Programovací jazyk Forth
    http://www.root.cz/serialy/pro­gramovaci-jazyk-forth/
  30. Programovací jazyk Factor
    http://www.root.cz/clanky/programovaci-jazyk-factor/
  31. PMOS
    https://en.wikipedia.org/wi­ki/PMOS_logic
  32. NMOS
    https://en.wikipedia.org/wi­ki/NMOS_logic
  33. CMOS
    https://en.wikipedia.org/wiki/CMOS
  34. Computer History Museum: TMS 1000 4-Bit microcontroller
    http://www.computerhistory­.org/collections/catalog/102711697
  35. Texas Instruments TMS1000 microcontroller family
    http://www.cpu-world.com/CPUs/TMS1000/
  36. Invention History of Microcontroller
    http://www.circuitstoday.com/mi­crocontroller-invention-history
  37. TMS1000 Series – TI
    https://en.wikichip.org/wi­ki/ti/tms1000
  38. TMX1795 – TI
    https://en.wikichip.org/wi­ki/ti/tmx1795
  39. Milton Bradley Microvision (U.S.) (1979, LCD, 9 Volt (1 or 2), Model# 4952)
    http://www.handheldmuseum­.com/MB/uVUS.htm
  40. 8051 Microcontroller
    http://www.circuitstoday.com/8051-microcontroller
  41. 4-bit (computer architectures)
    https://en.wikipedia.org/wiki/4-bit
  42. TMS 1000 Data Manual
    http://blog.kevtris.org/blog­files/TMS_1000_Data_Manual­.pdf
  43. Considerations for 4-bit processing
    http://www.embeddedinsights­.com/channels/2010/12/10/con­siderations-for-4-bit-processing/
  44. Are you, or would you consider, using a 4-bit microcontroller?
    http://www.embeddedinsights­.com/channels/2010/11/24/a­re-you-or-would-you-consider-using-a-4-bit-microcontroller/
  45. MARC4 Micro-Controller
    https://en.wikipedia.org/wi­ki/MARC4_Micro-Controller
  46. The Texas Instruments TMX 1795: the (almost) first, forgotten microprocessor
    http://www.righto.com/2015/05/the-texas-instruments-tmx-1795-first.html
  47. O2 Homepage
    http://www.the-nextlevel.com/odyssey2/
  48. Magnavox Odyssey2 (1978), Philips Videopac G7000 / C52 (1979)
    http://www.mess.org/sysinfo:odyssey2
  49. The Video Game Critic's Odyssey 2 Reviews
    http://videogamecritic.net/odd.htm
  50. Computer Closet Collection: Magnavox Odyssey2
    http://www.computercloset­.org/MagnavoxOdyssey2.htm
  51. PHILIPS Videopac C52
    http://old-computers.com/museum/compu­ter.asp?c=1060
  52. O2 Tech. Manual V.1.1 (PDF dokument)
    http://www.atarihq.com/dan­b/files/o2doc.pdf
  53. Magnavox Odyssey2
    http://www.game-machines.com/consoles/odyssey2.php
  54. Magnavox Odyssey2 (Wikipedia EN)
    http://en.wikipedia.org/wi­ki/Odyssey2
  55. Magnavox Odyssey2 Games (Wikipedia EN)
    http://en.wikipedia.org/wi­ki/List_of_Videopac_games
  56. TI 16-bit and 32-bit microcontrollers
    http://www.ti.com/lsds/ti/mi­crocontrollers16-bit32-bit/overview.page
  57. TMS 32010 Assembly Language Programmer's Guide (kniha na Amazonu)
    https://www.amazon.com/32010-Assembly-Language-Programmers-Guide/dp/0904047423

Autor článku

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