PIC mikrovezérlő

A Wikipédiából, a szabad enciklopédiából
8 bites PIC mikrokontrollerek DIP és QFN tokozásban
16 bites 28-pin PDIP PIC24 mikrokontroller

A PIC mikrovezérlő a Microchip Technology cég által kifejlesztett Harvard architektúrájú programozható eszköz. Ez a mikrovezérlő csökkentett utasításkészletű (RISC architektúrájú), ennek köszönhetően az utasításai gyorsan elsajátíthatóak.

A PIC mikrokontroller architektúrája[szerkesztés]

A mikrovezérlők tervezésénél a minimális bonyolultságra törekedtek. A következők jellemzik:

  • Kompakt kivitel. Ha csak áramot kap, már akkor is működik! Nincsen szükség bonyolult hardverelemekre, hogy ellássa a feladatát.
  • A kód- és az adatmemória szétválasztása. (A Harvard architektúrából következik.)
  • Kis számú és fix hosszúságú utasítás.
  • A legtöbb utasítást 4 órajel alatt hajtja végre. Kivételek ez alól az ugró utasítások, mert azok kétszer annyi, vagyis 8 órajel alatt hajtódnak végre.
  • A műveletekhez egyetlen általános célú regisztert, a munkaregisztert (Work, WREG vagy röviden W) használja.
  • Minden adatmemória rekesz egyben regiszterként is használható. Egyes regiszterek speciális jelentéssel rendelkeznek a külső hardver elemek vezérlésében.
  • Hardveres veremkezelés a szubrutinhívásokhoz.
  • Mivel az utasításokban kódolva van, hogy melyik memória elemet címezzük, ezért nagyon kicsi a címezhető memóriaterület. Ezen segít a bankkezelési mód.
  • Az utasításszámláló és más vezérlő regiszterek is a memóriába vannak vetítve.
  • Modulszerű perifériakezelés, vagyis ugyanazok a perifériamodulok találhatóak a különböző típusú PIC-ekben feltéve, hogy rendelkeznek vele. A különböző PIC típusok leginkább a perifériák fajtáiban és a kivezetések számában térnek el.

A többi processzorral szemben a PIC mikrovezérlőnél nincs különbség adatmemória és regiszter között! RAM-ként szolgál minden általános célú regiszter.

PIC mikrovezérlők osztályozása[szerkesztés]

PIC mikrovezérlőket többféleképpen is besorolhatjuk. A Microchip cég megkülönbözteti őket architekturális módszerrel illetve felhasználási területtel. Architekturális besoroláshoz tartozik az adat- valamit utasításszélesség. Adatszélességből 8, 16, illetve újabban 32 bites változatokat különböztetünk meg, míg utasításszélesség szerint 12, 14 illetve 16 biteseket. Mivel a "bites" kifejezés az adat illetve utasítás értelmében is lehet használni, ezért a keveredés elkerülése érdekében a Microchip bevezette az, "alap", "közép" és "nagy teljesítményű" kifejezéseket (baseline, mid-range, high performance) rendre a 12, 14 illetve 16 utasításszélességek megjelölésére.

További besorolások közé tartozik a lábak ill. be/kimenetek száma. 12F vagy 12C család jellemzően 8 lábú, míg a 16F családban találhatunk 14, 18, 20 illetve 28 lábú vezérlőket. Felhasználói terület szerinti besorolásban néha úgy érezhetjük, hogy ez csak egy marketing fogás, mégis segít a feladatnak megfelelő eszköz kiválasztásában, ha alaposan áttanulmányozzuk mit javasol a gyártó cég. Tipikus alkalmazások a motorvezérlők, világítás, LED, LCD és egyéb meghajtások, tápegységek, akkumulátor töltők, háztartási készülékek stb vezérlése.

