Serwis Edukacyjny
w I-LO w Tarnowie
obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

obrazek

Autor artykułu: mgr Jerzy Wałaszek
Konsultacje: Wojciech Grodowski, mgr inż. Janusz Wałaszek

©2021 mgr Jerzy Wałaszek
I LO w Tarnowie

obrazek

Mikrokontrolery

ATtiny20

Porty wejścia/wyjścia

obrazek

Educational and Non-Profit Use of Copyrighted Material:

If you use Microchip copyrighted material solely for educational (non-profit) purposes falling under the “fair use” exception of the U.S. Copyright Act of 1976 then you do not need Microchip’s written permission. For example, Microchip’s permission is not required when using copyrighted material in: (1) an academic report, thesis, or dissertation; (2) classroom handouts or textbook; or (3) a presentation or article that is solely educational in nature (e.g., technical article published in a magazine).

https://www.microchip.com/about-us/legal-information/copyright-usage-guidelines

SPIS TREŚCI
Podrozdziały

obrazek

Przegląd portów we/wy

Wszystkie porty AVR posiadają możliwość pracy jako wejście lub wyjście danych, gdy używa się ich jako ogólne, cyfrowe porty wejścia/wyjścia. Oznacza to, iż kierunek pracy jednego portu (wejście lub wyjście) można zmieniać bez ryzyka niezamierzonej zmiany kierunku innych portów za pomocą instrukcji SBI i CBI. To samo dotyczy stanów wyjściowych (jeśli dany port pracuje jako wyjście) lub włączania/wyłączania oporników podciągających (ang. pull-up resistors). Każdy z buforów wyjściowych posiada symetryczne charakterystyki obciążenia z możliwością pochłaniania lub wyprowadzania prądu. Porty posiadają wystarczającą obciążalność do sterowania bezpośrednio wyświetlaczami LED. Wszystkie porty posiadają indywidualnie wybierane oporniki podciągające o oporności niezależnej od napięcia zasilającego. Wszystkie końcówki we/wy posiadają diody zabezpieczające zarówno do VCC jak i do masy, co zaznaczono na rysunku poniżej. Kompletną listę parametrów znajdziesz w rozdziale "Charakterystyki elektryczne".

obrazek

Wszystkie rejestry i odwołania do bitów w tym rozdziale są zapisane w sposób ogólny. Mała litera “x” reprezentuje literową nazwę portu, a mała litera "n" reprezentuje numer bitu. Jednakże, gdy stosuje się definicje rejestru lub bitu w programie, należy stosować precyzyjną postać nazwy. Na przykład PORTB3 dla bitu nr 3 w porcie B, tutaj ogólnie zapisanego jako PORTxn. Fizyczne rejestry we/wy i pozycje ich bitów opisane są dalej w tym rozdziale.

Dla każdego portu przydzielone są cztery adresy w pamięci we/wy, po jednym dla rejestru danych – PORTx (ang. Data Register), dla rejestru kierunku danych – DDRx (ang. Data Direction Register), dla rejestru włączania oporników podciągających (ang. Pull-up Enable Register) – PUEx  i dla rejestru portu wejściowego – PINx (ang. Port Input Pins). Rejestr portu wejściowego znajduje się w komórce pamięci we/wy, której zawartość można tylko odczytywać, natomiast pozostałe komórki portów danych, kierunku i oporników podciągających można odczytywać i zapisywać. Jednakże zapis bitu o wartości 1 do bitu PINnx spowoduje odwrócenie stanu logicznego odpowiadającego mu bitu PORTxn w rejestrze danych.

Użycie portu we/wy jako ogólnego portu cyfrowego opisane jest w następnym podrozdziale. Większość końcówek portów jest multipleksowana z alternatywnymi funkcjami mikrokontrolera, co opisano w podrozdziale "Alternatywne funkcje Portu". Opis tych funkcji znajdziesz w dalszych rozdziałach.

Zauważ, iż włączenie alternatywnej funkcji na niektórych wyprowadzeniach portu nie wpływa na używanie innych wyprowadzeń w porcie jako ogólnego cyfrowego we/wy.

Na początek:  podrozdziału   strony 

Porty jako ogólne, cyfrowe wejście/wyjście

Porty są dwukierunkowymi portami we/wy z opcjonalnymi, wewnętrznymi opornikami podciągającymi. Poniższy rysunek pokazuje funkcjonalny opis jednej z końcówek portu we/wy, tutaj ogólnie zwanej Pxn:

obrazek

Uwaga: Sygnały WEx, WRx, WPx, WDx, REx, RRx, RPx, and RDx są wspólne dla wszystkich końcówek w obrębie tego samego portu. Sygnały clkI/O oraz SLEEP są wspólne dla wszystkich portów.

