periferice ale unui microcontroler din …meo.etc.upt.ro/materii/cursuri/ptsd/3.pdf · capitolul 3...

29
CAPITOLUL 3 PERIFERICE ALE UNUI MICROCONTROLER DIN FAMILIA HCS12X 4.1. INTRODUCERE În acest capitol se prezintă structura şi funcţionarea unor periferice ale microcontrolerului MC9S12XDP512 din familia HCS12X: - porturile paralele; - modulul temporizator pentru întreruperi periodice; - modulul temporizator cu funcţii de numărare, captură şi comparare; - modulul generator de impulsuri modulate în durată; - modulul de conversie analog numerică; - modulul de interfaţă pentru comunicaţie serială asincronă. 4.2. PORTURILE PARALELE Un microcontroler din familia HCS12X conţine 14 porturi paralele de câte 8 biţi, fig. 4.1. Fiecare port poate fi utilizat pentru transfer de date de uz general sau pentru interfaţa între perifericele interne ale microcontrolerului şi componente externe: - porturile A şi B pentru magistrala de adrese ADDR15÷ADDR0 a interfeţei externe EBI (External Bus Interface); - porturile C şi D pentru magistrala de date DATA15÷DATA0 a interfeţei externe; - portul E pentru semnale de control ale interfeţei externe şi cereri de întrerupere /IRQ, /XIRQ; - portul K pentru liniile de adrese ADDR22÷ADDR16 ale interfeţei externe şi un semnal de control al interfeţei externe; - portul T pentru interfaţa cu modulul temporizator cu funcţii de captură şi comparare ECT (Enhanced Capture Timer); - portul S pentru două interfeţe de comunicaţie serială asincronă SCI (Serial Communication Interface) şi o interfaţă de comunicaţie serială sincronă SPI (Serial Peripheral Interface); - portul M pentru patru porturi seriale de comunicaţie conform protocolului CAN (Controller Area Network) şi o interfaţă de comunicaţie serială asincronă SCI; 1

Upload: trinhdiep

Post on 18-Jul-2018

255 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: PERIFERICE ALE UNUI MICROCONTROLER DIN …meo.etc.upt.ro/materii/cursuri/PTSD/3.pdf · CAPITOLUL 3 PERIFERICE ALE UNUI MICROCONTROLER DIN FAMILIA HCS12X 4.1. INTRODUCERE În acest

CAPITOLUL 3

PERIFERICE ALE UNUI MICROCONTROLER

DIN FAMILIA HCS12X

4.1. INTRODUCERE

În acest capitol se prezintă structura şi funcţionarea unor periferice ale microcontrolerului MC9S12XDP512 din familia HCS12X: - porturile paralele; - modulul temporizator pentru întreruperi periodice; - modulul temporizator cu funcţii de numărare, captură şi comparare; - modulul generator de impulsuri modulate în durată; - modulul de conversie analog numerică; - modulul de interfaţă pentru comunicaţie serială asincronă.

4.2. PORTURILE PARALELE

Un microcontroler din familia HCS12X conţine 14 porturi paralele de câte 8 biţi, fig. 4.1. Fiecare port poate fi utilizat pentru transfer de date de uz general sau pentru interfaţa între perifericele interne ale microcontrolerului şi componente externe: - porturile A şi B pentru magistrala de adrese ADDR15÷ADDR0 a interfeţei externe EBI (External Bus Interface); - porturile C şi D pentru magistrala de date DATA15÷DATA0 a interfeţei externe; - portul E pentru semnale de control ale interfeţei externe şi cereri de întrerupere /IRQ, /XIRQ; - portul K pentru liniile de adrese ADDR22÷ADDR16 ale interfeţei externe şi un semnal de control al interfeţei externe; - portul T pentru interfaţa cu modulul temporizator cu funcţii de captură şi comparare ECT (Enhanced Capture Timer); - portul S pentru două interfeţe de comunicaţie serială asincronă SCI (Serial Communication Interface) şi o interfaţă de comunicaţie serială sincronă SPI (Serial Peripheral Interface); - portul M pentru patru porturi seriale de comunicaţie conform protocolului CAN (Controller Area Network) şi o interfaţă de comunicaţie serială asincronă SCI;

1

Page 2: PERIFERICE ALE UNUI MICROCONTROLER DIN …meo.etc.upt.ro/materii/cursuri/PTSD/3.pdf · CAPITOLUL 3 PERIFERICE ALE UNUI MICROCONTROLER DIN FAMILIA HCS12X 4.1. INTRODUCERE În acest

PAD22 PAD23 PAD20 PAD21 PAD18 PAD19 PAD16 PAD17 PAD14 PAD15 PAD12 PAD13 PAD10 PAD11 PAD08 PAD09 PAD07 PAD06 PAD05 PAD04 PAD03 PAD02 PAD01 PAD00

PT7 PT6 PT5 PT4 PT3

AN15,14PH7 PH6 PH5 PH4 PH3 PH2 PH1 PH0

RXD

RXD

PJ7 PJ6 PJ5 PJ4 PJ2 PJ1 PJ0

PM7 PM6 PM5 PM4 PM3 PM2 PM1 PM0

RXCAN

SDA

SDA

RXD

TXCAN RXCAN CAN2

PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0

PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0

PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0

PD7 PD6 PD5 PD4 PD3 PD2 PD1 PD0

S

CAN

CAN

4 C

AN4 Port M

Interrupt Logic SPI2

SPI1

Interrupt Logic C

AN0

Port B Port C

Port H

Port JPort A

Port D

EC

T AT

D0

ATD

1

ort T

Po

rt A

D0

Port

AD

1

Port Integration odule M

TXD SCI5 AN13,12

AN11,10AN9,8AN7,6AN5,4AN3,2AN1,0

TXD SCI4

AN7AN6AN5AN4AN3AN2AN1AN0

TXCAN CAN4 SCL IIC0

SCL IIC1

TXD SCI2 IOC7IOC6IOC5IOC4IOC3

TXCAN RXCAN CAN3 TXD

RXD SCI3

Fig. 4.1. P

P0

I0 C AN

0

ortur

2

TRXCAN CAN1XCAN

RXD

RXD

BKGD/MODCECLKX2/

ADDR0/UDS

DATA14 T GA LO/ E MODAR /

LDS/LSTRBWE/R/W

NOADATA6 CC/ADDR22

PW

M

IOC2IOC1IOC0

TXCAN RXCAN CAN0 PWM7

PWM6PWM5PWM4PWM3PWM2PWM1PWM0

SPI2 SCKSS

MOSIMISO

SPI1 SSSCK

MOSIMISO

SPI0 SSSCK

MOSIMISO

SCI1 TXD

SCI0 TXD

ADDR0/UDS DATA15 TADATA14 TA DATA13 DATA12 S12X_EBI DATA11 S12X_BDM DATA10 S12X_DBG DATA9 S12X_INT DATA8 DATA7 WAE

NDATA6 OADATA5 DATA4 DATA3 DATA2 DATA1 DATA0

GHI

XCLKS/MODB

ECLKLDS/

IRQXIRQ

T/ROMCTL

ADDR21ADRR20ADDR19ADDR18ADDR17ADDR16

ile paralele ale unui microcontroler

P

PT2 PT1 PT0

PP7

In

terr

upt L

ogic

din fam

PP6

PP5 PP4 PP3 PP2 PP1 PP0

PS7 PS6 PS5 PS4 PS3 PS2 PS1 PS0

Port

S

Port

P

ADDR15ADDR14ADDR13ADDR12ADDR11ADDR10ADDR9 ADDR8

ADDR7 ADDR6 ADDR5 ADDR4 ADDR3 ADDR2 ADDR1

BKGD PE7 PE6 PE5 PE4 PE3 PE2 PE1 PE0

PK7 PK6 PK5 PK4 PK3 PK2 PK1 PK0

Port

K Po

rt E

ilia HCS12X.

Page 3: PERIFERICE ALE UNUI MICROCONTROLER DIN …meo.etc.upt.ro/materii/cursuri/PTSD/3.pdf · CAPITOLUL 3 PERIFERICE ALE UNUI MICROCONTROLER DIN FAMILIA HCS12X 4.1. INTRODUCERE În acest

- portul P pentru modulatorul de impulsuri în durată PWM (Pulse-Width Modulator) şi două interfeţe de comunicaţie serială sincronă SPI; - portul H pentru două interfeţe de comunicaţie serială asincronă SCI; - portul J pentru un port serial de comunicaţie conform protocolului CAN, o interfaţă de comunicaţie serială asincronă SCI şi două porturi seriale IIC (Inter-Integrated Circuit); - porturile AD0 şi AD1 pentru cele două convertoare analog numerice ATD (Analog-to-Digital Converter). Funcţionarea şi programarea porturilor paralele se bazează pe utilizarea unor registre conform tabelului 4.1. Fiecare port conţine un registru de date PORT_ (Port _ Data Register) şi un registru de direcţie date DDR_ (Port _ Data Direction Register) utilizabile pentru transfer de date de uz general. Prin biţii registrului de direcţie date se programează individual pinii corespunzători portului ca ieşiri sau intrări. Nivelul logic 1 al unui bit din registrul de direcţie programează pinul corespunzător ca ieşire, iar nivelul logic 0 al unui bit din registrul de direcţie programează pinul corespunzător ca intrare. Pinii de ieşire sunt comandaţi de biţii corespunzători ai registrului de date. Nivelurile logice de comandă externă a pinilor de intrare se transferă în biţii corespunzători ai registrului de date, fig. 4.2.

