Osmibitové mikrořadiče PIC (3)

14. 9. 2010
Doba čtení: 18 minut

Sdílet

V dnešním článku o architekturách počítačů si popíšeme rodinu mikrořadičů PIC12, která nabízí výkonnější čipy, než ty, které jsou dostupné v „minimalistické“ rodině PIC10. Kromě toho se začneme zabývat i nástroji použitelnými pro programování mikrořadičů PIC či pro simulaci jejich činnosti.

Obsah

1. Některé významné rozdíly mezi rodinou PIC10 a PIC12

2. Paměť EPROM využitelná pro uložení dat

3. Paměť typu Flash, v níž je uložen programový kód

4. Watchdog

5. Analogově-digitální převodník

6. Čtrnáctibitová instrukční sada mikrořadičů PIC

7. Seznam instrukcí ve čtrnáctibitové instrukční sadě

8. Vývojové nástroje pro mikrořadiče PIC

9. Odkazy na Internetu

1. Některé významné rozdíly mezi rodinou PIC10 a PIC12

V předchozí části seriálu o architekturách počítačů jsme si popsali osmibitové mikrořadiče PIC z rodiny PIC10. Jedná se o ty nejmenší a taktéž i o nejméně výkonné mikrořadiče, která firma Microchip Technology v současnosti nabízí (a popravdě řečeno již méně výkonné čipy pravděpodobně nabízet nebude, protože u PIC10 je větší část jejich ceny určena cenou pouzdra). V mnoha elektronických zařízeních však výkon, popř. počet vstupně/výstupních pinů těchto mikrořadičů pro některou ze zamýšlených aplikací nedostačuje. V takových případech lze použít některý mikrořadič z rodiny PIC12. Tyto čipy jsou 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 1: Zapojení pinů osmibitového mikrořadiče PIC12F629.
(zdroj: PIC12F629/675 Data Sheet)

Moderní verze čipů z rodiny PIC12 se mohou pochlubit mnoha vylepšeními oproti rodině PIC10. Především jsou tyto čipy většinou vybaveny paměťmi s většími kapacitami (týká se to jak paměti s programem, tak i paměti pro data), kapacita zásobníku se zvětšila ze dvou prvků (návratových adres) na prvků osm a taktéž došlo k přidání několika dalších modulů k základnímu vybavení mikrořadiče. Většinou se jedná o analogově-digitální převodník, paměť typu EEPROM, do níž lze ukládat data, šestnáctibitový časovač a taktéž další programovatelné vstupně/výstupní piny. Zatímco mikrořadiče z rodiny PIC10 měly čtyři I/O piny, u mikrořadičů z rodiny PIC12 se jedná minimálně o šest I/O pinů pro čipy s pouzdrem s osmi vývody (viz též první a druhý obrázek). Některé mikrořadiče PIC12 mají též namísto dvanáctibitové instrukční sady instrukce, jejichž operační kód je uložen ve slovech s šířkou 14 bitů, což například umožňuje rozšířit možnosti adresování operační paměti i zvýšit „dosah“ přímých programových skoků z pouhých 512 adres na adres 2048 (bez použití stránkování).

Obrázek 2: Zapojení pinů osmibitového mikrořadiče PIC12F675.
(zdroj: PIC12F629/675 Data Sheet)

2. Paměť EPROM využitelná pro uložení dat

Poměrně důležitým modulem, který nebyl u mikrořadičů z rodiny PIC10 přítomen, je paměť typu EEPROM určená pro uložení dat. S touto pamětí se můžeme setkat u modernějších mikrořadičů z rodin PIC12, PIC16PIC18 (starší mikrořadiče, v jejichž názvu se vyskytuje znak C a ne F, namísto paměti EEPROM obsahovaly pouze programovou paměť EPROM mazatelnou ultrafialovým zářením, nikoli elektronicky). Zatímco operační paměť je volatilní, tj. její obsah je ztracen po vypnutí napájení, popř. po velkém snížení napájecího napětí, například při postupném vybíjení napájecích článků, jsou údaje v datové paměti EEPROM uchovány po prakticky libovolně dlouhou dobu. Samotná firma Microchip Technology ve svých technických specifikacích jednotlivých mikrořadičů uvádí, že by data uložená v EEPROM měla být čitelná i po více než 40 letech. Mikrořadiče PIC jsou navrženy tak, že se do paměti EEPROM mohou data zapisovat v prakticky libovolný okamžik a pouze s využitím standardního napájecího napětí (není tedy zapotřebí a vlastně ani možné na čip přivádět vyšší „programovací“ napětí).