Konfigurowanie końcówek

Każde wyprowadzenie portu kontrolowane jest przez odpowiadające mu bity w rejestrach: DDxn, PORTxn, PUExn i PINxn. Bity DDxn są dostępne pod adresem we/wy DDRx, bity PORTxn są pod adresem we/wy PORTx, bity PUExn są pod adresem we/wy PUEx i bity PINxn są pod adresem we/wy PINx.

Bit DDxn w rejestrze DDRx wybiera kierunek pracy tego wyprowadzenia. Jeśli do DDxn zostanie wpisana logiczna jedynka, to wyprowadzenie Pxn jest skonfigurowane jako wyjście. Jeśli do DDxn zostanie wpisane logiczne zero, wyprowadzenie Pxn jest skonfigurowane jako wejście.
Jeśli do PORTxn zostanie wpisane 1, gdy wyprowadzenie zostało skonfigurowane jako wyjście, to na danym wyprowadzeniu pojawi się stan wysoki. Jeśli do PORTxn wpisze się logiczne 0, gdy wyprowadzenie pracuje jako wyjście, to na tym wyjściu pojawi się stan niski.
Opornik podciągający wyjście do napięcia zasilającego zostaje aktywowany, jeśli do PUExn będzie wpisana logiczna jedynka. Aby wyłączyć opornik podciągający, do PUExn musi być wpisane logiczne 0.
W poniższej tabeli dokonano podsumowania sygnałów sterujących wartością na wyjściu wyprowadzenia mikrokontrolera:

DDxn PORTxn PUExn we/wy Opornik
podciągający
Komentarz
0 X 0 wejście NIE Stan wysokiej impedancji.
0 X 1 wejście TAK Źródło prądu, jeśli stan zewnętrzny niski.
1 0 0 wyjście NIE Stan niski na wyjściu.
1 0 1 wyjście TAK NIEZALECANE.
Stan wyjściowy niski i aktywny opornik podciągający.
Powoduje ciągły, wewnętrzny przepływ prądu.
1 1 0 wyjście NIE Stan wyjściowy wysoki.
1 1 1 wyjście TAK Stan wyjściowy wysoki z aktywnym wewnętrznym opornikiem podciągającym.

Gdy warunek resetu staje się aktywny, wyprowadzenia portu przechodzą w stan wysokiej impedancji, nawet jeśli nie pracuje żaden zegar.

Zmiana stanu końcówki portu na przeciwny

Zapis logicznej jedynki do PINxn powoduje zmianę stanu PORTxn na przeciwny (z 1 na 0 lub z 0 na 1) niezależnie od wartości DDRxn.
Zauważ, iż do zmiany stanu na przeciwny pojedynczego bitu w porcie może zostać użyta instrukcja SBI.

Przełączanie kierunku portu w trybie Break-Before-Make (przerwa przed wykonaniem)

W trybie Break-Before-Make przełączanie bitu DDRxn z wejścia (0) na wyjście (1) wprowadza pośredni okres wysokiej impedancji trwający przez jeden cykl zegara systemowego, co pokazuje poniższy rysunek. Na przykład, jeśli zegar systemowy pracuje z częstotliwością 4 MHz, a bit DDRxn jest zapisywany tak, aby utworzyć na wyprowadzeniu portu wyjście danych, to pośredni okres wysokiej impedancji przez 250 ns jest wprowadzany, zanim wartość portu PORTxn stanie się widoczna na wyprowadzeniu portu. Aby uniknąć zakłóceń, zaleca się utrzymywanie maksymalnej częstości przełączania bitu DDRxn na poziomie dwóch cykli zegara systemowego. Tryb Break-Before-Make odnosi się do całego portu i włącza się go za pomocą bitu BBMx.

Przełączanie pomiędzy wejściem a wyjściem w trybie Break-Before-Make.

obrazek

Odczyt wartości końcówki portu

Niezależnie od wartości bitu kierunku danych DDxn, końcówkę portu można odczytywać poprzez bit rejestru PINxn. Jak pokazano na schemacie z początku tego rozdziału bit rejestru PINxn oraz poprzedzający go przerzutnik latch tworzą synchronizator:

obrazek

Jest on konieczny, aby uniknąć metastabilności, jeśli fizyczna końcówka portu zmienia wartość w pobliżu zbocza impulsu wewnętrznego zegara, lecz wprowadza on również opóźnienie. Poniższy rysunek pokazuje wykres czasowy synchronizacji, gdy odczytywany jest stan logiczny przykładany zewnętrznie do końcówki portu. Maksymalne i minimalne czasy opóźnień propagacyjnych są oznaczone odpowiednio jako tpd,max i tpd,min.

