Laboratorium 1 sterowanie diodami


Laboratorium 1  sterowanie diodami
1. Programowanie portów układu MSP 430
2.1 Porty MSP340F149
Układ MSP340F149, zamontowany na płytce rozwojowej EasyWeb2 zawiera 6 8-
bitowych portów, mogących pracować w trybie wejściowym i wyjściowym. Porty te oznacza
się odpowiednio P1  P6. Porty P1 i P2 umo\liwiają dodatkowo pracę w systemie przerwań.
[msp430f149.pdf]
W mikrokontrolerze MSP430 wszystkie porty są zmapowane w przestrzeni adresowej
procesora, a dostęp do poszczególnych rejestrów wszystkich portów odbywa się poprzez
odwołanie się do wybranego adresu portu.
Ka\demu z 6 portów układu MSP przyporządkowane są 4 rejestry:
" Port Px selection PxSEL
" Port Px direction PxDIR
" Port Px output PxOUT
" Port Px input PxIN
x= 1..6
Ponadto porty P1 i P2 posiadają rejestry odpowiedzialne za pracę z przerwaniami:
" Port Px interrupt enable PxIE
" Port Px interrupt-edge select PxIES
" Port Px interrupt flag PxIFG
x= 1..2
Przyporządkowanie adresów do poszczególnych portów ilustruje tabela:
PORT REJESTR NAZWA ADRES
Port P6 Port P6 selection P6SEL 037h
Port P6 direction P6DIR 036h
Port P6 output P6OUT 035h
Port P6 input P6IN 034h
Port P5 Port P5 selection P5SEL 033h
Port P5 direction P5DIR 032h
Port P5 output P5OUT 031h
Port P5 input P5IN 030h
Port P4 Port P4 selection P4SEL 01Fh
Port P4 direction P4DIR 01Eh
Port P4 output P4OUT 01Dh
Port P4 input P4IN 01Ch
Port P3 Port P3 selection P3SEL 01Bh
Port P3 direction P3DIR 01Ah
Port P3 output P3OUT 019h
Port P3 input P3IN 018h
Port P2 Port P2 selection P2SEL 02Eh
Port P2 interrupt enable P2IE 02Dh
Port P2 interrupt-edge select P2IES 02Ch
Port P2 interrupt flag P2IFG 02Bh
Port P2 direction P2DIR 02Ah
Port P2 output P2OUT 029h
Port P2 input P2IN 028h
Port P1 Port P1 selection P1SEL 026h
Port P1 interrupt enable P1IE 025h
Port P1 interrupt-edge select P1IES 024h
Port P1 interrupt flag P1IFG 023h
Port P1 direction P1DIR 022h
Port P1 output P1OUT 021h
Port P1 input P1IN 020h
[msp430f149.pdf]
Pełny zakres rejestrów urządzeń wejścia wyjścia mo\na znalezć w dokumentacji producenta
mikrokontrolera MSP430F149.
2.2. Uzyskiwanie dostępu do portów
Wszystkie 6 portów MSP430 jest zmapowanych na 8-bitowe rejestry dostępne pod
określonym adresem w pamięci. Rozpatrzmy port P1. Dla portu P1 trzy podstawowe rejestry
są dostępne pod następującymi adresami
P1IN 20 jest zmapowany na adres 20 szesnastkowo,
P1OUT jest zmapowany na adres 21 szesnastkowo,
P1DIR jest zmapowany na adres 22 szesnastkowo.
Rejestr P1DIR wskazuje na kierunek działania portu dla poszczególnych bitów i
przyporządkowanych do nich pinów układu. Piny oznacza się kolejno od P1.0 do P1.7. Je\eli
pojedynczy bit rejestru ustawimy na 0, odpowiadający pin pracuje jako układ wejściowy, jeśli
1, odpowiadający pin pracuje jako układ wyjściowy.
Chcąc ustawić pin P1.1 do pracy jako wejście, bit 1 rejestru P1DIR ustawiamy na 1, w
przeciwnym wypadku na 0.
[http://eleceng.dit.ie/frank/msp430/]
Jeśli podłączmy do Portu P1.0 klawisz, a do portu P1.1 diodę LED, w rejestrze P1DIR tryb
pracy poru P1.1 ustawiamy na wejściowy (1), a P1.0 na wyjściowy (0)
W języku c taka operacja mo\e wyglądać następująco:
typedef unsigned char byte;
#define P1DIR *((byte *)0x22)
P1DIR |= 0x02; // Ustawienie bitu P1.1 na 1 (tryb wyjściowy)
P1DIR &= ~0x01; // Ustawienie bitu P1.0 na 0 (tryb wejściowy)
Operacja  |= jest funkcją bitowego or wykonanego na zawartości rejestru P1DIR. Operacja
ta, w odró\nieniu od przypisania  = nie zmienia stanu innych bitów.
Operacja P1DIR |= 0x02
Bit P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0
P1DIR 0 1 0 1 0 1 0 1
0x02 0 0 0 0 0 0 1 0
P1DIR |= 0x02 0 1 0 1 0 1 1 1
Operacja P1DIR = 0x02
Bit P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0
P1DIR 0 1 0 1 0 1 0 1
0x02 0 0 0 0 0 0 1 0
P1DIR = 0x02 0 0 0 0 0 0 1 1
Operacja  &= jest funkcją bitowego and wykonanego na zawartości rejestru P1DIR.
Operacja ta, tak\e nie zmienia stanu innych bitów.
Bit P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0
P1DIR 0 1 0 1 0 1 0 1
0x01 0 0 0 0 0 0 0 1
~0x01 1 1 1 1 1 1 1 0
P1DIR &= ~0x01 0 1 0 1 0 1 0 0
[http://eleceng.dit.ie/frank/msp430/]
Je\eli w układzie z rysunku xx2 chcemy kontrolować stan klawisza przyłączonego do pinu b0
portu P1, konieczne jest odczytanie stanu portu P1.0. Jeśli naciśnięcie klawisza ma sterować
zapaleniem diody przyłączonej do pinu b1 portu P1, nale\y na port P1.1 wysłać odpowiedni
sygnał. Aby załączyć diodę, bit 1 portu P1 musi być ustawiony na 0, wyłączenie uzyskamy
ustawiając ten bit na 1. Podobnie odczytany stan bitu portu P1.1 równy 0 informuje o
wciśniętym klawiszu, a stan bitu równy 1 mówi, \e klawisz nie jest wciśnięty.
Program, zapalający diodę w zale\ności od stanu klawisza mo\e wyglądać następująco:
typedef unsigned char byte;
#define P1IN *((byte *)0x20)
#define P1OUT *((byte *)0x21)
#define P1DIR *((byte *)0x22)
// Definicje dotyczące Watchdog timer
#define WDTCL *((short *)0x120)
#define WDTHOLD 0x0080
#define WDTPW 0x5a00
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Zatrzymanie watchdog timera
P1DIR |= 0x02; // Ustawienie bitu P1.1 na 1 (tryb wyjściowy)
P1DIR &= ~0x01; // Ustawienie bitu P1.0 na 0 (tryb wejściowy)
while( 1==1 )
{
if( (P1IN & 0x01) != 0) { // Odczcytanie stanu bitu P1.0
// jeśli klawisz był naciśnięty ...
P1OUT = P1OUT | 0x02; // zgaś diodę
} else {
P1OUT = P1OUT & 0xfd; // zapal diodę
}
}
}
2.3. Połączenia portów w układzie EasyWeb2
W układzie EasyWeb2 mamy do dyspozycji 4 klawisze, podłączone do portów P4.4 
P4.7 oraz 3 diody LED:
" Dioda status, podłączona do portu P2.1
" Dioda przyłączona równolegle z przekaznikiem 1, podłączona do portu P1.5 (REL1)
" Dioda przyłączona równolegle z przekaznikiem 2, podłączona do portu P1.6 (REL2)
Potrzebne definicje portów P1, P2 i P4 mo\na przygotować bazując na opisie w tabeli 1 lub
dołączając zdefiniowany przez twórców plik nagłówkowy o nazwie msp430x14x.h
#include msp430x14x.h
2.4. Zadania
1. Zdefiniuj funkcje słu\ące do zapalania wybranej diody i do gaszenia wybranej diody.
2. Zdefiniuj funkcje słu\ące do cyklicznego zapalania i gaszenia wybranej diody z
określonym interwałem czasowym. Opóznienie dobierz doświadczalnie poprzez
odpowiednią liczbę iteracji pustej pętli for.
3. Napisz dla układu EasyWeb2 program, który za pomocą trzech klawiszy będzie
kontrolował zapalanie i gaszenie trzech diod.
4. Napisz dla układu EasyWeb2 program, działający w 2 trybach: konfiguracji i pracy.
Klawisz 1 wybiera tryb działania (konfiguracja, praca)
W trybie konfiguracji:
2 klawisz wybiera aktywną diodę (jedna z trzech)
3 klawisz wybiera tryb pracy aktywnej diody (włączona, wyłączona,
bistabilna, astabilna, cykliczne zapalanie )
W trybie pracy
2 klawisz aktywuje 1 diodę
3 klawisz aktywuje 2 diodę
4 klawisz aktywuje 3 diodę


Wyszukiwarka