Obrázek 3: Rozdíly mezi některými mikrořadiči z rodiny PIC12.

Díky této vlastnosti lze datovou EEPROM využít například pro uložení konfigurace zařízení provedeného uživatelem, které „přežije“ i výměnu napájecí baterie. Příkladem může být například regulátor teploty, který má v datové EEPROM uloženy údaje o tom, jakou teplotu má v místnosti udržovat v jednotlivých časových úsecích a v jednotlivých dnech. Mezi operační pamětí a datovou EEPROM existuje ještě jeden velmi podstatný rozdíl. Zatímco jednotlivé buňky operační paměti jsou adresovatelné přímo (adresa paměťové buňky je součástí instrukčního kódu), přístup k informacím uloženým v datové paměti EEPROM je poněkud složitější a taktéž časově náročnější. Pro ovládání EEPROM, ať již se jedná o datovou paměť nebo o paměť, v níž je uložený program, je určeno několik registrů speciálních funkcí: EECON1, EECON2, EEDATA, EEDATAH (u některých čipů není přítomen), EEADR a EEADRH (tento registr taktéž u některých mikrořadičů chybí).

Obrázek 4: 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).

Při čtení bajtu z datové paměti EEPROM je nutné nastavit adresu čtené buňky do registru EEADR (a popř. vyšší bajt adresy do registru EEADRH u těch čipů, které mají datovou EEPROM s větší kapacitou než 256 bajtů). Posléze je nutné nastavit několik řídicích bitů v registru EECON1, aby se vybrala správná paměť (buď paměť programu nebo dat) a současně se přečetl obsah vybrané paměťové buňky. Po provedení těchto kroků je obsah paměťové buňky překopírován do registru EEDATA. Zápis do datové paměti EEPROM je podobný, ale samotná sekvence instrukcí je poněkud složitější. Nejprve se provede nastavení adresy do registru EEADR, dále uložení zapisovaného bajtu do registru EEDATA a posléze je nutné nastavit příslušné bity v řídicím registru EECON1 a následně (při zakázaném přerušení) iniciovat vlastní naprogramování paměťové buňky tak, že se obsah registru EECON2 mění přesně podle sekvence udané výrobcem.

3. Paměť typu Flash, v níž je uložen programový kód

Z výše popsaného (a nutno říci, že značně zjednodušeného) popisu čtení a zápisu bajtů do datové EEPROM je patrné, že práce s tímto typem paměti je poněkud složitější a zdlouhavější než přímá práce s pamětí operační. Ovšem výhody EEPROM, zejména její nevolatilita (nezávislost na napájení) a taktéž u mnoha čipů poměrně velká kapacita v porovnání s operační pamětí, v mnoha aplikacích převažují nad nevýhodami (například mikrořadič PIC12F683 obsahuje 128 bajtů operační paměti a 256 bajtů paměti EEPROM). Podobným způsobem jako s datovou EEPROM je možné pracovat i s pamětí programu, jež je typu Flash, ovšem s několika rozdíly. První rozdíl spočívá v tom, že programová paměť Flash je interně organizována po slovech se šířkou 12 až 16 bitů (v závislosti na typu instrukční sady, kterou je mikrořadič vybaven), takže je při čtení či zápisu dat nutné použít dvojici záchytných registrů, konkrétně registr EEDATA pro osm nejméně významných bitů a registr EEDATAH, do nějž se ukládá čtveřice, šestice nebo osmice nejvýznamnějších bitů zapisovaného slova.