A 8 bites vezérlők közül a 12 bites utasításokkal rendelkező eszközöket egyszerűen alapkategóriaként (baseline), míg a 14 bites utasításúakat középkategóriaként (mid-range) emlegeti a gyártó cég. A 16 bites utasításszélességgel rendelkező, de még mindig 8 bites adatbusszal és adatfeldolgozóval rendelkező eszközöket már a nagy teljesítményű kategóriába (high performance) kell vennünk, hisz ezek az eszközök már nagy program- és adatmemóriával rendelkeznek, akár 12 MIPS-es feldolgozási sebességet is elérve. Ezeket a vezérlőket már kibővített utasítás készlet és intelligens bankkezelés is jellemzi, mely tovább fokozza a kódvégrehajtás hatékonyságát. Ha azonban ennél is nagyobb sebességre lenne szükségünk, akkor a 16 bites családból kell választanunk a mikrovezérlők illetve a digitális jelfeldolgozók kategóriáiból. Mindamellett az újabban megjelent 32 bites vezérlővel lehet elérni a legnagyobb számítási teljesítményt, amely már egy modern mikroprocesszor képességeivel vetekszik, mind architekturálisan, mind pedig képességeiben.

8 bites mikrovezérlők[szerkesztés]

A PIC mikrovezérlők eltérő adat és utasítás szóhosszal dolgoznak, amit a Harward architektúra alkalmazása tesz lehetővé. A 8 bites jelölés itt az adatszó hosszát jelöli. Az utasításszó hossza alapján a 8 bites PIC mikrokontrollerek a következő csoportokba sorolhatók:

Alap kategória (baseline)[szerkesztés]

Alap kategória főbb jellemzői(baseline)
  • 4 illetve 8 MHz-es belső órajel-generátor
  • 8 bites adatbusz és adatfeldolgozó egység
  • 33 db 12 bites utasítás
  • Alapvető perifériák, mint 8 bites idő számláló, analóg komparátor valamint A/D bemenet
  • Egyszerű felhasználási mód
  • Olcsó termék választék
  • 12 bites utasítás szóhossz
  • Megszakítási rendszere nincs.
  • Hardveres verem: 2 szintű
  • Teljesítmény: 5MIPS
  • Maximum 3kB program memória
  • Maximum 138 byte adat Ram

A lábszám senkit se tévesszen meg, hisz ebben a kategóriában is találhatunk 6-28 lábúig mindent. Számozás se legyen a kategória besorolásának mérvadója, hisz ugyan a teljes 10F sorozat ide tartozik, de találunk a 12F és a 16F jelzésűek között is alapkategóriás PIC-eket.

Kisméretű, felületszerelt tokozás elérhető:

  • 6 láb, maximum 4 I/O
  • DFN 2x3 vagy SOT23-6 tokozás

Kis lábszámú alap PIC-ek

  • 8 láb, maximum 6 I/O
  • PDIP vagy SOIC-8 tokozás
  • 12F508, 12F109, 12F510

Közepes / nagy lábszámú változatok

  • 18 láb, 12 I/O: 16F505, 16F506, 16F54
  • 28 láb, 20 I/O: 16F57
  • 40 láb, 32 I/O: 16F59

Középkategória (mid-range Archiválva 2016. szeptember 19-i dátummal a Wayback Machine-ben)[szerkesztés]

Középkategória főbb jellemzői
  • 36 db 14 bites utasítás
  • nagyobb verem méret
  • megszakításkezelés
  • perifériamodulok széles választéka
  • külső órajel használatának lehetősége
  • akár 4x4 DFN csomagolásban is elérhető kis fizikai méret
  • 14 bites utasítás szóhossz
  • Megszakítási rendszere: 1 szintű (prioritás nélküli)
  • Hardveres verem: 8 szintű
  • Teljesítmény: 5MIPS
  • Maximum 14 kB program memória
  • Maximum 368 Byte adat Ram

Talán az egyik legkedveltebb kategória a hobbi felhasználók körében, de az iparban is széles körben felfedezhető eszközcsalád, talán nem véletlenül. A rendelkezésre álló hardvermodulok egyszerűvé és kényelmessé teszik a fejlesztést, ugyanakkor kis mérete és jellemzően alacsony ára vonzó még a kis pénztárcájú, illetve a szűk költségvetéssel rendelkező projektek számára is.

