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