porturi paralele

10
Capitolul 6 40 PORTURILE PARALELE 6.1. Introducere Funcţia principală a porturilor paralele este efectuarea transferului general şi bidirecţional de date (General Purpose Input Output, GPIO). Pe de altă parte, liniile porturilor paralele au şi funcţii alternative deoarece sunt utilizate de blocurile periferice ale microcontrolerului. Numărul porturilor şi dimensiunile acestora depind de varianta de încapsulare a microcontrolerului (48, 52, 80 de pini). În cazul de faţă vom lua în considerare varianta de încapsulare de 80 de pini. 6.2. Descrierea porturilor paralele În varianta de încapsulare de 80 de pini, porturile disponibile şi funcţiile alternative ale acestora sunt următoarele: - un port T de 8 biţi conectat la blocul TIM (Timer) şi eventual la blocul PWM; - un port S de 4 biţi conectat la blocul SCI; - un port M de 6 biţi, conectat la blocul MSCAN şi SPI; - un port P de 8 biţi conectat la blocul PWM şi la care se pot genera întreruperi externe; - un port J de 2 biţi de la care se pot genera întreruperi externe; - un port AD de 8 biţi la care este conectat blocul ATD (convertor analog numeric); - trei porturi de 8 biţi, porturile A şi B utilizate pentru accesarea memoriilor externe şi portul E utilizat pentru gestionarea diverselor semnale de control. 6.2.1. Descrierea porturilor paralele T, S, M, P, J şi AD Modul de conectare a porturilor T, S, M, P şi J cu blocurile periferice aferente este indicat în figura 6.1. Conectarea acestor porturi este controlată de modulul PIM (Port Integration Module) al microcontrolerelor HCS12. Legat de porturile paralele, în primul rând se alege direcţia de comunicaţie (linie de intrare sau ieşire). Pentru liniile selectate ca intrări, se programează: - posibilitatea de a conecta rezistenţe la sursa V DD (pull-up) sau la masa V SS (pull-down); - posibilitatea de a se genera întreruperi, pe front pozitiv sau negativ numai pentru liniile porturilor P şi J configurate ca intrări dar şi ca ieşiri. Pentru liniile selectate ca ieşiri, se programează: - posibilitatea reducerii puterii de comandă;

Upload: stefan

Post on 19-Jan-2016

13 views

Category:

Documents


1 download

DESCRIPTION

Porturi paralele

TRANSCRIPT

Page 1: Porturi paralele

Capitolul 6

40

PPOORRTTUURRIILLEE PPAARRAALLEELLEE

6.1. Introducere Funcţia principală a porturilor paralele este efectuarea transferului general şi bidirecţional de date (General Purpose Input Output, GPIO). Pe de altă parte, liniile porturilor paralele au şi funcţii alternative deoarece sunt utilizate de blocurile periferice ale microcontrolerului. Numărul porturilor şi dimensiunile acestora depind de varianta de încapsulare a microcontrolerului (48, 52, 80 de pini). În cazul de faţă vom lua în considerare varianta de încapsulare de 80 de pini.

6.2. Descrierea porturilor paralele În varianta de încapsulare de 80 de pini, porturile disponibile şi funcţiile alternative ale acestora sunt următoarele:

- un port T de 8 biţi conectat la blocul TIM (Timer) şi eventual la blocul PWM;

- un port S de 4 biţi conectat la blocul SCI; - un port M de 6 biţi, conectat la blocul MSCAN şi SPI; - un port P de 8 biţi conectat la blocul PWM şi la care se pot genera

întreruperi externe; - un port J de 2 biţi de la care se pot genera întreruperi externe; - un port AD de 8 biţi la care este conectat blocul ATD (convertor analog

numeric); - trei porturi de 8 biţi, porturile A şi B utilizate pentru accesarea memoriilor

externe şi portul E utilizat pentru gestionarea diverselor semnale de control.

6.2.1. Descrierea porturilor paralele T, S, M, P, J şi AD

Modul de conectare a porturilor T, S, M, P şi J cu blocurile periferice aferente este indicat în figura 6.1. Conectarea acestor porturi este controlată de modulul PIM (Port Integration Module) al microcontrolerelor HCS12. Legat de porturile paralele, în primul rând se alege direcţia de comunicaţie (linie de intrare sau ieşire). Pentru liniile selectate ca intrări, se programează:

