(5) Mikrokontrolery MSP430: porty I/O, obsługa wyjść

Przedstawiamy pierwszą przykładową aplikację mikrokontrolera MSP430FR5739: jest to prosty przykład obsługi linii I/O w trybie wyjściowym. Przykład został zrealizowany na bazie modułu startowego LaunchPad.

W zestawie LaunchPad zastosowano mikrokontroler MSP430FR5739 w obudowie RHA (40 wyprowadzeń). Układ ten wyposażono w 5 portów wejścia/wyjścia (I/O). Porty P1, P2 oraz P3 obsługują po osiem linii, port P4 dwie linie, a port PJ sześć linii wejścia/wyjścia. W sumie w MSP430FR5739 użytkownik ma do dyspozycji 32 linie wejścia/wyjścia. Rozmieszczenie wyprowadzeń mikrokontrolera pokazano na rysunku 1.

 

Rys. 1. Wyprowadzenia MSP430FR5739 (obudowa RHA) 

Rys. 1. Wyprowadzenia MSP430FR5739 (obudowa RHA)

 

Galeria zdjęć zestawu MSP-EXP430FR5739 jest dostępna pod adresem.

 

 

Konfiguracja portów I/O

Porty wejścia/wyjścia w MSP430FR5739 konfigurujemy przy pomocy ośmiobitowych rejestrów. Porty P1 i P2 oraz porty P3 i P4 możemy połączyć w pary PA i PB. Wówczas dostęp do portów jest szesnastobitowy. Klasyfikację portów wejścia/wyjścia w MSP430FR5739 pokazano w tabeli 1.

 

Tab. 1. Porty we/wy w MSP430FR5739

  PA

P1

8 linii I/O

P2

8 linii I/O

  PB

P3

8 linii I/O

P4

2 linie I/O

                PJ

6 linii I/O

* PA (MSB – P2, LSB – P1); PB (MSB – P4, LSB – P3)

 

Zestaw wykorzystany w kursie przedstawiliśmy w artykule.

Linie portów mikrokontrolera MSP430FR5739 mogą pracować w trybie pracy funkcyjnej (specjalnym), albo w trybie pracy wejścia/wyjścia. Tryb pracy linii konfigurują rejestry PxSEL0, PxSEL1. Gdy bity w rejestrach są wyzerowane to odpowiadająca im linia pracuje w trybie wejścia/wyjścia. Ustawienie bitów włącza funkcyjny tryb pracy linii. Dostępne nastawy pokazano w tabeli 2.

 

Tab. 2. Rejestry PxSEL0, PxSEL1. Wybór trybu pracy linii (tryb wejścia/wyjścia , tryb funkcyjny)

PxSEL1

PxSEL0

Tryb pracy linii

0

0

linia w trybie wejścia/wyjścia

0

1

linia w trybie funkcyjnym numer 1

1

0

linia w trybie funkcyjnym numer 2

1

1

linia w trybie funkcyjnym numer 3 (*)

* żeby ustawić wartość obu rejestrów jednocześnie (problem przejścia z trybu wejścia/wyjścia do trybu funkcyjnego numer 3 ) należy skorzystać z rejestru pomocniczego PxSELC

 

Funkcje poszczególnych linii mikrokontrolera opisano w dokumentacji technicznej układu. Praktyczne przykłady użycia linii pracujących w trybie funkcyjnym zademonstrujemy w kolejnych odcinkach kursu.

W przypadku, gdy linia mikrokontrolera pracuje w trybie wejścia/wyjścia (PxSEL0=0, PxSEL1=0), to korzystając z rejestru PxDIR możemy ustawić kierunek linii. Gdy bit w rejestrze ma wartość „1” to odpowiadająca mu linia pracuje jako wyjście. Jeśli bit ma wartość „0” to linię pracuje jako wejście. Konfigurację kierunku linii wejścia/wyjścia pokazano w tabeli 3.

 

Tab. 3. Rejestr PxDIR. Wybór kierunku linii (kierunek wejście , kierunek wyjście)

PxDIR

Kierunek linii

0

wejście

1

wyjście

 

W przypadku, gdy linia pracuje w trybie wejścia/wyjścia (PxSEL0=0, PxSEL1=0) i jest ustawiona w kierunku wyjścia (PxDIR=1), to korzystając z rejestru PxOUT możemy ustawić stan wyjścia. Ustawiając w rejestrze bit o wartość „1” na odpowiadającym mu wyjściu ustawimy stan wysoki. Zerując bit w rejestrze, na wyjściu ustawimy stan niski. Konfigurację stanu wyjścia pokazano w tabeli 4.

 

Tab. 4. Rejestr PxOUT. Ustawienie stanu wyjścia (stan niski , stan wysoki)

PxOUT

Stan linii

0

stan niski

1

stan wysoki

 

Po włączeniu zasilania MSP430FR5739 linie mikrokontrolera pracują w trybie wejścia/wyjścia i są ustawione w kierunku wejścia (wyzerowane rejestry PxSEL0, PxSEL1, PxDIR). Rejestry PxOUT w których zapisany jest stan wyjścia nie są zerowane. Jeśli zmienimy kierunek linii z wejścia na wyjście, to na wyjściu automatycznie pojawi się stan ustawiony w rejestrze PxOUT.

Omawiając rejestry konfiguracyjne mikrokontrolera w nazwę rejestru wpisany został znak „x”.

Przyjęta forma zapisu oznacza, że rejestr konfiguruje dowolny z dostępnych w MSP430FR5739 portów 1/2/3/4/J, albo A/B (w miejsce znaku „x” wstawiamy nazwę portu).

 

Do pobrania

O autorze