Obrázek 5: Zapojení paměťových buněk u flash pamětí typu NOR.

Druhý rozdíl mezi oběma typy pamětí spočívá v tom, že programová paměť typu Flash neumožňuje mazání ani zápis dat po jednotlivých slovech, ale pouze po větších celcích; což je přednost, ale paradoxně současně i nevýhoda této technologie. To v praxi znamená, že u mnoha typů mikrořadičů PIC lze slova z paměti programu mazat v blocích o velikosti 32 slov (což je již oblast, do níž lze uložit i poměrně složitý podprogram) a zápis lze provádět po menších blocích, typicky o velikosti čtyř slov. V praxi se však s tímto omezením vývojáři většinou ani nesetkají, protože se zápis do paměti programu většinou provádí z vývojového prostředí spuštěného na osobním počítači. Tyto programy mohou být vybaveny „inteligentním“ algoritmem, který do programové paměti Flash zapíše pouze změněné bloky. Oproti pamětem EPROM použitým v první generaci mikrořadičů PIC (tyto mikrořadiče lze poznat díky mazacímu okénku na horní ploše čipu), je počet cyklů mazání/zápis u pamětí Flash mnohem vyšší – je možné provést více než sto tisíc těchto cyklů, což znamená prakticky neomezenou životnost paměti, a to i v případě, že se mikrořadič používá pro vývoj.

Obrázek 6: Zapojení paměťových buněk u flash pamětí typu NAND.

Třetí rozdíl mezi datovou pamětí EEPROM a programovou pamětí Flash spočívá v tom, že obsah paměti Flash lze ochránit před nechtěným smazáním, a to dokonce několika způsoby (ve skutečnosti lze chránit i datovou EEPROM, ovšem pouze před externím přístupem – paměť je pro běžící program stále dostupná, není ji však možné číst například z připojeného PC). Ochrana programové paměti Flash před vymazáním je velmi užitečná vlastnost – ostatně postačuje si představit, co by se stalo, kdyby například kvůli zakolísání napájecího napětí došlo k chybné funkci programu, který by se následně sám vymazal, popř. by nedošlo ke korektnímu zápisu všech bitů. To by mohlo způsobit, že by se celé zařízení (dejme tomu ovládání brzd v automobilu nebo logika řídicí funkci výtahu) stalo nepoužitelným a to i po provedení RESETu, který by při správném naprogramování nutně automaticky následoval díky funkci dalšího modulu zabudovanému do mikrořadiče – watchdogu („hlídacímu psu“) – jehož význam bude vysvětlen v následující kapitole.

4. Watchdog

V předchozí kapitole jsme se zmínili o takzvaném watchdogu, jehož zcela přesný název zní Watchdog Timer, neboli zkráceně WDT. Jedná se o modul mikrořadičů PIC, který slouží k tomu, aby při zastavení nebo zacyklení programu, k němuž může dojít vlivem neočekávaných vstupních dat, kolísáním napájecího napětí, nekorektní funkcí interního či externího oscilátoru (generátoru hodinového signálu), překročením provozní teploty, ale i chybou programátora, došlo k automatickému restartu mikrořadiče a tím pádem k obnovení předem známého stavu programu. Watchdog Timer si můžeme zjednodušeně představit jako čítač s programovatelnou periodou (jejíž hodnotu lze měnit v rozsahu od 18 milisekund až do cca 2,3 sekundy), který po přetečení vyvolá RESET mikrořadiče. Aby k přetečení čítače nedošlo, je nutné ho periodicky nulovat.

Obrázek 7: Schéma interního zapojení watchdogu v mikrořadičích PIC. Z tohoto schématu je patrné, že periodu „krmení hlídacího psa“ lze prodloužit až na 128násobek základní hodnoty (která je rovna 18 milisekundám) pomocí děličky.
(zdroj: PIC12F629/675 Data Sheet)