obrazek

Rozważmy sytuację, gdy okres zegarowy rozpoczyna się tuż za pierwszą opadającą krawędzią zegara systemowego. Przerzutnik latch jest zatrzaśnięty przy niskim poziomie sygnału zegarowego, a staje się przezroczysty (na wyjściu pojawia się sygnał z wejścia D), gdy sygnał zegara przyjmuje stan wysoki, co pokazuje na powyższym wykresie zakreskowany na czerwono obszar. Gdy sygnał zegara wróci do stanu niskiego, wartość sygnału z wejścia zostaje zatrzaśnięta w przerzutniku latch. Przy następnej krawędzi narastającej zegara stan wyjścia Q przerzutnika latch zostaje przepisany do bitu rejestru PINxn. Jak pokazują czasy tpd,max i tpd,min, przejście sygnału z końcówki do bitu portu PINxn będzie opóźnione o czas pomiędzy ½ a 1½ okresu zegara systemu.

Gdy odczytywana jest wartość końcówki portu ustawiona programowo, należy wstawić instrukcję NOP, jak pokazano na poniższym wykresie. Instrukcja OUT ustawia przerzutnik latch przy dodatniej krawędzi zegara (przejście z 0 na 1). W tym przypadku opóźnienie tpd wprowadzane przez synchronizator wynosi jeden okres zegara systemowego.

obrazek

Uaktywnienienie wejścia cyfrowego a tryby uśpienia

Jak pokazano na schemacie z początku rozdziału, wejściowy sygnał cyfrowy może zostać zwarty do masy przed wejściem bramki Schmitta:

obrazek

Sygnał oznaczony na tym rysunku jako SLEEP jest ustawiany przez sterownik usypiania mikrokontrolera w trybie wyłączania napięcia oraz w trybie gotowości, aby uniknąć wysokiego poboru energii, jeśli jakieś sygnały wejściowe pozostawiono w stanie pośrednim np. w pobliżu wartości VCC/2. Sygnał SLEEP zostaje anulowany dla końcówek portu aktywowanych jako końcówki przerwań zewnętrznych. Jeśli żądanie przerwania zewnętrznego nie jest włączone, to sygnał SLEEP jest aktywny również dla tych końcówek.

Sygnał SLEEP jest również anulowany przez różne inne funkcje alternatywne, jak opisano w kolejnym podrozdziale.

Jeśli wysoki stan logiczny utrzymuje się na końcówce asynchronicznego przerwania zewnętrznego skonfigurowanej jako "przerwanie przy narastającym zboczu, opadającym zboczu lub zmianie stanu końcówki", gdy przerwanie zewnętrzne nie jest uaktywnione, to odpowiadający tej końcówce znacznik przerwania zewnętrznego zostanie ustawiony, gdy mikrokontroler wybudzi się z powyżej wspomnianego trybu uśpienia, ponieważ zwarcie do masy w tych trybach uśpienia powoduje zmianę stanu logicznego.

Niepodłączone końcówki

Jeśli niektóre końcówki nie są używane, to zaleca się, aby posiadały one zdefiniowany poziom. Nawet chociaż większość cyfrowych wejść jest wyłączana w głębokich trybach uśpienia, jak opisano powyżej, należy unikać "pływających" wejść (gdy sygnał wejściowy ulega zmianom), aby zmniejszyć pobór prądu we wszystkich pozostałych trybach, gdzie cyfrowe wejścia są włączone (reset, tryb aktywny i tryb bezczynny).

Najprostszą metodą zapewnienia określonego poziomu na nieużywanej końcówce jest włączenie wewnętrznego opornika podciągającego. W takim przypadku opornik podciągający zostanie wyłączony podczas resetu. Jeśli ważny jest niski pobór energii podczas resetu, zaleca się użycie zewnętrznego opornika podciągającego w górę (ang. pull-up, opornik 10k podłączony do końcówki portu i napięcia zasilającego VCC) lub w dół (ang. pull-down, opornik 10k podłączony do końcówki portu i masy GND). Podłączanie nieużywanych końcówek bezpośrednio do VCC lub do GND nie jest zalecane, ponieważ może to wywołać wysokie prądy, jeśli dana końcówka przypadkowo zostanie skonfigurowana jako wyjście.

Przykład programowy