Olyan különleges eszközöket is megtalálunk, mint pl az USB 1.1 modullal rendelkező 16C745 es 16C765, vagy a belső regulátorral rendelkező 12HV és 16HV típusok. Az összes típust nehéz lenne felsorolni, legegyszerűbb a Microchip oldalán a parametrikus kereséssel kiválasztani a megfelelőt. Néhány általánosan jól alkalmazható kedvenc típus: 12F629, 16F628A, 16F84

Továbbfejlesztett középkategória (Enhanced Mid-Range)[szerkesztés]

  • 14 bites utasítás szóhossz
  • Megszakítási rendszere: 1 szintű (prioritás nélküli)
  • Hardveres verem: 16 szintű
  • Teljesítmény: 8MIPS
  • Maximum 28 kB program memória
  • Maximum 1,5 kByte adat Ram

Felső kategória[szerkesztés]

A felső kategória megjelölés itt csak a 8 bites mikrokontrollerek csoportján belül értendő. Az ebbe a csoportba tartozó mikrokontrollerek típusjele 18F-el kezdődik.

  • 16 bites utasítás szóhossz
  • Megszakítási rendszere: 2 szintű prioritással
  • Hardveres verem: 32 szintű
  • Teljesítmény: Max. 16MIPS
  • Maximum 128 kB program memória
  • Maximum 4 kByte adat Ram

A kategórián belül két nagy csoportot különböztethetünk meg:

  • "J" jelű változatok: 3,3V-os névleges feszültségű, gazdag perifériakészlettel rendelkező típusok
  • "K" jelű változatok: Tágabb tápfeszültség tartományban működő (max. 5,5V), A "J" változatoknál nagyobb teljesítményű processzormagot tartalmazó típusok.

16 bites mikrovezérlők és jelfeldolgozó processzorok (DSP-k)[szerkesztés]

A kategória főbb jellemzői
  • 16 bit szélességű RAM
  • 24 bit szélességű programmemória

Ebbe a csoportba a következő mikrokontroller családok tartoznak:

  • PIC24FJ
  • PIC24HJ
  • dsPIC30F
  • dsPIC33F

32 bites PIC mikrovezérlők[szerkesztés]

A 32 bites PIC mikrokontrollerek MIPS M4K processzormaggal készülnek. Ez a processzormag nem a Microchip saját fejlesztése.

Integrált perifériák[szerkesztés]

Időzítők[szerkesztés]

Timer0, Timer1, Timer2... Típustól függően több, 8 és 16 bites felbontású időzítő áramkör, melyeket felhasználhatunk megadott időközönként történő megszakítások generálására vagy különféle események számlálására.

CCP/PWM[szerkesztés]

Külső események bekövetkeztének idejét mérhetjük, vagy változtatható kitöltési tényezőjű négyszögjel generálását teszi lehetővé. (impulzusszélesség-moduláció)

EEPROM[szerkesztés]

Kikapcsolás után is megmaradó adatok tárolását lehetővé memória. Egyes PIC-ek külön EEPROM-ot tartalmaznak erre a célra, más típusok esetében a programtároló Flash memóriát használhatjuk fel erre a célra.

USART[szerkesztés]

Aszinkron soros kommunikációt lehetővé tevő periféria

USB[szerkesztés]

Léteznek USB interfésszel rendelkező PIC mikrokontrollerek. Ezek külön illesztőáramkör nélkül lehetővé teszik USB host-tal történő kommunikációt. A kommunikációs protokollt a mikrokontrollerben futó szoftverrel kell megvalósítani.

Fejlesztőeszközök[szerkesztés]

A PIC mikrovezérlők fejlesztését számos szoftveres és hardveres eszköz segíti. Szoftveres eszközök alatt főként a különböző programozási nyelveket, a hardver szoftveresen emulált munkakörnyezetét és egyéb fejlesztést segítő alkalmazásokat értjük. Hardveres eszközök között pedig programozók, demó áramkörök illetve nyomkövető hardver emulációs munkakörnyezetek széles választékát találjuk meg.

Szoftvereszközök[szerkesztés]

Fejlesztői környezetek[szerkesztés]