Vynulováním WDT vlastně program „dokazuje“, že stále běží a že například neskončil v nekonečné smyčce. Vynulování watchogu (někdy se této operaci obrazně říká „nakrmení hlídacího psa“) se provádí instrukci CLRWDT (clear watchdog). Aby se zaručila správná činnost watchdogu i v těch případech, že dojde k takové změně konfigurace mikrořadiče, kdy je vyžadována přítomnost externího hodinového signálu (a externí oscilátor není přítomen či nepracuje), je watchdog vybaven vlastním interním RC oscilátorem pracujícím nezávisle na „hlavním“ interním oscilátoru i na oscilátoru externím.

Obrázek 8: Minimální způsob zapojení mikrořadičů z rodiny PIC12 při jejich programování.
(zdroj: PIC12F629/675 Data Sheet)

5. Analogově-digitální převodník

Dalším modulem, se kterým se můžeme na některých mikrořadičích z rodiny PIC12 setkat, je vícekanálový analogově-digitální převodník. Tento modul je například součástí čipů PIC12F675 a PIC12F676. Na devátém obrázku je ukázáno, jakým způsobem je analogově-digitální převodník interně zapojen ve výše zmíněném mikrořadiči PIC12F675. Z tohoto schématu je patrné, že se jedná o A/D převodník se čtyřmi vstupními kanály, což znamená, že až čtyři I/O piny tohoto mikrořadiče mohou být nakonfigurovány tak, že mohou měřit úroveň analogového signálu, a to od 0V až po maximální úroveň danou volitelným referenčním napětím.

Obrázek 9: Schéma interního zapojení analogově-digitálního převodníku v mikrořadiči PIC12F675. Kromě toho, že se jedná o čtyřkanálový desetibitový A/D převodník je ze schématu patrné i to, že lze zvolit zdroj referenčního napětí.
(zdroj: PIC12F629/675 Data Sheet)

Všechny čtyři vstupní kanály jsou přes multiplexer zapojeny do obvodu typu „sample and hold“, jehož výstup je připojen na desetibitový A/D převodník (ADC – Analog to Digital Converter). Zdigitalizovaná desetibitová hodnota je uložena do dvojice registrů speciálních funkcí ADRESH a ADRESL a to volitelně buď tak, že je spodních osm bitů uloženo do registru ADRESL a zbývající (nejvyšší) dva bity do registru ADRESH, nebo alternativně takovým způsobem, že do registru ADRESH je uloženo nejvyšších osm bitů a nejnižší dva bity jsou uloženy do registru ADRESL (dalo by se říci, že při volbě tohoto způsobu se ADC chová jako šestnáctibitový převodník, jehož spodních šest bitů je nedefinovaných). U čipu PIC12F675 je možné zvolit i zdroj referenčního napětí – buď se jedná o samotné napájecí napětí čipu nebo o napětí přivedené na I/O pin GP1/AN1/Vref.

Obrázek 10: Dva volitelné způsoby uložení naměřené analogové hodnoty po její digitalizaci do dvojice registrů ADRESH a ADRESL.

6. Čtrnáctibitová instrukční sada mikrořadičů PIC

V předchozí části tohoto seriálu jsme si popsali takzvanou dvanáctibitovou instrukční sadu mikrořadičů PIC, v níž jsou obsaženy instrukce, jejichž instrukční kód má konstantní délku 12 bitů. Tato instrukční sada je použita u mikrořadičů z rodiny PIC10 a taktéž u nejmenších mikrořadičů z rodiny PIC12. Vzhledem k tomu, že v instrukčním slovu jsou zakódovány i adresy operandů u aritmetických a logických instrukcí, popř. cíle skoků u instrukcí typu CALL a GOTO, je rozsah přímo adresovatelné operační paměti i rozsah cílů skoků u dvanáctibitové instrukční sady do značné míry omezen: operační paměť i s registry speciálních funkcí může mít při přímém adresování kapacitu maximálně 64 bajtů a rozsah paměti programu, kam je možné provést skok, je pouze 512 bajtů. Oba rozsahy je sice možné zvýšit po zavedení stránkování, ovšem tento přístup v některých případech značně komplikuje návrh aplikací (provádění skoků do podprogramů v jiné stránce, přenosy dat mezi různými stránkami operační paměti atd.).

