A PIC mikrokontroller család 2/2

 Vissza

A PIC16C5x mikrokontroller csoport

 

A PIC 16C5x elemsorozat a PIC mikrovezérlő család első csoportja. Ezek az áramkörök még egyszerűbb felépítésűek, kisebb képességűek - és természetesen olcsóbbak is - mint a későbbi 16Cxx chip-ek. Jelentőségüket azonban nem veszítették el, mert sok egyszerűbb feladatra éppen ezek a mikrovezérlők ideálisak.

 

Belső felépítés

 

A mikrokontrollerekre jellemző módon a 16C5x áramkörökben is megtaláljuk a programmemóriát (minden esetben EPROM), az adattárat (SRAM), az I/O elemeket, a CPU-t és egy időzítő/számláló egységet (RTCC). A belső adatbusz nyolc bites, az adatmemória és a CPU is, a programmemória rekeszei 12 bitesek.

A kitüntetett adatregiszter (akkumlátor) neve a PIC-ben W, ide kerül a műveletek egyik operandusa, s a konstansos (literal) utasításokban levő számérték. A veremtár (stack) is belső egység, két cím befogadására alkalmas, így kétszeres szubrutin egymásbaágyazás engedhető meg. Az f1-f7 jelölések a speciális funkciójú fájl regiszterekre utalnak, ezek és az általános célú regiszter fájl elemek alkotják a belső adattárat (SRAM), aminek első 32 rekesze közvetlenül címezhető. Ha a chip nagyobb SRAM-ot tartalmaz, a további területek Bank szervezéssel érhetők el. Az SRAM szervezését az ábra mutatja be.

 

 

  Vissza

A regisztermező elemei:

1. Fájl regiszter terület

- valós idejű óra/számláló (RTCC, Real Time Clock/Counter)

- programszámláló (PC, Program Counter)

- állapotregiszter (SR, Status Register)

- I/O regiszterek (I/O Registers, PORTs)

- fájl regiszter választó regiszter (FSR, File Select Register)

- általános célú regiszterek (General Purpose Registers)

2. További speciális regiszterek

- az I/O Port-ok konfigurálására és az előosztó kezelésére szolgáló regiszterek

A 16C5x mikrovezérlők 512 szavas programtárat képesek közvetlenül címezni, amit EPROM ként alakítottak ki. Egyes típusokban nagyobb kapacitású a programmemória, ilyenkor 512 szavas lapok formájában éri el a CPU.

 

A kvarcablakos PIC16C5x mikrokontroller típusok

 

Típus

EPROM

RAM

I/O

Tápfesz.

Lábszám

PIC16C54

PIC16C55

PIC16C56

PIC16C57

512x12

512x12

1Kx12

2Kx12

32x8

32x8

32x8

80x8

13

21

13

21

 

4,0 - 5,5V

18

28

18

28

PIC16C54A

PIC16C57A

PIC16C58A

512x12

2Kx12

2Kx12

32x8

80x8

80x8

13

21

13

 

2,5 - 6,25V

18

28

18

 

 

A belső működések regiszterei

 

f0 Indirekt adatcímzés (Indirect data Adressing)

Ez a regiszter a valóságban, fizikailag nincs kialakítva a chip-ben. Ha egy utasításban regiszterként az f0-t adjuk meg, az FSR tartalma jelöli ki, címzi az operandus regisztert. Az f0 így csak jelzés az indirekt regiszteres címzésre. Ha indirekt címzés segítségével az f0-t olvassuk, az eredmény 0H lesz, ha írjuk, egy NOP-ot hajt végre a CPU.

 

f1 Óra/számláló regiszter, RTCC

Általános, írható/olvasható rekeszként is üzemel, de sajátosan inkrementálható a taratlma, több forrásból is. Léptethető az IC RTCC lábára érkező impulzusokkal is, vagy belső, utasításciklus-órajellel (CLKOUT, ami fosc/4 frekvenciájú). Felépítését az ábra mutatja be.

  Vissza

 

 