- posibilitatea de a conecta rezistenţe la sursa VDD (pull-up) sau la masa VSS (pull-down);

- posibilitatea de a se genera întreruperi, pe front pozitiv sau negativ numai pentru liniile porturilor P şi J configurate ca intrări dar şi ca ieşiri.

Pentru liniile selectate ca ieşiri, se programează: - posibilitatea reducerii puterii de comandă;

stefan
Highlight
Page 2: Porturi paralele

6.2. Descrierea porturilor paralele

41

- posibilitatea de selectare a ieşirilor cu drena în gol pentru realizarea funcţiei SAU cablat. La aceste ieşiri se pot conecta rezistenţe pull-up (numai pentru liniile porturilor S şi M).

Controlul funcţiilor porturilor paralele amintite anterior se realizează cu ajutorul registrelor ataşate fiecărui port. Aceste registre se pot clasifica în următoarele tipuri:

- registre de stabilire a direcţiei de comunicaţie DDRx (Data Direction Register; x = T, S, M, P, J, AD; de exemplu: registrul DDRT; DDRT_DDRT2=1 – linia PT2 este ieşire; DDRT_DDRT2=0 – linia PT2 este intrare);

AN0 AN1 AN2 AN3 AN4 AN5 AN6 AN7

Port

AD

Blocul ATD

PAD0 PAD1 PAD2 PAD3 PAD4 PAD5 PAD6 PAD7

RXCAN TXCAN

Blocul CAN

MISO /SS

MOSI SCK

Blocul SPI

Port

M

PM0 PM1 PM2 PM3 PM4 PM5

Logică întreru-

re externă

Port

J PJ6 PJ7

Blocul SCI

PP0 PP1 PP2 PP3 PP4 PP5 PP6 PP7

PT0 PT1 PT2 PT3 PT4 PT5 PT6 PT7

RXD TXD

Blocul PWM

PWM0 PWM1 PWM2 PWM3 PWM4 PWM5

IOC0 IOC1 IOC2 IOC3 IOC4 IOC5 IOC6 IOC7

MUX

Logică întreru-

pere externă

Port

T

Port

P

Blocul TIM

Port

S

PS0 PS1 PS2 PS3

Figura 6.1. Modul de conectare a porturilor T, S, M, P şi J.

- registre de intrare şi ieşire PTx (Port I/O Register; x = T, S, M, P, J, AD;

de exemplu: registrul PTT). Printr-o scriere în aceste registre se programează nivelele logice la liniile porturilor definite ca ieşiri. La o citire din aceste registre se obţin nivelele logice de la pinii sau liniile definite ca intrări, pentru liniile definite ca ieşiri se citeşte conţinutul registrului PTx;

- registre de intrare PTIx (Port Input Register; x = T, S, M, P, J, AD; de exemplu: registrul PTIT). Scrierea în acest registru nu are sens. La citire se obţin totdeauna stările logice de la pinii externi sau liniile portului indiferent dacă acestea au fost definite ca intrări sau ieşiri. În cazul citirii ieşirilor, se poate face comparaţia cu conţinutul registrului PTx pentru a depista scurtcircuite sau suprasarcini;

Page 3: Porturi paralele

PORTURILE PARALELE

42

- registre de programare a puterii reduse de ieşire RDRx (Reduced Drive Register; x = T, S, M, P, J, AD; de exemplu: registrul RDRT; RDRT_RDRT2=0 – putere maximă de comandă la ieşirea PT2; RDRT_RDRT2=1 – putere de comandă redusă la 1/3 la ieşirea PT2). Programarea cu aceste registre are sens numai pentru liniile definite ca ieşiri;

- registre de selecţie a cuplării rezistenţelor de pull-up sau pull-down PERx (Pull Enable Register, x = T, S, M, P, J, AD; de exemplu: registrul PERT; PERT_PERT2=0 – este invalidată posibilitatea cuplării de rezistenţe up/down; PERT_PERT2=1 – este validată posibilitatea cuplării de rezistenţe up/down). Rezistenţele pull-up şi pull-down se pot conecta la liniile porturilor de finite ca intrări. Rezistenţele pull-up mai pot fi conectate şi la ieşirile care pot realiza funcţiile SAU cablat (liniile porturilor S şi M);

