Programowanie mikroprocesorów ( mikrokontrolerów )

Porty I/O (INPUT / OUTPUT)


1. Wstęp

Poniżej przedstawiona zostanie i omówiona budowa i zasada działania portów wejść / wyjść mikrokontrolera.

Schemat wyprowadzeń przykładowego mikroprocesora Atmega8 przedstawia poniższy rysunek.

programowanie mikroprocesorów mikrokontrolerów
Porty w mikrokontrolerach służą do komunikacji mikroprocesora ( mikrokontrolera ) ze światem zewnętrznym. Najprościej mówiąc Port mikroprocesora ( mikrokontrolera ) jest to zbiór najczęściej ośmiu nóżek mikroprocesora ( mikrokontrolera ) gdzie każda odpowiada jednemu bitowi w rejestrze sterującym . Dzięki takiemu przy szeregowaniu rejestru do nóżek mikroprocesora ( mikrokontrolera ) możemy w prosty sposób sterować podłączonymi do niego komponentami.

Port mikroprocesora ( mikrokontrolera ) jest tak zbudowany że w zależności od wpisanych wartości bitów w rejestry sterujące nim, może on wykonywać różne funkcje takie jak np.  funkcje sterujące gdy skonfigurowany jest jako wyjście, funkcje zbierania danych gdy skonfigurowany jest jako wejście bądź funkcję odcięcia się od układu gdy skonfigurujemy go jako wejście o wysokiej impedancji np. w celu zwolnienia magistrali danych.

2. Budowa i zasada działania portów mikrokontrolera

Wykorzystanie portów I/O mikroprocesora  ( mikrokontrolera ) omówione zostanie na przykładzie procesora AVR Atmega8. Należy pamiętać o korzystaniu z dokumentacji technicznej wykorzystywanego mikroprocesora ( mikrokontrolera ) gdyż porty wejścia wyjścia pomimo swojej szerokiej uniwersalności zazwyczaj różnią się parametrami technicznymi między sobą między innymi takimi jak obciążalność prądowa oraz funkcję specjalistyczne jakie poszczególne porty mogą wykonywać.

W przypadku Atmegi8 do dyspozycji mamy 3 porty nazwane w dokumentacji portami PB0-7, PC0-6, PD0-7. Budowę wewnętrzną każdego z portów przedstawia kolejny rysunek

programowanie mikroprocesorów mikrokontrolerów

3. Funkcje podstawowe portów mikrokontrolera

Każdy z portów sterowany jest trzema rejestrami sterującymi

DDRx – rejestr określający kierunek przesyłania danych ( 1 – wyjście, 0 – wejście)

PORTx – rejestr danych portu (zawiera wartość wystawianą na port)

PINx – Rejestr wejściowy portu (pozwala odczytać wartość na określonym pinie)

Każdy pin danego portu możemy skonfigurować niezależnie jako wejściowy lub wyjściowy. O kierunkowości pracy pinów decyduje rejestr sterujący pracą porty  DDRx (gdzie x to numer pinu od 0 do 7). Aby pin pracował jako wejściowy należy do rejestru DDR wpisać jedynkę na odpowiedniej pozycji odpowiadającej interesującemu nas pinowi.  Aby pracował jako wyjściowy wpisujemy wartość zero.

Każdy port może pracować w 5 trybach
programowanie mikroprocesorów mikrokontrolerów

Tryb 1 i 3. Stan wysokiej impedancji. Port jako wejście.

Gdy port wyjściowy mikroprocesora znajduje się w stanie wysokiej impedancji wejściowej mamy możliwość odczytywania jego stanu. W rejestrze PINx znajdują się odwzorowania stanów wejść mikroprocesora ( mikrokontrolera ) w postaci cyfrowej. Przypisując wartość rejestru PINx zmiennej możemu odczytać jego wartość a tym samym poznać wartość na wejściach portu. 

Tryb 2. Jako źródło prądowe gdy wyjście podłączone zostanie do zera.

Gdy port mikroprocesora ( mikrokontrolera ) mamy skonfigurowany jako wejście (DDRx=0 ) i na port mikroprocesora ( mikrokontrolera ) mamy wystawione jedynki logiczne PORTxn oraz bit PUD w rejestrze SFIOR nóżka mikroprocesora ( mikrokontrolera ) spełnia funkcje źródła prądowego w takim stanie portu mikroprocesora ( mikrokontrolera ). 

Tryb 4 i 5. Port jako wyjście. (DDRx = 1)

Dla portu pracującego jako wyjściowy wartości wpisywane do rejestru PORTx (gdzie x to nazwa portu A, B, C, D itd.) są wystawiane bezpośrednio na nóżki mikroprocesora ( mikrokontrolera ).

4. Funkcje dodatkowe portów mikrokontrolera ( na przykładzie Atmega8 )

Każdy mikrokontoroler ma ograniczoną liczbę nóżek na których znajdują się wejścia wyjścia i szereg innych sygnałów. Aby ograniczyć liczbę nóżek i rozmiary mikrokontrolerów większość nóżek mikrokontrolera pełni więcej niż jedną funkcję w zależności od konfiguracji. W powyższym przykładzie (Atmega8) możemy zauważyć takie dodatkowe funkcje jak:

  • Port szeregowy znajdujący się na tych samych wyprowadzeniach co piny portu D (nóżka 2 i 3 mikrokontrolera)
  • Funkcje przerwań zewnętrznych znajdujące się na tych samych wyprowadzeniach co pinu portu D (nóżki 3 i 4)
  • Wejścia do połączenia zewnętrznego rezonatora (nóżki 9 i 10)
  • Wejścia do taktowania timerów sygnałem z zewnątrz (nóżki 6 i 11)
  • Wejścia komparatora analogowego (nóżki 12 i 13)
  • Wejścia pomiarowe przetwornika analogowo cyfrowego (nóżki 23 do 28)
  • wejścia do programowania interfejsem ISP (nóżki 1,17,18,19)
  • Wyjścia generatorów PWM (nóżka 15)

Wszystkie funkcje nóżek określa się poprzez konfiguracje odpowiednich bitów w odpowiednich rejestrach sterujących komponentami przełączającymi funkcje wyjść miktokontrolera. W celu znalezienia odpowiednich rejestrów sterujących należy zajrzeć do szczegółowej dokumentacji od konkretnie używanego mikrokontrolera.


Tematy powiązane:

  1. Sterowanie portami IO





 
Wszelkie prawa zastrzeżone! Kopiowanie, powielanie i wykorzystywanie zdjęć, treści oraz jej fragmentów bez zgody autora zabronione.
© mikroprocesory.info.pl@gmail.com 2013.