Registrul de intrare PTI_ (Port _ Input Register) al unui port este accesibil numai pentru citire şi conţine nivelurile logice de la pinii portului, fig. 4.2.

Tabelul 4.1

Port

Input

Data

Data Direction

Reduced Drive

Pull Enable

Polarity Select

Interrupt Enable

Wired-OR Mode Flag

Interrupt A yes yes — yes

yes

— — — —

B yes yes — — — — —

C yes yes — — — — —

D yes yes — — — — —

E yes yes — — — — —

K yes yes — — — — —

T yes yes yes yes yes — — — —

S yes yes yes yes yes yes yes — —

M yes yes yes yes yes yes yes — — P yes yes yes yes yes yes — yes yes H yes yes yes yes yes yes — yes yes J yes yes yes yes yes yes — yes yes AD0 yes yes — yes yes — — — — AD1 yes yes — yes yes — — — —

3

Page 4: PERIFERICE ALE UNUI MICROCONTROLER DIN …meo.etc.upt.ro/materii/cursuri/PTSD/3.pdf · CAPITOLUL 3 PERIFERICE ALE UNUI MICROCONTROLER DIN FAMILIA HCS12X 4.1. INTRODUCERE În acest

PTI

0

PIN

1

0 PT

1

DDR

Module

data outoutput e

module

Fig. 4.2. Structura funcţională a unui p În figura 4.2 sunt utilizate no Module - periferic al microc PIN - pin al microcontroleru DDR - bit al registrului de d PT - bit al registrului de date PTI - bit al registrului de int Registrul comandă redusăport permite programarea puterii de unui bit din acest registru determdisponibilă, iar nivelul logic 1 deterpinul corespunzător. Pentru porturilexistă un registru comun RDRIV comandă redusă la nivel de port şi nu Registrele PER_ (Port _ Polarity Select Register) ale unui ppinii portului a unor dispozitive deactivă numai pentru pinii de intrare. Registrul WOM_ (Port _ deconectarea sarcinilor active (actirealizării unor conexiuni de ieşiri în

1

0

nable

enable

ort para

taţiile:ontrolelui corirecţie ; rare. RDR_comanină fumină re A, Bprin b la nivPull Dort va

tip pu

Wired-ve higvarianta

4

lel cor

rului

espundate;

(Podă pencţioeduce, C, Diţii cel de evice

lideazll-up

OR Mh dri SAU

espu

carezăto

rt _ ntrunarerea , E ăruibit c Enă şisau

odve) -ca

r

ad

aaa p

epb

nză

poa po

Redpin lae şi K s înbleselull

Renlat

t

r

i

6

e

e-

et.

oare

te cotulu

ucedi de pu ori util poacazu Regcteadow

gisteru p

unei linii de intrare/ieşire.

manda pinul PIN; i paralel;

Drive Register) al unui ieşire. Nivelul logic 0 al tere de comandă totală a puterii de comandă la izate la interfaţa externă te programa putere de

l celorlalte porturi. ister) şi PPS_ (Port _ ză conectarea internă la n. Această validare este

r) al unui port permite inii de ieşire în scopul

Page 5: PERIFERICE ALE UNUI MICROCONTROLER DIN …meo.etc.upt.ro/materii/cursuri/PTSD/3.pdf · CAPITOLUL 3 PERIFERICE ALE UNUI MICROCONTROLER DIN FAMILIA HCS12X 4.1. INTRODUCERE În acest

Registrul de validare întreruperi PIE_ (Port _ Interrupt Enable Register) validează/invalidează cererile de întrerupere cu fronturi de ridicare sau coborâre de la pinii portului. În cazul validării acestor întreruperi, fronturile active se selectează la nivel de pin cu registrul PPS_. Fiecărui port prin care se pot face cereri de întrerupere îi corespunde un singur vector de întrerupere. Registrul indicator de întreruperi PIF_ (Port _ Interrupt Flag Register) memorează cererile de întrerupere de la pinii portului pentru care sunt validate cererile de întrerupere cu registrul PIE.

5

Page 6: PERIFERICE ALE UNUI MICROCONTROLER DIN …meo.etc.upt.ro/materii/cursuri/PTSD/3.pdf · CAPITOLUL 3 PERIFERICE ALE UNUI MICROCONTROLER DIN FAMILIA HCS12X 4.1. INTRODUCERE În acest

4.3. MODULUL TEMPORIZATOR PENTRU ÎNTRERUPERI PERIODICE

Funcţionarea de principiu a unui temporizator Un temporizator generează evenimente periodice concretizate prin semnale şi/sau cereri de întrerupere. Perioada evenimentelor (temporizarea) se stabileşte prin numărarea unui anumit număr de impulsuri de frecvenţă dată. Astfel, temporizatorul conţine un numărător al cărui conţinut se decrementează cu câte o unitate la fiecare impuls de intrare. Temporizarea (evenimentul) corespunde anulării conţinutului numărătorului. Primul impuls de intrare după anularea conţinutului numărătorului declanşează încărcarea numărătorului cu o constantă de timp CT memorată într-un registru şi a cărei valoare determină durata temporizării. După încărcarea constantei de timp se continuă cu decrementarea conţinutului numărătorului rezultând temporizări periodice. Procedura prezentată corespunde funcţionării unui numărător modulo (CT+1) cu decrementare (modulus down-counter). Perioada temporizării este (CT+1)/f, unde f este frecvenţa semnalului de la intrarea numărătorului. Aplicaţie Se consideră un temporizator cu numărător de N=16 biţi comandat la intrare cu un semnal de tact cu frecvenţa f=8 MHz. Astfel, constanta CT poate avea valori în intervalul 0÷216-1, corespunzătoare unor temporizări în intervalul (1*125) ns÷(216 *125) ns=8,192 ms. Modulul temporizator pentru întreruperi periodice PIT (Periodic Interrupt Timer), fig. 4.3, conţine 4 canale cu temporizări programabile.

Interrupt 0 Micro Time Time-Out 0 Micro Timer 0

8-Bit

16-Bit Timer 0 Interface B 0 Trigger 0

Bus Clock Interrupt 1 Time-Out 1 16-Bit Timer 1 Interface Trigger 1

Micro 8-Bit Interrupt 2 Time Time-Out 2 Micro Timer 1 16-Bit Timer 2 Interface Base 1 Trigger 2 Interrupt 3

Trigger 3 Time-Out 3 16-Bit Timer 3 Interface

Fig. 4.3. Structura simplificată a modulului temporizator pentru întreruperi p

Fiecare canal este realizat prin conectarea în serie a unui tempobiţi (16-bit Timer 0÷3) şi a unui temporizator de 8 biţi (8-bit Micro TimTemporizatorul de 8 biţi numără impulsuri cu frecvenţa ciclurilor fBUSintrarea de numărare a temporizatorului de 16 biţi. Temporizarea (e

6

ase

eriodice. rizator de 16 er 0 sau 1).

şi comandă venimentul)

Page 7: PERIFERICE ALE UNUI MICROCONTROLER DIN …meo.etc.upt.ro/materii/cursuri/PTSD/3.pdf · CAPITOLUL 3 PERIFERICE ALE UNUI MICROCONTROLER DIN FAMILIA HCS12X 4.1. INTRODUCERE În acest

corespunde anulării conţinuturilor celor două numărătoare. Prin circuitele de interfaţă (interface), fiecare canal poate să declanşeze un modul periferic al microcontrolerului sau să genereze cereri de întrerupere, cu perioadă programabilă (perioada temporizării) în intervalul 1÷224 perioade ale semnalului fBUS. Pentru fBUS=8 MHz, perioada maximă a temporizării este de 256*65536*125 ns=2,097 s.

Structura detaliată a modulului temporizator pentru întreruperi periodice, fig. 4.4, indică registrele utilizate pentru funcţionarea şi programarea modulului PIT. În cele ce urmează se prezintă funcţiile acestor registre.

PIT_24B4C 4 PFLT0 PITFLT Register Timer 0

PITMUX Register

B s u C ock l

[1]

PITMLD0 Register

8-Bit Micro Timer 0 [0]

PITMLD1 Register 8-Bit Micro Timer 1

PITCFLMT Register

PFLMT P

Fig. 4.4. Structura deta Registrul PITCFLMT (P Bitul PITE (PITCFL Biţii PFLMT1÷0 (bit Micro Timer) 1 respectîncărcarea constantei de timde 8 biţi. Registrul PITFLT (PIT Fo Biţii PFLT3÷0 (PITimer) 3÷0. Scrierea nivelude timp din registrul PITLDRegistrul PITCE (PIT Cha Biţii PCE3÷0 (PITTimer) 3÷0. La nivel logicvalidat cu bitul PITE. Validprocesului de numărare prin

M

l

I

Pi

T

x

a

4 PMUX0 PITLD0 Register

time-out 0

PF

PFL

PF

PMU

X

[1]

[2]

UX3

iată a mod

T ControMT.7), laITCFLM

v 0. Scriep din reg

rce LoadFLT.3÷

lui logic în numănnel EnaCE.3÷0)1, bitul Prea însea decreme

L

T

L

T

T

u

l

is

01rb

mn

PITCNT0 Register

7

2

1 Timer 1

PITLD1 Register

PITCNT1 Register

Timer 2PITLD2 Register

PITCNT2 Register

3 Timer 3

PITLD3 Register

PITCNT3 Register T

lului temporizator pentru

and Force Load Micrnivel logic 1/0, valideazăT.1÷0) corespund temprea nivelului logic 1 întrul PITMLDx în num

Timer Register), 0341h) corespund temporiza în bitul PFLTx determătorul PITCNTx al temle Register), 0342h. corespund temporizatoCEx validează canalul