RTCC-t az OPTION regiszter bitjei vezérlik (RTE, RTS). Az RTCC működésébe beiktatható egy előosztó is (PSA, PS0...PS2). Ha az előosztót a számlálóhoz rendeltük, ezután minden olyan utasítás, amelyik f1-et írja, az előosztót törölni fogja.

f2 Programszámláló, PC

A programszámlálóban alakul ki a következő bolvasásra kerülő program szó címe. A PIC16C5x változatokban a PC (és a veremtár rekeszek) mérete változó:

 

Típus

PC, veremtár rekesz hossza (bit)

PIC16C54/55

9

PIC16C56

10

PIC16C57/58

11

 

 

A RESET folyamat hatására a PC tiszta 1 tartalmat vesz fel. Az utasítások végrehajtása közben automatikusan inkrementálódik, a vezérlésátadó, ugró utasítások közvetlenül módosítják a tartalmát.

 

f3 Státusz regiszter, SWR (Status Word Register)

Ez a regiszter informál az ALU-ban (Aritmetikai Logikai Egység) végbement folyamatokról s tartalmaz néhány speciális információs bitet is. A nagyobb méretű programtárolók kezeléséhez itt találhatóak a lap előválasztó bitek is:

SWR.0 - Carry (C) flag, túlcsordulást jelez

SWR.1 - Digit Carry (DC) flag, az első négy biten keletkező túlcsordulást jelzi

SWR.2 - Zero (Z) flag, 0-ra áll be, ha az aritmetikai vagy logikai művelet eredménye 0

SWR.3 - Power Down (PD) bit, 1-re áll be tápfesz. bekapcsoláskor vagy CLRWDT utasítás hatására, 0-ra a SLEEP utasítás állítja

SWR.4 - Time-Out (TO) bit, 1-re áll be tápfesz. bekapcsoláskor vagy CLRWDT ill. SLEEP utasítás hatására, 0-ra a Watchdog időzítő túlfutása állítja

SWR.5, SWR.6 - PA0, PA1 bitek.

PIC16C54/55-ben: két általános célú bit

PIC16C56-ban: PA0 - lapválasztó (Page Select) 0,1 - Lap0, Lap1

PIC16C57/58-ban: két lapválasztó bit (bináris kombinációjuk-Lap0...Lap3)

SWR.7 - Általános célú bit

A TO és a PD bitek lehetővé teszik, hogy egy RESET folyamat után a CPU megállapíthassa a RESET-et kiváltó esemény jellegét:

  Vissza

TO

PD

RESET oka

0

0

WDT időtúlfutás Sleep üzemmódban

0

1

WDT időtúlfutás, nem Sleep üzemmódban

1

0

- ébresztés Sleep üzemmódból

1

1

Power-Up, bekapcsolás

X

X

Lefutó él az bemeneten (a TO,PD biteket nem befolyásolja)

 

f4 Fájl regisztert választó regiszter, FSR

A PIC16C54/55/56-ban a 0...4 bitek 32 lehetséges értéke a rendelkezésre álló 32 fájl regiszter egyikét jelöli ki, indirekt címzési mód esetére. Az 5...7 bitek csak olvashatóak, kiolvasva 1-et adnak.

A PIC16C57/58-ban az 5...6 bitek a kurrens adatBank számát tartalmazzák. Az összes Bank alsó 16 bájtja fizikailag egyazon 16 bájt, s mindig kiválasztódik, ha címben a bit4 (pl.indirekt címzéskor az FSR.4) 0 értékű. Ha a címértéken belül a bit4=1, azaz a felső 16 bájtra utal, akkor jut szerephez az FSR.5-6 bitpáros, kijelölve az adatmemóriában a 0...3 adatBank egyikét.AzFSR.7 bit csak olvasható, kiolvasva 1-et ad. 

Az I/O működések 

Az I/O regisztereket ugyan úgy lehet programból kezelni, mint bármely egyéb fájlregisztert. Az olvosás művelet minden esetben a Port csatlakozó lábai állapotát olvassa be, függetlenül attól, hogy a pont bemenetként vagy kimenetként van konfigurálva. A RESET hatására minden Port pont bemenet (nagy impedanciás) állapotú lesz, azaz az I/O vezérlő regiszterekben (TRISA, TRISB, TRISC) minden bit 1-be áll. A vezérlő bájtot a W regiszterben kell előkészíteni, s onnan egy TRIS f utasítással lehet betölteni a TRISx regiszterbe.

