(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)
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). |