Poniższy przykład kodu pokazuje, jak ustawić końcówkę 0 portu B w stan wysoki, końcówkę 1 w stan niski, a końcówki 2 i 3 jako wejścia z opornikiem podciągającym przypisanym do końcówki 2. Wartości wynikowe z końcówek zostają odczytane z powrotem, lecz jak przedyskutowano wcześniej, instrukcja NOP zostaje wstawiona, aby wprowadzić odpowiednie opóźnienie niezbędne do poprawnego odczytu wartości przypisanej przed chwilą do niektórych końcówek.
    ...
    ; Zdefiniuj oporniki podciągające i ustaw wyjścia w stan wysoki
    ; Zdefiniuj kierunki dla końcówek portu
    ldi r16,(1<<PUEB2)
    ldi r17,(1<<PB0)
    ldi r18,(1<<DDB1)|(1<<DDB0)
    out PUEB,r16
    out PORTB,r17
    out DDRB,r18
    ; Wstaw nop dla synchronizacji
    nop
    ; Czytaj stan końcówek portu
    in r16,PINB
    ...

Na początek:  podrozdziału   strony 

Alternatywne funkcje portów

Większość końcówek portów w mikrokontrolerach ATtiny20 posiada alternatywne funkcje jako dodatek to ogólnego wejścia/wyjścia cyfrowego. Na poniższym rysunku przedstawione zostały sygnały sterujące końcówkami portów, które mogą anulować sygnały podstawowe, pokazane na rysunku z początku tego rozdziału.

Polega to na tym, iż sygnał anulujący wyłącza jedną z funkcji standardowych portu, a drugi sygnał sterujący wprowadza wartość alternatywną tej funkcji.

obrazek

PUOExn: Pxn PULL-UP OVERRIDE ENABLE
włączenie anulacji opornika podciągającego dla Pxn
       WEx: WRITE PUEx
zapis PUEx
PUOVxn: Pxn PULL-UP OVERRIDE VALUE
stan opornika podciągającego dla Pxn po anulacji
  REx READ PUEx
odczyt PUEx
DDOExn: Pxn DATA DIRECTION OVERRIDE ENABLE
włączenie anulacji kierunku danych dla Pxn
  WDx: WRITE DDRx
zapis DDRx
DDOVxn: Pxn DATA DIRECTION OVERRIDE VALUE
kierunek danych dla Pxn po anulacji
  RDx: READ DDRx
odczyt DDRx
PVOExn: Pxn PORT VALUE OVERRIDE ENABLE
włączenie anulacji stanu wyjściowego portu Pxn
  RRx: READ PORTx REGISTER
odczyt rejestru PORTx
PVOVxn: Pxn PORT VALUE OVERRIDE VALUE
stan wyjściowy portu Pxn po anulacji
  WRx WRITE PORTx
zapis rejestru PORTx
DIEOExn: Pxn DIGITAL INPUT-ENABLE OVERRIDE ENABLE
włączenie anulacji włączenia wejścia cyfrowego dla Pxn
  RPx: READ PORTx PIN
odczyt końcówki PORTx
DIEOVxn:  Pxn DIGITAL INPUT-ENABLE OVERRIDE VALUE
stan włączenia wejścia cyfrowego Pxn po anulacji
  WPx: WRITE PINx
zapis PINx
SLEEP sterowanie uśpieniem   clkI/O:  I/O CLOCK
zegar we/wy
PTOExn: Pxn, PORT TOGGLE OVERRIDE ENABLE
włączenie anulacji zmiany stanu portu Pxn na przeciwny
  DIxn: DIGITAL INPUT PIN n ON PORTx
końcówka wejścia cyfrowego w PORTx
      AIOxn: ANALOG INPUT/OUTPUT PIN n ON PORTx
końcówka n we/wy analogowego w PORTx
Uwaga: Sygnały WEx, WRx, WPx, WDx, REx, RRx, RPx i RDx są wspólne dla wszystkich końcówek wewnątrz tego samego portu. Sygnały clkI/O i SLEEP są wspólne dla wszystkich portów. Wszystkie pozostałe sygnały są indywidualne dla każdej końcówki.

Ilustracja na powyższym obrazku służy jako ogólny opis, który odnosi się do wszystkich końcówek portów w rodzinie mikrokontrolerów AVR. Niektóre sygnały anulujące mogą nie występować we wszystkich końcówkach portów.

Poniższa tabela podsumowuje funkcje sygnałów anulujących. Indeksy końcówek i portów z obrazka powyżej nie będą pokazywane w następnych tabelach. Sygnały anulujące są generowane wewnętrznie w modułach posiadających alternatywną funkcję.