Obrázek 11: Pro vývoj aplikací určených pro osmibitové mikrořadiče PIC lze použít i mnoho open source nástrojů. Na tomto screenshotu jsou zobrazena některá okna nástroje gpsim (simulátoru mikrořadičů), který bude popsán v následující části tohoto seriálu.

Vzhledem k tomu, že mnoho výkonnějších mikrořadičů PIC, ať již se jedná o některé mikrořadiče z rodiny PIC12, nebo o mikrořadiče náležející do rodin PIC16 a PIC18, disponuje operační pamětí i pamětí programu o vyšších kapacitách, je u těchto mikrořadičů použita instrukční sada 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 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. V následující kapitole je vypsána typická čtrnáctibitová instrukční sada používaná například známým a velmi často používaným mikrořadičem PIC16F87 a PIC16F88 (tyto stále populární mikrořadiče si popíšeme příště).

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

Podle nejvyšších dvou bitů instrukčního kódu lze instrukce rozdělit do několika skupin. Do skupiny instrukcí s prefixem 00 patří instrukce provádějící aritmetické a logické operace, v nichž je jedním z operandů přímo adresovaná buňka operační paměti nebo registr speciálních funkcí. Například se jedná o instrukce ANDWF nebo DECFSZ. Další skupinou instrukcí jsou řídicí instrukce s prefixem 00 0000 (SLEEP, CLRWDT). Čtveřice instrukcí s prefixem 01 slouží pro bitové manipulace a taktéž vynechání další instrukce (SKIP) v případě, že je testovaný bit roven nule nebo naopak jedničce. Čtvrtá skupina instrukcí je velmi malá – jedná se o dvojici skokových instrukcí CALL a GOTO, jejichž prefix je 10 (ostatně více instrukcí v této skupině být uloženo nemůže, protože by ve slově chyběly bity pro rozlišení jednotlivých instrukcí). Pátá a současně i poslední skupina instrukcí začíná prefixem 11. V této skupině jsou obsaženy instrukce provádějící operaci s osmibitovou konstantou (MOVLW, ADDLW či již minule zmíněná instrukce RETLW).

Obrázek 13: Editor umožňující provádět změny v paměti programu v simulátoru gpsim.

7. Seznam instrukcí ve čtrnáctibitové instrukční sadě

V následující tabulce jsou vypsány instrukce ze čtrnáctibitové instrukční sady mikrořadičů PIC. Tato instrukční sada může být u některých typů mikrořadičů rozšířena či naopak zredukována; například o instrukce OPTION či TRIS (ty byly použity i v dvanáctibitové instrukční sadě popsané minule, ovšem u některých mikrořadičů se tyto instrukce nepoužívají nebo není doporučeno jejich používání). Operační kód instrukce je zapsán v binární soustavě, přičemž bit označený znakem d slouží pro určení cíle (destination) dané aritmetické, logické či bitové operace; bity označené znakem f nesou adresu registru speciálních funkcí nebo adresu bajtu v operační paměti (existuje zde tedy omezení na maximálně 128 adres bez použití stránkování), trojice bitů bbb určuje index bitu pro provedení bitové operace a bity označené znakem k obsahují osmibitovou konstantu. Povšimněte si taktéž toho, že některé bity v instrukčních slovech (označené znakem x) nemají specifikovanou hodnotu:

# Operační kód Jméno instrukce Stručný popis instrukce
01 00 0000 0×x0 0000 NOP neprovede se žádná operace
02 00 0000 0000 1000 RETURN návrat z podprogramu
03 00 0000 0000 1001 RETFIE návrat z obslužného podprogramu přerušení
04 00 0000 0110 0010 OPTION uložení akumulátoru do registru OPTION
05 00 0000 0110 0011 SLEEP přechod do režimu spánku
06 00 0000 0110 0100 CLRWDT reset watchdogu (začátek nového čítání)
07 00 0000 0110 01ff TRIS zápis hodnoty akumulátoru do jednoho z třístavových por­tů
       
