A PIC mikrokontroller család 1/2

 Vissza

A PIC16C mikrovezérlő család

 

A PIC mikrovezérlő sorozat a Microchip Technology Inc. fejlesztése. A legolcsóbb, legkisebb elemek a 16C5x áramkörök  a 16C6x, 16C7x és 16C8x elemek már komolyabb lehetőségeket biztosítanak ( utóbbiak közös elnevezése a PIC16Cxx ).

A PIC áramkörök többsége EPROM chip, a program tárolásán kívül a konfigurációs részletek is az EPROM egyes bitjeiként jelennek meg. Egy konkrét típus egyféle chip. Ez az egyféle chip azonban különféle tokozással készülhet: átprogramozható változat (kvarcablakos, drága tokozásban), egyszer programozható kivitel (olcsó műanyag tokozással), s a gyártó maga is vállalja a tömeges beprogramozást. A PIC mikrovezérlők használatához az univerzális EPROM, PLD és mikrokontroller programozó készülékek közül nem mindegyik alkalmas. Célszerű komplett PIC fejlesztő rendszert beszerezni, amely a programfejlesztést, a szimulációt, a program letöltését egyaránt lehetővé teszi. A PARALAX cég szakosodott a PIC mikrovezérlőkre, számos fejlesztő készletük van forgalomban.

Mivel a mikrovezérlők felhasználói közül sokan már megszokták az ipari szabványnak tekinthető 8051-es utasításkészletet, a PARALAX olyan programfejlesztő rendszert is ajánl, mely a 8051 jellegű utasításokat is fogadja és PIC utasításokká alakítva beépíti a PIC programjába.

A PIC mikrovezérlők 8 bitesek, a 16C5x család utasításkészlete 33 utasításból áll, a 16Cxx áramkörök esetében az utasításkészlet kicsit bővült, 35 utasítást tartalmaz. Ezek kis számok, tehát jogos a gyártónak az a kitétele, hogy a PIC mikrovezérlők központi egysége (CPU) RISC jellegű - ez redukált utasításkészletet jelent. Minden utasítás egy szavas, a végrehajtásuk egyetlen gépi ciklust igényel ( kivéve az ugró utasítások ). Az utasítások nem 8 bitesek, hanem a 16C5x családnál 12 bit hosszúságúak, a 16Cxx elemeknél 14 bitesek. A címzési lehetőségek sokoldalúak ( direkt, indirekt, relatív címzés ). Mint a mikrovezérlők többsége, a PIC áramkörök is a Harvard architektúrát követik, azaz különálló program- és adattárolót tartalmaznak. Így lehetséges, hogy a programtároló 12, 14 ill. 16 bites, míg az adattároló 8 bites.

A PIC mikrokontrollerek csak a belső programtárból képes utasításokat végrehajtani s csak a belső adattárat tudja kezelni - nem lehet külső memória áramköröket hozzákapcsolni. Ez először hiányosságnak tűnhet, hiszen más mikrovezérlő családok esetében azok előnyös képeségeként tüntetik fel, hogy külső memóriákkal is működtethető. A külső memóriákat azonban a mikrokontrollerek kizárólag Port pontjaikon keresztül képesek kezelni, az ilyen működtetés a szabad jelcsatlakozások számát jelentősen csökkenti. A PIC család belső program- és adattár kapacitása széles tartományban választható. A PIC16C5x elemek még nem, de a 16Cxx áramkörök már sokoldalú megszakítási rendszerrel rendelkeznek.

A különböző PIC típusokban 1-4 db párhuzamos Port található, s minden típusban megtalálható egy időzítő/számláló egység, mely a valós idő mérésére vagy események számlálására alkalmas, valamint a mikrovezérlő működési biztonságát megnövelő watchdog timer. A további egységek opcionálisak, egyes változatokban szerepelnek, másokban nem ( további számlálók, soros Port aszinkron ill. szinkron átvitelre, A/D konverter analóg multiplexerrel, EEPROM adattároló ).

A CMOS technológiának köszönhetően a PIC-ek kis fogyasztásúak és széles tápfeszültség tartományban használhatók. A stand-by állapot tápáram igénye kisebb mint 1 A.

A PIC mikrovezérlők a RESET áramköri megoldások, az oszcillátor kapcsolási lehetőségek, az átfedéses utasítás végrehajtás és az utasításkészlet szempontjából egységesek.

  Vissza

A PIC mikrokontrollerek oszcillátor típusai

A PIC mikrovezérlők minden típusa többféle oszcillátorral működhet - az oszcillátortípust az EPROM-ban ( esetenként EEPROM-ban ) kialakított konfigurációs biztosítékokkal lehet kiválasztani. A kvarcablakkal tokozott változatok és az EEPROM alapú PIC-ek esetén a felhasználó a beprogramozással egyidejűleg, a fejlesztő egység segítségével állíthatja be az oszcillátor típusát.