Minden Port bit, egymástól függetlenül bemenetként vagy kimenetként is használható - ez a vezérlő regiszterrel (TRISx) állítható be. Bemenetként nincs tárolás, a kimenő adatot tárolja a mikrokontroller. Egy kimenetre író utaítás eredménye a Port ponton a következő ciklus elején jelenik meg. A Port bemenetként való olvasásakor a mintavételezés a ciklus elején történik. Ezért célszerű az esetleg egymás után alkalmazott két művelet közé egy NOP utasítás beiktatása.

 

f5 Az A Port I/O regisztere (RA0...RA3)

4 bites I/O regiszter, csak a kisebb helyiértékű bitek működnek (a felső bitek olvasáskor 0-át adnak).

f6 A B Port I/O regisztere (RB0...RB3)

8 bites I/O regiszter.

 f7 A C Port I/O regisztere (RC0...RC3)

PIC16C55/57: 8 bites I/O regiszter.

PIC16C54/56/58: 8 bites általános célú regiszter.

  Vissza

Általános célú regiszterek

A PIC16C54/55/56 esetében 24 ilyen regiszter van, a fájl regiszter 08-1FH címein.

A PIC16C57/58 mikrovezérlőkben az adattár regiszter Bank területekre tagolódik, a teljes regiszter tartomány a következő:

08...0FH - általános célú regiszterek, 8db Bank független regiszter

10...1FH - a Bank 0 16 általános célú regisztere

20...2FH - fizikailag azonos a 00...0FH regiszterekkel

30...3FH - a Bank 1 általános célú regiszterei

40...4FH - fizikailag azonos a 00...0FH regiszterekkel

50...5FH -a Bank 2 általános célú regiszterei

60...6FH - fizikailag azonos a 00...0FH regiszterekkel

70...7FH -a Bank 3 általános célú regiszterei

  Vissza

Összesen tehát 80 db fizikailag létező bájt áll rendelkezésre.

Speciális regiszterek

Munkaregiszter, W (Working Register)

8 bites ideiglenes regiszter, a két operandusos utasítások egyik operandusának előkészítő helye, gyakran az eredmény megjelenési helye.

f5 A Port vezérlő regiszter, TRISA(I/O Controll register for PortA)

Az A Port adatirány kijelölő regisztere. Csak a 0...3 bitek működnek, mivel az A Port csak 4 bites. (0=kimenet, 1=bemenet)

f6 B Port vezérlő regiszter, TRISB(I/O Controll register for PortB)

A B Port adatirány kijelölő regisztere. (0=kimenet, 1=bemenet)

f7 C Port vezérlő regiszter, TRISC(I/O Controll register for PortC)

A C Port adatirány kijelölő regisztere. (0=kimenet, 1=bemenet)

Opció regiszter, OPTION (Prescaler/RTCC Option Register)

Ez a regiszter az előosztó és a valós idejű óra/számláló vezérlését oldja meg 6 bit segítségével. Az OPTION regiszter tartalmát a W regiszterben kell előkészíteni, s onnan egy OPTION utasítás tölti a helyére. RESET hatására a regiszter minden bitje 1 lesz.

OPTION.0-2 - PS0...PS2 bitek, az előosztás értékét állítják be.

 

PS2 PS1 PS0

RTCC osztás

WDT osztás

0 0 0

1:2

1:1

0 0 1

1:4

1:2

0 1 0

1:8

1:4

0 1 1

1:16

1:8

1 0 0

1:32

1:16

1 0 1

1:64

1:32

1 1 0

1:128

1:64

1 1 1

1:256

1:128

 

OPTION.3 - Előosztás hozzárendelő bit (PSA) - 0: RTCC, 1:WDT

Ha az RTCC-hez rendeljük az előosztót, minden olyan utasítás, amelyik az RTCC-t írja, az az előosztót is törli. Ha a WDT-hez rendeljük hozzá, egy CLRWDT utasítás használható fel a törlésére, a WDT törlésével egyidejűleg. Az előostó az RTCC-ről a WDT-re és vissza folyamatos programfutás közben is átkapcsolható, megfelelő programlépések hatására.

