Mikrokontrolér PIC

Mikrokontroléry PIC v pouzdrech DIP a QFN

Mikrokontroléry PIC jsou programovatelné polovodičové součástky - jednočipové mikropočítače (mikrořadiče, mikrokontroléry) vyráběné firmou Microchip Technology sídlící v USA. Jsou založeny na harvardské architektuře, tj. paměti pro data a pro program jsou navzájem oddělené. Programová paměť a datová paměť nemají stejně dlouhé datové slovo.

Tyto programovatelné součástky jsou určeny pro nejrůznější kontrolní a řídící úlohy v průmyslových oborech, pro realizaci měřicích a řídicích systémů atd. Díky své univerzálnosti, malé velikosti, nízké ceně a spotřebě nacházejí své uplatnění ve velkém množství aplikací. Lze je nalézt v mnoha současných elektronických zařízeních.

Klíčová specifika mikrokontrolérů PIC

  • oddělené paměti programu a dat (Harvardská architektura)
  • malá množství strojových instrukcí pevné délky (RISC)
  • vykonání většiny instrukcí v jediném cyklu (4hodinové takty)
  • jediný klíčový registr (W), přes který jsou realizovány všechny aritmetické a logické operace
  • rozsáhlá banka datových registrů
  • hardwarový zásobník
  • paměťově mapované periferie a konfigurační registry
  • volně přístupný programový čítač mapovaný do datové paměti
  • přísně ortogonální instrukční sada - není třeba přesunů dat, mikrořadiče PIC nejsou typu load-store (kromě PIC32 architektury MIPS, která typu load-store je).

Na rozdíl od mnoha jiných procesorů, u mikrokontrolérů PIC není rozdíl mezi „pamětí“ a vnitřními registry, protože jako RAM slouží oba druhy této paměti. Většinou je na RAM odkazováno jednoduše jako na registry.

Řady mikrokontrolérů

Mikrokontroléry PIC jsou vyráběny ve 3 základních provedeních:

  • Jednorázově programovatelné (OTP) součástky - písmeno C v názvu typu
  • Vícenásobně programovatelné s EPROM pamětí
  • Vícenásobně programovatelné s FLASH pamětí - písmeno F v názvu typu

Podle šířky datového slova rozlišujeme 8bitové a 16bitové mikroprocesory PIC. Dále PIC dělíme podle šířky programového slova (10, 12, 14 bitů, …). Z kombinace těchto základních klíčů vychází tyto řady procesorů PIC:

8bitové Mikrokontroléry

  • PIC10
  • PIC12
  • PIC14
  • PIC16
  • PIC17
  • PIC18

16bitové Mikrokontroléry

  • PIC24

16bitové Digitální Signálové Mikrokontroléry

  • dsPIC30
  • dsPIC33F

32bitové Mikrokontroléry

  • PIC32 (MIPS)

Instrukční soubor

Instrukční soubor mikrořadičů PIC je typu RISC a obsahuje 35 strojových instrukcí u základních modelů a asi 70 u vyšších modelových řad. Tyto instrukce se podle přístupu k paměti dělí na:

  • bajtově orientované,
  • bitově orientované,
  • pro práci s konstantami, a
  • řídicí instrukce

Instrukční soubor je ortogonální neboli symetrický, to znamená, že jakákoliv instrukce se dá provádět na jakémkoliv registru.

Paměť (RAM)

PIC kontroléry implementují množinu registrů, které slouží jako dočasná paměť pro data, mají tedy charakter RAM paměti. Dále obsahují registry, které konfigurují a řídí různé speciální funkce, parametry nebo periférie mikrokontroléru. Adresace paměti závisí na rodině zvoleného kontroléru, ale v zásadě každá série PICů implementuje systém bank, který umožňuje rozšířit adresovatelný prostor. Novější verze procesorů jsou schopny adresovat celý prostor registrů v jednom okamžiku (nezávisle na zvolené bance), starší a základní verze umožňují přístup ke všem registrům jen přes registr zvaný akumulátor.