Az egyszer programozható OTP (One Time Programmable) mikrovezérlőket zárt műanyag tokozással gyártják, ezeknél az oszcillátor típusát a gyártó már beállította. Az áramkör típusjele ilyenkor az oszcillátor típusára utaló betűkkel végződik, a kvarcablakos változatok típusjelének a végén JW áll. A négy oszcillátor lehetőség a következő:

  LP: kisteljesítményű kvarcoszcillátor,

  XT: kvarcoszcillátor,

  HS: nagy sebeségű kvarcoszcillátor,

  RC: ellenállás/kondenzátor hangolású oszcillátor.

A PIC mikrokontrollerekre közvetlenül ráköthető egy rezgőkvarc vagy egy kerámia rezonátor. Ezt a megoldást az XT, LP vagy HS üzemmódokban lehet alkalmazni. A gyártó a beépítésre kerülő kondenzátorok értékére is ad ajánlást.

 

 

A kvarcoszcillátor a PIC mikrovezérlők belső elemeinek használata nélkül, önálló külső áramkörként is megépíthető, s a PIC mint külső órajelet, tudja ekkor fogadni az oszcillátor impulzusait az OSC1/CLKIN bemeneten (OSC2 bekötetlen). A külső oszcillátor alkalmazása akkor célszerű, ha annak jelét más áramkörökhöz is el kell vezetni.

  Vissza

Bekapcsolási RESET megoldások

 

A RESET folyamatot három esemény indíthatja el:

A jelek után minden esetben azonnal indul az oszcillátor start-up időzítő (OST) áramkör, melynek számlálási idejéig (18ms a névleges érték) a mikrovezérlő még RESET helyzetben marad, majd megindul a normál működés.

A PIC mikrovezérlők bemenetén a tápfeszültség bekapcsolásakor automatikusan működő RESET áramkört (Power-Up Reset) alakíthatunk ki. Ez a megoldás hosszú RESET időtartamot adhat, ami akkor lehet előnyös, ha a bekapcsolt tápfeszültség csak lassan éri el a névleges értékét.

 

 

Ha előre nem becsülhető meg a tápfeszültség növekedési üteme a bekapcsolás után, akkor az RC tagnál komolyabb áramköri megoldást alkalmaznak. A tápfeszültség névleges értékét egy Zener diódás kapcsolás érzékeli, s a küszöbszint felett megszünteti a RESET állapotot. Egy ilyen jellegű áramkört mutat be az ábra.

 

 

A rendszer megbízhatósága, üzembiztonsága múlik ezen az áramköri részleten. Ha a RESET kialakítás nem megfelelő, és a belső folyamatok nem mennek végbe a RESET időtartama alatt, a mikrovezérlő egy véletlenszerű állapottal kezdi meg a működését. Ha ebből a helyzetből nem is képes kimenekülni, a teljes működésképtelenség alakul ki.A beépített vezérlő egységeknek általában nincs RESET gombjuk, végső megoldásként a felhasználó csak kikapcsolhatja majd újra bekapcsolhatja a készüléket - de ekkor ismét ugyanaz a RESET folyamat játszódik csak le. Érdemes a tápegység felépítését, a táplálási rendszert tanulmányozni, s a RESET áramkört azoknak megfelelően úgy kialakítani, hogy minden bekapcsoláskor 100 -os biztonsággal megvalósuljon a belső RESET folyamat.  Vissza

Átfedéses (pipe-line) utasítás-végrehajtás

A PIC mikrovezérlőkben külön vezérlő egység kezeli a programmemória kiolvasását és az utasítás végrehajtást. Így lehetséges, hogy az egyik utasítás végrehajtása alatt a másikat a CPU előre kiolvashatja a programmemóriából. A PIC-ek esetében ez az utasítás 'elő-olvasás' nem esetleges folyamat, hanem az alapműködés eleme.

Az alaposzcillátor ( OSC1 ) impulzusaiból a PIC belső időzítő-vezérlő egysége négy, egymást át nem fedő impulzus sorozatot állít elő, melyek frekvenciája az OSC1 frekvenciájának negyedrésze ( Q1, Q2, Q3, Q4). A négy leosztott órajel egy-egy impulzusa alkot egy gépi ciklust. A belső események a leosztott órajelekhez kötötten, szigorú rendben zajlanak:

 a következő gépi ciklusban az utasítás dekódolódik és végrehajtódik, miközben a fenti rendben egy következő utasítást olvas be a CPU a programtárból.

 Minden utasítás értelmezése és végrehajtása egyetlen gépi ciklus alatt megtörténik, az ugró utasítások esetén az időközben beolvasott utasítás szó helyett másikat kell a programtárból kiolvasni, ezért az ugró utasításoknál egy további gépi ciklus is szükséges. A PIC mikrovezérlők átfedéses utasítás végrehajtása tehát gépi ciklusonként megvalósítja egy-egy utasítás végrehajtását, pedig tulajdonképpen ez két gépi ciklust igényelne.

  Vissza

A PIC mikrovezérlők utasításkészlete

 

A PIC mikrovezérlők utasításkészletében 33 utasítás mnemonikja megegyezik, akár 16C5x, akár 16Cxx áramkörröl legyen is szó. Mivel a mnemonikok megegyeznek, a PIC szoftver fejlesztő rendszerek minden típushoz használhatóak.