OPTION.4 - RTCC léptető él (RTE) - 0: az RTCC lábon fellépő felfutó él, 1: az RTCC lábon fellépő lefutó él léptet.

OPTION.5 - RTCC impulzus forrás (RTS)

0: CLKOUT, azaz a belső utasítás ciklus óra

1: RTCC lábon fellépő impulzusok.

A Watchdog-Timer (WDT)  Vissza

 A Watchdog-Timer szabadon futó RC oszcillátor a chip-ben, amely nem igényel külső komponenseket. Ez azt is jelenti, hogy a WDT akkor is fut, ha az órajel az OSC1/OSC2 pontokon szünetel, pl. egy SLEEP utasítást követően. A WDT időtúlfutása egy RESET feltételt generál. Ha a WDT szolgáltatását igénybe vesszük, az idő túlfutás elérése előtt rendszeresen törölnünk kell azt. A normál program végrehajtás közben ezek a törlő parancsok meggátolják a RESET kialakulását. Ha valamilyen hatásra a program normális futása megakad, a WDT nem kap törlő jelet, kiváltja a RESET-et - aminek hatására a mikrovezérlő a teljes programrendszerét ismét felépíti, s ismét működőképes lesz.

A WDT névleges futási ideje 18ms, ha az előosztót nem rendeljük hozzá. A tényleges időtartam függ a tápfeszültségtől, a környezeti hőmérséklettől, de még a mikrokontroller egyes példányaitól is. Az előosztóval a futási idő megnövelhető, a legnagyobb osztásarány (128) alkalmazásakor az időtartam már 2,5s.

Az oszcillátor start-up időzítő (OST) 

A mikrokontrollerek belső oszcillátora, melyet a külső frekvencia meghatározó elemekkel (RC tag, rezgőkvarc vagy kerámia rezonátor) hangolunk, a tápfeszültség bekapcsolásakor nem képes azonnal szabályos alakú és időtartamú jeleket előállítani. Ezért inegráltak a chip-re egy oszcillátor start-up időzítő egységet (Oscillator Start-up Timer, OST). Ez megoldja, hogy abban az időszakban, amikor még nem tud precízen működni az oszcillátor, a mikrovezérlő még ne is kísérelje meg a működést.Az OST kb. 18ms-ig gátolja a működést. Amikor az oszcillátor már beállt, a szabályos impulzusokat szolgáltatja, akkor indulhatnak meg a belső folyamatok.

Sleep üzemmód

 A csökkentett tápteljesítményű állapotba (Sleep, Alvás) a SLEEP utasítás hatására lép be a mikrovezérlő. Ha engedélyezzük, a WDT törlődik és tovább számlál  törlődik f3 státusz regiszterben a PD bit  a TO 1-re vált és az oszcillátor meghajtó áramkör kikapcsolódik. Az I/O Portok megőrzik a Sleep előtti állapotukat.

A Sleep módból az ébredés két úton érhető el:

  a WDT időtúlfutása miatt,

  az lábra érkező lefutó él hatására.

Bármelyik eset áll elő, a jelek megszünésekor indul az oszcillátor Start-Up időzítő és ennek számlálási idejéig a mikrovezérlő még RESET helyzetben marad, majd megindul a normál működés.

Konfigurációs biztosítékok

 A PIC mikrovezérlők néhány alapvető jellemzőjét konfigurációs biztosítékokkal lehet befolyásolni. Ezek is EPROM bitek, de a programtárolásra használt területtől függetlenek. A PIC fejlesztő rendszerek speciális parancsok hatására kezelik ezeket.

Két biztosíték szolgál az oszcillátor típus beállítására, egy a Watchdog időzítő engedélyezésére, egy a progrmkódot védő biztosíték. Ezt a kód titkosító bitosítékot 0-ra programozva az EPROM tartalom (ill.csak a 040H címtől kezdődően) nem olvasható ki, a tárolt bitminták helyett egy torz adatsor lép ki. De összehasonlításra, ellenőrzésre még így is van mód.

 Vissza