Pro implementaci nepřímého adresování se používají registry file select register (FSR) a indirect data file (INDF). Systém nepřímého adresování obecně funguje tak, že pro zápis nebo čtení do registru INDF používáme registr FSR, který obsahuje adresu na registr INDF. Novější verze procesorů zavádějí systém před/po inkrementaci a dekrementaci registru FSR pro lepší efektivitu zapisování a čtení sekvenčních dat(např. polí a řetězců). Toto umožňuje zacházet s FSR registrem jako s ukazatelem na zásobník.

Vnější paměti (externí EEPROM, Flash…) nejsou obecně přímo adresovatelné, což je dáno zejména nízkým počtem signálových vývodů (kromě high-end čipů z rodiny PIC18 v pouzdrech s velkým množstvím vývodů).

Délka slova (instrukce)

Délka slova u PIC mikrokontroléru může být často matoucí. Všechny PICy (až do PIC18 včetně) pracují a adresují data po 8bitových balících, i když adresovací prostor procesoru není obecně stejně velký jako prostor pro data. Například PICy v základních (baseline: PIC12, PIC14) a středních řadách (mid-range: PIC16) mají programovou paměť adresovatelnou stejným počtem bitů jako je velikost instrukce, tedy 12 bitů pro baselines a 14 bitů pro mid-range procesory. Naproti tomu u procesorů v řadě 18 (PIC18) je programová paměť adresována 8 bity, což se liší od velikosti instrukce, která je 16bitová. Pro doplnění, kapacita programové paměti je často udávána v počtu (jednoslovných) instrukcí, které se do ní vejdou.

Odezva přerušení

Přerušení je okamžitý vstup do probíhajícího programu a vyvolání obslužného programu. Po dokončení tohoto podprogramu je proveden návrat do stejného místa původního programu, kde byl přerušen.

Velmi užitečná a unikátní vlastnost PICů je, že jejich odezva na přerušení je konstantní (a přirozeně také rychlá), konkrétně tři instrukční cykly. Je konstantní i navzdory instrukcím s různým počtem instrukčních cyklů, v případě krátkých instrukcí se vkládá prázdný instrukční cyklus, který zaručí, že bude dosaženo opět konstantní prodlevy po vyvolání přerušení. Externí přerušení musejí být synchronizovány s instrukcemi, které zaberou čtyři instrukční cykly, jinak může docházet k nežádoucímu posunu o jeden instrukční cyklus.

Varianty procesorů a periférie

Varianty periférií, které mohou jednotlivé PICy implementovat:

  • Binární vstupy a výstupy (I/O), konfigurovatelné podle potřeby
  • Vnitřní zabudované oscilátory, např. použitelné pro RS232 komunikaci
  • 8 až 16bitové časovače
  • Vnitřní EEPROM paměť, pro ukládání dat
  • Synchronní a asynchronní sériové rozhraní (USART)
  • MSSP periférie pro realizaci I^2C a SPI „sériovou“ komunikaci
  • A/D převodníky (až do 50 kHz)
  • USB, Ethernet, rozhraní CAN
  • Rozhraní pro připojení externích pamětí
  • Integrované rozhraní pro radiové přenosy (PIC16F639, and rfPIC)
  • periférie KEELOQ pro šifrování kódu (šifrování/dešifrování)

Vývojové nástroje a programovací jazyky

Microchip nabízí volně stažitelné IDE (Integrated Development Environment) nazvané MPLAB. Tento balík obsahuje assembler, linker, softwarový simulátor a debugger. Dále je prodáván i kompilátor od této firmy (C18, C30), který je plně kompatibilní a lehce integrovatelný do MPLAB IDE. Je nabízena i studentská verze kompilátoru, která je zdarma, ale jen pro nekomerční využití a s vypnutými optimalizacemi (pro 95% aplikací však plně funkční).

mikroElektronika je výrobce a dodavatel podpůrných nástrojů pro PICy. Produkují, jak IDE a kompilátory, tak i různé vývojové desky, programovačky a debuggery.

Open Source nástroje