A PIC16C5x áramkörök utasításai 12 bit hosszúak, az utasításkészlet 33 utasításból áll. A PIC16xx mikrokontrollerek utasításai 14 bit hosszúságúak, a készlet 35 utasításból áll. Az utasítások felépítését az ábra szemlélteti.

 

 

 

Mnemonik, operandus

Leírás

Ciklus

Módosuló flag

Megj.

BÁJT ORIENTÁLT, FÁJL REGISZTERES UTASÍTÁSOK

ADDWF

f,d

W + f

1

C,DC,Z

1,2

ANDWF

f,d

W és f És kapcsolata

1

Z

1,2

CLRF

f

f törlése

1

Z

2

CLRW

 

W törlése

1

Z

 

COMF

f,d

f negálása

1

Z

1,2

DECF

f,d

f -1

1

Z

1,2

DECFSZ

f,d

f -1, ha az eredmény 0, a következő utasítást átlépi

1(2)

 

1,2,3

INCF

f,d

f +1

1

Z

1,2

INCFSZ

f,d

f +1, ha az eredmény 0, a következő utasítást átlépi

1(2)

 

1,2,3

IORWF

f,d

W és f VAGY kapcsolata

1

Z

1,2

MOVF

f,d

f másolása

1

Z

1,2

MOVWF

f

f-be kerül W tartalma

1

   

NOP

 

Nincs működés

1

   

RLF

f,d

f tartalma balra léptetődik a Carry flag-en keresztül

1

C

1,2

RRF

f,d

f tartalma jobbra léptetődik a Carry flag-en keresztül

1

C

1,2

SUBWF

f,d

f - W

1

C,DC,Z

1,2

SWAPF

f,d

f alsó és felső 4 bitjét felcseréli

1

 

1,2

XORWF

f,d

W és f XOR kapcsolata

1

Z

1,2

 

 Vissza

 

Mnemonik, operandus

Leírás

Ciklus

Módosuló flag

Megj.

BIT ORIENTÁLT, FÁJL REGISZTERES UTASÍTÁSOK

BCF

f,b

f-ben a b bitet 0-ra törli

1

 

1,2

BSF

f,b

f-ben a b bitet 1-be állítja

1

 

1,2

BTFSC

f,b

Ha f b bitje 0, akkor a következő utasítást átlépi

1(2)

 

3

BTFSS

f,b

Ha f b bitje 1, akkor a következő utasítást átlépi

1(2)

 

3

 

 

 

Mnemonik, operandus

Leírás

Ciklus

Módosuló flag

LITERAL (KONSTANSOS) ÉS VEZÉRLŐ UTASÍTÁSOK

+ADDLW

k

W + k összeg W-be kerül

1

C,DC,Z

ANDLW

k

W és k ÉS kapcsolata W-be kerül

1

Z

CALL

k

Szubrutinra ugrás

2

 

CLRWDT

 

Törli a Watchdog Timer-t (WDT) és az előosztóját

1

GOTO

k

Feltétel nélküli ugrás, k értéke a PC-be íródik

2

 

IORLW

k

W és k VAGY kapcsolata

1

Z

MOVLW

k

W-be kerül k

1

 

#OPTION

 

W-t betölti az OPTION regiszterbe

1

 

+RETFIE

 

Visszatérés a megszakítást kezelő szubrutinból

2

 

RETLW

k

Szubrutinból visszatérés és W-be kerül k

2

 

+RETURN

 

Szubrutinból visszatérés

2

 

SLEEP

 

A processzor Sleep üzemmódba lép

1

+SUBLW

k

W - k különbség W-be kerül

1

C,DC,Z

#TRIS

f

W-t betölti az I/O vezérlő regiszterbe

1

 

XORLW

k

W és k XOR kapcsolata

1

Z

 

 

Megjegyzések:

    1. Ha egy I/O regiszternél a saját tartalma szerepel az utasításban operandusként, minden esetben a csatlakozó lábon ténylegesen meglévő logikai szint lesz mérvadó (nem a kimeneti regiszter tartalma ).
    2. Ha ez az utasítás a TMR0 regiszterrel kapcsolatban hajtódik végre (és, ahol szerepel, d=1), az előosztó törlődik - amennyiben a TMR0-hoz van rendelve.
    3. Amikor a PC módosul vagy ha egy teszt feltétel teljesül, az utasítás két ciklust igényel. A második ciklus úgy zajlik le, mint egy NOP.

 # Csak a 16C5x típusoknál szereplő utasítások.

+ Csak a 16Cxx családnál szereplő utasítások.

Az utasítások ismertetésénél alkalmazott jelöléseket a táblázat foglalja össze.

 

Jelölés

Magyarázat

f

Regiszter fájl cím

W

Munkaregiszter

b

Bit cím egy 8 bites fájl regiszteren belül

k

Konstans (literal) illetve cím adat

d

Cél kijelölő elem (default érték d=1),

d=0: az eredmény a W-be kerül,

d=1: az eredmény az f fájl regiszterbe kerül.

PC

Programszámláló

C,DC,Z,

A Státusz regiszter (SWR) jelző bitjei

 

Vissza