Serwis Edukacyjny w I-LO w Tarnowie Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej Autor artykułu: mgr Jerzy Wałaszek |
©2024 mgr Jerzy Wałaszek |
https://www.microchip.com/about-us/legal-information/copyright-usage-guidelines
Termin Input Capture oznacza reakcję na zdarzenia, które mogą się pojawić w trakcie pracy mikrokontrolera. Reakcja ta polega na zapisaniu czasu wystąpienia tego zdarzenia, czyli na Rejestracji Czasu Zdarzenia Wejściowego. Odbywa się to w ten sposób, iż w momencie wykrycia zdarzenia (np. zmiany poziomu sygnału na określonej końcówce mikrokontrolera) następuje zapamiętanie w osobnym rejestrze stanu timera/licznika (stąd słowo Capture, które po angielsku oznacza "przechwycenie" lub "zarejestrowanie"). Stan ten jest znacznikiem czasu (ang. time-stamp), w którym wystąpiło zdarzenie i może być w różny sposób wykorzystywany w aplikacji.
Termin Output Compare odnosi się do zmiany stanu wybranej końcówki, jeśli wewnętrzny licznik odmierzy odpowiedni czas. Odbywa się to w ten sposób, iż stan licznika jest porównywany z rejestrem przechowującym znacznik czasu. Gdy licznik osiągnie wartość znacznika czasu, występuje zgodność porównania (ang. Compare Match) i w tym momencie mikrokontroler może wykonać różne operacje, np. zmienić stan logiczny określonej końcówki. Pozwala to generować różne przebiegi czasowe.
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 Parametry 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 "Typowe Parametry – TA = -40°C do 85°C".
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ą trzy adresy w pamięci we/wy, po jednym dla rejestru danych – PORTx (ang. Data Register), dla rejestru kierunku danych – DDRx (ang. Data Direction Register) 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 i można odczytywać i zapisywać. Dodatkowo bit wyłączania oporników podciągających PUD (ang. Pull-up Disable) w rejestrze SFIOR po ustawieniu na jeden wyłącza funkcję podciągania dla wszystkich końcówek we wszystkich portach.
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.
Uwaga: 1. WPx, WDx, RRx, RPx, i RDx są wspólne dla wszystkich końcówek w obrębie tego samego portu. clkI/O, SLEEP i PUD są wspólne dla wszystkich portów.
Każda końcówka portu składa się z trzech bitów rejestrowych: DDxn, PORTxn i PINxn. Jak pokazano w podrozdziale "Opis rejestrów" bity DDxn są dostępne pod adresem we/wy DDRx, bity PORTxn pod adresem we/wy PORTx, a bity PINxn pod adresem we/wy PINx.
Bit DDxn w rejestrze DDRx wybiera kierunek pracy tej końcówki. Jeśli w DDxn jest zapisany stan logiczny 1, to Pxn zostaje skonfigurowane jako wyjście. Jeśli DDxn jest wyzerowane,, Pxn jest skonfigurowane jako końcówka wejścia.
Jeśli w PORTxn zostanie zapisany stan logiczny 1, gdy ta końcówka pracuje jako wejście, to uaktywniony będzie opornik podciągający. Aby wyłączyć opornik podciągający, należy wpisać do PORTxn zero lub skonfigurować tę końcówkę jako końcówkę wyjścia. Gdy warunek resetu staje się aktywny, końcówki portu przechodzą w stan wysokiej rezystancji, nawet jeśli nie pracuje żaden zegar.
Jeśli w PORTxn zostanie zapisany stan logiczny 1, gdy końcówka ta jest skonfigurowana jako końcówka wyjścia, to zostaje ona wysterowana w stan wysoki 1. Jeśli do PORTxn zostanie wpisane zero logiczne, gdy końcówka pracuje jako wyjście, to zostanie ona wysterowana w stan niski 0.
Gdy występuje przełączenie pomiędzy stanem wysokiej
impedancji ({DDxn, PORTxn} = 0b00) a
wyjściem w stanie wysokim 1 ({DDxn, PORTxn} =
0b11), musi pojawić się stan pośredni albo z włączonym
opornikiem podciągającym
Przełączenie pomiędzy wejściem z podciąganiem oraz wyjściem w
stanie niskim daje ten sam problem. Użytkownik musi użyć albo
stanu wysokiej impedancji
DDxn | PORTxn | PUD (w SFIOR) |
we/wy | Podciąganie | Komentarz |
0 | 0 | X | Wejście | Nie | Stan wysokiej impedancji (Hi-Z) |
0 | 1 | 0 | Wejście | Tak | Pxn będzie wyprowadzać prąd, gdy zewnętrznie wysterowane stanem niskim |
0 | 1 | 1 | Wejście | Nie | Stan wysokiej impedancji (Hi-Z) |
1 | 0 | X | Wyjście | Nie | Wyjście w stanie niskim (pobieranie prądu) |
1 | 1 | X | Wyjście | Nie | Wyjście w stanie wysokim (wyprowadzanie prądu) |
Niezależnie od ustawienia bitu kierunku danych DDxn końcówka portu może być odczytywana poprzez bit rejestrowy PINxn. Jak pokazano na schemacie z początku podrozdziału bit rejestrowy PINxn i poprzedzający go przerzutnik latch tworzą synchronizator. Jest on potrzebny, aby uniknąć metastabilności, jeśli fizyczna końcówka zmienia wartość w pobliżu zbocza wewnętrznego zegar, lecz wprowadza on również pewne 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.
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.
Poniższy przykład kodu pokazuje, jak ustawić końcówki portu B 0 i 1 w stan wysoki, 2 i 3 w stan niski, i zdefiniować końcówki 4...7 jako wejścia z opornikiem podciągającym podpiętym do końcówek 6 i 7. Końcówki są odczytywane z powrotem, lecz jak przedyskutowano poprzednio, została wstawiona instrukcja NOP, aby móc odczytać wartość poprzednio przypisaną do niektórych z końcówek.
Przykład w kodzie maszynowym(1) |
... ; Zdefiniuj podciąganie i ustaw wyjścia w stan wysoki ; Zdefiniuj kierunki dla końcówek portu ldi r16,(1<<PB7)|(1<<PB6)|(1<<PB1)|(1<<PB0) ldi r17,(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0) out PORTB,r16 out DDRB,r17 ; Wstaw NOP dla synchronizacji nop ; Odczytaj końcówki portu in r16,PINB ... |
Przykład w języku C |
unsigned char i; ... /* Zdefiniuj podciąganie i ustaw wyjścia w stan wysoki */ /* Zdefiniuj kierunki dla końcówek portu */ PORTB = (1<<PB7)|(1<<PB6)|(1<<PB1)|(1<<PB0); DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0); /* Wstaw NOP dla synchronizacji */ _NOP(); /* Odczytaj końcówki portu */ i = PINB; ... |
Jak pokazano na schemacie z początku rozdziału, wejściowy sygnał cyfrowy może zostać zwarty do masy przed wejściem bramki Schmitta:
Sygnał oznaczony na tym rysunku jako SLEEP jest ustawiany przez sterownik usypiania mikrokontrolera w trybie wyłączania napięcia (ang. Power-down Mode), w trybie oszczędzania energii (ang. Power-save Mode), w trybie gotowości (ang. Stand-by Mode) i w trybie rozszerzonej gotowości (ang. Extended Stand-by Mode), aby uniknąć wysokiego poboru energii, jeśli jakieś sygnały wejściowe pozostawiono w stanie pośrednim np. w pobliżu wartości analogowej 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.
Jeśli niektóre końcówki są nieużywane, to zaleca się, aby te końcówki posiadały zdefiniowany poziom. Nawet jeśli większość wejść cyfrowych jest wyłączona w głębokich trybach uśpienia, jak opisano powyżej, niepodłączonych wejść należy unikać, aby zmniejszyć pobór prądu we wszystkich innych trybach, gdzie cyfrowe wejścia są włączone (reset, tryb aktywny i tryb bezczynności).
Najprostszą metodą zapewnienia zdefiniowanego poziomu nieużywanej końcówki jest włączenie wewnętrznych oporników podciągających. W tym wypadku opornik podciągający będzie wyłączony podczas resetu. Jeśli niski pobór prądu podczas resetu jest ważny, to zaleca się użycie zewnętrznych oporników podciągających w górę lub w dół (dołączonych do Vcc lub do GND). Nie jest zalecane bezpośrednie podłączanie nieużywanych końcówek do Vcc lub do GND, ponieważ może to spowodować pobór nadmiernego prądu, jeśli końcówka zostanie przypadkowo skonfigurowana jako wyjście.
PUOExn: | Pxn PULL-UP OVERRIDE ENABLE włączenie anulacji opornika podciągającego dla Pxn |
PUD: | PULLUP DISABLE wyłączenie funkcji podciągania |
|
PUOVxn: | Pxn PULL-UP OVERRIDE VALUE stan opornika podciągającego dla Pxn po anulacji |
WDx: | WRITE DDRx zapis DDRx |
|
DDOExn: | Pxn DATA DIRECTION OVERRIDE
ENABLE włączenie anulacji kierunku danych dla Pxn |
RDx: | READ DDRx odczyt DDRx |
|
DDOVxn: | Pxn DATA DIRECTION OVERRIDE
VALUE kierunek danych dla Pxn po anulacji |
RRx: | READ PORTx REGISTER odczyt rejestru PORTx |
|
PVOExn: | Pxn PORT VALUE OVERRIDE
ENABLE włączenie anulacji stanu wyjściowego portu Pxn |
WRx | WRITE PORTx zapis rejestru PORTx |
|
PVOVxn: | Pxn PORT VALUE OVERRIDE
VALUE stan wyjściowy portu Pxn po anulacji |
RPx: | READ PORTx PIN odczyt końcówki PORTx |
|
DIEOExn: | Pxn DIGITAL INPUT-ENABLE
OVERRIDE ENABLE włączenie anulacji włączenia wejścia cyfrowego dla Pxn |
WPx: | WRITE PINx zapis PINx |
|
DIEOVxn: | Pxn DIGITAL INPUT-ENABLE
OVERRIDE VALUE stan włączenia wejścia cyfrowego Pxn po anulacji |
clkI/O: | I/O CLOCK zegar we/wy |
|
SLEEP | sterowanie uśpieniem | 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 WPx, WDx, RRx, RPx i RDx są wspólne dla wszystkich końcówek wewnątrz tego samego portu. Sygnały clkI/O, SLEEP i PUD 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 |
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 DDxn, PORTxn i bitu PUD. |
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. |
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.
Alternatywną funkcją portu A jest dolny bajt adresu oraz linie danych dla interfejsu pamięci zewnętrznej.
Końcówka portu | Funkcje alternatywne |
PA7 | AD7 (bit 7 adresu i danych interfejsu pamięci zewnętrznej) |
PA6 | AD6 (bit 6 adresu i danych interfejsu pamięci zewnętrznej) |
PA5 | AD5 (bit 5 adresu i danych interfejsu pamięci zewnętrznej) |
PA4 | AD4 (bit 4 adresu i danych interfejsu pamięci zewnętrznej) |
PA3 | AD3 (bit 3 adresu i danych interfejsu pamięci zewnętrznej) |
PA2 | AD2 (bit 2 adresu i danych interfejsu pamięci zewnętrznej) |
PA1 | AD1 (bit 1 adresu i danych interfejsu pamięci zewnętrznej) |
PA0 | AD0 (bit 0 adresu i danych interfejsu pamięci zewnętrznej) |
Poniższe tabele odwzorowują funkcje alternatywne portu A w zależności od sygnałów sterujących.
Nazwa sygnału | PA7/AD7 | PA6/AD6 | PA5/AD5 | PA4/AD4 |
PUOE | SRE | SRE | SRE | SRE |
PUOV | ~(WR
| ADA(1)) • PORTA7 • PUD |
~(WR
| ADA) • PORTA6 • PUD |
~(WR
| ADA) • PORTA5 • PUD |
~(WR
| ADA) • PORTA4 • PUD |
DDOE | SRE | SRE | SRE | SRE |
DDOV | WR | ADA | WR | ADA | WR | ADA | WR | ADA |
PVOE | SRE | SRE | SRE | SRE |
PVOV | A7 • ADA | Wyjście D7 • WR |
A6 • ADA | Wyjście D6 • WR |
A5 • ADA | Wyjście D5 • WR |
A4 • ADA | Wyjście D4 • WR |
DIEOE | 0 | 0 | 0 | 0 |
DIEOV | 0 | 0 | 0 | 0 |
DI | Wejście D7 | Wejście D6 | Wejście D5 | Wejście D4 |
AIO | – | – | – | – |
Nazwa sygnału | PA3/AD3 | PA2/AD2 | PA1/AD1 | PA0/AD0 |
PUOE | SRE | SRE | SRE | SRE |
PUOV | ~(WR
| ADA) • PORTA3 • PUD |
~(WR
| ADA) • PORTA2 • PUD |
~(WR
| ADA) • PORTA1 • PUD |
~(WR
| ADA) • PORTA0 • PUD |
DDOE | SRE | SRE | SRE | SRE |
DDOV | WR | ADA | WR | ADA | WR | ADA | WR | ADA |
PVOE | SRE | SRE | SRE | SRE |
PVOV | A3 • ADA | Wyjście D3 • WR |
A2 • ADA | Wyjście D2 • WR |
A1 • ADA | Wyjście D1 • WR |
A0 • ADA | Wyjście D0 • WR |
DIEOE | 0 | 0 | 0 | 0 |
DIEOV | 0 | 0 | 0 | 0 |
DI | Wejście D3 | Wejście D2 | Wejście D1 | Wejście D0 |
AIO | – | – | – | – |
Uwaga: | 1. | ADA jest skrótem angielskiego terminu ADdress Active (adres aktywny) i reprezentuje okres czasu, w którym na liniach portu A występuje adres pamięci. Zobacz do podrozdziału "Interfejs pamięci zewnętrznej". |
Końcówka portu | Funkcje alternatywne |
PB7 | OC2/OC1C(1) (Wyjście Output Compare i wyjście PWM dla timera/licznika 2 lub Wyjście Output Compare C i wyjście PWM C dla timera/licznika 1) |
PB6 | OC1B (Wyjście Output Compare B i wyjście PWM B dla timera/licznika 1) |
PB5 | OC1A (Wyjście Output Compare A i wyjście PWM A dla timera/licznika 1) |
PB4 | OC0 (Wyjście Output Compare i wyjście PWM dla timera/licznika 0) |
PB3 | MISO (Wejście Master/wyjście Slave dla magistrali SPI) |
PB2 | MOSI (Wyjście Master/wejście Slave dla magistrali SPI) |
PB1 | SCK (Zegar magistrali szeregowej SPI) |
PB0 | SS (Wejście wyboru Slave SPI) |
Alternatywna konfiguracja końcówek portu B jest następująca:
OC2, wyjście zgodności porównania: Końcówka PB7 może służyć jako zewnętrzne wyjście dla modułu Output Compare timera/licznika 2. Końcówka musi zostać skonfigurowana jako wyjście (ustawiony bit DDB7), aby służyła tej funkcji. Końcówka OC2 jest również końcówką wyjściową dla funkcji trybu PWM timera.
OC1C, Wyjście zgodności porównani C: Końcówka PB7 może służyć jako zewnętrzne wyjście dla modułu Output Compare C timera/licznika 1. Końcówka musi zostać skonfigurowana jako wyjście (ustawiony bit DDB7), aby służyła tej funkcji. Końcówka OC1C jest również końcówką wyjściową dla funkcji trybu PWM timera.
OC1B, Wyjście zgodności porównania B: Końcówka PB6 może służyć jako zewnętrzne wyjście dla modułu Output Compare B timera/licznika 1. Końcówka musi zostać skonfigurowana jako wyjście (ustawiony bit DDB6), aby służyła tej funkcji. Końcówka OC1B jest również końcówką wyjściową dla funkcji trybu PWM timera.
OC1A, Wyjście zgodności porównania A: Końcówka PB5 może służyć jako zewnętrzne wyjście dla modułu Output Compare A timera/licznika 1. Końcówka musi zostać skonfigurowana jako wyjście (ustawiony bit DDB5), aby służyła tej funkcji. Końcówka OC1A jest również końcówką wyjściową dla funkcji trybu PWM timera.
OC0, Wyjście zgodności porównania A: Końcówka PB4 może służyć jako zewnętrzne wyjście dla modułu Output Compare timera/licznika 0. Końcówka musi zostać skonfigurowana jako wyjście (ustawiony bit DDB4), aby służyła tej funkcji. Końcówka OC0 jest również końcówką wyjściową dla funkcji trybu PWM timera.
MISO: Końcówka wejścia danych Master/wyjście danych Slave dla kanału SPI. Gdy SPI jest skonfigurowane jako Master, to końcówka ta pracuje jako wejście niezależnie od ustawień bitu DDB3. Gdy SPI zostało włączone jako Slave, to kierunek danych na tej końcówce kontrolowany jest bitem DDB3. Gdy końcówka zostaje zmuszona do pracy jako wejście, to opornik podciągający wciąż może być kontrolowany bitem PORTB3.
MOSI: Wyjście danych Master/wejście danych Slave dla kanału SPI. Gdy SPI zostało włączone jako Slave, końcówka pracuje jako wejście niezależnie od stanu bitu DDB2. Gdy SPI zostało włączone jako Master, kierunek danych ma tej końcówce kontroluje bit DDB2. Gdy końcówka zostaje zmuszona do pracy jako wejście, to opornik podciągający wciąż może być kontrolowany bitem PORTB2.
SCK: Wyjście zegara Master/wejście zegara Slave dla kanału SPI. Gdy SPI zostało włączone w trybie Slave, to końcówka ta jest skonfigurowana jako wejście niezależnie od stanu bitu DDB1. Gdy SPI zostało włączone jako Master, kierunek danych ma tej końcówce kontroluje bit DDB1. Gdy końcówka zostaje zmuszona do pracy jako wejście, to opornik podciągający wciąż może być kontrolowany bitem PORTB1.
SS: Wejście wyboru portu Slave. Gdy SPI zostało włączone jako Slave, to końcówka ta jest skonfigurowana jako wejście niezależnie od stanu bitu DDB0. W trybie Slave moduł SPI zostaje uaktywniony, gdy ta końcówka jest wysterowana stanem niskim. Gdy SPI jest włączone jako Master, kierunek danych na tej końcówce kontroluje bit DDB0. Gdy końcówka zostaje zmuszona do pracy jako wejście, to opornik podciągający wciąż może być kontrolowany bitem PORTB0.
Poniższe tabele odwzorowują funkcje alternatywne portu B w zależności od
sygnałów sterujących. Wejście SPI MSTR i Wyjście SPI SLAVE tworzą sygnał MISO,
natomiast MOSI jest podzielone na Wyjście SPI
MSTR i Wejście SPI SLAVE.
Nazwa sygnału | PB7/OC2/OC1C | PB6/OC1B | PB5/OC1A | PB4/OC0 |
PUOE | 0 | 0 | 0 | 0 |
PUOV | 0 | 0 | 0 | 0 |
DDOE | 0 | 0 | 0 | 0 |
DDOV | 0 | 0 | 0 | 0 |
PVOE | Włączenie OC2/OC1C(1) | Włączenie OC1B | Włączenie OC1A | Włączenie OC0 |
PVOV | OC2/OC1C(1) | OC1B | OC1A | OC0 |
DIEOE | 0 | 0 | 0 | 0 |
DIEOV | 0 | 0 | 0 | 0 |
DI | – | – | – | – |
AIO | – | – | – | – |
Uwaga: | 1. | Zobacz do rozdziału "Modulator Output Compare (OCM1C2)". Sygnału OC1C nie ma w trybie kompatybilności z ATmega103. |
Nazwa sygnału | PB3/MISO | PB2/MOSI | PB1/SCK | PB0/SS |
PUOE | SPE • MSTR | SPE • MSTR | SPE • MSTR | SPE • MSTR |
PUOV | PORTB3 • PUD | PORTB2 • PUD | PORTB1 • PUD | PORTB0 • PUD |
DDOE | SPE • MSTR | SPE • MSTR | SPE • MSTR | SPE • MSTR |
DDOV | 0 | 0 | 0 | 0 |
PVOE | SPE • MSTR | SPE • MSTR | SPE • MSTR | 0 |
PVOV | Wyjście SPI SLAVE | Wyjście SPI MSTR | Wyjście SCK | 0 |
DIEOE | 0 | 0 | 0 | 0 |
DIEOV | 0 | 0 | 0 | 0 |
DI | Wejście SPI MSTR | Wejście SPI SLAVE | Wejście SCK | SPI SS |
AIO | – | – | – | – |
W trybie kompatybilności z ATmega103 port C jest tylko wejściem. Port C posiada funkcję alternatywną jako górny bajt adresu dla interfejsu pamięci zewnętrznej.
Końcówka portu | Funkcja alternatywna |
PC7 | A15 |
PC6 | A14 |
PC5 | A13 |
PC4 | A12 |
PC3 | A11 |
PC2 | A10 |
PC1 | A9 |
PC0 | A8 |
Poniższe tabele odwzorowują funkcje alternatywne portu C w zależności od sygnałów sterujących.
Nazwa sygnału | PC7/A15 | PC6/A14 | PC5/A13 | PC4/A12 |
PUOE | SRE • (XMM(1)<1) | SRE • (XMM<2) | SRE • (XMM<3) | SRE • (XMM<4) |
PUOV | 0 | 0 | 0 | 0 |
DDOE | SRE • (XMM<1) | SRE • (XMM<2) | SRE • (XMM<3) | SRE • (XMM<4) |
DDOV | 1 | 1 | 1 | 1 |
PVOE | SRE • (XMM<1) | SRE • (XMM<2) | SRE • (XMM<3) | SRE • (XMM<4) |
PVOV | A15 | A14 | A13 | A12 |
DIEOE | 0 | 0 | 0 | 0 |
DIEOV | 0 | 0 | 0 | 0 |
DI | – | – | – | – |
AIO | – | – | – | – |
Nazwa sygnału | PC3/A11 | PC2/A10 | PC1/A9 | PC0/A8 |
PUOE | SRE • (XMM<5) | SRE • (XMM<6) | SRE • (XMM<7) | SRE • (XMM<7) |
PUOV | 0 | 0 | 0 | 0 |
DDOE | SRE • (XMM<5) | SRE • (XMM<6) | SRE • (XMM<7) | SRE • (XMM<7) |
DDOV | 1 | 1 | 1 | 1 |
PVOE | SRE • (XMM<5) | SRE • (XMM<6) | SRE • (XMM<7) | SRE • (XMM<7) |
PVOV | A11 | A10 | A9 | A8 |
DIEOE | 0 | 0 | 0 | 0 |
DIEOV | 0 | 0 | 0 | 0 |
DI | – | – | – | – |
AIO | – | – | – | – |
Uwaga: | 1. | XMM = 0 w trybie kompatybilności z ATmega103 |
Końcówki portu D z alternatywnymi funkcjami pokazuje poniższa tabelka.
Końcówka portu | Funkcja alternatywna |
PD7 | T2 (Wejście zegarowe timera/licznika 2) |
PD6 | T1 (Wejście zegarowe timera/licznika 1) |
PD5 | XCK1(1) (Wejście/wyjście zewnętrznego zegara modułu USART1) |
PD4 | ICP1 (Końcówka Input Capture dla timera/licznika 1) |
PD3 | INT3/TXD1(1) (Wejście przerwania zewnętrznego 3 lub końcówka nadawcza USART1) |
PD2 | INT2/RXD1(1) (Wejście przerwania zewnętrznego 2 lub końcówka odbiorcza USART1) |
PD1 | INT1/SDA(1) (Wejście przerwania zewnętrznego 1 lub dane szeregowe TWI) |
PD0 | INT0/SCL(1) (Wejście przerwania zewnętrznego 0 lub zegar szeregowy TWI) |
Uwaga: | 1. | Sygnały XCK1, TXD1, RXD1, SDA i SCL są nieobecne w trybie kompatybilności z ATmega103. |
Alternatywna konfiguracja końcówek portu D jest następująca:
T2, źródło zegarowe timera/licznika 2.
T1, źródło zegarowe timera/licznika 1.
XCK1, zegar zewnętrzny USART1. Bit DDD5 rejestru kierunku danych (ang. Data Direction Register, DDRD) określa, czy końcówka zegarowa jest wyjściem (bit DDD5 ustawiony), czy wejściem (bit DDD5 wyzerowany). Końcówka XCK1 jest aktywna tylko wtedy, gdy moduł USART1 pracuje w trybie synchronicznym.
ICP1 – Końcówka Input Capture 1: Końcówka PD4 może pracować jako końcówka Input Capture dla timera/licznika 1.
INT3, Źródło przerwania zewnętrznego 3: Końcówka PD3
może służyć jako źródło przerwania zewnętrznego dla mikrokontrolera.
TXD1, Dane wysyłane (końcówka wyjścia
danych dla modułu USART1). Gdy zostanie włączony nadajnik modułu USART1,
końcówka ta jest skonfigurowana jako wyjście bez względu na wartość bitu DDD3.
INT2, Źródło przerwania zewnętrznego 2: Końcówka PD2
może służyć jako źródło przerwania zewnętrznego dla mikrokontrolera.
RXD1, Dane odbierane (końcówka wejśĉia
danych dla modułu USART1). Gdy odbiornik modułu USART1 zostanie włączony,
to ta końcówka jest konfigurowana jako wejście bez względu na wartość bitu DDD2.
Gdy USART wymusza pracę tej końcówki jako wejście, opornik podciągający
wciąż może być kontrolowany bitem PORTD2.
INT1, Źródło przerwania zewnętrznego 1: Końcówka PD1
może służyć jako źródło przerwania zewnętrznego dla mikrokontrolera.
SDA, Dane 2-przewodowego interfejsu szeregowego : Gdy
zostanie ustawiony bit TWEN w rejestrze TWCR w celu
włączenia 2-przewodowego interfejsu szeregowego, to końcówka PD1jest odłączana
od portu i staje się końcówką we/wy danych dla 2-przewodowego interfejsu
szeregowego. W tym trybie końcówka posiada filtr zakłóceń do tłumienia impulsów
szpilkowych krótszych od 50 ns w sygnale wejściowym, a końcówka sterowana jest
przez drajwer z otwartym drenem z ograniczeniem stromości zbocza.
INT0, Źródło przerwania zewnętrznego 0: Końcówka PD0
może służyć jako źródło przerwania zewnętrznego dla mikrokontrolera.
SCL, Zegar 2-przewodowego interfejsu szeregowego: Gdy
zostanie ustawiony bit TWEN w rejestrze TWCR w celu
włączenia 2-przewodowego interfejsu szeregowego, to końcówka PD0 jest odłączana
od portu i staje się końcówką we/wy zegara szeregowego dla 2-przewodowego
interfejsu szeregowego. W tym trybie końcówka posiada filtr zakłóceń do
tłumienia impulsów szpilkowych krótszych od 50 ns w sygnale wejściowym, a
końcówka sterowana jest przez drajwer z otwartym drenem z ograniczeniem
stromości zbocza.
Poniższe tabele odwzorowują funkcje alternatywne portu D w zależności od sygnałów sterujących.
Nazwa sygnału | PD7/T2 | PD6/T1 | PD5/XCK1 | PD4/ICP1 |
PUOE | 0 | 0 | 0 | 0 |
PUOV | 0 | 0 | 0 | 0 |
DDOE | 0 | 0 | 0 | 0 |
DDOV | 0 | 0 | 0 | 0 |
PVOE | 0 | 0 | UMSEL1 | 0 |
PVOV | 0 | 0 | Wyjście XCK1 | 0 |
DIEOE | 0 | 0 | 0 | 0 |
DIEOV | 0 | 0 | 0 | 0 |
DI | Wejście T2 | Wejście T1 | Wejście XCK1 | Wejście ICP1 |
AIO | – | – | – | – |
Nazwa sygnału | PD3/INT3/TXD1 | PD2/INT2/RXD1 | PD1/INT1/SDA | PD0/INT0/SCL |
PUOE | TXEN1 | RXEN1 | TWEN | TWEN |
PUOV | 0 | PORTD2 • PUD | PORTD1 • PUD | PORTD0 • PUD |
DDOE | TXEN1 | RXEN1 | TWEN | TWEN |
DDOV | 1 | 0 | SDA_OUT | SCL_OUT |
PVOE | TXEN1 | 0 | TWEN | TWEN |
PVOV | TXD1 | 0 | 0 | 0 |
DIEOE | Włączenie INT3 | Włączenie INT2 | Włączenie INT1 | Włączenie INT0 |
DIEOV | 1 | 1 | 1 | 1 |
DI | Wejście INT3 | Wejście INT2 | Wejście INT1 | Wejście INT0 |
AIO | – | – | Wejście SDA | Wejście SCL |
Uwaga: | 1. | Po włączeniu 2-przewodowy interfejs szeregowy (ang. Two-wire Serial Interface, TWI) uaktywnia kontrolę stromości zboczy na końcówkach wyjściowych PD0 i PD1. Nie pokazano tego na rysunku. Dodatkowo filtry zakłóceń szpilkowych zostają wpięte pomiędzy wyjścia AIO pokazane na rysunku a cyfrową sieć logiczną modułu TWI. |
Końcówki portu E z alternatywnymi funkcjami pokazuje poniższa tabelka.
Końcówka portu | Funkcja alternatywna |
PE7 | INT7/ICP3(1) (Wejście przerwania zewnętrznego 7 lub końcówka Input Capture timera/licznika 3) |
PE6 | INT6/T3(1) (Wejście przerwania zewnętrznego 6 lub wejście zegarowe timera/licznika 3) |
PE5 | INT5/OC3C(1) (Wejście przerwania zewnętrznego 5 lub wyjście Output Compare C i wyjście PWM C timera/licznika 3) |
PE4 | INT4/OC3B(1) (Wejście przerwania zewnętrznego 4 lub wyjście Output Compare B i wyjście PWM B timera/licznika 3) |
PE3 | AIN1/OC3A(1) (Wejście odwracające komparatora analogowego lub wyjście Output Compare A i wyjście PWM A timera/licznika 3) |
PE2 | AIN0/XCK0(1) (Wejście nieodwracające komparatora analogowego lub wyjście/wyjście zegara zewnętrznego modułu USART0) |
PE1 | PDO/TXD0 (Wyjście danych programowania lub końcówka nadawcza modułu USART0) |
PE0 | PDI/RXD0 (Wejście danych programowania lub końcówka odbiorcza modułu USART0) |
Uwaga: | 1. | Sygnały ICP3, T3, OC3C, OC3B, OC3B, OC3A i XCK0 są nieobecne w trybie kompatybilności z ATmega103. |
INT7, Źródło przerwania zewnętrznego 7: Końcówka PE7
może służyć jako źródło przerwania zewnętrznego.
ICP3 – Końcówka 3 Input Capture: Końcówka PE7 może służyć
jako końcówka Input Capture dla timera/licznika 3.
INT6, Źródło przerwania zewnętrznego 6: Końcówka PE6
może służyć jako źródło przerwania zewnętrznego.
T3, Źródło zegarowe timera/licznika 3.
INT5, Źródło przerwania zewnętrznego 5: Końcówka PE5
może służyć jako źródło przerwania zewnętrznego.
OC3C, Wyjście zgodności porównania C
(ang. Output Compare Match C): Końcówka PE5 może służyć jako wyjście Output
Compare C timera/licznika 3.Końcówkę należy skonfigurować jako wyjście
(bit DDE5 ustawiony na 1), aby służyła tej funkcji.
Końcówka OC3C jest również końcówką wyjściową funkcji trybu PWM timera.
INT4, Źródło przerwania zewnętrznego 4: Końcówka PE4
może służyć jako źródło przerwania zewnętrznego.
OC3B, Wyjście zgodności porównania B
(ang. Output Compare Match B): Końcówka PE4 może służyć jako wyjście Output
Compare B timera/licznika 3.Końcówkę należy skonfigurować jako wyjście
(bit DDE4 ustawiony na 1), aby służyła tej funkcji.
Końcówka OC3B jest również końcówką wyjściową funkcji trybu PWM timera.
AIN1 – Wejście odwracające komparatora analogowego.
Końcówka ta jest połączona bezpośrednio z odwracającym wejściem komparatora
analogowego.
OC3A, Wyjście zgodności porównania A
(ang. Output Compare Match A): Końcówka PE3 może służyć jako wyjście Output
Compare A timera/licznika 3.Końcówkę należy skonfigurować jako wyjście
(bit DDE3 ustawiony na 1), aby służyła tej funkcji.
Końcówka OC3A jest również końcówką wyjściową funkcji trybu PWM timera.
AIN0 – Wejście nieodwracające komparatora analogowego.
Końcówka ta jest połączona bezpośrednio z nieodwracającym wejściem komparatora
analogowego.
XCK0, Zegar zewnętrzny modułu USART0. Bit DDE2 rejestru
kierunku danych DDRE określa, czy zegar jest wyjściem
(DDE2 ustawiony na jeden) lub wejściem
(DDE2 wyzerowany). Końcówka XCK0 jest aktywna tylko
przy pracy w trybie synchronicznym modułu USART0.
PDO, Wyjście danych szeregowego programowania SPI.
Podczas ładowania w programowaniu szeregowym końcówka ta jest używana jako linia
wyjścia danych dla ATmega64A.
TXD0, Końcówka nadawcza modułu USART0.
PDI, Wejście danych szeregowego programowania SPI.
Podczas ładowania w programowaniu szeregowym końcówka ta jest używana jako linia
wejścia danych dla ATmega64A.
RXD0, Końcówka odbiorcza modułu USART0. Dane odbierane
(końcówka wejścia danych dla modułu USART0). Gdy
zostaje włączony odbiornik modułu
USART0, końcówka ta jest konfigurowana jako wejście niezależnie od wartości bitu DDE0
w rejestrze kierunku danych portu E DDRE. Gdy moduł USART0
wymusza na tej końcówce pracę jako wejście, wpisanie logicznej jedynki do bitu PORTE0
w rejestrze PORTE włączy wewnętrzny opornik podciągający.
Poniższe tabele odwzorowują funkcje alternatywne portu E w zależności od sygnałów sterujących.
Nazwa sygnału | PE7/INT7/ICP3 | PE6/INT6/T3 | PE5/INT5/OC3C | PE4/INT4/OC3B |
PUOE | 0 | 0 | 0 | 0 |
PUOV | 0 | 0 | 0 | 0 |
DDOE | 0 | 0 | 0 | 0 |
DDOV | 0 | 0 | 0 | 0 |
PVOE | 0 | 0 | Włączenie OC3C | Włączenie OC3B |
PVOV | 0 | 0 | OC3C | OC3B |
DIEOE | Włączenie INT7 | Włączenie INT6 | Włączenie INT5 | Włączenie INT4 |
DIEOV | 1 | 1 | 1 | 1 |
DI | Wejście INT7/ Wejście ICP3 |
Wejście INT6/ Wejście T3 |
Wejście INT5 | Wejście INT5 |
AIO | – | – | – | – |
Nazwa sygnału | PE3/AIN1/OC3A | PE2/AIN0/XCK0 | PE1/PDO/TXD0 | PE0/PDI/RXD0 |
PUOE | 0 | 0 | TXEN0 | RXEN0 |
PUOV | 0 | 0 | 0 | PORTE0 • PUD |
DDOE | 0 | 0 | TXEN0 | RXEN0 |
DDOV | 0 | 0 | 1 | 0 |
PVOE | Włączenie OC3A | UMSEL0 | TXEN0 | 0 |
PVOV | OC3A | Wyjście XCK0 | TXD0 | 0 |
DIEOE | 0 | 0 | 0 | 0 |
DIEOV | 0 | 0 | 0 | 0 |
DI | 0 | Wejście XCK0 | – | RXD0 |
AIO | Wejście AIN1 | Wejście AIN0 | – | – |
Alternatywnymi funkcjami portu F są wejścia analogowe dla przetwornika analogowo/cyfrowego. Jeśli niektóre końcówki portu F zostaną skonfigurowane jako wyjścia, to ważne jest, aby nie przełączały poziomów podczas trwania konwersji. To mogłoby zaburzyć jej wynik. W trybie kompatybilności z ATmega103 port F jest tylko wejściem. Jeśli zostanie włączony interfejs JTAG, oporniki podciągające na końcówkach PF7(TDI), PF5(TMS) i PF4(TCK) będą włączone nawet w przypadku wystąpienia resetu.
Końcówki portu F z alternatywnymi funkcjami pokazuje poniższa tabelka.
Końcówka portu | Funkcja alternatywna |
PF7 | ADC7/TDI (kanał wejściowy 7 przetwornika A/C lub wejście danych testu JTAG) |
PF6 | ADC6/TDO (kanał wejściowy 6 przetwornika A/C lub wyjście danych testu JTAG) |
PF5 | ADC5/TMS (kanał wejściowy 5 przetwornika A/C lub wybór trybu testu JTAG) |
PF4 | ADC4/TCK (kanał wejściowy 4 przetwornika A/C lub zegar testu JTAG) |
PF3 | ADC3 (kanał wejściowy 3 przetwornika A/C) |
PF2 | ADC2 (kanał wejściowy 2 przetwornika A/C) |
PF1 | ADC1 (kanał wejściowy 1 przetwornika A/C) |
PF0 | ADC0 (kanał wejściowy 0 przetwornika A/C) |
ADC7, Przetwornik analogowo/cyfrowy, kanał 7.
TDI, Wejście danych testu JTAG: Szeregowe dane wejściowe,
które mają być wsunięte do rejestru instrukcji lub rejestru danych
(łańcuchy skanowania). Gdy zostanie włączony interfejs
JTAG, końcówka ta nie może być używana jako końcówka we/wy.
ADC6, Przetwornik analogowo/cyfrowy, kanał 6.
TDO, Wyjście danych testu JTAG: Szeregowe dane wyjściowe
z rejestru instrukcji lub z rejestru danych. Gdy zostanie włączony interfejs
JTAG, końcówka ta nie może być używana jako końcówka we/wy. Końcówka TDO
znajduje się w stanie wysokiej impedancji do momentu, gdy kontroler TAB określi,
iż dane wysuwane zostały wprowadzone.
ADC5, Przetwornik analogowo/cyfrowy, kanał 5.
TMS, Wybór trybu testu JTAG: Końcówki tej używa się do
nawigowania poprzez automat stanu sterownika TAP. Gdy zostanie włączony
interfejs JTAG, końcówka ta nie może być używana jako końcówka we/wy.
ADC4, Przetwornik analogowo/cyfrowy, kanał 4.
TCK, Zegar testu JTAG: Praca JTAG jest synchroniczna z
TCK. Gdy zostanie włączony interfejs JTAG, końcówka ta nie może być używana jako
końcówka we/wy.
Przetwornik analogowo/cyfrowy, kanały 3:0.
Poniższe tabele odwzorowują funkcje alternatywne portu F w zależności od sygnałów sterujących.
Nazwa sygnału | PF7/ADC7/TDI | PF6/ADC6/TDO | PF5/ADC5/TMS | PF4/ADC4/TCK |
PUOE | JTAGEN | JTAGEN | JTAGEN | JTAGEN |
PUOV | 1 | 0 | 1 | 1 |
DDOE | JTAGEN | JTAGEN | JTAGEN | JTAGEN |
DDOV | 0 | SHIFT_IR + SHIFT_DR |
0 | 0 |
PVOE | 0 | JTAGEN | 0 | 0 |
PVOV | 0 | TDO | 0 | 0 |
DIEOE | JTAGEN | JTAGEN | JTAGEN | JTAGEN |
DIEOV | 0 | 0 | 0 | 0 |
DI | – | – | – | – |
AIO | TDI/Wejście ADC7 | Wejście ADC6 | TMS/Wejście ADC5 | TCK/Wejście ADC4 |
Nazwa sygnału | PF3/ADC3 | PF2/ADC2 | PF1/ADC1 | PF0/ADC0 |
PUOE | 0 | 0 | 0 | 0 |
PUOV | 0 | 0 | 0 | 0 |
DDOE | 0 | 0 | 0 | 0 |
DDOV | 0 | 0 | 0 | 0 |
PVOE | 0 | 0 | 0 | 0 |
PVOV | 0 | 0 | 0 | 0 |
DIEOE | 0 | 0 | 0 | 0 |
DIEOV | 0 | 0 | 0 | 0 |
DI | – | – | – | – |
AIO | Wejście ADC3 | Wejście ADC2 | Wejście ADC1 | Wejście ADC0 |
W trybie kompatybilności z ATmega103 tylko funkcje alternatywne są jedynymi funkcjami portu G, który nie może być używany jako ogólny port cyfrowy. Konfiguracja końcówek dla funkcji alternatywnych jest następująca:
Końcówka portu | Funkcja alternatywna |
PG4 | TOSC1 (Wejście zegarowe oscylatora timera/licznika 0) |
PG3 | TOSC2 (Wejście zegarowe oscylatora timera/licznika 0) |
PG2 | ALE (Uaktywnienie zatrzasków adresowych dla pamięci zewnętrznej) |
PG1 | RD (Strob odczytu dla pamięci zewnętrznej) |
PG0 | WR (Strob zapisu dla pamięci zewnętrznej) |
TOSC1, Końcówka 1 oscylatora timera: Gdy bit AS0 rejestru ASSR zostanie ustawiony w celu włączenia asynchronicznego taktowania timera/licznika 0, to końcówka PG4 jest odłączana od portu i staje się odwracającym wyjściem wzmacniacza oscylatora. W tym trybie do tej końcówki podłączony jest oscylator kwarcowy, a sama końcówka nie może być używana jako końcówka we/wy.
TOSC2, Końcówka 2 oscylatora timera: Gdy bit AS0 rejestru ASSR zostanie ustawiony w celu włączenia asynchronicznego taktowania timera/licznika 0, to końcówka PG3 jest odłączana od portu i staje się odwracającym wejściem wzmacniacza oscylatora. W tym trybie do tej końcówki podłączony jest oscylator kwarcowy, a sama końcówka nie może być używana jako końcówka we/wy.
ALE jest sygnałem włączającym zatrzaskiwanie adresu dla pamięci zewnętrznej.
RD jest sygnałem strobu odczytu pamięci zewnętrznej.
WR sygnałem strobu zapisu pamięci zewnętrznej.
Poniższe tabele odwzorowują funkcje alternatywne portu F w zależności od sygnałów sterujących.
Nazwa sygnału | PG4/TOSC1 | PG3/TOSC2 | PG2/ALE | PG1/RD | PG0/WR |
PUOE | AS0 | AS0 | SRE | SRE | SRE |
PUOV | 0 | 0 | 0 | 0 | 0 |
DDOE | AS0 | AS0 | SRE | SRE | SRE |
DDOV | 0 | 0 | 1 | 1 | 1 |
PVOE | 0 | 0 | SRE | SRE | SRE |
PVOV | 0 | 0 | ALE | RD | WR |
DIEOE | AS0 | AS0 | 0 | 0 | 0 |
DIEOV | 0 | 0 | 0 | 0 | 0 |
DI | – | – | – | – | – |
AIO | T/ Wejście osc. C0 |
T/ Wyjście osc. C0 |
– | – | – |
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x1B (0x3B) | 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 |
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x1A (0x3A) | DDA7 | DDA6 | DDA5 | DDA4 | DDA3 | DDA2 | DDA1 | DDA0 | 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 |
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x19 (0x39) | PINA7 | PINA6 | PINA5 | PINA4 | PINA3 | PINA2 | PINA1 | PINA0 | PINA |
Zapis/Odczyt | O | O | O | O | O | O | O | O | |
Wartość początkowa | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A |
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x18 (0x38) | PORTB7 | PORTB6 | PORTB5 | PORTB4 | PORTB3 | PORTB2 | PORTB1 | PORTB0 | PORTB |
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 |
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x17 (0x37) | DDB7 | DDB6 | DDB5 | DDB4 | DDB3 | DDB2 | DDB1 | DDB0 | DDRB |
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 |
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x16 (0x36) | PINB7 | PINB6 | PINB5 | PINB4 | PINB3 | PINB2 | PINB1 | PINB0 | PINB |
Zapis/Odczyt | O | O | O | O | O | O | O | O | |
Wartość początkowa | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A |
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x15 (0x35) | PORTC7 | PORTC6 | PORTC5 | PORTC4 | PORTC3 | PORTC2 | PORTC1 | PORTC0 | PORTC |
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 |
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x14 (0x34) | DDC7 | DDC6 | DDC5 | DDC4 | DDC3 | DDC2 | DDC1 | DDC0 | DDRC |
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 |
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x13 (0x33) | PINC7 | PINC6 | PINC5 | PINC4 | PINC3 | PINC2 | PINC1 | PINC0 | PINC |
Zapis/Odczyt | O | O | O | O | O | O | O | O | |
Wartość początkowa | 0 | N/A | N/A | N/A | N/A | N/A | N/A | N/A |
W trybie kompatybilności z ATmega103 rejestry DDRC i PINC są inicjalizowane jako wyjście przeciwsobne ze stanem zero. Końcówki portu przyjmują swoje wartości początkowe, nawet gdy zegar nie pracuje. Zwróć uwagę, iż rejestry DDRC i PINC są dostępne w trybie kompatybilności z ATmega103, lecz nie powinny być używane dla 100% kompatybilności wstecznej.
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x12 (0x32) | PORTD7 | PORTD6 | PORTD5 | PORTD4 | PORTD3 | PORTD2 | PORTD1 | PORTD0 | PORTD |
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 |
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x11 (0x31) | DDD7 | DDD6 | DDD5 | DDD4 | DDD3 | DDD2 | DDD1 | DDD0 | DDRD |
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 |
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x10 (0x30) | PIND7 | PIND6 | PIND5 | PIND4 | PIND3 | PIND2 | PIND1 | PIND0 | PIND |
Zapis/Odczyt | O | O | O | O | O | O | O | O | |
Wartość początkowa | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A |
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x03 (0x23) | PORTE7 | PORTE6 | PORTE5 | PORTE4 | PORTE3 | PORTE2 | PORTE1 | PORTE0 | PORTE |
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 |
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x02 (0x22) | DDE7 | DDE6 | DDE5 | DDE4 | DDE3 | DDE2 | DDE1 | DDE0 | DDRE |
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 |
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x01 (0x21) | PINE7 | PINE6 | PINE5 | PINE4 | PINE3 | PINE2 | PINE1 | PINE0 | PINE |
Zapis/Odczyt | O | O | O | O | O | O | O | O | |
Wartość początkowa | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A |
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
(0x62) | PORTF7 | PORTF6 | PORTF5 | PORTF4 | PORTF3 | PORTF2 | PORTF1 | PORTF0 | PORTF |
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 |
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
(0x61) | DDF7 | DDF6 | DDF5 | DDF4 | DDF3 | DDF2 | DDF1 | DDF0 | DDRF |
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 |
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x00 (0x20) | PINF7 | PINF6 | PINF5 | PINF4 | PINF3 | PINF2 | PINF1 | PINF0 | PINF |
Zapis/Odczyt | O | O | O | O | O | O | O | O | |
Wartość początkowa | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A |
Zauważ, iż rejestry PORTF i DDRF są niedostępne w trybie kompatybilności z ATmega103, gdzie port F służy jedynie jako wejście cyfrowe.
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
(0x65) | – | – | – | PORTG4 | PORTG3 | PORTG2 | PORTG1 | PORTG0 | PORTG |
Zapis/Odczyt | O | O | O | Z/O | Z/O | Z/O | Z/O | Z/O | |
Wartość początkowa | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
(0x64) | – | – | – | DDG4 | DDG3 | DDG2 | DDG1 | DDG0 | DDRG |
Zapis/Odczyt | O | O | O | Z/O | Z/O | Z/O | Z/O | Z/O | |
Wartość początkowa | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
(0x63) | – | – | – | PING4 | PING3 | PING2 | PING1 | PING0 | PING |
Zapis/Odczyt | O | O | O | O | O | O | O | O | |
Wartość początkowa | 0 | 0 | 0 | N/A | N/A | N/A | N/A | N/A |
Zauważ, iż porty PORTG, DDRG i PING są niedostępne w trybie kompatybilności z ATmega103, w którym port G służy tylko jako swoje funkcje alternatywne (TOSC1, TOSC2, WR, RD i ALE).
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x20 (0x40) | TSM | – | – | – | ACME | PUD | PSR0 | PSR321 | SFIOR |
Zapis/Odczyt | Z/O | O | O | O | Z/O | Z/O | Z/O | Z/O | |
Wartość początkowa | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Gdy ten bit zostanie zapisany logiczną jedynką, oporniki podciągające w
portach we/wy są wyłączone, nawet jeśli rejestry DDxn i PORTxn skonfigurowano do
włączenia tych oporników
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2024 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:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.