- registre de selectare a polarităţii PPSx (Port Polarity Select Register, x = T, S, M, P, J, AD). Aceste registre au mai multe semnificaţii. Pentru toate porturile, biţii registrelor PPSx (x = T, S, M, P, J, AD) selectează tipurile de rezistenţe care se pot conecta la liniile porturilor definite ca intrări şi pentru care s-a validat, din registrele PERx, posibilitatea de conectare a rezistenţelor (de exemplu: DDRT_DDRT2=0, PERT_PERT2=1, PPST_PPST2=0 – la intrarea PT2 se va cupla o rezistenţă pull-up iar dacă PPST_PPST2=1 o rezistenţă pull-down). De la liniile porturilor J şi P, definite ca intrări sau ieşiri, se pot genera întreruperi mascabile de tip CCR_I. Pentru aceste porturi, biţii registrelor PPSJ şi PPSP mai precizează şi frontul activ care generează întreruperile (de exemplu: PPSJ_PPSJ7=0 – frontul activ este frontul negativ, PPSJ_PPSJ7=1 – frontul activ este frontul pozitiv). Liniile porturilor S şi M, definite ca ieşiri, pot fi configurate cu drena în gol pentru realizarea funcţiei SAU cablat (wired OR). Din registrele PERS şi PERM se poate valida conectarea de rezistenţe. În acest caz, biţii 0 din registrele PPSS şi PPSM indică conectarea rezistenţelor pull-up la aceste ieşiri (de exemplu: DDRM_DDRM3=1, PERM_PERM3=1, PPSM_PPSM3=0, VOM3_VOM3=1 – la ieşirea cu drena în gol PM3 se conectează o rezistenţă pull-up);

- registre de selecţie ieşiri cu drena în gol VOMx (Wired OR Mode Register, x=S, M; de exemplu: registrul VOMS; VOMS_VOMS3=0 – ieşirea PS3 de tip push pull, VOMS_VOMS3=1– ieşirea PS3 de tip cu drena în gol);

- registre de validare întreruperi externe PIEx (Port Interrupt Enable Register, x=J,P; de exemplu: registrul PIEP; PIEP_PIEP7=1 – întreruperea de la linia PP7 este validată, PIEP_PIEP7=0 – întreruperea de la linia PP7 este invalidată);

- registre indicatoare de întrerupere PIFx (Port Interrupt Flag Register, de exemplu: registrul PIFP, PIFP_PIFP7 =1 – a apărut un front activ la pinul PP7, ştergerea acestui bit se realizează prin scrierea unui “1” logic în acest bit).

Page 4: Porturi paralele

6.2. Descrierea porturilor paralele

43

- registrul MODRR de asociere a modulului TIM sau PWM la portul T (Module Routing Register, MODRR_[MODRR4÷MODRR0]=00001 – asociere linii PT4÷PT1 la TIM şi PT0 la PWM, stare de resetare -MODRR_[MODRR4÷MODRR0]- 00000).

În tabelul 6.1 este dată starea porturilor după resetare. Tabelul 6.1. Starea porturilor în urma resetării.

Port Starea porturilor după resetare Direcţie

comunicaţie Polarizare Modul putere

redusă ieşire Modul SAU

cablat Modul

întrerupere T Intrare High Z Dezactivat - - S Intrare Pull-up Dezactivat Dezactivat - M Intrare Pull-up Dezactivat Dezactivat - P Intrare High Z Dezactivat - Dezactivat J Intrare High Z Dezactivat - Dezactivat

AD Intrare High Z Dezactivat - -

În ceea ce priveşte generarea întreruperilor externe, pentru fiecare port P şi J este alocat câte un vector de întrerupere. Bitul general de validare a acestor întreruperi este bitul CCR_I. Intrările de întrerupere ale porturilor P şi J sunt prevăzute cu filtre pentru eliminarea impulsurilor scurte (glitch) care pot genera cereri de întrerupere false în modul STOP. Impulsurile mai scurte de 3µs sunt filtrate iar pentru generarea certă a unei întreruperi, durata impulsului trebuie să fie de minim 10µs. În tabelul 6.2 sunt prezentate sintetic efectele biţilor de comandă ale registrelor DDR (direcţie comunicaţie), PT (nivele ieşiri), RDR (putere redusă ieşiri), PER (validare pull-up/pull/down), PPS (selecţie pull-up/pull-down şi front activ întrerupere) şi PIE (validare întrerupere externă). Tabelul 6.2. Efectul biţilor de comandă asupra stării porturilor. DDR PT RDR PER PPS PIE1 Funcţie Polarizare Întrerupere1

