2. PORTY WEJŚCIA/WYJŚCIA

Transkrypt

2. PORTY WEJŚCIA/WYJŚCIA
2. PORTY WEJŚCIA/WYJŚCIA (I/O)
2.1 WPROWADZENIE
Porty I/O mogą pracować w kilku trybach:
- przesyłanie cyfrowych danych wejściowych i wyjściowych
a także dla wybrane wyprowadzenia:
- generacja przerwania zewnętrznego
- alternatywne sygnały wejścia/wyjścia dla wbudowanych układów peryferyjnych.
Port I/O zawiera do ośmiu wyprowadzeń. Każde z nich może być programowane
niezależnie jako wejście cyfrowe (z generacją przerwania lub bez) lub wyjście cyfrowe.
2.2 OPIS FUNKCJONALNY
Każdy port posiada dwa podstawowe rejestry:
- rejestr danych, Data Register (DR)
- rejestr kierunku danych, Data Direction Register (DDR)
oraz jeden rejestr dodatkowy:
- rejestr opcji, Option Register (OR)
Każde wyprowadzenie może być zaprogramowane za pomocą odpowiadających mu bitów
rejestrów DR, DDR i OR, przy czym bit numer odpowiedniego rejestru x odpowiada
wyprowadzeniu x danego portu.
Zasada działania portów I/O została przedstawiona na rys 2.1.
2.2.1 Tryby wejściowe
Wybór konfiguracji wejściowej jest dokonywany za pomocą wyzerowania odpowiednich
bitów rejestru DDR. W tym przypadku, odczytanie wartości rejestru DR zwraca wartość
stanu logicznego przyłożonego do portu.
Inne tryby wejściowe pracy portu mogą być wybierane za pomocą rejestru OR.
Uwagi:
1. Wpisanie wartości do rejestru DR modyfikuje zatrzaskiwaną wartość lecz nie zmienia
stanu na wyprowadzeniu.
2. Przy przełączaniu trybu pracy z wejściowego na wyjściowy, należy najpierw wpisać
wartość do rejestru DR, tak aby wymagany stan logiczny pojawił się na wyjściu natychmiast
po przełączeniu kierunku.
Funkcja przerwania zewnętrznego
W przypadku gdy skonfigurujemy port jako wejście z przerwaniem, każde zdarzenie
(zmiana stanu logicznego) na tym wyprowadzeniu może wygenerować żądanie przerwania
zewnętrznego.
Każde wyprowadzenie może generować przerwanie niezależnie. Bity rejestrów
Miscellaneous konfigurują jakie wydarzenie ma wywoływać przerwanie, czyli tzw. czułość.
Każdy wektor przerwania zewnętrznego jest przypisany do odpowiednich grup portów I/O
(zobacz Opis wyprowadzeń oraz rozdział Przerwania). Jeśli więcej wyprowadzeń jest
wybrane równocześnie jako źródło tego samego przerwania, to są one dołączone za
pomocą bramki AND. Dlatego, jeśli na jednym lub więcej z tych wyprowadzeń wystąpi stan
niski to zamaskuje on przerwanie, które nie zostanie zgłoszone.
Rys. 2.1. Zasada działania portów I/O
Tab. 2.1. Tryby pracy portów I/O
Konfiguracja
Wejście
Wyjście
Pływające z/bez przerwania
Pull-Up z/bez przerwania
Push-Pull
Otwarty Dren (stan logiczny)
Otwarty dren (fizycznie)
Legenda: NI – nie zaimplementowane
Off – zaimplementowane, wyłączone
On – zaimplementowane, załączone
Pull-Up
P-Buffer
(podwieszone)
Off
Off
On
On
Off
Off
NI
NI
Diody
do VDD
do VSS
ON
On
NI*
* Diody do VDD nie są implemetowane w wyprowadzeniach z fizycznie
zrealizowanym wyjściem typu Otwarty Dren (True Open Drain).
Zabezpieczenie między wyprowadzeniem a VSS jest zastosowane w celu
zabezpieczenia układu przed przekroczeniem zakresu dopuszczalnych
napięć
Tab. 2.2. Konfiguracje portów I/O
Uwagi:
1. Jeśli port I/O jest skonfigurowany jako wejście a funkcja alternatywna wymusza jego pracę jako wyjścia,
odczytanie wartości z rejestru DR zwraca wartość wystawioną przez funkcję alternatywną.
2. Jeśli port I/O jest skonfigurowany jako wyjście a skojarzona z nim funkcja alternatywna wymusza jego
pracę jako wejścia, to stan odczytany przez funkcję alternatywną będzie odpowiadał temu wpisanemu do DR.
W przypadku konfiguracji wejścia jako pływającego z przerwaniem, należy zwrócić
szczególną uwagę na „niepożądane” przerwania przy zmianie konfiguracji portu (patrz rys.
2.2).
Przerwania zewnętrzne są przerwaniami sprzętowymi, co oznacza, że znacznik przerwania
(niedostępny bezpośrednio) jest kasowany automatycznie w momencie skoku do
odpowiedniego wektora przerwań. Aby programowo wyzerować niepożądane przerwania
oczekujące, należy zmodyfikować bity odpowiadające za czułość w rejestrze
Miscellaneous.
2.2.2 Tryby wyjściowe
Konfiguracja wyjściowa jest wybierana przez ustawienie odpowiednich bitów w rejestrze
DDR. W tym przypadku wpisanie wartości do DR powoduje ich zatrzaśnięcie na wyjściu.
Odczyt wartości z DR zwróci więc wcześniej wpisaną wartość.
Za pomocą rejestru OR można zmienić konfigurację sprzętową portu wyjściowego.
Dostępne są dwa tryby pracy portów wyjściowych: wyjście podwieszone (push-pull) i
wyjście z otwartym drenem (open drain).
Wartość rejestru DR i stan na wyjściu:
DR
Podwieszone
0
VSS
1
VDD
Otwarty dren
VSS
Pływające (Floating)
2.2.3 Funkcje alternatywne
Jeśli któryś z wewnętrznych układów peryferyjnych korzysta z zewnętrznych wyprowadzeń,
to odpowiedni port jest konfigurowany automatycznie. Funkcja alternatywna danego
wyprowadzenia ma wyższy priorytet niż standardowa funkcja I/O.
Sygnał wychodzący z danego układu peryferyjnego powoduje automatyczną konfigurację
odpowiedniego wyprowadzenia jako wyjścia (zależnie od potrzeb układu, jako PP lub OD).
Jeśli sygnał wchodzi do układu peryferyjnego, wyprowadzenie jest konfigurowane w tryb
wejściowy. W tym przypadku stan logiczny na tym wyprowadzeniu może być także
odczytany za pomocą rejestru DR.
Uwagi:
1. Konfiguracja wejścia w pull-up może powodować pojawienie się niespodziewanych
wartości na wejściu układu peryferyjnego. Jeśli wyprowadzenie jest używane jako wejście
lub wyjście dla układów peryferyjnych, należy je skonfigurować jako wejście pływające.
2. Funkcja alternatywna danego wyprowadzenia nie powinna być włączana dopóki jest ono
skonfigurowane jako wejście z przerwaniem, będzie to powodowało zgłaszanie
niepożądanych przerwań.
Analogowa funkcja alternatywna
Kiedy wyprowadzenie jest używane jako wejście przetwornika A/C, musi być ono
skonfigurowane jako wejście pływające. Multiplekser analogowy (sterowany za pomocą
rejestrów ADC), przełącza napięcie analogowe podane na wybrane wyprowadzenie do
wspólnej szyny analogowej dołączonej do wejścia przetwornika A/C.
Zaleca się aby w trakcie przetwarzania poziom napięcia i obciążenie na wyprowadzeniu
wejściowym nie były zmieniane. Ponadto zaleca się by podczas przetwarzania nie
zmieniać stanów logicznych na sąsiednich (względem wejścia analogowego)
wyprowadzeniach.
OSTRZEŻENIE: Poziom analogowy napięcia wejściowego musi się mieścić w
dopuszczalnych granicach (określonych w tabeli maksymalnych parametrów
dopuszczalnych).
2.3 REALIZACJA PORTÓW I/O
Sprzętowa realizacja każdego z portów I/O zależy od ustawień odpowiednich bitów w
rejestrach DDR i OR, oraz możliwości specyficznych zastosowań danego portu, jak wejście
przetwornika A/C czy wyjście True Open Drain (wyjście typu otwarty dren zrealizowane
fizycznie, bez bufora P).
Przełączanie funkcji tych portów z jednego trybu pracy do innego powinno się odbywać w
pewnej ustalonej sekwencji co pozwoli uniknąć niepożądanych efektów ubocznych.
Zalecana bezpieczna kolejność przełączania została przedstawiona na rys.2.2. Inne
przejścia stwarzają potencjalne ryzyko i nie powinno się ich stosować jeśli chcemy uniknąć
efektów typu zgłaszanie niepożądanych przerwań.
Rys.2.2 Zalecana sekwencja przełączania trybów pracy portów I/O
Porty standardowe
PA5:4, PC7:0, PD7:0, PE7:4, PE1:0, PF7:6,
PF4
Tryb pracy
DDR OR
wejście pływające
0
0
wejście pull-up
0
1
wyjście z otwartym drenem
1
0
wyjście push-pull
1
1
Porty z przerwaniami
PA3, PA4, PB3, PF2 (bez pull-up)
Tryb pracy
DDR
wejście pływające
0
wejście pull-up
0
wyjście z otwartym drenem
1
wyjście push-pull
1
Porty z przerwaniami
PA2:0, PB7:5, PB2:0, PF1:0 (pull-up)
Tryb pracy
DDR
wejście pływające
0
wejście pull-up (z przerwaniem)
0
wyjście z otwartym drenem
1
wyjście push-pull
1
Porty typu otwarty dren realizowany
fizycznie
PA7:6
Tryb pracy
wejście pływające
wyjście z otwartym drenem
(wysokoprądowe)
OR
0
1
0
1
OR
0
1
0
1
DDR
0
1
2.4 TRYBY OBNIŻONEGO POBORU MOCY
Tryb
WAIT
HALT
Opis
Wprowadzenie w tryb WAIT nie powoduje
zmian na portach I/O. Zgłoszenie
przerwania zewnętrznego powoduje
przejście procesora z trybu WAIT do
normalnej pracy.
Wprowadzenie w tryb HALT nie powoduje
zmian na portach I/O. Zgłoszenie
przerwania zewnętrznego powoduje
przejście procesora z trybu HALT do
normalnej pracy.
2.5 PRZERWANIA
Zdarzenie zewnętrzne może powodować zgłoszenie przerwania jeśli skonfigurowane są
właściwie odpowiednie bity rejestrów DDR i OR oraz wyzerowany jest bit I w rejestrze
CC (za pomocą instrukcji RIM).
Tab.2.3. Konfiguracja portów I/O
Wejście
Port
Nazwa
OR=0
OR=1
Port A
Port B
Port C
Port D
Port E
Port F
PA7:6
PA5:4
PA3
PA2:0
PB4:4
PB7:5, PB2:0
PC7:4, PC1:0
PC3:2
PD7:0
PE7:4
PE1:0
PF7:6
PF4
PF2
PF1:0
pływające
pływające pull-up z przerw.
pływające pływ. z przerw.
pływające pull-up z przerw.
pływające pływ. z przerw.
pływające
pull-up
pływające
pull-up
pływające
pull-up
pływające
pull-up
pływające
pull-up
pływające
pull-up
pływające
pull-up
pływające
pull-up
pływające pływ. z przerw.
pływające pull-up z przerw.
OR=0
Wyjście
OR=1
otwarty dren (fizycznie)
otwarty dren
push-pull
otwarty dren
push-pull
otwarty dren
push-pull
otwarty dren
push-pull
otwarty dren
push-pull
otwarty dren
push-pull
otwarty dren
push-pull
otwarty dren
push-pull
otwarty dren
push-pull
otwarty dren
push-pull
otwarty dren
push-pull
otwarty dren
push-pull
otwarty dren
push-pull
otwarty dren
push-pull
Wysoko
prądowe
Tak
Nie
Tak
Nie
Tak
Nie
Tak
Nie
2.5.1 Opis rejestrów
REJESTR DANYCH (DR – Data Register)
Rejestr danych portu x
PxDR gdzie x = A,B,C D,E lub F
Zapis/Odczyt
Wartość początkowa po resecie: 0000 0000 (00h)
7
6
5
4
3
2
1
0
D7
D6
D5
D4
D3
D2
D1
D0
Rejestr DR zachowuje się odmiennie w zależności od trybu pracy portu. Wpisanie
wartości do rejestru DR zawsze powoduje zatrzaśnięcie w nim danych, nawet jeśli port
jest skonfigurowany jako wejściowy. Pozwala to na natychmiastowe uzyskanie
oczekiwanego stanu na wyjściu przy przełączeniu trybu pracy portu. Odczyt wartości z
portu DR zwraca zatrzaśniętą wartość (konfiguracja jako wyjście) lub stan logiczny
podany na wyprowadzenie (konfiguracja jako wejście).
REJESTR KIERUNKU DANYCH (DDR – Data Direction Register)
Rejestr kierunku przepływu danych portu x
PxDDR gdzie x = A,B,C,D,E lub F
Zapis/Odczyt
Wartość początkowa po resecie: 0000 0000 (00h)
7
6
5
4
3
2
1
0
DD7
DD6
DD5
DD4
DD3
DD2
DD1
DD0
Rejestr DDR umożliwia konfigurację trybu pracy portu jako wejście lub wyjście. Każdy bit
jest ustawiany i zerowany programowo.
0: tryb wejściowy
1: tryb wyjściowy
REJESTR OPCJI (OR – Option Register)
Rejestr opcji portu x
PxOR gdzie x = A,B,C,D,E lub F
Zapis/Odczyt
Wartość początkowa po resecie: 0000 0000 (00h)
7
6
5
4
3
2
1
0
O7
O6
O5
O4
O3
O2
O1
O0
Dla niektórych wyprowadzeń ten rejestr nie jest zaimplementowany. W tych
przypadkach wystarczy skonfigurować rejestr DDR.
Rejestr OR konfiguruje port w zależności od jego trybu pracy: w trybie wejściowym port
może pracować w konfiguracji pull-up z możliwością zgłaszania przerwań lub pływające
(floating), w trybie wyjściowym możliwe są konfiguracje typu push-pull lub otwarty dren
(open drain).
Każdy bit jest ustawiany i zerowany programowo.
Tryb wejściowy:
0: wejście pływające (floating)
1: wejście pull-up z przerwaniem lub bez
Tryb wyjściowy
0: wyjście z otwartym drenem (wyłączony bufor-P)
1: wyjście typu push-pull
Tab. 2.4. Mapa portów rejestrów konfiguracyjnych portów I/O
Adres
Nazwa
7
6
5
4
(Hex)
rejestru
Wartości po Resecie
0
0
0
0
(dla wszystkich rej.)
0000h
PADR
MSB
0001h
PADDR
0002h
PAOR
0004h
PBDR
MSB
0005h
PBDDR
0006h
PBOR
0008h
PCDR
MSB
0009h
PCDDR
000Ah
PCOR
000Ch
PDDR
MSB
000Dh
PDDDR
000Eh
PDOR
0010h
PEDR
MSB
0011h
PEDDR
0012h
PEOR
0014h
PFDR
MSB
0015h
PFDDR
0016h
PFOR
3
2
1
0
0
0
0
0
LSB
LSB
LSB
LSB
LSB
LSB