08 00 0000 1fff ffff MOVWF f přenos akumulátoru to do universálního registru nebo SFR 0–127
09 00 0001 0×xx xxxx CLRW vynulování akumulátoru
10 00 0001 1fff ffff CLRF f vynulování universálního registru nebo SFR 0–127
11 00 0010 dfff ffff SUBWF f,d d = f – W
12 00 0011 dfff ffff DECF f,d d = f – 1
13 00 0100 dfff ffff IORWF f,d d = f OR W
14 00 0101 dfff ffff ANDWF f,d d = f AND W
15 00 0110 dfff ffff XORWF f,d d = f XOR W
16 00 0111 dfff ffff ADDWF f,d d = f + W
17 00 1000 dfff ffff MOVF f,d d = f
18 00 1001 dfff ffff COMF f,d d = NOT f
19 00 1010 dfff ffff INCF f,d d = f + 1
20 00 1011 dfff ffff DECFSZ f,d d = f – 1, vynechání následující instrukce při nulovém výsledku
21 00 1100 dfff ffff RRF f,d rotace doprava přes carry
22 00 1101 dfff ffff RLF f,d rotace doleva přes carry
23 00 1110 dfff ffff SWAPF f,d prohození nibblů universálního registru
24 00 1111 dfff ffff INCFSZ f,d d = f + 1, vynechání následující instrukce při nulovém výsledku
       
25 01 00bb bfff ffff BCF f,b vynulování jednoho bitu universálního registru nebo SFR
26 01 01bb bfff ffff BSF f,b nastavení (na 1) jednoho bitu universálního registru nebo SFR
27 01 10bb bfff ffff BTFSC f,b Bit test f, vynechání následující instrukce pokud je bit nulový
28 01 11bb bfff ffff BTFSS f,b Bit test f, vynechání následující instrukce pokud je bit jedničkový
       
29 10 0kkk kkkk kkkk CALL k zavolání podprogramu na adrese k (0 až 2047)
30 10 1kkk kkkk kkkk GOTO k skok na specifikovanou adresu (0 až 2047)
       
31 11 01×x kkkk kkkk RETLW k návrat z podprogramu s nastavením akumulátoru na konstantu #kkkkkkkk
32 11 00×x kkkk kkkk MOVLW k W = k
33 11 111× kkkk kkkk ADDLW k W = W + k
34 11 110× kkkk kkkk SUBLW k W = W – k
35 11 1101 kkkk kkkk ANDLW k W = k AND W
36 11 1000 kkkk kkkk IORLW k W = k OR W
37 11 1010 kkkk kkkk XORLW k W = k XOR W

Obrázek 14: Nástroj gpsim obsahuje i disassembler.

8. Vývojové nástroje pro mikrořadiče PIC

Vzhledem k tomu, že se osmibitové mikrořadiče PIC staly po svém uvedení na trh velmi populární, a to jak mezi profesionálními výrobci elektronických zařízení, tak i mezi uživateli, kteří tyto mikrořadiče používají ve svých domácích projektech, není divu, že postupně vznikla celá řada aplikací umožňujících či zjednodušujících vývoj programů pro tyto čipy. Jedná se jak o closed–source aplikace, tak i o aplikace s otevřeným zdrojovým kódem, šířené například pod GNU licencí. Právě těmito aplikacemi se budeme zabývat v dalším textu i v následující části tohoto seriálu. Pro mikrořadiče PIC lze vyvíjet aplikace různým způsobem – s využitím jak nízkoúrovňových, tak i vysokoúrovňových programovacích jazyků. Vzhledem k tomu, že instrukční sada těchto mikrořadičů není příliš rozsáhlá (lze se ji naučit za několik hodin i přesto, že se jedná o dosti specifickou instrukční sadu) a kapacity jejich operačních pamětí i pamětí programů jsou velmi malé, bývají aplikace pro tyto mikročipy poměrně často vytvářeny přímo v assembleru (jazyku symbolických instrukcí), protože právě v tomto případě je možné využít doslova každý bajt paměti a každý takt procesoru.