0 x x 0 x 0 Intrare High Z Dezactivat 0 x x 1 0 0 Intrare Pull-up Dezactivat 0 x x 1 1 0 Intrare Pull-down Dezactivat 0 x x 0 0 1 Intrare High Z Front negativ 0 x x 0 1 1 Intrare High Z Front pozitiv 0 x x 1 0 1 Intrare Pull-up Front negativ 0 x x 1 1 1 Intrare Pull-down Front pozitiv 1 0 0 x x 0 Ieşire în 0, Pmax2 High Z Dezactivat 1 1 0 x x 0 Ieşire în 1, Pmax2 High Z Dezactivat 1 0 1 x x 0 Ieşire în 0,Predus3 High Z Dezactivat 1 1 1 x x 0 Ieşire în 1,Predus3 High Z Dezactivat 1 0 0 x 0 1 Ieşire în 0, Pmax2 High Z Front negativ 1 1 0 x 1 1 Ieşire în 1, Pmax2 High Z Front pozitiv 1 0 1 x 0 1 Ieşire în 0,Predus3 High Z Front negativ 1 1 1 x 1 1 Ieşire în 1,Predus3 High Z Front pozitiv

1Numai pentru porturile P şi J, 2Putere de comandă maximă la ieşiri, 3Putere de comandă redusă la ieşiri.

Page 5: Porturi paralele

PORTURILE PARALELE

44

6.2.2. Descrierea porturilor paralele A, B şi E

Conectarea porturilor A, B şi E este controlată de modulul MEBI (Multiplexed External Bus Interface) al microcontrolerelor HCS12. Modul de conectare a acestor porturi este indicat în figura 6.2.

ADDR0/DATA0 ADDR1/DATA1 ADDR2/DATA2 ADDR3/DATA3 ADDR4/DATA4 ADDR5/DATA5 ADDR6/DATA6 ADDR7/DATA7

Port B

PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7

ADDR8/DATA8 ADDR9/DATA9 ADDR10/DATA10 ADDR11/DATA11 ADDR12/DATA12 ADDR13/DATA13 ADDR14/DATA14 ADDR15/DATA15

Port A

PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7

PE0 PE1 PE2 PE3 PE4 PE5 PE6 PE7

BKGD

Port E

/XIRQ /IRQ

R/ /W /LSTRB/ /TAGLO

ECLK IPIPE0/MODA IPIPE1/MODB

NOACC/ /XCLKS

BKGD/MODC/ /TAGHI

CORE

Figura 6.2. Modul de conectare a porturilor A, B şi E.

Funcţiile alternative ale porturilor de 8 biţi A şi B sunt de accesare a memoriilor externe. Prin acestea se generează adresele şi se efectuează multiplexat transferul datelor. Portul de 8 biţi E gestionează diverse semnale de control necesare atât pentru coordonarea transferului de date cu memoriile externe cât şi pentru coordonarea funcţionării microcontrolerului. Microcontrolerele HCS12 pot funcţiona în mai multe moduri. Aceste moduri se stabilesc în faza de resetare prin eşantionarea nivelelor logice de la pinii MODC, MODB şi MODA. Un mod des utilizat este acela în care microcontrolerele HCS12 funcţionează numai cu memoriile interne – modul Normal Single Chip. Acest mod se obţine dacă în faza de resetare pinii [MODC, MODB, MODA] sunt în starea 100. În modul Normal Single Chip, porturile A, B şi E sunt accesibile şi pot fi folosite ca porturi de intrare şi ieşire de uz general. Registrele de intrare/ieşire şi registrele de control ale direcţiei de comunicaţie, ataşate porturilor A, B şi E sunt: PORTA şi DDRA, PORTB şi DDRB, respectiv, PORTE şi DDRE. Semnificaţiile acestor registre sunt aceleaşi ca şi pentru registrele similare ataşate porturilor T, S, M, P şi J. Menţionăm că de la

portul E liniile XIRQ /PE0 şi IRQ /PE1 se pot folosi numai ca intrări de întrerupere sau ca intrări de date generale. Pentru cuplarea rezistenţelor de polarizare în situaţia în care liniile porturilor sunt definite ca intrări trebuie utilizaţi biţii PUCR_[PUPEE, PUPBE, PUPAE]. De exemplu: PUCR_PUPBE =0/1 – cuplarea rezistenţelor de polarizare la toate liniile de intrare ale portului B este