MPLAB
A Microchip cég ingyenes fejlesztői környezete, amely alkalmas különböző fordítóprogramok kezelésére, szoftverprojekt menedzselésre. Lehetővé teszi hardveres debuggerek és beépített szoftveres szimulátor valamint sok más segédeszköz (például programozók) használatát továbbá konfigurációs beállítások elvégzését. Sok más elektronikai szimulációs eszköz is közvetlenül kapcsolódik ehhez a környezethez, mint pl a Proteus VSM vagy a VirtualBreadboard.(MPLAB 8 magyar nyelvű leírása Archiválva 2018. január 7-i dátummal a Wayback Machine-ben Varga Lászlótól)
Piklab
Az MPLAB-hoz hasonló, de nyílt forrású projekt. Célja egy komplett fejlesztőkörnyezet létrehozása szabad szoftver formájában. Többféle fordítóprogramot és programozókészüléket támogat. Linux-on népszerű, de létezik windowsos változata is.
Oshonsoft
Basic fordító, IDE és PIC szimulátor. A szimulátorához néhány alapvető külső áramköri elem is kapcsolható, mint pl LCD vagy léptetőmotor
Proteus VSM
A Proteus szoftvert sokan csak áramkör rajzolóként illetve NYÁK tervezőként ismerik, azonban komplett spice szimulációval illetve MPLAB-hoz kapcsolható szimulációs képességekkel is bír – azaz a PIC egy virtuális áramkörbe építve szimulálható a segítségével
VirtualBreadboard
[1] Alapvető digitális áramköri szimulációs szoftver amely elsősorban a PIC és SX mikrokontrollerek és a hozzájuk kapcsolódó leggyakoribb áramköri elemek szimulálására szolgál

Fordítóprogramok különféle programnyelvekhez[szerkesztés]

Assembly fordítók, assemblerek[szerkesztés]
MPASM
Az MPLAB része: kiváló assembly fordító, makróképességekkel (ingyenes)(Assembler és a MPASM rövid, magyar nyelvű leírása[halott link] szintén Varga Lászlótól)
miSim DE
Fejlesztői környezet Javaban, így platformfüggetlen (ingyenes)
djpasm
Assembly fordító JavaScriptben megírva
gputils
GNU PIC segédeszközök. GPL licenccel rendelkező szabad szoftver. Tartalmaz assemblert, linkert és szimulátort.
PicAsm
Assembly fordító 12 és 14 bit PIC-ekre
TDE Archiválva 2008. február 16-i dátummal a Wayback Machine-ben
TechTools Design Environment
C fordítók[szerkesztés]
C18, C30 Archiválva 2007. június 23-i dátummal a Wayback Machine-ben, C32 Archiválva 2007. június 23-i dátummal a Wayback Machine-ben
A Microchip cég C fordító családja – ingyenes használatánál optimalizálási korlátozások lépnek életbe
Bytecraft C
Professzionális C fordító
CCS
CCSC fordító, amelynek korlátozott verziója megtalálható a Microchip MPLAB alap installációjában is
CC5X
A B Knudsen Data cég C fordítója 12, 14 ill. 16 bites PIC-ekre
PICC
A HI-TECH C az egyik legelterjedtebb C fordító PIC-ekhez. Gyári fordító, tekintve, hogy a HI-TECH a Microchip tulajdonába került. Korlátozott verzióját szintén tartalmazza a Microchip MPLAB alap installációja
SDCC
Ingyenes, nyílt forráskódú fordító mely egyre nagyobb népszerűségnek örvend
Boost C/C++
Népszerű C fordító valamint – talán elsőként – C++ nyelv PIC-re
MikroC
A mikroElektronika C fordítója
Wiz-C
Profi, Delphi-szerű fejlesztői rendszer PIC-re, beépített szimulátorral, ingyenes változata 2k program méretig fordít
Pascal fordítók[szerkesztés]
JAL
Just Another programming Language:Pascal-szerű nyelv (ingyenes)
Pic Micro Pascal
Ingyenes Pascal implementáció PIC-re (MPASM forrást állít elő)
mikroPascal
A mikroElektronika Pascal fejlesztői rendszere
P2C
Source Boost Pascal compiler – valójában assembly forrást készít
Basic fordítók[szerkesztés]
BASIC87x
Myke Predko Basic interpretere, a forráskódja is letölthető
Basic Stamp
A Parallax cég Basic Stamp interpreterének PIC klónja
Great Cow Basic
Ingyenes, nyílt forráskódú
MBasic
Professzionális Basic implementáció teljes fejlesztési környezettel
mikroBASIC
A mikroElektronika terméke
PicBasic Pro
Basic Stamp utasításkészlettel rendelkező fordító
Swordfish
Modern strukturált Basic fordító
XCSB Archiválva 2008. február 9-i dátummal a Wayback Machine-ben
Lite változata ingyenes
Egyéb[szerkesztés]
Java Archiválva 2007. július 1-i dátummal a Wayback Machine-ben
Java bájtkódból assembly kód generálása
Java Virtual Machine
Igen! PIC-eken!
Forth
RAM Technology Systems
Mary Archiválva 2021. január 25-i dátummal a Wayback Machine-ben
Mary Forth fordító
PicForth
A PIC és Forth szerelmeseinek
Pyastra
Python PIC-re
ZMech Archiválva 2008. február 2-i dátummal a Wayback Machine-ben
CASE tool PIC fejlesztésre
Ladder logic
Ladder logic fejlesztő eszköz és kód generátor
Embedded Target for 16 bits PIC
Simulink modellből PIC kód generálása
QuantiPhi
Simulink modellből PIC kód generálása
CoreChart
Folyamatábrából kód generálása
Flowcode V3 for PIC
Folyamatábrából kód generálása

