Sesi skaitmeniniai įvedimo isvedimo prievadai P1 - P6 yra įdiegti MSP430F4xx seimos mikrovaldikliuose. Visi prievadai yra astuonių bitų. Kiekvienas prievado isvadas gali būti individualiai sukonfiguruotas kaip įvedimo arba isvedimo isvadas. Galimos rasymo ir skaitymo operacijos į (is) kiekvieną isvadą individualiai.
Prievadų P1 ir P2 isvadai gali būti naudojami kaip pertraukimų įėjimai. Kiekvienas prievadų P1 ir P2 isvadas gali būti individualiai:
sukonfiguruotas kaip pertraukimo įėjimas arba paprastas įvedimo / isvedimo isvadas;
darbo eigoje uzdraustas arba leistas pertraukimo formavimas kiekviename isvade;
pertraukimas gali būti formuojamas nuo kylanč 12512j912m ;io arba krintančio signalo fronto.
Visus pertraukimus prievado P1 isvaduose aptarnauja vienas pertraukimų vektorius (vektoriaus adresas atmintyje - 0FFE8h), o pertraukimo signalus prievado P2 isvaduose aptarnauja kitas pertraukimų vektorius (vektoriaus adresas - 0FFE2h).
Pagrindinės įvedimo - isvedimo prievadų P1 - P6 savybės
individualiai programuojamas kiekvieno isvado rezimas;
galima bet kokia isvadų įvedimo - isvedimo rezimų kombinacija;
individuliai konfiguruojami prievadų P1 ir P2 isvadai darbui pertraukimo rezime;
nepriklausomi duomenų įvedimo ir isvedimo registrai.
Darbui skaitmeninių signalų įvedimo - isvedimo rezime prievadai nustatomi kiekvieno is jų vidinių registrų pagalba. Duomenų nuskaitymui is konkretaus prievado naudojami įėjimo registrai PxIN. Įėjimo registrus galima tik skaityti, kai krypties registre nurodyta įėjimo kryptis.
Skaitmeninės informacijos rasymui į prievadą naudojami isėjimo registrai PxOUT. Isėjimo registrai isveda informaciją per isėjimo buferį, kai krypties registre nurodyta isėjimo kryptis.
Kiekvieno isvado darbo kryptis (duomenų isvedimas, ar duomenų įvedimas) nustatoma rasant informaciją į konkretaus prievado krypties registrą PxDIR. Kiekvienas krypties registras susideda is astuonių bitų, kurie nurodo kiekvieno bito kryptį (įėjimo arba isėjimo). Bitai isvalomi po pradinio nustatymo signalo PUC (Power Up Clear). Rasant į krypties registrą PxDIR, bitų reiksmės:
Bitas = 0 - pasirinkta įėjimo kryptis.
Bitas = 1 - pasirinkta isėjimo kryptis.
Paprastai kiekvienas prievado isvadas multipleksuojamas su kito periferinio įrenginio isvadu, t.y. galima nurodyti, kam priklauso konkretus isvadas - ar įvedimo/isvedimo prievadui, ar konkrečiam periferiniam įrenginiui. Tam yra naudojami funkcijos parinkimo registrai PxSEL. Sie registrai nustato konkretaus isvado vykdomos funkcijos tipą:
Bitas = 0 - mikrovaldiklio isvadas konfiguruojamas atlikti skaitmeninio prievado funkciją.
Bitas = 1 mikrovaldiklio isvadas konfiguruojamas atlikti konkretaus modulio funkciją.
Nustačius isvadui atlikti konkretaus modulio funkciją (t.y. PxSELx = 1), nėra automatiskai nustatoma jo kryptis. Sio isvado atliekama funkcija, o tuo pačiu ir kryptis priklauso nuo konkretaus periferinio modulio ir valdoma jo valdymo registrais.
Pateiktas programos fragmentas, kuriame prievado P1 penkta skiltis nustatoma sinchrosignalo ACLK isvedimui:
Bis #020h, &P1SEL ; isrenkama signalo ACLK isvedimo funkcija
Bis #020h, &P1DIR ; nustatoma isvedimo kryptis
Skaitmeniniai prievadai P1, P2 ir jų kontrolės registrai.
Mikrovaldiklyje MSP430 prievadai P1 ir P2 turi po septynis valdančiuosius registrus, uztikrinančius jų taikymo lankstumą ir nustatančius jų atliekamas funkcijas:
Kiekvienas sių prievadų isvadas gali būti sukonfiguruotas vykdyti isorinio pertraukimo įėjimo funkciją. Isorinio pertraukimo signalo formavimas įmanomas visais astuoniais prievadų P1 ir P2 bitais. Visus pertraukimus prievado P1 isvaduose aptarnauja vienas pertraukimų vektorius (vektoriaus adresas atmintyje - 0FFE8h), o pertraukimo signalus prievado P2 isvaduose aptarnauja kitas pertraukimų vektorius (vektoriaus adresas - 0FFE2h). Nuskaičius pertraukimo vėliavėlių registro P1IFG (arba P2IFG) turinį, galima nustatyti pertraukimo reikalavimo saltinį. Kiekvienas registras susideda is astuonių bitų, kurie nurodo ar yra pertraukimo reikalavimas:
Bitas = 0 - nėra pertraukimo reikalavimo.
Bitas = 1 - yra pertraukimo reikalavimas Tokiu atveju galima atlikti įvairias pertraukimo apdorojimo procedūras, priskirtas konkrečiam pertraukimo reikalavimui.
Kiekviena pertraukimo vėliavėlių registro P1IFG ar P2IFG skiltis yra įjungiama, kai suformuojamas aktyvus pertraukimo signalo frontas (kylantis ar krintantis) konkrečiame isvade. Aktyvus pertraukimo signalo frontas nurodomas pertraukimo fronto parinkimo registruose P1IES ir P2IES:
Bitas = 0 - pertraukimo vėliavėlė įjungiama, kai signalas kinta is zemo į aukstą loginį lygį.
Bitas = 1 - pertraukimo vėliavėlė įjungiama, kai signalas kinta is auksto į zemą loginį lygį.
Kiekviena pertraukimų vėliavėlių registro skiltis gali būti įjungiama ir gesinama programiskai, atliekant rasymo į registrus PxIFG instrukciją. Norint, kad mikrovaldiklis ir toliau reaguotų į aptarnauto pertraukimo signalus, iki pertraukimo paprogramės pabaigos (iki komandos IRET) reikia uzgesinti aptarnaujamo pertraukimo vėliavėlę registre PxIFG.
11 pav. Prievadų P1 ir P2 konfigūraciniai registrai ir jų adresai
Mikrovaldiklis reaguos į pertraukimų reikalavimus, jei atitinkama pertraukimo leidimo registro P1IE (P2IE) skiltis yra įjungta ir įjungtas globalaus pertraukimų leidimo bitas GIE pozymių registre (Status Register) SR. Pertraukimo leidimo registrai P1IE ir P2IE kontroliuoja atitinkamus pertraukimų įėjimus:
Bitas = 0 - pertraukimo įėjimas yra uzdraustas.
Bitas = 1 - pertraukimo įėjimas yra leidziamas.
Tiktai pertraukimo signalo frontas (ne statinis signalas) įjungia pertraukimą. Jeigu kita pertraukimo reikalavimo vėliavėlė PxIFGx įjungiama pertraukimo Px apdorojimo metu, arba ji įjungiama po instrukcijos IRET, vykdomas sio pertraukimo aptarnavimas. Taip uztikrinamas kiekvieno pertraukimo reikalavimo aptarnavimas.
12 lentelė. Skaitmeninių prievadų P1, P2 ir P3 valdymo registrai ir jų adresai
Registrai |
Trumpa forma |
Registro tipas |
Adresas |
Įėjimo registras |
P1IN |
tik skaityti |
020h |
Isėjimo registras |
P1OUT |
skaityti - rasyti |
021h |
Krypties registras |
P1DIR |
skaityti - rasyti |
022h |
Pertraukiamo registras |
P1IFG |
skaityti - rasyti |
023h |
Pertraukiamo fron. par. |
P1IES |
skaityti - rasyti |
024h |
Pertraukimo leid. reg. |
P1IE |
skaityti - rasyti |
025h |
Funkcijos parink. reg. |
P1SEL |
skaityti - rasyti |
026h |
Įėjimo registras |
P2IN |
tik skaityti |
028h |
Isėjimo registras |
P2OUT |
skaityti - rasyti |
029h |
Krypties registras |
P2DIR |
skaityti - rasyti |
02Ah |
Pertraukiamo registras |
P2IFG |
skaityti - rasyti |
02Bh |
Pertraukiamo fron. par. |
P2IES |
skaityti - rasyti |
02Ch |
Pertraukimo leid. reg. |
P2IE |
skaityti - rasyti |
02Dh |
Funkcijos parink. reg. |
P2SEL |
skaityti - rasyti |
02Eh |
Įėjimo registras |
P3IN |
tik skaityti |
018h |
Isėjimo registras |
P3OUT |
skaityti - rasyti |
019h |
Krypties registras |
P3DIR |
skaityti - rasyti |
01Ah |
Funkcijos parink. reg. |
P3SEL |
skaityti - rasyti |
01Bh |
Prievadzio P1 panaudojimo pavyzdys
Prie skaitmeninio prievadzio P1 prijungta 12-kos klavisų klaviatūra, per kurią įvedama informacija isorinio pertraukimo rezime. Prie prievado P1 prijungta klaviatūra sekančiu būdu (pav):
prie prievado isvadų P1.0, P1.2 ir P1.4 prijungti klaviatūros stulpeliai;
prie isvadų P1.1, P1.3, P1.5 ir P1.6 - eilutės.
12 pav. Klaviatūros prijungimo prie prievado P1 schema
Preivado isvadai, prie kurių yra prijungti klaviatūros stulpeliai nustatomi į įvedimo rezimą, likusieji - į isvedimo rezimą ir į juos įrasomas 0. Kol nenuspaustas nei vienas klavisas, isvaduose P1.0, P1.2 ir P1.4 palaikomas auksto loginio lygio signalas, o nuspaudus bet kurį klavisą viename is sių įėjimų suformuojamas pertraukimo signalas (perėjimas is 1 į 0), kuris perduoda valdymą pertraukimo apdorojimo paprogramei "IO_P1". Atmintyje (paskutinės programos pavyzdzio eilutės) adresu 0FFE8h turi būti įrasytas paprogramės "IO_P1" adresas (t.y. turi būti nurodyta 4-to pertraukimo vektoriaus reiksmė).
Zemiau pateikiamas programos fragmentas, kuriame atliekama prievado P1 inicializacija.
KeyboardInit:
mov.b #00h,P1SEL ; naudojame kaip I/O prievadį
mov.b #0EAh,P1DIR ; 0 - 2 - 4 isvadai konfigūruojami kaip įėjimai
mov.b #00h,P1OUT ; visi kiti įzeminti
mov.b #15h,P1IES ; neigiamas frontas generuoja pertraukimą
mov.b #15h,P1IE ; įjungiame
ret
Skaitmeninio prievadzio P3 panaudojimo pavyzdys
Prie skaitmeninio prievadzio P3 prijungti spinduoliai informacijos atvaizdavimui (4 pav.).
13 pav. Klaviatūros prijungimo prie prievado P1 schema
|