stefan
Highlight
stefan
Highlight
Page 6: Porturi paralele

6.3. Caracteristicile electrice ale porturilor

45

dezactivată/activată. Validarea reducerii puterii de comandă la liniile porturilor definite ca ieşiri se face din biţii RDRIV_[RDPE, RDPB, RDPA]. De exemplu: RDRIV_RDPA =0/1 – este validată puterea maximă/redusă la toate liniile portului

A definite ca ieşiri. Întreruperea externă mascabilă CCR_I de la pinul IRQ /PE1 poate fi activă pe nivel 0 sau front negativ, selecţia se face din bitul IRQCR_IRQE (IRQCR_IRQE=0/1 – întrerupere activă pe nivel 0 /front negativ ). Validarea locală a acestei întreruperi se realizează cu ajutorul bitului IRQCR_IRQEN (IRQCR_IRQEN=0/1 – invalidare /validare întrerupere ). Deoarece portul E este folosit pentru vehicularea diverselor semnale de control, utilizarea acestui port pentru transfer general de date trebuie făcută cu precauţie

6.3. Caracteristicile electrice ale porturilor Pentru porturile paralele sunt prevăzuţi pini speciali de alimentare VDDX şi VSSX. Totuşi diferenţele maxime între potenţialele pinilor VDDX, VDDR şi VDDA, respectiv, VSSX, VSSR şi VSSA nu trebuie să depăşească domeniul ±0,3V. Asta înseamnă că cele trei tensiuni se aleg egale şi eventual fiecare tensiune este filtrată separat. Pentru alimentare sunt standardizate tensiunile de 5V şi 3,3V. Nivelele logice de intrare sunt: VIH = [0,65*VDDX ÷ VDDX + 0,3V] iar VIL = [V SSX – 0,3V ÷ 0,35*VDDX ]. Pentru VDDX = 5V, tensiunea de ieşire VOL nu creşte peste 0,8V pentru curenţi de ieşire IOL de + 2mA (putere redusă) sau + 10mA (putere maximă). La fel, tensiunea de ieşire VOH rămâne în limitele VDDX - 0,8 V pentru curenţi de ieşire IOH de – 2mA (putere redusă) sau – 10mA (putere maximă). Pentru VDDX = 3,3V, tensiunea de ieşire VOL nu creşte peste 0,4V pentru curenţi de ieşire IOL de + 0,9mA (putere redusă) sau + 4,75mA (putere maximă). La fel, tensiunea de ieşire VOH rămâne în limitele VDDX - 0,4V pentru curenţi de ieşire IOH de – 0,75mA (putere redusă) sau – 4mA (putere maximă).

6.4. Registrele ataşate porturilor paralele Se consideră că porturile paralele se utilizează pentru transfer general de date iar microcontrolerul nu utilizează memorie externă ( modul single chip). Modul de utilizare al liniilor porturilor paralele de către blocurile periferice va fi discutat la fiecare bloc periferic în parte. Totuşi la registrele de intrare şi ieşire I/O (Port I/O Register) sunt indicate funcţiile alternative ale liniilor porturilor paralele şi blocurile periferice aferente.

6.4.1. Registrele ataşate portului T PTT PTT70 PTT60 PTT50 PTT40 PTT30 PTT20 PTT10 PTT00

Bloc TIM

IOC7 IOC6 IOC5 IOC4 IOC3 IOC2 IOC1 IOC0

Bloc PWM

PWM4 PWM3 PWM2 PWM1 PWM0

PTIT PTIT7-R PTIT6-R PTIT5-R PTIT4-R PTIT3-R PTIT2-R PTIT1-R PTIT0-R

DDRT DDRT70 DDRT60

DDRT50 DDRT40 DDRT30 DDRT20 DDRT10 DDRT00

stefan
Highlight
Page 7: Porturi paralele

PORTURILE PARALELE

46

RDRT RDRT70 RDRT60 RDRT50 RDRT40 RDRT30 RDRT20 RDRT10 RDRT00

PERT PERT70 PERT60 PERT50 PERT40 PERT30 PERT20 PERT10 PERT00

PPST PPST70 PPST60 PPST50 PPST40 PPST30 PPST20 PPST10 PPST00