Hardver eszközök[szerkesztés]

Programozók[szerkesztés]

Azok az eszközök tartoznak ide, amelyek lehetővé teszik a számítógépen lefordított programkód betöltését a mikrokontroller programmemóriájába.

  • PICkit2 A Microchip cég egyszerű de annál nagyszerűbb ún. belépő szintű (entry level) programozója és egyben nyomkövetője. Alacsony ára, valamint a támogatott eszközök egyre bővülő listájának köszönhetően egyre népszerűbb nemcsak a hobbifelhasználók között, de a profi fejlesztők körében is. A Microchip a PICKit2 projektet nyílt forrásúvá tette. A teljes dokumentációja, beleértve a mikrokontroller programjának forrása és a PC-s kezelőprogram forrása, bárki számára elérhető és szabadon módosítható. Ennek eredményeként a projektet önkéntesek továbbfejlesztették, új funkciókkal egészítették ki, mint például logikai analizátor. Szintén a nyíltságnak köszönhető, hogy az eszközt már Linux alól is használhatjuk.
  • OpenProgrammer Teljes egészében nyílt projekt. Házilag is elkészíthető USB portos programozókészülék, amelyhez Windows és Linux kezelőszoftver is tartozik nyílt forráskóddal.
  • Usbpicprog Egy másik nyílt forrású programozókészülék.
  • JDM Pic Egy nagyon egyszerű, mindössze néhány alkatrészből álló, programozott mikrokontrollert nem tartalmazó készülék. A soros portra csatlakozik, de azt nem a szabványos módon használja.

Nyomkövetők[szerkesztés]

Ezek az eszközök kibővített tudású programozók amelyek alkalmasak a mikrokontrollerben futó program nyomkövetésére is.

  • ICD2 A Microchip cég alacsony árú nyomkövetője. Programozásra is alkalmas eszköz, azonban elsődleges felhasználási területe a programhibák felderítése a céláramkörben történő nyomkövetéssel. Használhatóságáról megoszlanak a vélemények, többek szerint a PICkit2 lassan átveszi ennek az eszköznek a szerepét.
  • ICD3[halott link] Az ICD2-t leváltó programozó nyomkövető.
  • PICkit3 A PICkit2-höz hasonló, újabb készülék. A PICkit2-vel ellentétben nem nyílt projekt, és azzal nem is kompatibilis. Jelenleg Linux alatt nem támogatott. (2010. augusztus 12.-i állapot szerint)

Jegyzetek[szerkesztés]

Források[szerkesztés]

További információk[szerkesztés]

Kapcsolódó szócikkek[szerkesztés]

  • gpsim – PIC mikrovezérlő-szimulátor