Nazwa sygnału Pełna nazwa Opis
PUOE Pull-up Override Enable
włączenie anulacji opornika podciągającego
Jeśli sygnał ten ma wysoki poziom logiczny, to sterowanie przyłączaniem opornika podciągającego jest kontrolowane przez sygnał PUOV. Jeśli sygnał ten ma niski stan logiczny, to opornik podciągający zostanie podłączony do linii portu, gdy PUExn = 0b1.
PUOV Pull-up Override Value
stan opornika podciągającego po anulacji
Jeśli PUOE jest w stanie wysokim, to opornik podciągający jest podłączany/odłączany przez stan sygnału PUOV bez względu na ustawienie bitu rejestrowego PUExn.
DDOE Data Direction  Override Enable
włączenie anulacji kierunku danych
Jeśli sygnał ten ma stan wysoki, kierunek działania portu jest kontrolowany przez sygnał DDOV. Jeśli ten sygnał ma stan niski, to kierunkiem pracy portu steruje bit rejestrowy DDxn.
DDOV Data Direction Override Value
kierunek danych po anulacji
Jeśli DDOE ma stan wysoki, to kierunkiem pracy portu steruje sygnał DDOV bez względu na ustawienie bitu rejestrowego DDxn.
PVOE Port Value Override Enable
włączenie anulacji stanu wyjściowego portu
Jeśli sygnał ten ma stan wysoki i aktywne jest wyjście portu, to stan na tym wyjściu kontroluje sygnał PVOV. Jeśli PVOE ma stan niski i wyjście portu jest aktywne, to stan na tym wyjściu określa bit rejestrowy PORTxn.
PVOV Port Value Override Value
stan wyjścia portu po anulacji
Jeśli PVOE jest w stanie wysokim, to stan wyjścia portu (jeśli port pracuje jako wyjście) określa PVOV, bez względu na ustawienie bitu rejestrowego PORTxn.
PTOE Port Toggle Override Enable
włączenie anulacji zmiany stanu portu na przeciwny
Jeśli PTOE jest w stanie wysokim, to bit rejestrowy PORTxn zostanie zanegowany.
DIEOE Digital Input Enable Override Enable
włączenie anulacji włączenia wejścia cyfrowego
Jeśli sygnał ten jest ustawiony, to włączanie/wyłączanie wejścia cyfrowego jest kontrolowane stanem sygnału DIEOV. Jeśli sygnał DIEOE ma stan niski to włączanie/wyłączanie wejścia cyfrowego określa stan mikrokontrolera (tryb normalny, tryb uśpienia).
DIEOV Digital Input Enable Override Value
stan włączenia wejścia cyfrowego po anulacji
Jeśli sygnał DIEOE jest ustawiony, to wejście cyfrowe jest włączane/wyłączane stanem sygnału DIEOV, bez względu na stan mikrokontrolera (tryb normalny, tryb uśpienia).
DI Digital Input
wejście cyfrowe
Jest to wejście cyfrowe dla alternatywnych funkcji. Na rysunku powyżej jest ono połączone z wyjściem bramki Schmitta przed synchronizatorem. O ile wejście cyfrowe nie będzie używane jako źródło zegarowe, moduł z alternatywną funkcją będzie korzystał ze swojego własnego synchronizatora.
AIO Analog Input/Output
wejście/wyjście analogowe
Jest to analogowe wejście/wyjście dla alternatywnych funkcji. Sygnał jest bezpośrednio podłączony do końcówki mikrokontrolera i może być używany w obu kierunkach.

Kolejne podrozdziały krótko opisują alternatywne funkcje dla każdego portu oraz łączą sygnały anulujące z tymi funkcjami. Więcej szczegółów znajdziesz w opisie funkcji alternatywnych w dalszych rozdziałach.

Funkcje alternatywne portu A

Alternatywne funkcje końcówek portu A w mikrokontrolerach ATtiny20 są pokazane w poniższej tabeli:

obrazek

