2. PORTY WEJŚCIA-WYJŚCIA (l/O)
2.1 WPROWADZENIE
Porty l/O mogą pracować w kilku trybach:
- przesyłanie cyfrowych danych wejściowych i wyjściowych a także dia wybrane wyprowadzenia:
- generacja przerwania zewnętrznego
- alternatywne sygnały wejścia/wyjścia dla wbudowanych układów peryferyjnych.
Port l/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 l/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 l/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.