Následující vývojové nástroje pro PICy jsou dostupné pod GPL nebo jinou Open source licencí.

  • FreeRTOS - implementace real-time jádra operačního systému pro mikrokontroléry (nejen pro PICy), podporované verze PICů jsou * PIC18, PIC24, dsPIC a PIC32
  • GPSIM - je "open source" simulátor pro PICy, který umožňuje simulovat periferie (zařízení) a tak umožňuje otestovat aplikaci bez nutnosti fyzické přítomnosti dané periférie (např. LCD).
  • Ktechlab - volně šiřitelné IDE pro programování PIC mikrokontrolerů. Podporuje programy napsané jak v C, assembleru, tak i v * Microbe (jazyk odvozený z BASICu). Dále podporuje tvorbu vývojového diagramu aplikace.
  • Free software tools - Obsahuje mnoho zdarma nabízených C, C++, Pascal, Basic kompilátorů pro PICy.
  • FlashForth - operační systém pro PICy z 18. řady. Tento software dělá z PICu samostatně funkční počítač s interpretrem příkazů, kompilátorem, assemblerem a multitasking režimem.

Programátory (programovačky, bootloadery) mikrokontrolérů

Tyto zařízení jsou tradičně použity k nahrání („vypálení“) programu do programové paměti cílového PICu. Většina dnes dostupných PICů má implementovanou funkci ICSP (In Circuit Serial Programming - programování součástky přímo v obvodě) a LVP (Low Voltage Programming - programování „nízkým“ napětím, např. 3,3 V). ICSP programování vyžaduje obsazení tří pinů procesoru. Dva piny pro komunikaci, tedy pro hodiny a data, klasicky se obsazují piny B6 a B7 u 8bitových procesorů a jeden pin (Vpp/MCLR) pro programovací napětí 12 V. LVP se obejde bez vysokého napětí na Vpp/MCLR, ale zase vyžaduje další extra pin, takže se v některých aplikacích nehodí.

Mnoho PICů z vyšších sérií a s flash pamětí jsou schopny se samy reprogramovat, tedy zapisovat do své vlastní programové paměti.

Demonstrační desky (Demo Boards) jsou většinou dodávány s více bootloadery, které umožňují nahrát program do PICu přes RS-232 nebo USB a tím odpadá nutnost mít programovačku. Výhoda proč používat ICSP je asi nejvyšší rychlost oproti ostatním metodám (vyjmutí procesoru z desky a vložení do soketu programátoru…), možnost ihned po programování aplikaci spustit a také možnost debugovat a programovat kontrolér užitím stejných kabelů.

Microchip programátory

  • PICStart 16B1 (rozhraní RS232): programování v socketu
  • PICStart Plus (rozhraní RS232): programování ICSP i v socketu
  • PRO MATE II (rozhraní RS232): programování ICSP i v socketu
  • MPLAB PM3 (rozhraní RS232 i USB): programování ICSP i v socketu
  • MPLAB ICD2 (rozhraní RS232 a USB 1.0): pouze programování ICSP
  • MPLAB REAL ICE (rozhraní USB 2.0): jen programování ICSP
  • PICKit 2 (rozhraní USB): programování i debuggování ICSP
  • PICKit 3 (rozhraní USB): programování i debuggování ICSP
  • MPLAB ICD3 (rozhraní USB): programování a komfortní debuggování ICSP

Další programátory

  • Asix PRESTO (rozhraní USB): programování ICSP, 3V3 MCU s doplňkem (přípravkem)
  • Asix FORTE (rozhraní USB): programování ICSP včetně 3V3 MCU

Opensource / openhardware programátory

  • usbpicprog (rozhraní USB): programování ICSP
  • Open Programmer (rozhraní USB): programování ICSP, možnost přidat socket

Literatura

  • Hrbáček Jiří: Moderní učebnice programování mikrokontrolérů PIC - 1. díl, BEN - technická literatura, 2004, ISBN 80-7300-136-5
  • Hrbáček Jiří: Moderní učebnice programování mikrokontrolérů PIC 2 - 2. díl - stavíme se na vlastní nohy, BEN - technická literatura, 2007, ISBN 978-80-7300-137-7
  • Bumba Jiří: Programování mikroprocesorů - učebnice; Computer Press,a.s. Brno, 2011, ISBN 978-80-251-2838-1

Související články

Externí odkazy

Média použitá na této stránce

PIC microcontrollers.jpg
Photo of PIC 16F877A (top), PIC 16F737 (left), PIC 16F747 (middle), and US Dime for scale.