MODRR x0 x0 x0 MODRR40 MODRR30 MODRR20 MODRR10 MODRR00

6.4.2. Registrele ataşate portului S PTS x0 x0 x0 x0 PTS30 PTS20 PTS10 PTS00

Bloc SCI TXD RXD PTIS x0 x0 x0 x0 PTIS3-R PTITS-R PTITS-R PTIS0-R

DDRS x0 x0

x0 x0 DDRS30 DDRS20 DDRS10 DDRS00

RDRS x0 x0 x0 x0 RDRS30 RDRS20 RDRS10 RDRS00

PERS x0 x0 x0 x0 PERS31 PERS21 PERS11 PERS01

PPSS x0 x0 x0 x0 PPSS30 PPSS20 PPSS10 PPSS00

WOMS x0 x0 x0 x0 WOMS30 WOMS20 WOMS10 WOMS00

6.4.3. Registrele ataşate portului M PTM x0 x0 PTM50 PTM40 PTM30 PTM20 PTM10 PTM00

Bloc MSCAN/SPI

SCK MOSI /SS MISO TXCAN RXCAN

PTIM x0 x0 PTIM5-R PTIM4-R PTIM3-R PTIM2-R PTIM1-R PTIM0-R

DDRM x0 x0

DDRM50 DDRM40 DDRM30 DDRM20 DDRM10 DDRM00

RDRM x0 x0 RDRM50 RDRM40 RDRM30 RDRM20 RDRM10 RDRM00

PERM x0 x0 PERM51 PERM41 PERM31 PERM21 PERM11 PERM01

PPSM x0 x0 PPSM50 PPSM40 PPSM30 PPSM20 PPSM10 PPSM00

WOMM x0 x0 WOMM50 WOMM40 WOMM30 WOMM20 WOMM10 WOMM00

6.4.4. Registrele ataşate portului P PTP PTP70 PTP60 PTP50 PTP40 PTP30 PTP20 PTP10 PTP00

Bloc PWM PWM5 PWM4 PWM3 PWM2 PWM1 PWM0 PTIP PTIP70 PTIP60 PTIP5-R PTIP4-R PTIP3-R PTIP2-R PTIP1-R PTIP0-R

DDRP DDRP70 DDRP60

DDRP50 DDRP40 DDRP30 DDRP20 DDRP10 DDRP00

RDRP RDRP70 RDRP60 RDRP50 RDRP40 RDRP30 RDRP20 RDRP10 RDRP00

PERP PERP70 PERP60 PERP50 PERP40 PERP30 PERP20 PERP10 PERP00

Page 8: Porturi paralele

6.4. Registrele ataşate porturilor paralele

47

PPSP PPSP70 PPSP60 PPSP50 PPSP40 PPSP30 PPSP20 PPSP10 PPSP00

PIEP PIEP70 PIEP60 PIEP50 PIEP40 PIEP30 PIEP20 PIEP10 PIEP00

PIFP PIFP70 PIFP60 PIFP50 PIFP40 PIFP30 PIFP20 PIFP10 PIFP00

6.4.5. Registrele ataşate portului J PTJ PTJ70 PTJ60 x0 x0 x0 x0 x0 x0

PTIJ PTIJ7-R PTIJ6-R x0 x0 x0 x0 x0 x0

DDRJ DDRJ70 DDRJ60

x0 x0 x0 x0 x00 x0

RDRJ RDRJ70 RDRJ60 x0 x0 x0 x0 x0 x0

PERJ PERJ70 PERJ60 x0 x0 x0 x0 x0 x0

PPSJ PPSJ70 PPSJ60 x0 x0 x0 x0 x0 x0

PIEJ PIEJ70 PIEJ60 x0 x0 x0 x0 x0 x0

PIFJ PIFJ70 PIFJ60 x0 x0 x0 x0 x0 x0

6.4.6. Registrele ataşate portului AD PTAD PTAD70 PTAD60 PTAD50 PTAD40 PTAD30 PTAD20 PTAD10 PTAD00

PTIAD PTIAD7-R PTAID6-R PTAID5-R PTAID4-R PTAID3-R PTAID2-R PTAID1-R PTAID0-R

DDRAD DDRAD70 DDRAD60

DDRAD50 DDRAD40 DDRAD30 DDRAD20 DDRAD10 DDRAD00

