PIC mikrokontroller

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 mikrokontroller a Microchip Technology cég által kifejlesztett Harvard architektúrájú programozható eszköz. Ez a mikrokontroller 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 | forrásszöveg szerkesztése]

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 | forrásszöveg szerkesztése]

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 | forrásszöveg szerkesztése]

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 | forrásszöveg szerkesztése]

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)[szerkesztés | forrásszöveg szerkesztése]

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 | forrásszöveg szerkesztése]

  • 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 | forrásszöveg szerkesztése]

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 | forrásszöveg szerkesztése]

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 | forrásszöveg szerkesztése]

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 | forrásszöveg szerkesztése]

Időzítők[szerkesztés | forrásszöveg szerkesztése]

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 | forrásszöveg szerkesztése]

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é. (impulzus szélesség moduláció)

EEPROM[szerkesztés | forrásszöveg szerkesztése]

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 | forrásszöveg szerkesztése]

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

USB[szerkesztés | forrásszöveg szerkesztése]

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 | forrásszöveg szerkesztése]

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 | forrásszöveg szerkesztése]

Fejlesztői környezetek[szerkesztés | forrásszöveg szerkesztése]

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 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 Windows-os 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
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 | forrásszöveg szerkesztése]

Assembly fordítók, assemblerek[szerkesztés | forrásszöveg szerkesztése]
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 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
TechTools Design Environment
C fordítók[szerkesztés | forrásszöveg szerkesztése]
C18, C30, C32
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 | forrásszöveg szerkesztése]
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 | forrásszöveg szerkesztése]
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 struktúrált Basic fordító
XCSB
Lite változata ingyenes
Egyéb[szerkesztés | forrásszöveg szerkesztése]
Java
Java bájtkódból assembly kód generálása
Java Virtual Machine
Igen! PIC-eken!
Forth
RAM Technology Systems
Mary
Mary Forth fordító
PicForth
A PIC és Forth szerelmeseinek
Pyastra
Python PIC-re
ZMech
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 | forrásszöveg szerkesztése]

Programozók[szerkesztés | forrásszöveg szerkesztése]

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 | forrásszöveg szerkesztése]

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 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)

Források[szerkesztés | forrásszöveg szerkesztése]

Külső hivatkozások[szerkesztés | forrásszöveg szerkesztése]