Końcówka Funkcja alternatywna
PA0 ADC0: Kanał wejściowy 0 dla przetwornika A/C
PCINT0: Źródło 0 przerwania 0 przy zmianie stanu końcówki
PA1 ADC1: Kanał wejściowy 1 dla przetwornika A/C
AIN0: Wejście nieodwracające dla komparatora analogowego
PCINT1:Źródło 1 przerwania 0 przy zmianie stanu końcówki
PA2 ADC2: Kanał wejściowy 2 dla przetwornika A/C
AIN1: Wejście odwracające dla komparatora analogowego
PCINT2: Źródło 2 przerwania 0 przy zmianie stanu końcówki
PA3 ADC3: Kanał wejściowy 3 dla przetwornika A/C
PCINT3: Źródło 3 przerwania 0 przy zmianie stanu końcówki
PA4 ADC4: Kanał wejściowy 4 dla przetwornika A/C
PCINT4: Źródło 4 przerwania 0 przy zmianie stanu końcówki
PA5 ADC5: Kanał wejściowy 5 dla przetwornika A/C
PCINT5: Źródło 5 przerwania 0 przy zmianie stanu końcówki
PA6 ADC6: Kanał wejściowy 6 dla przetwornika A/C
SS : Wybór SPI Slave
PCINT6: Źródło 6 przerwania 0 przy zmianie stanu końcówki
PA7 ADC7: Kanał wejściowy 7 dla przetwornika A/C
OC0B: Wyjście zgodności porównania B z timera/licznika 0
ICP1: Końcówka Input Capture dla timera/licznika 1
T1: Źródło zegarowe dla timera/licznika 1
SCL: Zegar TWI
SCK: Zegar SPI
PCINT7: Źródło 7 przerwania 0 przy zmianie stanu końcówki

Port A, Bit 0 – ADC0/PCINT0

Port A, Bit 1 – ADC1/AIN0/PCINT1

Port A, Bit 2 – ADC2/AIN1/PCINT2

Port A, Bit 3 – ADC3/PCINT3

Port A, Bit 4 – ADC4/PCINT4

Port A, Bit 5 – ADC5/PCINT5

Port A, Bit 6 – ADC6/SS/PCINT6

Port A, Bit 7 – ADC7/OC0B/ICP1/T1/SCL/SCK/PCINT7

Sygnały anulujące dla funkcji alternatywnych w PA[7:5]

Nazwa
sygnału
PA7/ADC7/OC0B/ICP1/
T1/SCL/SCK/PCINT7
PA6/ADC6/SS/PCINT6 PA5/ADC5/PCINT5
PUOE 0 0 0
PUOV 0 0 0
DDOE TWEN + (SPE • MSTR) SPE • MSTR 0
DDOV TWEN • SCL_OUT 0 0
PVOE TWEN + (SPE • MSTR) +
OC0B_ENABLE
0 0
PVOV TWEN • (SPE • MSTR • SCK_OUT
+ (SPE + MSTR) • OC0B)
0 0
PTOE 0 0 0
DIEOE PCINT7 • PCIE0 + ADC7D  PCINT6 • PCIE0 + ADC6D PCINT5 • PCIE0 + ADC5D
DIEOV PCINT7 • PCIE0 PCINT6 • PCIE0 PCINT5 • PCIE0
DI ICP1 / SCK / T1 / SCL /
wejście PCINT7
SPI SS / wejście PCINT6 wejście PCINT5
AIO ADC7 / wejście SCL wejście ADC6 wejście ADC5
Uwaga:   Gdy zostanie włączony interfejs TWI sterowanie szybkością zmian oraz filtr zakłóceń szpilkowych zostają uaktywnione na PA7. Filtr jest włączany pomiędzy AIOxn a moduł TWI.

Sygnały anulujące dla funkcji alternatywnych w PA[4:2]

Nazwa
sygnału
PA4/ADC4/PCINT4 PA3/ADC3/PCINT3 PA2/ADC2/AIN1/PCINT2
PUOE 0 0 0
PUOV 0 0 0
DDOE 0 0 0
DDOV 0 0 0
PVOE 0 0 0
PVOV 0 0 0
PTOE 0 0 0
DIEOE (PCINT4 • PCIE0) + ADC4D (PCINT3 • PCIE0) + ADC3D (PCINT2 • PCIE0) + ADC2D
DIEOV PCINT4 • PCIE0 PCINT3 • PCIE0 PCINT3 • PCIE0
DI wejście PCINT4 wejście PCINT1 wejście PCINT0
AIO wejście ADC4 wejście ADC3 ADC2 / wejście odwracające
komparatora analogowego

Sygnały anulujące dla funkcji alternatywnych w PA[1:0]

Nazwa
sygnału
PA1/ADC1/AIN0/PCINT1 PA0/ADC0/PCINT0
PUOE 0 0
PUOV 0 0
DDOE 0 0
DDOV 0 0
PVOE 0 0
PVOV 0 0
PTOE 0 0
DIEOE PCINT1 • PCIE0 + ADC1D PCINT0 • PCIE0 + ADC0D
DIEOV PCINT1 • PCIE0 PCINT0 • PCIE0
DI wejście PCINT1 wejście PCINT0
AIO ADC1 / wejście nieodwracające
komparatora analogowego
wejście ADC1

Funkcje alternatywne portu B

 obrazek