Obrázek 15: Jednoduchý programátor mikrořadičů PIC, který se k osobnímu počítači připojuje přes sběrnici USB.

Pro programování v assembleru lze využít sadu nástrojů šířenou v balíčku gputils. Tento balíček obsahuje zejména samotný assembler (překladač jazyka symbolických instrukcí), disassembler (zajišťující zpětný převod objektového kódu do jazyka symbolických instrukcí), linker a prohlížeč vygenerovaného objektového kódu. Možnostmi gputils se budeme podrobněji zabývat příště. Ovšem assembler samozřejmě není jedinou možností, jak psát programy pro mikrořadiče PIC, protože pro tyto čipy (resp. pro rodiny výkonnějších mikrořadičů PIC16 a PIC18) existuje i překladač programovacího jazyka C šířený pod jménem SDCC. Tento překladač se sice stále vyvíjí, ale již dnes je pro mnoho projektů použitelný (což si taktéž ukážeme příště).

bitcoin_skoleni

Obrázek 16: Vývojový kit BASIC Stamp ve verzi vybavené rozhraním universální sériové sběrnice (USB).

Poměrně populární jsou v oblasti mikrořadičů PIC i další programovací jazyky, a to jak překladače, tak i interpretry. Například programovací jazyk Pascal je využit v projektu PMP (Pic Micro Pascal), jazyk BASIC v projektu Great Cow Basic a Basic Stamp, Forth je implementován v nástroji FlashForth a navíc ještě pro tyto mikročipy vznikl i jazyk podobný Pascalu, který je nazvaný přímočaře JAL (Just Another Language). Všechny výše uvedené jazyky a k nim přidružené vývojové nástroje budou podrobněji popsány v následující části tohoto seriálu.

9. Odkazy na Internetu

  1. Stránky firmy Microchip Technology
    http://www.mi­crochip.com/
  2. 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
  3. Ř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
  4. Ř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
  5. Ř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
  6. Ř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
  7. Další výběr z různých modelů mikrořadičů PIC
    http://www.mi­crochip.com/map­s/microcontro­ller.aspx
  8. PIC microcontroller (Wikipedia EN)
    http://en.wiki­pedia.org/wiki/PIC_mi­crocontroller
  9. Mikrokontrolér PIC (Wikipedia CZ)
    http://cs.wiki­pedia.org/wiki/Mi­krokontrolér_PIC
  10. FLASHFORTH for the PIC18F and the dsPIC30F
    http://flashf­orth.sourcefor­ge.net/
  11. FlashForth
    http://www.sou­rceforge.net/pro­jects/flashfor­th
  12. Free Pic software tools
    http://softwa­repic.50webs.com/fre­esoft.html
  13. What is Amicus?
    http://www.pic­basic.org/pro­ton_lite.php
  14. Amicus FAQ
    http://www.my­amicus.co.uk/faq­.php?s=2e8d12e7f4c23e775­776f4916876354b&
  15. Microcontrollers development tools
    http://www.gnu­pic.dds.nl/
  16. gpsim (Wikipedia EN)
    http://en.wiki­pedia.org/wiki/Gpsim
  17. gpsim home page
    http://gpsim.sou­rceforge.net/gpsim­.html
  18. The FreeRTOS Project
    http://www.fre­ertos.org/
  19. FreeRTOS (Wikipedia)
    http://en.wiki­pedia.org/wiki/Fre­eRTOS
  20. Serial EEPROM (93C46 / 93CS46) Routines
    http://www.pjrc­.com/tech/8051/se­rial-eeprom.html
  21. Great Microprocessors of the Past and Present (V 13.4.0)
    http://jbayko­.sasktelwebsi­te.net/cpu.html

Autor článku

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