RDRAD RDRAD70 RDRAD60 RDRAD50 RDRAD40 RDRAD30 RDRAD20 RDRAD10 RDRAD00

PERAD PERAD70 PERAD60 PERAD50 PERAD40 PERAD30 PERAD20 PERAD10 PERAD00

PPSAD PPSAD70 PSAD60 PSAD50 PSAD40 PSAD30 PSAD20 PSAD10 PSAD00

6.4.7. Registrele ataşate porturilor A, B şi E PORTA BIT70 BIT60 BIT50 BIT40 BIT30 BIT20 BIT10 BIT00

DDRA BIT70 BIT60 BIT50 BIT40 BIT30 BIT20 BIT10 BIT00

PORTB BIT70 BIT60 BIT50 BIT40 BIT30 BIT20 BIT10 BIT00

DDRB BIT70 BIT60 BIT50 BIT40 BIT30 BIT20 BIT10 BIT00

PORTE BIT70 BIT60 BIT50 BIT40 BIT30 BIT20 BIT1-R BIT0-R

DDRE BIT70 BIT60 BIT50 BIT40 BIT30 BIT20 x0 x0

PUCR PUPKE1 x0 x0 PUPEE1 x0 x0 PUPBE0 PUPAE0

RDRIV RDRK1 x0 x0 RDPE0 x0 x0 RDPB0 RDPA0

Page 9: Porturi paralele

PORTURILE PARALELE

48

IRQCR IRQE0 IRQEN1 x0 x0 x0 x0 x0 x0

Legendă:

- notaţia biţilor Bita din registre: Bit – numele bitului, x – bit neimplementat (se citeşte 0 iar scrierea nu are efect); a – valoare de reset, a=- valoare neprecizată; R – bit de tip read only.

6.5. Aplicaţii Dăm un exemplu de iniţializare a porturilor P, B şi T din modulul inDART-HCS12 echipat cu un microcontroler MC9S12C32. La acest modul sunt făcute următoarele conexiuni:

- între liniile PP0, PP1, PP2 şi PP3 ale portului P şi masă, sunt conectate patru butoane bipoziţionale;

- între liniile portului B şi masă, prin intermediul rezistenţelor de limitare, sunt conectate 8 LED-uri cu catozii la masă;

- între liniile portului T şi VDD sunt conectate 8 comutatoare bipoziţionale. Pentru funcţionarea corectă a sistemului porturile trebuie programate astfel:

- liniile PP0, PP1, PP2 şi PP3 ale portului P trebuie definite ca intrări la care trebuie conectate rezistenţe de polarizare pull-up;

- liniile portului B trebuie definite ca ieşiri şi putere de comandă maximă; - liniile portului T trebuie definite ca intrări la care trebuie conectate

rezistenţe de polarizare pull-down. Dăm în continuare secvenţa de programare a celor trei porturi.

void PeriphInit (void) { PERP = 0x0F; // validare conectare rezistenţe la liniile PP0, PP1, PP2 şi PP3 DDRB = 0xFF; // definire linii port B ca ieşiri PTB = 0x00; // nivele 0 la ieşirile port B, LED-uri stinse PERT = 0xFF; // validare conectare rezistenţe la liniile PT7÷PT0 PPST = 0xFF; //selecţie rezistenţe de polarizare pull-down }

Pentru portul P se validează numai posibilitatea de conectare a rezistenţelor de polarizare la liniile PP0÷PP3 ale portului P şi se folosesc valorile de după resetare a registrelor DDRP şi PPSP. La portul B se programează liniile ca ieşiri şi nivelele 0 la ieşiri (LED-uri stinse). Puterea maximă rezultă implicit din starea de după resetare a registrului RDRB. La portul T se validează posibilitatea de conectare a rezistenţelor de polarizare la liniile PT7÷PT0 şi se selectează aceste rezistenţe de tip pull-down. Se foloseşte starea de după resetare a registrului DDRT.

Note bibliografice [1] MC9S12C Family/MC9S12GC Family Reference Manual (Chapter 2 Port Integration Module (PIM9C32) Block Description), Rev 01.24, 05/2010, Freescale Semiconductors.

Page 10: Porturi paralele

6.5. Aplicaţii

49

[2] MC9S12C Family/MC9S12GC Family Reference Manual (Chapter 4 Multiplexed External Bus Interface (MEBIV3)), Rev 01.24, 05/2010, Freescale Semiconductors.