Końcówka Funkcja alternatywna
PB0 T0: Źródło zegarowe dla timera/licznika 0
CLKI: Wejście zegara zewnętrznego
TPICLK: Zegar programowania szeregowego
PCINT8:  Źródło 8 przerwania 1 przy zmianie stanu końcówki
PB1 OC1A: Wyjście zgodności porównania A z timera/licznika 1
SDA: We/wy danych interfejsu TWI
MOSI: Wyjście Master / wejście Slave interfejsu SPI
TPIDATA: Dane programowania szeregowego
PCINT9: Źródło 9 przerwania 1 przy zmianie stanu końcówki
PB2 INT0: Wejście przerwania zewnętrznego 0
OC0A: Wyjście zgodności porównania A z timera/licznika 0
OC1B: Wyjście zgodności porównania B z timera/licznika 1
MISO: Wejście Master  / wyjście Slave interfejsu SPI
CKOUT: Wyjście zegara systemowego
PCINT10: Źródło 10 przerwania 1 przy zmianie stanu końcówki
PB3 RESET: Końcówka Reset
PCINT11: Źródło 11 przerwania 1 przy zmianie stanu końcówki


Port B, Bit 0 – T0/CLKI/TPICLK/PCINT8

Port B, Bit 1 – OC1A/SDA/MOSI/TPIDATA/PCINT9

Port B, Bit 2 – INT0/OC0A/OC1B/MISO/CKOUT/PCINT10

Port B, Bit 3 – RESET/PCINT11

Sygnały anulujące dla funkcji alternatywnych w PB[3:2]

Nazwa
sygnału
PB3/RESET/PCINT11 PB2/INT0/OC0A/OC1B/MISO/CKOUT/PCINT10
PUOE RSTDISBL(1) CKOUT (2)
PUOV 1 0
DDOE RSTDISBL(1) CKOUT (2) + (SPE • MSTR)
DDOV 0 CKOUT (2)
PVOE RSTDISBL(1) CKOUT (2) + OC0A_ENABLE + OC1B_ENABLE + (SPE • MSTR)
PVOV 0 CKOUT (2) • Zegar systemowy + CKOUT • SPE • MSTR •
SPI_SLAVE_OUT + CKOUT • (SPE + MSTR) • OC1B_ENABLE •
OC1B + CKOUT • (SPE + MSTR) • OC1B_ENABLE • OC0A
PTOE 0 0
DIEOE RSTDISBL(1) + (PCINT11 • PCIE1) (PCINT10 • PCIE1) + INT0
DIEOV RSTDISBL(1) •PCINT11 • PCIE1 (PCINT10 • PCIE1) + INT0
DI Wejście PCINT11 INT0 / PCINT10 / Wejście Master SPI
AIO    
Uwagi: 1. RSTDISBL ma stan 1, gdy ten bit konfiguracyjny został zaprogramowany na "0".
  2. CKOUT ma stan 1, gdy ten bit konfiguracyjny został zaprogramowany na "0".

Sygnały anulujące dla funkcji alternatywnych w PB[1:0]

Nazwa
sygnału
PB1/OC1A/SDA/MOSI/PCINT9 PB0/T0/CLKI/PCINT8
PUOE 0 EXT_CLOCK (1)
PUOV 0 0
DDOE (SPE • MSTR) + TWEN EXT_CLOCK (1)
DDOV TWEN • SDA_OUT 0
PVOE TWEN + (SPE • MSTR) + OC1A_ENABLE EXT_CLOCK (1)
PVOV TWEN • SPE • MSTR • SPI_MASTER_OUT + TWEN
(SPE + MSTR) • OC1A
0
PTOE 0 0
DIEOE PCINT9 • PCIE1 EXT_CLOCK (1) + (PCINT8 • PCIE1)
DIEOV PCINT9 • PCIE1 (EXT_CLOCK (1)PWR_DOWN) +
(EXT_CLOCK (1) • PCINT8 • PCIE1)
DI PCINT9 / Wejście Slave SPI CLOCK / PCINT8 / Wejście T0
AIO Wejście SDA  
Uwagi: 1. EXT_CLOCK = jako zegar systemowy wybrany jest zegar zewnętrzny.
    Gdy zostanie włączony interfejs TWI, sterowanie szybkością zmian oraz filtr zakłóceń szpilkowych stają się aktywne na końcówce PB1. Filtr zakłóceń jest włączany pomiędzy AIOxn a TWI.
Na początek:  podrozdziału   strony 

Opis rejestrów

PORTCR – Port Control Register – Rejestr sterujący portami

Bit 7 6 5 4 3 2 1 0  
0x08 - - - - - - BBMB BBMA PORTCR
Zapis/Odczyt O O O O O O Z/O Z/O  
Wartość początkowa 0 0 0 0 0 0 0 0  