nă încărcarea constanttare.

4

Interrupt / Trigger Interface

time-out 1

are Hardw

r Trigge

PITTF Register

4 time-

out 2 InterruptPITINTE Register

Request

ime-

înt

o T/invor

biărăt

. toain

por

arex, elo

Out 3

reruperi periodice.

imer Register), 0340h.alidează modulul PIT.

izatoarelor de 8 biţi (8-tul PFLMTx determină orul temporizatorului x

relor de 16 biţi (16-bit ă încărcarea constantei izatorului x de 16 biţi.

lor de 16 biţi (16-bit dacă modulul PIT este r de timp şi declanşarea

Page 8: PERIFERICE ALE UNUI MICROCONTROLER DIN …meo.etc.upt.ro/materii/cursuri/PTSD/3.pdf · CAPITOLUL 3 PERIFERICE ALE UNUI MICROCONTROLER DIN FAMILIA HCS12X 4.1. INTRODUCERE În acest

Registrul PITMUX (PIT Multiplex Register), 0343h. Biţii PMUX3÷0 (PITMUX.3÷0) corespund temporizatoarelor de 16 biţi (16-

bit Timer) 3÷0. Bitul PMUXx, la nivel logic 0/1, comandă conectarea la canalul x al modulului PIT a temporizatorului de 8 biţi (8-bit Micro Timer) 0/1. Registrul PITINTE (PIT Interrupt Enable Register), 0344h.

Biţii PINTE3÷0 (PITINTE.3÷0) corespund temporizatoarelor de 16 biţi (16-bit Timer) 3÷0. La nivel logic 1, bitul PINTEx validează cererile de întrerupere de la canalul x al modulului PIT. Registrul PITTF (PIT Time-Out Flag Register), 0345h.

Biţii PTF3÷0 (PITTF.3÷0) corespund temporizatoarelor de 16 biţi (16-bit Timer) 3÷0. Bitul PTFx se poziţionează la nivel logic 1 în momentul (temporizării) anulării conţinutului numărătorul PITCNTx al temporizatorului de 16 biţi x. Bitul PTFx se anulează prin scriere nivel logic 1. Registrele PITMTLD0÷1 (PIT Micro Timer Load Register) 0346h÷0347h;

Registrele PITMTLD0÷1 corespund temporizatoarelor de 8 biţi (8-bit Micro Timer) 0÷1. Registrul PITMTLDx se încarcă cu constanta de timp pentru temporizatorul x de 8 biţi. Registrele PITLD0÷3 (PIT Load Register), 0348h+4*x, x =0÷3.

Registrele PITLD0÷3 de câte 16 biţi corespund temporizatoarelor de 16 biţi (16-bit Timer) 0÷3. Registrul PITLDx se încarcă cu constanta de timp pentru temporizatorul x de 16 biţi. Registrele PITCNT0÷3 (PIT Count Register), 034Ah+4*x, x =0÷3.

Registrele PITCNT0÷3 de câte 16 biţi corespund temporizatoarelor de 16 biţi (16-bit Timer) 0÷3. Registrul PITCNTx este numărătorul temporizatorului x de 16 biţi. Perioada temporizării Tx pentru canalul x=0÷3 al modulului PIT, utilizând temporizatorul y=0÷1 de 8 biţi, este:

Tx = ((PITMTLDy)+1)*((PITLDx)+1)/fBUS. Aplicaţie

Se consideră o aplicaţie în care se utilizează canalele 0 şi 1 ale modulului PIT şi temporizatorul 1 de 8 biţi pentru a genera cereri de întrerupere cu frecvenţele f0=1 Hz şi f1=4 Hz. Să se calculeze valorile constantelor de timp care trebuie programate în registrele PITMTLD1, PITLD0 şi PITLD1. Se dă fBUS=8 MHz.

((PITMTLD1)+1)*((PITLD0)+1)= fBUS/f0= 8*106

((PITMTLD1)+1)*((PITLD1)+1)= fBUS/f1= 2*106 Se aleg valorile:

(PITMTLD1)+1=200 (PITLD0)+1=40000(PITLD1)+1=10000

8

Page 9: PERIFERICE ALE UNUI MICROCONTROLER DIN …meo.etc.upt.ro/materii/cursuri/PTSD/3.pdf · CAPITOLUL 3 PERIFERICE ALE UNUI MICROCONTROLER DIN FAMILIA HCS12X 4.1. INTRODUCERE În acest

4.4. MODULUL TEMPORIZATOR CU FUNCŢII DE ACUMULARE, CAPTURĂ ŞI COMPARARE

Funcţia de acumulare constă în numărarea unor evenimente definite prin fronturi ale unui semnal. Funcţiile de captură şi comparare se referă la conţinutul unui registru numărător comandat la intrare cu un semnal de frecvenţă dată. Funcţia de captură constă în memorarea conţinutului registrului numărător la un moment dat de un front al unui semnal. Funcţia de comparare constă în generarea unui eveniment (front, cerere de întrerupere) în momentul în care conţinutul registrului numărător ajunge la o anumită valoare. Rezultă că prin operaţii de captură se pot măsura parametri de timp ai unor semnale de intrare (durate ale impulsurilor) şi prin operaţii de comparare se pot genera semnale cu parametri de timp stabiliţi cu precizie (impulsuri cu durate de valori programabile cu precizie). Modulul temporizator cu funcţii de acumulare, captură şi comparare ECT (Enhanced Capture Timer), fig. 4.5, conţine patru canale cu funcţii de acumulare, captură şi comparare corespunzătoare pinilor P0÷3 şi patru canale cu funcţii de captură şi comparare corespunzătoare pinilor P4÷7. Pentru implementarea funcţiilor de captură şi comparare, modulul ECT conţine un numărător principal de 16 biţi (16-Bit Free-Running Main Timer) care numără impulsuri cu frecvenţa ciclurilor fBUS (Bus Clock) divizată cu 1÷256 de circuitul prescalare (Timer Prescaler). Fiecare canal 0÷7 conţine un registru de captură/comparare de 16 biţi TC0÷7 (Capture/Compare Register) utilizat pentru memorarea conţinutului registrului numărător principal în momentul capturii sau pentru scrierea constantei pentru comparare. De asemenea, fiecare canal 0÷7 conţine un comparator (Comparator). Canalele 0÷3 conţin câte un registru de reţinere de 16 biţi TCxH, x=0÷3 (Timer Input Capture Holding Register) care permite salvarea unei valori captate în registrul de captură/comparare pentru o nouă operaţie de captare. Pentru funcţia de acumulare, canalele 0÷3 conţin câte un registru acumulator (numărător) de impulsuri de 8 biţi PAC0÷3 (Pulse Accumulator Count Register) şi câte un registru de reţinere de 8 biţi PAxH, x=0÷3 (Pulse Accumulator Holding Register). Într-un registru PAxH se poate salva conţinutul registrului PACx corespunzător pentru o nouă operaţie de numărare. Modulul ECT conţine şi un temporizator format din circuitul prescalare (Modulus Prescaler), registrul pentru constanta de timp (16-Bit Load Register) şi registrul numărător modulo cu decrementare (16-Bit Modulus Down Counter), figura 4.5. Acest temporizator poate fi utilizat independent pentru generarea periodică de întreruperi sau pentru comanda canalelor 0÷3 de captură şi acumulare. Astfel, fiecare moment de temporizare (trecere prin zero a conţinutului registrului numărător modulo cu decrementare) poate comanda transferul în registrele de reţinere pentru canalele 0÷3 de captură şi acumulare.

9

Page 10: PERIFERICE ALE UNUI MICROCONTROLER DIN …meo.etc.upt.ro/materii/cursuri/PTSD/3.pdf · CAPITOLUL 3 PERIFERICE ALE UNUI MICROCONTROLER DIN FAMILIA HCS12X 4.1. INTRODUCERE În acest

0 RESET

PAC0

0 RESET

PAC1

0 RESET

PAC2

0 RESET

PAC3

Bus Clock

16 BIT R MAIN TIME ÷ 1, 2,3, ..., 256

Bus Clock

P0 TC0 Capture/Compare Reg.

P1 TC1 Capture/Compare Reg.

P2 TC2 Capture/Compare Reg.

P3 TC3 Capture/Compare Reg.

P4

ED 0 G

P5

ED 1 G

P6

EDG2

P7

EDG3 SH37

LATC

H

Und

erflo

w

MUX

Comparator Pin Logic

EDG7

Pin Logic

Write 0x0000 to Modulus Counter

Pin Logic

ICLAT, LATQ, BUFEN (Force Latch)

LATQ (MDC Latch Enable)

Pin Logic

PA3H Hold Reg.

Pin Logic

PA2H Hold Reg.

Pin Logic

PA1H Hold Reg.

Pin Logic

PA0H Hold Reg.

Pin Logic

MP r

÷ 1, 2,3, ..., 256 16-Bit Free-Running 16-Bit Load Register

Main Timer

16-Bit Modulus Timer Prescaler Down Counter

Comparator

Delay Counter EDG0

8, 12, 16, ..., 1024

Comparator Delay

Counter EDG1

8, 12, 16, ..., 1024

Comparator Delay

Counter E

8, 12, 16, ..., 1024

Comparator Delay

Counter EDG3

8, 12, 16, ..., 1024

Comparator EDG4

MUX

TC4 Capture/Compare Reg.

S 04 H

Comparator EDG5

TC0H Hold Reg. TC1H Hold Reg.

TC2H Hold Reg. TC3H Hold Reg.

TC5 Capture/Compare Reg. MUX

SH15

Comparator EDG6

MUX

TC6 Capture/Compare Reg.

SH26

Fig. 4.5. Structura modulului te

TC7 Capture/Compare Reg.

mporizator cu funcţii de acumulare

10

, cap

tură şi

odulus rescale

DG2

comparare.

Page 11: PERIFERICE ALE UNUI MICROCONTROLER DIN …meo.etc.upt.ro/materii/cursuri/PTSD/3.pdf · CAPITOLUL 3 PERIFERICE ALE UNUI MICROCONTROLER DIN FAMILIA HCS12X 4.1. INTRODUCERE În acest

Pentru funcţiile de captură şi acumulare fiecare canal al modulului ECT conţine câte un circuit detector de front (Edge Detector) care poate fi programat pentru detecţia fronturilor de ridicare sau/şi coborâre. Canalele 0÷3 conţin câte un circuit de întârziere (Delay Counter) pentru rejecţia impulsurile de intrare cu durată mai mică decât durata întârzierii, impulsuri considerate perturbaţii. Durata întârzierii pentru un circuit se stabileşte prin contorizarea unui număr programabil de impulsuri cu frecvenţa ciclurilor fBUS (Bus Clock). Aplicaţie La pinul P0 corespunzător canalului 0 al modulului ECT se aplică un impuls pentru determinarea duratei acestuia utilizând funcţia de captură. Detectorul de front este programat pentru detecţie pe front de ridicare şi pe front de coborâre. Valorile captate în registrul de captură/comparare TC0 şi în registrul de reţinere TC0H sunt 50000 şi respectiv 10000. Se consideră că între cele două fronturi ale impulsului nu s-a produs depăşire la numărătorul principal. Circuitul prescalare al numărătorului principal divizează frecvenţa de tact fBUS (Bus Clock) cu d=100. Se dă fBUS=8 MHz. Durata ti a impulsului este:

ti=((TC0)-(TC0H))/(fBUS/d)=0,5 s. Aplicaţie Se pune problema de a genera la pinul P0 corespunzător canalului 0 al modulului ECT a unor impulsuri de frecvenţă şi durată date. În acest scop, se utilizează funcţia de comparare pentru canalul 0 cu comutarea nivelului logic al pinului în momentele de comparare (conţinutul registrului numărător principal coincide cu conţinutul registrului de captură/comparare TC0) precum şi în momentele de depăşire la numărătorul principal. Se cere să se calculeze factorul de divizare d corespunzător circuitului prescalare al numărătorului principal şi valoarea constantei pentru comparare (TC0) pentru generarea de impulsuri cu frecvenţa fi=12,5 Hz şi durata ti=20 ms. Se dă fBUS=8 MHz. Factorul de divizare d este

d = fBUS/(216 * fi ) ≅ 10. Constanta pentru comparare se obţine din relaţia

ti = (216-(TC0))/(fBUS/d).

Rezultă (TC0) ≅ 3*214.

11

Page 12: PERIFERICE ALE UNUI MICROCONTROLER DIN …meo.etc.upt.ro/materii/cursuri/PTSD/3.pdf · CAPITOLUL 3 PERIFERICE ALE UNUI MICROCONTROLER DIN FAMILIA HCS12X 4.1. INTRODUCERE În acest

4.5. MODULUL GENERATOR DE IMPULSURI MODULATE ÎN DURATĂ

Modulul generator de impulsuri modulate în durată PWM (Pulse-Width Modulator) conţine 8 canale care generează la pinii PWM0÷7 (portul P, PP0÷7) ai microcontrolerului impulsuri cu durate şi perioade programabile, stabilite prin numărare de impulsuri de frecvenţă dată. Principalele componente ale unui canal x =0÷7 al modulului PWM, fig. 4.6, sunt: - registru numărător de 8 biţi PWMCNTx (PWM Channel Counter Register); - registru pentru perioadă PWMPERx (PWM Channel Period Register); - registru pentru durată PWMDTYx (PWM Channel Duty Register); - două comparatoare de câte 8 biţi pentru perioadă şi durată (8-bit Compare =). Validarea unui canal PWM cu bitul PWMEx din registrul de validare PWME (PWM Enable Register) determină accesul semnalului de tact (Clock Source) la intrarea numărătorului PWMCNTx şi conectarea ieşirii canalului PWM la pinul PPx prin multiplexorul de la ieşire. Fronturile corespunzătoare impulsurilor se generează de circuitele comparatoare la momentele de egalitate între conţinuturile registrelor PWMCNTx şi PWMPERx pentru perioadă şi între conţinuturile registrelor PWMCNTx şi PWMDTYx pentru durată.

12

Clock Source fPWMx

From Port PWMP Data Register

(C lock Edge

U

PWMEx

M

To PinDriver

Sync)

Up/Down

X

PPOLx

CAEx

R

Q

Q

Reset

8-bit Compare =

PWMPERx

T

T Q Q

R

M U X

8-bit Compare =

PWMDTYx

8-Bit Counter

Gate PWMCNTx

Fig. 4.6. Structura unui canal al modulului generator de impulsuri modulate în durată.

Page 13: PERIFERICE ALE UNUI MICROCONTROLER DIN …meo.etc.upt.ro/materii/cursuri/PTSD/3.pdf · CAPITOLUL 3 PERIFERICE ALE UNUI MICROCONTROLER DIN FAMILIA HCS12X 4.1. INTRODUCERE În acest

Generarea impulsurilor modulate în durată de un canal al modulului PWM se realizează în una dintre variantele cu aliniere la stânga sau cu aliniere centrală, conform programării cu bitul CAEx din registrul de validare aliniere centrală PWMCAE (PWM Center Align Enable Register). Logica de funcţionare a unui generator de impulsuri modulate în durată cu aliniere la stânga este prezentată în figura 4.7 şi este implementată cu circuitele din figura 4.6. În această variantă, registrul PWMCNTx numără impulsuri de tact cu frecvenţa fPWMx în sens crescător conform sistemului modulo (PWMPERx). În fiecare moment de egalitate între conţinuturile registrelor PWMCNTx şi PWMDTYx, circuitul comparator corespunzător generează un impuls care comandă prin intrarea T a bistabilului de ieşire comutarea la nivel logic 1 a ieşirii Q a acestuia. În momentele de trecere pe zero ale conţinutului registrului PWMCNTx se comandă comutarea Q=0 a bistabilului de ieşire prin intrarea R. Durata şi perioada impulsurilor generate sunt indicate în fig. 4.7. Multiplexorul comandat cu bitul PPOLx al registrului polaritate PWMPOL (PWM Polarity Register) selectează ieşirea Q sau /Q a bistabilului de ieşire pentru stabilirea polarităţii impulsurilor generate.

(PWMDTYx)

1/fPWMx

(PWMPERx)/fPWMx

(PWMDTYx)/fPWMx

Ue PIN PWMx

t

t

(PWMCNTx)(PWMPERx-1)

Fig. 4.7. Logica de funcţionare a unui generator de impulsuri modulate în durată cu aliniere la stânga.

13

Page 14: PERIFERICE ALE UNUI MICROCONTROLER DIN …meo.etc.upt.ro/materii/cursuri/PTSD/3.pdf · CAPITOLUL 3 PERIFERICE ALE UNUI MICROCONTROLER DIN FAMILIA HCS12X 4.1. INTRODUCERE În acest

Logica de funcţionare a unui generator de impulsuri modulate în durată cu aliniere centrală este prezentată în figura 4.8 şi este implementată cu circuitele din figura 4.6. În această variantă, registrul PWMCNTx numără impulsuri de tact cu frecvenţa fPWMx în sens crescător de la zero până la valoarea dată de conţinutul registrului PWMPERx, după care numără în sens descrescător până la anularea conţinutul registrului PWMCNTx. În fiecare moment de egalitate între conţinuturile registrelor PWMCNTx şi PWMDTYx, circuitul comparator corespunzător generează un impuls care comandă prin intrarea T a bistabilului de ieşire comutarea acestuia. Durata şi perioada impulsurilor generate sunt indicate în figura 4.8. Multiplexorul comandat cu bitul PPOLx al registrului polaritate PWMPOL (PWM Polarity Register) selectează ieşirea Q sau /Q a bistabilului de ieşire pentru stabilirea polarităţii impulsurilor generate.

(PWMPERx)

(PWMCNTx)

(PWMDTYx)

t 1/fPWMx

2*(PWMPERx)/fPWMx

(PWMDTYx)/fPWMx

(PWMPERx)/fPWMx

Ue PIN PWMx

(PWMPERx)/fPWMx

(PWMDTYx)/fPWMxt

Fig.4.8. Logica de funcţionare a unui generator de impulsuri modulate în durată cu aliniere centrală.

În ambele variante prezentate mai sus, factorul de umplere corespunzător impulsurilor generate este funcţie de raportul între conţinutul registrului pentru durată

14

Page 15: PERIFERICE ALE UNUI MICROCONTROLER DIN …meo.etc.upt.ro/materii/cursuri/PTSD/3.pdf · CAPITOLUL 3 PERIFERICE ALE UNUI MICROCONTROLER DIN FAMILIA HCS12X 4.1. INTRODUCERE În acest

PWMDTYx şi conţinutul registrului pentru perioadă PWMPERx. Frecvenţa impulsurilor generate este fPWMx/(PWMPERx) în cazul variantei cu aliniere la stânga şi fPWMx /(2*(PWMPERx)) în cazul variantei cu aliniere centrală.

Modulul PWM conţine circuite de programare şi selecţie a frecvenţelor de tact fPWMx pentru cele 8 canale generatoare de impulsuri modulate în durată, figura 4.9. Frecvenţele fPWMx se obţin din frecvenţa ciclurilor fBUS (Bus Clock) prin divizare. După o primă divizare cu circuitul prescalare (Prescaler) se obţin semnale cu frecvenţele fBUS/d, d=1, 2, 4, 8, 16, 32, 64 şi 128, conectate la intrările celor două multiplexoare cu câte 8 intrări, fig. 4.9. Prin comanda multiplexoarelor cu biţii registrului PWMPRCLK (PWM Prescaler Clock Select Register) se obţin semnalele de tact Clock A şi Clock B. Fiecare din aceste două semnale este divizat cu câte un numărător de 8 biţi cu decrementare modulo pA, respectiv pB, unde pA este conţinutul registrului de scalare PWMSCLA (PWM Scale A Register) şi pB este conţinutul registrului de scalare PWMSCLB (PWM Scale B Register). Prin divizarea cu 2 a frecvenţelor semnalelor de la ieşirile celor două numărătoare modulo cu decrementare, se obţin semnalele de tact Clock SA şi Clock SB. Semnalele cu frecvenţele de tact fPWMx pentru cele 8 canale generatoare de impulsuri modulate în durată se selectează din variantele Clock A, Clock SA şi Clock B, Clock SB prin comanda celor opt multiplexoare cu câte 2 intrări cu biţii registrului PWMCLK (PWM Clock Select Register). Aplicaţie Să se precizeze modalităţile prin care la ieşirile canalelor 0 şi 1 ale modulului PWM se generează impulsuri de frecvenţe minimă şi respectiv maximă. Să se calculeze aceste frecvenţe, dacă frecvenţa ciclurilor este fBUS=8 MHz. Generarea de impulsuri de frecvenţă minimă se obţine prin:

- selecţia semnalului de frecvenţă fBUS/128 de la circuitul prescalare; - programarea numărătorului modulo pA cu decrementare pentru divizare de

frecvenţă cu 256, pA=(PWMSCLA)=0; - selecţia semnalului Clock SA pentru comanda canalului 0 cu frecvenţa de tact fPWM0= fBUS/(128*256*2)= fBUS/216; - programarea generării de impulsuri modulate în durată cu aliniere centrală şi cu perioadă maximă, (PWMPER0)=255. Rezultă frecvenţa minimă fmin= fPWM0/(2*255)≅ fBUS/225≅0,24 Hz.

Generarea de impulsuri de frecvenţă maximă se obţine prin: - selecţia semnalului de frecvenţă fBUS de la circuitul prescalare; - selecţia semnalului Clock A pentru comanda canalului 1 cu frecvenţa de tact

fPWM0= fBUS; - programarea generării de impulsuri modulate în durată cu aliniere la stânga,

cu perioadă şi durată minime, (PWMPER1)=2 şi (PWMDTY1)=1. Rezultă frecvenţa maximă fmax= fPWM0/2= fBUS/2=4 MHz.

15

Page 16: PERIFERICE ALE UNUI MICROCONTROLER DIN …meo.etc.upt.ro/materii/cursuri/PTSD/3.pdf · CAPITOLUL 3 PERIFERICE ALE UNUI MICROCONTROLER DIN FAMILIA HCS12X 4.1. INTRODUCERE În acest

Clock AClock to PWM Ch 0Clock A/2, A/4, A/6,....A/512

PCLK0 K

A2

KA

1 K

A0 Count = 1

Clock to PWM Ch 1X

PCLK1

Clock to PWM Ch 2X

PCLK2

Clock to PWM Ch 3X

PCLK3

Clock to PWM Ch 4X

PCLK4

Clock to PWM Ch 5X

PCLK5

Bus

Clo

ck

Div

ide

by

Pre

scal

er T

aps:

2

4

8

16

32

64

128

PC

PC

PC

M U

M U

M U

M U

M U

M U X

8-Bit Down

Counter

Load Clock SA PWMSCLA DIV 2

M

U

X

Clock B

Clock B/2, B/4, B/6,....B/512

M

U

X

Count = 1 8-Bit Down Counter

Load Clock SB

PFR

Z Fr

eeze

Mod

e S

igna

l

Fig

P

WM

E7-

0

. 4.

16

Prescale Scale

PC

KB

2 P

CK

B1

PC

KB

0

PWMSCLB DIV 2

9. Structura circuitelor de programare şi selecţie a fcanalele modulului generator de impulsuri mod

Clock to PWM Ch 6X

PCLK6

Clock to PWM Ch 7X

PCLK7

Clock Select

M U

M U

recvenţelor de tact pentru ulate în durată.

Page 17: PERIFERICE ALE UNUI MICROCONTROLER DIN …meo.etc.upt.ro/materii/cursuri/PTSD/3.pdf · CAPITOLUL 3 PERIFERICE ALE UNUI MICROCONTROLER DIN FAMILIA HCS12X 4.1. INTRODUCERE În acest

Aplicaţie Se defineşte factorul de umplere Fu=tH /T, unde tH este durata nivelului 1 (ridicat) al impulsurilor şi T =1/f este perioada impulsurilor. Se consideră o aplicaţie în care se generează impulsuri cu frecvenţa f0=10 kHz, durata tH0=20 µs la canalul 0 al modulului PWM şi impulsuri cu frecvenţa f1=1 kHz, durata de tH1=200 µs la canalul 1 al modulului PWM. - deoarece f0> f1, se alege semnalul fClock A pentru canalul 0 şi semnalul fClock SA pentru canalul 1;

- se alege fPWM0/fPWM1 = fClock A/fClock SA= f0/f1 =10; - rezultă (PWMSCLA)=5; - din relaţia f0=fBUS/(d*(PWMPER0)), rezultă d*(PWMPER0)=800; - se alege d=8 şi (PWMPER0)= (PWMPER1)=100; - se alege ca impulsurile să înceapă cu nivel logic 1 prin programarea biţilor

PPOL1÷0 la nivel logic 1; - deoarece factorul de umplere al impulsurilor pentru cele două canale 0 şi 1

ale modulului PWM este 1/5, rezultă (PWMDTY0)= (PWMDTY1)=20.

17

Page 18: PERIFERICE ALE UNUI MICROCONTROLER DIN …meo.etc.upt.ro/materii/cursuri/PTSD/3.pdf · CAPITOLUL 3 PERIFERICE ALE UNUI MICROCONTROLER DIN FAMILIA HCS12X 4.1. INTRODUCERE În acest

4.6. MODULUL DE CONVERSIE ANALOG NUMERICĂ Un microcontroler din familia HCS12X conţine două module de conversie analog numerică ATD0 şi ATD1 (Analog-to-Digital Converter) de câte 10 biţi care au structuri similare şi care diferă prin numărul de canale analogice de intrare 8 şi respectiv 16. În cele ce urmează se prezintă modulul ATD0, figura 4.10.

Bus Clock

ATD10B8C

ATD clock fATD

Clock Prescaler

ETRIG1 PWM3

DDA

RHVRL

ETRIG2 PIT0

ETRIG0 PWM1

ETRIG3 PIT1

V VSSA

AT

V

AN7 A A A A A A A

Fig. 4.10. Stru

Trigger

Sequence Complete Mux Mode and

Timing Control Interrupt

Anal

DCTL1

MU

ctura m

ATDDIEN

Results

ATD 0 ATD 1

PORTAD

Successive ATD 2

Approximation ATD 3 Register (SAR)

and DAC

ATD 4 ATD 5 ATD 6 ATD 7

N6 + N5 Sample & Hold N4 1

1

N3

og Comparator N2 X N1

N0

odulului de conversie analo

18

g

n umer ică ATD0.
Page 19: PERIFERICE ALE UNUI MICROCONTROLER DIN …meo.etc.upt.ro/materii/cursuri/PTSD/3.pdf · CAPITOLUL 3 PERIFERICE ALE UNUI MICROCONTROLER DIN FAMILIA HCS12X 4.1. INTRODUCERE În acest

Frecvenţa de tact conversie fATD (ATD Clock) cu valori între 0,5÷2 MHz se obţine din frecvenţa ciclurilor de magistrală fBUS prin divizare de frecvenţă în circuitul prescalare (Clock Prescaler). Se obţine fATD = fBUS /(2*(PRS+1)), unde PRS este valoarea factorului de prescalare dat prin 5 biţi PRS4÷0 din registrul ATDCTL4 (ATD Control Register 4).

Pentru a obţine valoarea numerică de la un moment dat a semnalului analogic conectat la un pin ANx, x =0÷7 sunt necesare operaţiile: - comanda multiplexorului (Analog MUX); - eşantionarea semnalului analogic cu circuitul de eşantionare şi memorare (Sample & Hold); - conversia analog numerică de tipul cu aproximaţii succesive. Eşantionarea semnalului analogic se realizează în două faze. În prima fază, semnalul analogic este conectat prin amplificatorul repetor la intrarea circuitului de eşantionare şi memorare, pe durata a două perioade ale semnalului de tact fATD, pentru încărcarea rapidă a condensatorului de memorare, fig. 4.10. În faza a doua, semnalul analogic este conectat direct la intrarea circuitului de eşantionare şi memorare, pentru încărcarea cu precizie a condensatorului de memorare. Durata celei de-a doua faze este de 2, 4, 8 sau 16 perioade a semnalului de tact fATD şi se stabileşte prin programare cu biţii SMP1÷0 din registrul ATDCTL4 (ATD Control Register 4). Pe durata conversiei analog numerice circuitul de eşantionare şi memorare se comandă în stare de memorare. Pentru conversia analog numerică cu aproximaţii succesive se utilizează: - circuitul comparator (Comparator); - registrul de aproximaţii succesive (SAR); - convertorul numeric analogic de 10 biţi (DAC); - logica de control (Mode and Timing Control). O conversie analog numerică se realizează pe N=8 sau N=10 biţi, funcţie de nivelul logic al bitului SRES8 din registrul ATDCTL4. Durata unei conversii analog numerice este de N perioade ale semnalului de tact fATD. Rezultatul unei conversii analog numerice se scrie în unul dintre registrele de câte 16 biţi ATDx, x =0÷7, compus din registrele de câte 8 biţi ATDDRxH şi ATDDRxL (ATD Result Register). Această scriere se poate face prin aliniere la stânga (Left Justified) sau prin aliniere la dreapta (Right Justified), funcţie de nivelul logic al bitului DJM din registrul ATDCTL5. De asemenea, rezultatul unei conversii analog numerice se obţine în reprezentare cu semn sau făra semn, funcţie de nivelul logic al bitului DSGN din registrul ATDCTL5. În tabelul 4.2 se indică variantele de reprezentare a rezultatelor conversiilor analog numerice şi poziţiile ocupate în registrele ATDx, funcţie de biţii SRES8, DJM şi DSGN. În tabelul 4.3 se indică rezultatele conversiilor analog numerice pe 8 şi 10 biţi, pentru diferite valori ale tensiunii de intrare, prin alinierea rezultatelor la stânga, în reprezentare cu semn şi fără semn. Rezultatele alineate la stânga a conversiilor analog numerice pe 8 biţi se scriu în registrele ATDDRxH, iar rezultatele alineate la stânga a conversiilor analog numerice pe 10 biţi se scriu în

19

Page 20: PERIFERICE ALE UNUI MICROCONTROLER DIN …meo.etc.upt.ro/materii/cursuri/PTSD/3.pdf · CAPITOLUL 3 PERIFERICE ALE UNUI MICROCONTROLER DIN FAMILIA HCS12X 4.1. INTRODUCERE În acest

registrele ATDDRxH şi în cei doi biţi mai semnificativi ai registrelor ATDDRxL, ceea ce rezultă şi din tabelul 4.2.

Tabelul 4.2

DSGN Description and Bus Bit Mapping Result Data Formats

DJM SRES8

8-bit / left justified / unsigned — bits 8–15 0 0 1 1 1

8-bit / left justified / signed — bits 8–15 1 0 8-bit / right justified / unsigned — bits 0–7 X 1 10-bit / left justified / unsigned — bits 6–15 0 0 0

10-bit / left justified / signed — bits 6–15 1 0 1

0 0 10-bit / right justified / unsigned — bits 0–9 X

Tabelul 4.3 Signed Unsigned Signed Unsigned Input Signal

VRL = 0 Volts VRH = 5.12 Volts

8-Bit 8-Bit 10-Bit 10-Bit Codes Codes Codes Codes

5.120 Volts 5.100 5.080

7F 7F 7E

FF FF FE

7FC0 7F00 7E00

0100 0000 FF00

8100 8000

FFC0 FF00 FE00 2.580 01 81 8100

2.560 00 80 8000 2.540 FF 7F 7F00

0.020 81 01 00

0100 0.000 80 0000 Declanşarea modulului ATD se referă la secvenţe de conversii analog numerice (conversion sequence). O secvenţă de conversii poate cuprinde mai multe conversii analog numerice, cel mult 8. Numărul de conversii dintr-o secvenţă se stabileşte cu biţii S8C, S4C, S2C şi S1C din registrul ATDCTL3. Conversiile analog numerice dintr-o secvenţă corespund unui singur canal analogic de intrare ANx selectat cu biţii CC, CB şi CA din registrul ATDCTL5 sau pentru mai multe canale succesive începând cu cel selectat cu biţii CC, CB şi CA, în funcţie de nivelul logic programat în bitul MULT (Multi-Channel Sample Mode) din registrul ATDCTL5. Canalele succesive se obţin prin incrementare cu câte o unitate în sistemul modulo y+1, y=1÷7, unde y este o valoare programată în biţii WRAP2÷0 din registrul ATDCTL0.

Declanşarea secvenţelor de conversii se poate realiza prin scriere în registrul ATDCTL5, cu semnal extern conectat la un pin AN0÷7 sau cu un semnal extern modulului ATD prin conexiunile ETRIG0÷3, figura 4.10. Prin conexiunile ETRIG0÷3,

20

Page 21: PERIFERICE ALE UNUI MICROCONTROLER DIN …meo.etc.upt.ro/materii/cursuri/PTSD/3.pdf · CAPITOLUL 3 PERIFERICE ALE UNUI MICROCONTROLER DIN FAMILIA HCS12X 4.1. INTRODUCERE În acest

declanşarea secvenţelor de conversii se poate comanda de la canalele 1 sau 3 ale modulului PWM sau de la canalele 0 sau 1 ale modulului PIT, figura 4.10. Selecţia unui pin AN0÷7 sau a unei conexiuni ETRIG0÷3, pentru declanşare externă, se realizează cu biţii ETRIGSEL, ETRIGCH2÷0 din registrul ATDCTL1 care comandă multiplexorul pentru declanşare (Trigger Mux). În cazul utilizării unui canal ANx pentru declanşare externă, este necesară validarea ieşirii corespunzătoare a circuitului digital input buffer. Cele 8 ieşiri ale acestui circuit pot fi validate individual cu biţii registrului ATDDIEN (ATD Input Enable Register). Variantele de declanşare a secvenţelor de conversii, funcţie de biţii ETRIGLE, ETRIGP, ETRIGE din registrul ATDCLT2 şi de bitul SCAN din registrul ATDCTL5, sunt indicate în tabelul 4.5.

Tabelul 4.5 ETRIGLE ETRIGP ETRIGE SCAN Description

X 0 0 Ignores external trigger. Performs one conversion sequence and stops.

X

X 0 1 Ignores external trigger. Performs continuous conversion sequences.

X

0

1 X Falling edge triggered. Performs one conversion sequence per trigger.

0

0 1 1 X Rising edge triggered. Performs one conversion sequence per trigger.

0 1 X Trigger active low. Performs

continuous conversions while trigger is active.

1

1 1 1

X

Trigger active high. Performs continuous conversions while trigger is active.

Momentul terminării unei conversii analog numerice dintr-o secvenţă de conversii pentru un canal ANx, concretizată prin încărcarea rezultatului acesteia în registrul ATDx este indicat prin poziţionarea la nivel logic 1 a bitului CCFx (Conversion Complete Flag x) din registrul ATDSTAT1 (ATD Status Register 1). În momentul terminării tuturor conversiilor analog numerice dintr-o secvenţă se generează o cerere de întrerupere.

21

Page 22: PERIFERICE ALE UNUI MICROCONTROLER DIN …meo.etc.upt.ro/materii/cursuri/PTSD/3.pdf · CAPITOLUL 3 PERIFERICE ALE UNUI MICROCONTROLER DIN FAMILIA HCS12X 4.1. INTRODUCERE În acest

Aplicaţie Să se determine valorile posibile ale factorului de prescalare PRS, pentru fBUS=8 MHz.

Frecvenţa de tact conversie fATD (ATD Clock) cu valori între 0,5÷2 MHz se obţine din frecvenţa ciclurilor de magistrală fBUS prin divizare de frecvenţă în circuitul prescalare (Clock Prescaler). Se obţine fATD = fBUS /(2*(PRS+1)), unde PRS este valoarea factorului de prescalare dat prin 5 biţi PRS4÷0 din registrul ATDCTL4 (ATD Control Register 4). - se notează fATDmax=2 MHz şi fATDmin=0,5 MHz

- valorile posibile ale factorului de prescalare PRS rezultă din relaţia:

fBUS /(2* fATDmax)-1≤ PRS≤ fBUS /(2* fATDmin)-1

2≤ PRS≤8 Aplicaţie Să se determine durata minimă a unei conversii analog numerice, Tmin. Pentru realizarea unei conversii analog numerice sunt necesare: - 2 perioade fATD (ale semnalului de tact conversie ATD Clock) pentru prima fază de eşantionare; - minim 2 perioade fATD pentru a doua fază de eşantionare; - N perioade fATD pentru conversia analog numerică cu aproximaţii succesive pe N=8 sau 10 biţi; - se alege fATDmax=2 MHz; - rezultă Tmin=(N+4)/fATDmax, Tmin=6 µs, pentru N=8 şi Tmin=7 µs, pentru N=10.

22

Page 23: PERIFERICE ALE UNUI MICROCONTROLER DIN …meo.etc.upt.ro/materii/cursuri/PTSD/3.pdf · CAPITOLUL 3 PERIFERICE ALE UNUI MICROCONTROLER DIN FAMILIA HCS12X 4.1. INTRODUCERE În acest

4.7. MODULUL DE INTERFAŢĂ PENTRU COMUNICAŢIE SERIALĂ ASINCRONĂ

Comunicaţia serială între un echipament emiţător şi un echipament receptor se realizează printr-o singură linie. Rezultă că, la un moment dat, se poate transfera un singur bit între cele două echipamente. Transferul serial al unui cuvânt (octet) de la emiţător la receptor se realizează prin multiplexare, respectiv demultiplexare. Rezultă că la emiţător se efectuează conversia paralel-serie a cuvintelor, iar la receptor se efectuează conversia serie-paralel a cuvintelor. Pentru sincronizarea transferului de date în comunicaţia serială asincronă nu se utilizează un semnal de tact comun pentru emiţător şi receptor. Pentru sincronizarea transferului de date, fiecare cuvânt transmis este încadrat între un bit de start şi un bit de stop, figura 4.11. Un cuvânt cuprinde o secvenţă de 8 sau 9 biţi de date. Transmisia serială a unui cuvânt de către emiţător constă în încărcarea succesivă a liniei de comunicaţie cu biţii corespunzători cuvântului, cu frecvenţa de comunicaţie fc, exprimată în biţi/s. Recepţia serială constă în testarea periodică a stării liniei de comunicaţie în scopul determinării secvenţei de biţi încărcată de emiţător. Pentru transferul corect al unui cuvânt este necesar ca receptorul să eşantioneze starea liniei de comunicaţie cu aceeaşi frecvenţă şi fază cu care se încarcă biţii cuvântului de către emiţător. În acest scop, comunicaţia serială asincronă se realizează cu o frecvenţă de comunicaţie fc stabilită (programată) pentru oscilatorul de la emisie şi pentru oscilatorul de la recepţie. Sincronizarea de fază a oscilatorului de la recepţie cu cel de la emisie se produce pe baza frontului de cădere corespunzător bitului de start care precede biţii de date în procesul de transmisie a unui cuvânt. După bitul de start cu nivel logic 0 urmează emisia biţilor de date (8 sau 9) începând cu bitul de semnificaţie minimă. Ultimul bit de date emis poate fi bit de paritate utilizat la recepţie pentru verificare de erori. După ultimul bit de date urmează emisia unui bit de stop cu nivel logic 1.

Fig. 4.11. Structura cuvintelor în comunicaţia serială asincronă.

23

Page 24: PERIFERICE ALE UNUI MICROCONTROLER DIN …meo.etc.upt.ro/materii/cursuri/PTSD/3.pdf · CAPITOLUL 3 PERIFERICE ALE UNUI MICROCONTROLER DIN FAMILIA HCS12X 4.1. INTRODUCERE În acest

Comunicaţia serială asincronă între două echipamente se poate realiza în ambele sensuri alternativ, printr-o singură linie, în cazul comunicaţiei semiduplex (half-duplex) sau simultan, prin două linii, în cazul comunicaţiei duplex (full-duplex).

Modulul de interfaţă pentru cumunicaţie serială asincronă SCI (Serial Communication Interface) al unui microcontroler din familia HCS12X conţine 6 canale duplex cu structuri identice, figura 4.12, care pot fi utilizate pentru comunicaţia cu echipamente periferice externe. Prezentarea care urmează se referă la un singur canal al modulului SCI.

RXD Data In

SCI Interrupt Request

Bus Clock BERR

Transmit Shift Register Infrared

Encoder Data Out TXD

Transmit Contr l o 1/16

Transmit

Interrupt Generation

TDRE

TC

Data Format Con rol t

Baud Rate Generator

Receive & Wakeup

Control

Receive

Interrupt Generation

I RDRF/OR

BRKD

RXEDG

Receive Shift Register

Infrared Decoder

SCI Data Regis ter

Fig. 4.12. Structura unui canal Conexiunile la lini

recepţie date (RXD Data In)comunicaţie serială asincrondecodor infraroşu (Infraredtransmisie care realizează cfigura 4.13. Din acestă figserială asincronă în infraroşdecât 1/fc), câte un impuls peparalel se utilizează registruconversia paralel-serie se uRegister).

SCI Data R

al modululu

ile de com şi prin pină în infraro Decoder),onversia daură rezultă u se realizentru fiecarel de deplasatilizează reg

24

egis ter

i de interfaţă

unicaţie seul de transmşu, canalu

la recepţietelor între că repreze

ază prin im bit cu nivere recepţieistrul de d

p

ri

l m cnpul (Rep

entru comunic

ală se realiisie date (TX

odulului Sşi un circuiele două reptarea datelorlsuri înguste

logic zero. Peceive Shift

lasare transm

zeDCIt cre p (

en R

i

ie serială

ază prin Data O conţineodor inzentări ientru cocu durattru convegister),sie (Tran

DLE

asincronă.

pinul de ut). Pentru un circuit fraroşu, la ndicate în municaţie

e mai mici ersia serie- iar pentru smit Shift

Page 25: PERIFERICE ALE UNUI MICROCONTROLER DIN …meo.etc.upt.ro/materii/cursuri/PTSD/3.pdf · CAPITOLUL 3 PERIFERICE ALE UNUI MICROCONTROLER DIN FAMILIA HCS12X 4.1. INTRODUCERE În acest

8-Bit Data Format (Bit M in SCICR1 Clear) P

Bit 6 Bit Bit 0 Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 STOP Bit NextStart Start Standard

9-Bit Data Format

(Bit M in SCICR1 Set)

Bit 6

Start

Bit Bit 0 Bit 1 Bit 2 Bit 3 Bit 4 Bit 5

Fig. 4.13. Reprezentarea datelor pentru comun Canalul SCI conţine două registre de dat

recepţie şi unul pentru transmisie, cărora le coreasamblat prin conversie serie-paralel în registrul în registrul de date recepţie care poate fi acctransmisie este accesat prin scriere a unui cuvâregistrul de date transmisie este transferat în regiconversie paralel-serie.

Frecvenţa de comunicaţie fc se obţine din fîn circuitul (Baud Rate Generator) cu un factor1÷8191, dat de biţii SCIBR.12÷0 din registrul Deoarece se realizează încă o divizare de frecvenţă

fc= fBUS/(16*(SCIBR.1Canalul SCI conţine circuite logice pen

(Receive & Wakeup Control) şi circuite logice peControl), figura 4.12. Sincronizarea funcţionării cprelucrare se poate realiza prin cereri de întreruper

Aplicaţie Să se calculeze factorul de divizare dcomunicaţie serială asincronă cu frecvenţa fc=96MHz.

(SCIBR.12÷0)= fBUS/(16*fc)=52,08

25

ossible Parity

Bit

Bit 7

SCI Data Bit

Infrared SCI Data

POSSIBLE PARITY

Bit

Bit 7 Bit 8 STOP Bit

NEXT START

Bit Standard SCI Data

Infrared SCI Data

icaţie serială asincronă.

e (SCI Data Register), unul pentru spunde aceeaşi adresă. Un cuvânt

de deplasare recepţie este transferat esat prin citire. Registrul de date nt de transmis. Cuvântul scris în

strul de deplasare transmisie pentru

recvenţa ciclurilor fBUS prin divizare de divizare cu valori în intervalul SCIBD (SCI Baud Rate Register). cu 16, se obţine: 2÷0)).

tru controlul şi activarea recepţiei ntru controlul transmisiei (Transmit analului SCI cu unitatea centrală de e.

at de biţii SCIBR.12÷0 pentru o 00 Hz (biţi/secundă). Se dă fBUS=8

Page 26: PERIFERICE ALE UNUI MICROCONTROLER DIN …meo.etc.upt.ro/materii/cursuri/PTSD/3.pdf · CAPITOLUL 3 PERIFERICE ALE UNUI MICROCONTROLER DIN FAMILIA HCS12X 4.1. INTRODUCERE În acest

Pentru funcţionarea şi programarea unui canal SCI se utilizează registre ale procesorului, dintre care se indică: - registrul SCIBD (SCI Baud Rate Register);

- registrul SCICR1 (SCI Control Register 1); - registrul SCICR2 (SCI Control Register 2); - registrul SCISR1 (SCI Status Register 1); - registrul SCISR2 (SCI Status Register 2); - registrele SCIDRH, SCIDRL (SCI Data Registers). În cele ce urmează se face o prezentare parţială a structurii şi funcţionării

circuitelor de transmisie ale unui canal SCI, figura 4.14.

Internal Bus

Bus

Clock

Baud Divider

SCI Data Registers ÷ 16

SCTXD

To Receiver

Generation

TDRE IRQ

TC IRQ

BER IRQ

Stop

11-Bit Transmit Register

SBR12:SBR0

Sta

rt

TXPOL

H 8 7 6 5 4 3 2 1 0 L M

MSB

LOOP

CONTROL T8

Load

from

SC

IDR

P

ream

ble

(All

1s)

B

reak

(All

0s)

PE

S

hift

Ena

ble Parity LOOPS

PT RSRC

TIE TDRE

Transmitter Control TC TCIE

BERRIF TCIE

Fig. 4.14. Structura circuitelor de

pentru com Registrul de date transmisie

în care se scriu biţii de date T7÷T0 9 biţi de date, registrul de date transbitul T8 al unui caracter de transmis

S SC

(F

TE SBK BERRM[1:0]

Transmit Collision Detect

transmisie ale unui canal al modulului de iunicaţie serială asincronă.

(SCI Data Register) cuprinde registrai unui caracter de transmis. Pentru comisie cuprinde şi bitul SCIDRH.6 în . În condiţiile de validare a transmisie

26

CTXD

RXD rom Re

nterfa

ul Smunicare si, con

ceiver)

ţă

CIDRL caţii cu e scrie ţinutul

Page 27: PERIFERICE ALE UNUI MICROCONTROLER DIN …meo.etc.upt.ro/materii/cursuri/PTSD/3.pdf · CAPITOLUL 3 PERIFERICE ALE UNUI MICROCONTROLER DIN FAMILIA HCS12X 4.1. INTRODUCERE În acest

registrului de date transmisie se transferă în registrului de deplasare transmisie (11-Bit Transmit Register) care, prin deplasare cu frecvenţa de comunicaţie fc, realizează conversia paralel-serie şi comandă ieşirea de transmisie date (SCTDX).

Bitul M (Data Format Mode Bit), SCICR1.4, la nivel logic 0/1, selectează numărul de biţi de date dintr-un caracter 8/9.

Bitul PE (Parity Enable Bit), SCICR1.1, la nivel logic 1/0, validează/invalidează generarea bitului de paritate la transmisie şi verificarea parităţii la recepţie.

Bitul PT (Parity Type Bit), SCICR1.0, la nivel logic 0/1, selectează tipul de paritate pară/impară, referitoare la numărul de biţi de date (inclusiv cel de paritate) cu nivel logic 1.

Bitul TXPOL (Transmit Polarity), SCISR2.4, la nivel logic 0/1, selectează polaritatea normală/inversată a datelor la pinul TXD. Polaritatea normală corespunde reprezentării datelor din figura 4.12.

Bitul TE (Transmitter Enable Bit), SCICR2.3, la nivel logic 1/0, validează/ invalidează transmisia.

Bitul TDRE (Transmit Data Register Empty Flag), SCISR1.7, se poziţionează la nivel logic 1 după încărcarea registrului de deplasare transmisie (11-Bit Transmit Register) cu biţii de date ai unui cuvânt de transmis din registrul SCIDRL. Rezultă că nivelul logic 1 în bitul TDRE indică golirea registrului de date transmisie (SCI Data Register) şi posibilitatea de încărcare în acesta a unui nou cuvânt din mesajul de transmis. Anularea bitului TDRE se obţine după citirea registrului SCISR1 cu bitul TDRE la nivel logic 1, prin scriere în registrul SCIDRL.

Bitul TIE (Transmitter Interrupt Enable Bit), SCICR2.7, la nivel logic 1, validează generarea cererilor de întrerupere (TDRE IRQ) la momentele de golire a registrului de date transmisie, momente date de poziţionările la nivel logic 1 ale bitului TDRE.

Bitul TC (Transmit Complete Flag), SCISR1.6, se poziţionează la nivel logic zero pe durata transmisiei unor cuvinte succesive dintr-un mesaj şi se poziţionează la nivel logic 1 la sfârşitul transmisiei mesajului (bitul TDRE este la nivel logic 1 şi ultimul cuvânt din mesaj a fost transmis).

Bitul TCIE (Transmission Complete Interrupt Enable Bit), SCICR2.7, la nivel logic 1, validează generarea unei cereri de întrerupere (TC IRQ) la momentul de sfârşit al transmisiei unui mesaj, momente dat de poziţionarea la nivel logic 1 a bitului TC.

Pentru transmisia unui mesaj printr-un canal SCI este necesară configurarea acestuia privind frecvenţa de comunicaţie, numărul biţilor de date, paritate, întreruperi şi validarea transmisiei. Transmisia fiecărui cuvânt din mesaj necesită operaţiile:

- testarea în buclă (periodică) a bitului TDRE până la citirea acestuia cu nivel logic 1 sau acceptarea cererii de întrerupere (TDRE IRQ);

- scrierea următorului cuvânt de transmis în registrul de date transmisie (SCI Data Register).

27

Page 28: PERIFERICE ALE UNUI MICROCONTROLER DIN …meo.etc.upt.ro/materii/cursuri/PTSD/3.pdf · CAPITOLUL 3 PERIFERICE ALE UNUI MICROCONTROLER DIN FAMILIA HCS12X 4.1. INTRODUCERE În acest

În cele ce urmează se face o prezentare parţială a structurii şi funcţionării circuitelor de recepţie ale unui canal SCI, figura 4.15.

M

PT

Bus Clock

Data Recovery

Internal Bus

SBR12:SBR0 SCI Data Register

S CRXD

From TXD Pinor T tter

ransmi

Idle IRQ

RDRF/OR IRQ

Break IRQ

MS

B

Sto

p

Sta

rt

Active Edge Detect Logic

BRKDIF

BRKDIE

Break Detect Logic

RIE OR

PE

WAKE

ILT

RE

RAF

Loop

Control

LOOPS

RSRC

RXPOL

11-Bit Receive Shift Register

RWU Wakeup

Logic

Parity Checking

BRKDFE

R8

RDRF

IDLE ILIE

FE

NF

PE

H 8 7 6 5 4 3 2 1 0 L

A

ll 1s

Baud Divider

Fig. 4.15. Structura circuitelor de recepţiepentru comunicaţie

Pentru recepţia serială a unui cuvân

(SCRXD) este eşantionat pentru identificrecepţiei acestuia, a biţilor de date şi a bitidentificare se realizează cu circuitul de idenbiţi identificată este transferată în registrul dRegister) şi, apoi, biţii de date sunt transferRegister). Registrul de date recepţie cuprindde date R7÷R0 ai unui caracter recepţionregistrul de date recepţie cuprinde şi bitul unui caracter recepţionat.

28

RXEDGIF

RXEDGIE

ale unui canal al mo serială asincronă.

t, semnalul de la iarea bitului de stului de stop. Opertificare date (Data e deplasare recepţ

aţi în registrul de de registrul SCIDRLat. Pentru comunicSCIDRH.7 din car

R

dulului de in

ntrarea de art şi, duaţiile de eRecovery).ie (11-Bit ate recepţ din care saţii cu 9 e se citeşte

X Active Edge IRQ

terfaţă

recepţie date pă validarea şantionare şi Secvenţa de Receive Shift ie (SCI Data e citesc biţii biţi de date, bitul R8 al

Page 29: PERIFERICE ALE UNUI MICROCONTROLER DIN …meo.etc.upt.ro/materii/cursuri/PTSD/3.pdf · CAPITOLUL 3 PERIFERICE ALE UNUI MICROCONTROLER DIN FAMILIA HCS12X 4.1. INTRODUCERE În acest

Bitul RXPOL (Receive Polarity), SCISR2.3, la nivel logic 0/1, selectează polaritatea normală/inversată a datelor de la pinul RXD. Polaritatea normală corespunde reprezentării datelor din figura 4.12.

Bitul RE (Receiver Enable Bit), SCICR2.2, la nivel logic 1/0, validează/ invalidează recepţia.

Bitul RDRF (Receive Data Register Full Flag), SCISR1.5, se poziţionează la nivel logic 1 după transferul biţilor de date ai unui cuvânt recepţionat din registrul de deplasare recepţie (11-Bit Receive Shift Register) în registrul de date recepţie (SCI Data Register). Rezultă că nivelul logic 1 în bitul RDRF indică prezenţa unui cuvânt recepţionat în registrul de date recepţie şi posibilitatea de citire a acestuia. Anularea bitului RDRF se obţine după citirea registrului SCISR1 cu bitul RDRF la nivel logic 1, prin citire din registrul SCIDRL.

Bitul OR (Overrun Flag), SCISR1.3, se poziţionează la nivel logic 1 dacă asamblarea unui nou caracter în registrul de deplasare recepţie se termină înainte de citirea registrului de date recepţie.

Bitul RIE (Receiver Full Interrupt Enable Bit), SCICR2.5, la nivel logic 1, validează cererile de întrerupere (RDRF/OR IRQ).

Frecvenţa de eşantionare a semnalului de la intrarea de recepţie date (SCRXD)

este 16*fc (RT Clock), figura 4.16.

Start Bit LSB

RXD

Samples 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0

Start Bit Start Bit Data

Verification SamplingQualification

RT Clock

RT CLock Count 1 2 3 4 5 6 7 8 9 10

11

12

13

14

15

16 1 2 3 4

RT1

1 1 1 1 1 1 1

Reset

RT Clock

Detecţisuccesive cu nimpulsurile cu 4.16, corespunzfrecvenţei de ceşantioanelor cNivelul logic alcorespunzătoare

RT

RT

RT

RT

RT

RT

RT

RT

RT

RT

RT

RT

RT

RT

RT

RT R

T

RT

RT

RT

RT

RT

RT

RT

RT

RT

RT

Fig. 4.16. Eşantionarea datelor în recepţia serială asincronă.

a frontului de cădere al bitului de start corespunde la două eşantioane iveluri logice 1 respectiv 0. Din momentul detecţiei acestui front, frecvenţa de eşantionare sunt contorizate de la RT1 la RT16, figura ător unei divizări cu 16 a frecvenţei de eşantionare pentru obţinerea omunicaţie fc. Decizia privind detecţia bitului de start se ia pe baza orespunzătoare impulsurilor RT3, RT5 şi RT7 prin logică majoritară. unui bit de date şi al bitului de stop se stabileşte pe baza eşantioanelor impulsurilor RT8, RT9 şi RT10 prin logică majoritară.

29