Bity 7:2 – Zarezerwowane

Te bity są zarezerwowane i przy odczycie dają zawsze wartość zero.

Bit 1 – BBMB: Break-Before-Make Mode Enable – Włączenie trybu Break-Before-Make dla portu A

Gdy bit ten zostanie ustawiony, włączany jest tryb Break-Before-Makedla całego portu B. W trybie tym wstawiany jest cykl wysokiej impedancji , gdy bit DDRBn zostaje zapisany jedynką w celu ustawienia linii portu jako wyjście. Więcej informacji znajdziesz w podrozdziale "Przełączanie kierunku portu w trybie Break-Before-Make".

Bit 0 – BBMA: Break-Before-Make Mode Enable – Włączenie trybu Break-Before-Make dla portu B

Gdy bit ten zostanie ustawiony, włączany jest tryb Break-Before-Makedla całego portu A. W trybie tym wstawiany jest cykl wysokiej impedancji , gdy bit DDRAn zostaje zapisany jedynką w celu ustawienia linii portu jako wyjście. Więcej informacji znajdziesz w podrozdziale "Przełączanie kierunku portu w trybie Break-Before-Make".


PUEA – Port A Pull-up Enable Control Register – Rejestr włączania oporników podciągających dla portu A

Bit 7 6 5 4 3 2 1 0  
0x03 PUEA7 PUEA6 PUEA5 PUEA4 PUEA3 PUEA2 PUEA1 PUEA0 PUEA
Zapis/Odczyt Z/O Z/O Z/O Z/O Z/O Z/O Z/O Z/O  
Wartość początkowa 0 0 0 0 0 0 0 0  

PORTA – Port A Data Register – Rejestr danych portu A

Bit 7 6 5 4 3 2 1 0  
0x02 PORTA7 PORTA6 PORTA5 PORTA4 PORTA3 PORTA2 PORTA1 PORTA0 PORTA
Zapis/Odczyt Z/O Z/O Z/O Z/O Z/O Z/O Z/O Z/O  
Wartość początkowa 0 0 0 0 0 0 0 0  

DDRA – Port A Data Direction Register – Rejestr kierunku przesyłu danych w porcie A

Bit 7 6 5 4 3 2 1 0  
0x01 DDA7 DDA6 DDA5 DDA4 DDA3 DDA2 DDA1 DDA2 DDRA
Zapis/Odczyt Z/O Z/O Z/O Z/O Z/O Z/O Z/O Z/O  
Wartość początkowa 0 0 0 0 0 0 0 0  

PINA – Port A Input Pins – Stan końcówek wejściowych portu A

Bit 7 6 5 4 3 2 1 0  
0x00 PINA7 PINA6 PINA5 PINA4 PINA3 PINA2 PINA1 PINA0 PINA
Zapis/Odczyt Z/O Z/O Z/O Z/O Z/O Z/O Z/O Z/O  
Wartość początkowa 0 0 0 0 0 0 0 0  

PUEB – Port B Pull-up Enable Control Register – Rejestr włączania oporników podciągających dla portu B

Bit 7 6 5 4 3 2 1 0  
0x07 - - - - PUEB3 PUEB2 PUEB1 PUEB0 PUEB
Zapis/Odczyt O O O O Z/O Z/O Z/O Z/O  
Wartość początkowa 0 0 0 0 0 0 0 0  

PORTB – Port B Data Register – Rejestr danych portu B

Bit 7 6 5 4 3 2 1 0  
0x06 - - - - PORTB3 PORTB2 PORTB1 PORTB0 PORTB
Zapis/Odczyt O O O O Z/O Z/O Z/O Z/O  
Wartość początkowa 0 0 0 0 0 0 0 0  

DDRB – Port B Data Direction Register – Rejestr kierunku przesyłu danych w porcie B

Bit 7 6 5 4 3 2 1 0  
0x05 - - - - DDB3 DDB2 DDB1 DDB0 DDRB
Zapis/Odczyt O O O O Z/O Z/O Z/O Z/O  
Wartość początkowa 0 0 0 0 0 0 0 0  

PINB – Port B Input Pins – Stan końcówek wejściowych portu B

Bit 7 6 5 4 3 2 1 0  
0x04 - - - - PINB3 PINB2 PINB1 PINB0 PINB
Zapis/Odczyt O O O O Z/O Z/O Z/O Z/O  
Wartość początkowa 0 0 0 0 N/A N/A N/A N/A  
Na początek:  podrozdziału   strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2021 mgr Jerzy Wałaszek

Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.