Informacje dodatkowe     Ciekawostki o 8-bitowych mikrokontrolerach AVR


Od kilku lat programuję 8-bitowe mikrokontrolery AVR i przez ten czas zdobyłem trochę wiedzy
na ich temat. Poniżej znajduje się kilka ciekawostek o tych układach.


  1. Rozpoznawanie wersji (rewizji)
  2. Stany przejściowe wejść/wyjść
  3. Wyłączanie zbędnych modułów
  4. Pomiar rezystancji wewnętrznych rezystorów podciągających
  5. Pomiar częstotliwości wewnętrznego zegara taktującego
  6. Pomiar napięcia wewnętrznego źródła odniesienia
  7. Maksymalny prąd wewnętrznych diod zabezpieczających
  8. Wewnętrzny oscylator PLL
  9. Programowa instrukcja XCHG (eXCHanGe two registers)
10. Maksymalna częstotliwość taktowania
11. Sygnatura i interfejs programowania

1. Rozpoznawanie wersji (rewizji)

Wersja (rewizja) mikrokontrolera jest oznaczana jedną literą (zgodnie z porządkiem liter w alfabecie: "Rev. A" - oznacza
pierwszą, "Rev. B" - drugą/nowszą wersję mikrokontrolera, itd.). Poznanie wersji posiadanego mikrokontrolera jest
czasem potrzebne, bo w niektórych występują błędy (zwykle drobne), które są usuwane w nowszych wersjach układu.
Błędy te są opisane w rozdziale "Errata" noty katalogowej danego modelu mikrokontrolera.
Wersja mikrokontrolera zwykle jest podana w postaci napisu na spodzie jego obudowy DIP. Nowe układy mają ozna-
czenie w formacie 354XXZ lub 355XXZ, a starsze 196XXZ, gdzie: XX - numer układu (może zawierać literę), Z - wersja
układu (litera). W przypadku mikrokontrolerów w obudowach DIP8 nie ma na nich zbyt dużo miejsca, dlatego wersję
układu oznacza się jedną literą (pierwszą w drugiej linii).
Na innych rodzajach obudów, wersja mikrokontrolera może nie być podana wprost i aby ją ustalić, należy kontaktować
się z pomocą techniczną firmy Atmel/Microchip. Można też próbować określić wersję na podstawie 4-cyfrowego kodu,
oznaczającego datę produkcji układu (YYWW, gdzie: YY - dwie ostatnie cyfry roku; WW - numer tygodnia), ale nie jest
to pewny sposób.

Na poniższych zdjęciach są wyróżnione na czerwono litery, które oznaczają wersję danego modelu mikrokontrolera.


ATtiny85 (20PU)

ATmega48 (20PU)

ATmega32A (PU)


2. Stany przejściowe wejść/wyjść

Po włączeniu/resecie mikrokontrolera wszystkie jego piny są ustawione jako wejścia (IN) w stanie nieustalonym, czyli
wysokiej impedancji (Z). Aby zmniejszyć pobór prądu i wyeliminować zakłócenia, które trafiają przez takie piny do mi-
krokontrolera, należy wymusić na nich ustalony stan logiczny (niski/wysoki). Najprościej można to zrobić programowo,
włączając na tych pinach wewnętrzne rezystory podciągające Rpu (pull-up) lub ustawiając je, jako wyjścia (OUT) z nis-
kim/wysokim stanem logicznym (L/H). Jednak te sposoby nie działają podczas i po włączeniu/resecie mikrokontrolera.
Rozwiązaniem, które zawsze działa jest dodanie na tych pinach zewnętrznych rezystorów, podłączonych na stałe do
plusa Vcc (pull-up) lub masy GND (pull-down) zasilania. Nie jest zalecane podłączanie nieużywanych pinów bezpo-
średnio do plusa lub masy zasilania, gdyż może to spowodować przepływ znacznego prądu, jeśli dany pin zostanie
przypadkowo ustawiony jako wyjście.
Do programowej konfiguracji pinów w danym porcie PX, służą bity DDXn w rejestrze DDRX (Data Direction Register
port X), bity PORTXn w rejestrze PORTX (PORT X data register) oraz bit PUD w rejestrze MCUCR (MicroController
Unit Control Register), gdzie: X - litera oznaczająca dany port (np. A, B, C, D), n - numer konkretnego pinu w porcie X
(0-7). Zapisanie "1" do bitu PUD w rejestrze MCUCR, spowoduje całkowite wyłączenie rezystorów podciągających
(pull-up) na wszystkich pinach każdego portu mikrokontrolera.
Poniższa tabela przedstawia konfigurację danego pinu PXn w zależności od wartości, odpowiadających mu bitów
DDXn/PORTXn w rejestrach DDRX/PORTX oraz bitu PUD w rejestrze MCUCR.

DDXn
 (DDRX) 
PORTXn
 (PORTX) 
PUD
 (MCUCR) 
 Konfiguracja 
pinu PXn
00XIN Z
010IN H (pu)
011IN Z
10XOUT L
11XOUT H
IN / OUT - pin skonfigurowany jako wejście/wyjście, (pu) - włączony rezystor podciągający,
L / H / X - niski/wysoki/dowolny stan logiczny, Z - stan nieustalony/wysokiej impedancji (Hi-Z).

Ponieważ o konfiguracji danego pinu PXn decydują 2 bity w rejestrach DDRX/PORTX, a jedną instrukcją w ciągu jed-
nego cyklu zegarowego można zmienić wartość tylko jednego z tych bitów, to w tym czasie na konfigurowanym pinie
PXn może pojawić się przejściowy stan logiczny. Poniższa tabela przedstawia, jakie stany przejściowe występują na
pinie PXn w zależności, od kolejności zmian wartości bitów DDXn/PORTXn.

Początkowa konfiguracja
 pinu PXn [DDXn:PORTXn] 
Docelowa konfiguracja pinu PXn [DDXn:PORTXn]
IN Z [0:0] IN H (pu) [0:1]  OUT L [1:0] OUT H [1:1]
IN Z [0:0]-IN H (pu) [0:1]OUT L [1:0] IN H (pu) [0:1] 
OUT H [1:1]
OUT L [1:0]
OUT H [1:1]
IN H (pu) [0:1]IN Z [0:0]-OUT H [1:1]
OUT L [1:0]
IN Z [0:0]
OUT L [1:0]
OUT H [1:1]
OUT L [1:0]IN Z [0:0]OUT H [1:1]
IN H (pu) [0:1]
IN Z [0:0]
IN H (pu) [0:1]
-OUT H [1:1]
OUT H [1:1] IN H (pu) [0:1] 
IN Z [0:0]
OUT L [1:0]
IN Z [0:0]
IN H (pu) [0:1]OUT L [1:0]-
IN / OUT - pin skonfigurowany jako wejście/wyjście, (pu) - włączony rezystor podciągający,
L / H / X - niski/wysoki/dowolny stan logiczny, Z - stan nieustalony/wysokiej impedancji (Hi-Z).

3. Wyłączanie zbędnych modułów

Wyłączenie nie potrzebnych peryferiów mikrokontrolera nie tylko zmniejsza pobór prądu, ale redukuje też poziom ge-
nerowanych przez nie szumów, co ma duże znaczenie np. przy wykonywaniu pomiarów wewnętrznym przetwornikiem
analogowo-cyfrowym ADC.
Nowsze mikrokontrolery mają rejestr PRR (Power Reduction Register), który służy do zatrzymywania taktowania nie-
używanych modułów mikrokontrolera (przetwornika ADC, timerów/liczników, czy interfejsów komunikacyjnych TWI/SPI/
USART). W tym celu, należy zapisać "1" do bitu w rejestrze PRR, który odpowiada zatrzymywanemu modułowi.
Niektóre modele z większą liczbą peryferiów mają dwa takie rejestry PRR0 i PRR1 (np. ATmega1284).
Po zatrzymaniu taktowania aktualny stan modułu nie zmienia się, a jego rejestry przestają być dostępne do odczytu/
zapisu. Wszystkie zasoby, których używał zatrzymany moduł pozostają zajęte. Dlatego przed zatrzymaniem taktowania
danego modułu, powinno się go najpierw wyłączyć.

Poniższy rysunek przedstawia poszczególne moduły mikrokontrolera - te oznaczone ikoną "Power"
można wyłączyć/zatrzymać według zamieszczonych opisów.


 
Aby wyłączyć timer WDT (Watch-Dog Timer), należy
ustawić wartość fuse bitu WDTON na "1" oraz zapi-
sać "0" do bitów: WDRF w rejestrze MCUSR (Micro-
Controller Unit Status Register), WDE i WDIE w re-
jestrze WDTCR (WatchDog Timer Control Register)
- według procedury opisanej w nocie katalogowej.
Domyślnie timer WDT jest wyłączony po włączeniu/
resecie fabrycznie nowego mikrokontrolera.

Aby wyłączyć moduł monitorowania napięcia zasi-
lania BOD (Brown-Out Detector), należy ustawić
wartość fuse bitów BODLEVEL2-0 na "1".
Domyślnie moduł ten jest wyłączony w fabrycznie
nowym mikrokontrolerze.

Aby wyłączyć moduł debugowania dW (debugWire),
należy ustawić wartość fuse bitu DWEN na "1".
Domyślnie moduł ten jest wyłączony w fabrycznie
nowym mikrokontrolerze.

Aby wyłączyć przetwornik analogowo-cyfrowy ADC
(Analog to Digital Converter), należy zapisać "0" do
bitu ADEN w rejestrze ADCSRA (ADC control and
Status Register A) - spowoduje to całkowite odłą-
czenie jego napięcia zasilania. Dopiero później
można zapisać "1" do bitu PRADC w rejestrze PRR (jeśli mikrokontroler go posiada) - spowoduje to całkowite odłą-
czenie jego zegara taktującego. W niektórych modelach zatrzymanie zegara przetwornika ADC, powoduje jednocze-
sne zatrzymanie pewnych obwodów komparatora analogowego, który nie może być używany w takiej sytuacji (np.
ATtiny25/45/85, ATtiny261/461/861). Domyślnie przetwornik ADC jest wyłączony po włączeniu/resecie mikrokontrolera,
ale jest taktowany zegarem.

Aby wyłączyć komparator analogowy AC (Analog Comparator), należy zapisać "1" do bitu ACD w rejestrze ACSR
(Analog Comparator control and Status Register) - spowoduje to całkowite odłączenie jego napięcia zasilania.
Domyślnie komparator analogowy jest włączony po włączeniu/resecie mikrokontrolera.

Aby wyłączyć cyfrowy bufor wejściowy DIB (Digital Input Buffer) na pinie ADCx przetwornika analogowo-cyfrowego
lub ANx komparatora analogowego, należy zapisać "1" do odpowiadającego mu bitu ADCxD lub ANxD w rejestrze
DIDR0/1 (Digital Input Disable Register 0/1). W przypadku modeli, w których drugą funkcją pinu AREF jest tylko funkcja
cyfrowa, rejestr DIDR0 zawiera dodatkowo bit AREFD (np. ATtiny261/461/861).
Jeśli na wejściowy pin analogowy jest podawany sygnał o napięciu zbliżonym do wartości Vcc/2, to wtedy włączony
na tym pinie cyfrowy bufor wejściowy pobiera znaczny prąd. Dlatego, aby zmniejszyć pobór prądu cyfrowe bufory
wejściowe, powinny być zawsze wyłączone na wejściach analogowych. Domyślnie cyfrowe bufory wejściowe są
włączone po włączeniu/resecie mikrokontrolera.

Aby wyłączyć wewnętrzne źródło napięcia odniesienia IBRV (Internal Bandgap Reference Voltage), należy wyłączyć
moduł BOD (fuse bity BODLEVEL2-0=1) i przetwornik ADC (bit ADEN=0 w rejestrze ADCSRA) oraz odłączyć to
źródło od komparatora analogowego (bit ACBG=0 w rejestrze ACSR). Domyślnie wewnętrzne źródło napięcia
odniesienia jest wyłączone po włączeniu/resecie fabrycznie nowego mikrokontrolera.

Aby wyłączyć timer/licznik TCx (Timer/Counter x), należy zapisać "0" we wszystkich bitach CSx w rejestrze TCCRx
(Timer/Counter Control Register x) - spowoduje to zatrzymanie działania licznika. Dopiero później można zapisać
"1" do bitu PRTIMx w rejestrze PRR (jeśli mikrokontroler go posiada) - spowoduje to całkowite odłączenie jego
zegara taktującego. Domyślnie timer/licznik TCx jest wyłączony po włączeniu/resecie mikrokontrolera, ale jest
taktowany zegarem.

Aby wyłączyć moduł SPI (Serial Peripheral Interface), należy zapisać "0" do bitu SPE w rejestrze SPCR (SPi Control
Register) - spowoduje to zatrzymanie działania interfejsu SPI. Dopiero później można zapisać "1" do bitu PRSPI w re-
jestrze PRR (jeśli mikrokontroler go posiada) - spowoduje to całkowite odłączenie jego zegara taktującego. Niektóre
modele zamiast modułu SPI mają moduł USI, który może pracować w trybie SPI (np. ATtiny25/45/85, ATtiny261/461/
861). Domyślnie moduł ten jest wyłączony po włączeniu/resecie mikrokontrolera, ale jest taktowany zegarem.

Aby wyłączyć moduł TWI (Two-Wire serial Interface), należy zapisać "0" do bitu TWEN w rejestrze TWCR (TWi Control
Register) - spowoduje to zatrzymanie działania interfejsu TWI. Dopiero później można zapisać "1" do bitu PRTWI w re-
jestrze PRR (jeśli mikrokontroler go posiada) - spowoduje to całkowite odłączenie jego zegara taktującego. Niektóre
modele zamiast modułu TWI mają moduł USI, który może pracować w trybie TWI (np. ATtiny25/45/85, ATtiny261/461/
861). Domyślnie moduł ten jest wyłączony po włączeniu/resecie mikrokontrolera, ale jest taktowany zegarem.

Aby wyłączyć moduł USI (Universal Serial Interface), należy zapisać "0" do wszystkich bitów w rejestrze USICR (USI
Control Register) - spowoduje to zatrzymanie działania interfejsu USI. Dopiero później można zapisać "1" do bitu
PRUSI w rejestrze PRR (jeśli mikrokontroler go posiada) - spowoduje to całkowite odłączenie jego zegara taktującego.
Moduł USI może pracować w trybie SPI/TWI i mają go tylko niektóre modele (np. ATtiny25/45/85, ATtiny261/461/861).
Domyślnie moduł ten jest wyłączony po włączeniu/resecie mikrokontrolera, ale jest taktowany zegarem.

Aby wyłączyć moduł USARTx (Universal Synchronous/Asynchronous serial Receiver and Transmitter), należy zapisać
"0" do bitów RXENx i TXENx w rejestrze UCSRxB (Usart Control and Status Register x B) - spowoduje to zatrzymanie
działania interfejsu USARTx. Dopiero później można zapisać "1" do bitu PRUSARTx w rejestrze PRR (jeśli mikrokon-
troler go posiada) - spowoduje to całkowite odłączenie jego zegara taktującego. Niektóre modele nie mają modułu
USART (np. ATtiny25/45/85, ATtiny261/461/861). Domyślnie moduł ten jest wyłączony po włączeniu/resecie mikro-
kontrolera, ale jest taktowany zegarem.

4. Pomiar rezystancji wewnętrznych rezystorów podciągających

Według not katalogowych rezystor podciągający Rpu (pull-up) na pinie I/O może mieć wartość 20-50k (na pinie RESET
30-60k). Jego dokładną rezystancję można zmierzyć przy użyciu multimetru. W tym celu dowolny pin mikrokontrolera,
należy ustawić jako wejście z wysokim stanem (pull-up), wymuszonym włączeniem rezystora podciągającego (DDXn:0,
PORTXn:1, PUD:0). Później mierzymy i zapamiętujemy dokładną wartośc napięcia zasilania Vcc mikrokontrolera.
Następnie ustawiamy multimetr na najniższy zakres pomiaru prądu (np. do 2mA), mierzymy i zapamiętujemy dokładną
wartość prądu Ix, płynącego między podciągniętym pinem mikrokontrolera, a masą zasilania. Wartość rezystora pod-
ciągającego można obliczyć ze wzoru: Rpu [Ohm] = Vcc [V] / Ix [A]. Zasada pomiaru jest przedstawiona na poniższym
rysunku.

Przykładowo w moim ATtiny85 zasilanym napięciem Vcc=5.0V, prąd
płynący między podciągniętym pinem PB0, a masą zasilania wynosił
0.138mA. Stąd, po obliczeniach: Rpu = 5V / 0.000138A = 36231.88
omów.

Wartości wewnętrznych rezystorów mogą być inne w różnych egzem-
plarzach tego samego modelu mikrokontrolera, ale są bardzo zbliżone
do siebie na różnych pinach jednego układu. Rezystory te są prawdo-
podobnie wykonane na krzemie, jako tranzystory FET z długim cienkim
kanałem. Zajmują mniej miejsca, są łatwiejsze i tańsze w produkcji niż
tradycyjne rezystory, ale mają gorszą liniowość i stabilność tempera-
turową.


5. Pomiar częstotliwości wewnętrznego zegara taktującego

Można zmierzyć częstotliwość z jaką pracuje mikrokontroler przy użyciu miernika częstotliwości. W tym celu, należy ust-
awić wartość fuse bitu CKOUT na "0" (w fabrycznie nowym mikrokontrolerze CKOUT=1). Nie każdy model mikrokontro-
lera posiada ten fuse bit.
Po tej operacji na pinie CLKO, pojawi się częstotliwość pracy mikrokontrolera (inne funkcje tego pinu zostaną wyłączo-
ne). Jeśli mikrokontroler używa wewnętrznego dzielnika (prescaler), to na pinie CLKO pojawi się częstotliwość po po-
dziale. Teraz wystarczy podłączyć do tego pinu miernik częstotliwości, aby sprawdzić z jaką rzeczywistą częstotliwością
pracuje mikrokontroler.
To rozwiązanie jest dedykowane do taktowania zewnętrznych układów, współpracujących synchronicznie z mikrokon-
trolerem. Może również posłużyć do dokładnej, programowej kalibracji częstotliwości wewnętrznego oscylatora RC
(za pomocą rejestru OSCCAL).
W niektórych modelach sygnał na pinie CLKO jest dostępny również podczas włączania/resetu mikrokontrolera
(np. ATtiny48/88, ATmega48/88/168/328, ATmega164/324/644/1284). W przypadku modeli, w których drugą funkcją
pinu CLKO jest XTAL2, nie można wtedy używać rezonatorów kwarcowych/ceramicznych (np. ATtiny25/45/85,
ATtiny261/461/861).

6. Pomiar napięcia wewnętrznego źródła odniesienia

Można zmierzyć wartość wewnętrznego napięcia odniesienia przy użyciu woltomierza. W tym celu, należy włączyć
przetwornik analogowo-cyfrowy ADC (bit ADEN=1 w rejestrze ADCSRA) oraz tak ustawić bity REFSx w rejestrze
ADMUX (ADc MUltipleXer selection register), aby wybrać wewnętrzne źródło napięcia odniesienia z zewnętrznym
kondensatorem na pinie AREF ("Internal x.xV Voltage Reference with external capacitor at AREF pin"). Nie każdy
model mikrokontrolera pozwala na taką konfigurację.
Po tej operacji na pinie AREF, pojawi się napięcie referencyjne Vref z wewnętrznego źródła odniesienia. Teraz wy-
starczy podłączyć do tego pinu woltomierz o dużej rezystancji wejściowej (np. 10M), aby sprawdzić jaką rzeczywistą
wartość ma to napięcie.
Źródło wewnętrznego napięcia odniesienia ma bardzo dużą rezystancję wyjściową, a więc zapewnia bardzo małą
wydajność prądową. Dlatego do pinu AREF powinno podłączać się tylko obciążenia pojemnościowe (np. konden-
sator filtrujący 100nF). Wszystkie obciążenia rezystancyjne (rezystory pull-up/pull-down) powinny zostać odłączone
od tego pinu.

7. Maksymalny prąd wewnętrznych diod zabezpieczających

Każdy pin mikrokontrolera posiada dwie diody zabezpieczające (clamping diodes) o spadku napięcia 0.5V, które
chronią układ przed za wysokim/niskim napięciem wejściowym Vin w stosunku do jego napięcia zasilania Vcc.
Utrzymują one wszystkie sygnały trafiające do mikrokontrolera w zakresie jego maksymalnych napięć wejściowych
(od GND-0.5V do Vcc+0.5V), wymienionym w nocie katalogowej. Wewnętrzna budowa pinu mikrokontrolera jest
przedstawiona na poniższym rysunku.


 
Podanie napięcia Vin o wartości wyższej niż Vcc+0.5V, spowoduje przepływ
prądu przez górną diodę zabezpieczającą Dup do plusa zasilania, a w re-
zultacie zmniejszenie napięcia Vin do wartości Vcc+0.5V. Z kolei podanie
napięcia Vin o wartości niższej niż GND-0.5V, spowoduje przepływ prądu
przez dolną diodę zabezpieczającą Ddn do masy zasilania, a w rezultacie
zmniejszenie napięcia Vin do wartości GND-0.5V.
Jedynym ograniczeniem jest zalecany maksymalny prąd płynący przez wew-
nętrzne diody zabezpieczające, który nie powinien przekroczyć wartości 1mA.
Większy prąd może spowodować uszkodzenie diody zabezpieczającej,
a następnie pinu/portu mikrokontrolera.
Wynika z tego, że stosując odpowiednio dużą wartość rezystancji wejściowej
Rin, na pin mikrokontrolera można podać napięcie wejściowe Vin, o wartości
znacznie przekraczającej jego maksymalny zakres podany w nocie katalogo-
wej (od GND-0.5V do Vcc+0.5V).
Przy rezystorze Rin=1M na pin mikrokontrolera można podać napięcie uje-
mne/dodatnie Vin=1000V, bez obawy o jego uszkodzenie. Jest to dokładnie opisane w nocie aplikacyjnej "AVR182:
Zero Cross Detector" firmy Atmel/Microchip.

8. Wewnętrzny oscylator PLL

Mikrokontrolery ATtiny25/26/45/85/261/461/861 zawierają wewnętrzny oscylator PLL (Phase Locked Loop). Na jego
wyjściu uzyskuje się sygnał o częstotliwości 64 MHz (8x częstotliwość wewnętrznego oscylatora RC 8MHz) lub 32MHz
(8x 4MHz). Sygnał ten może służyć do asynchronicznego taktowania timera/licznika 1 (32/64MHz) lub do taktowania
samego mikrokontrolera po podziale przez 4 (8/16 MHz).

9. Programowa instrukcja XCHG (eXCHanGe two registers)

Lista instrukcji 8-bitowych mikrokontrolerów AVR nie zawiera żadnej instrukcji, która służy do wymiany zawartości
dwóch rejestrów, np. Raa i Rbb (Raa, Rbb = R0-R31). Najprostszym rozwiązaniem problemu jest wykorzystanie
trzeciego rejestru tymczasowego Rxx:

mov  Rxx,Raa
mov  Raa,Rbb
mov  Rbb,Rxx

Jednak nie zawsze jest do dyspozycji taki wolny rejestr tymczasowy. Jak się okazuje zadanie to można wykonać
również bez niego (oba rozwiązania mają jednakową liczbę, rozmiar i czas wykonywania instrukcji):

eor  Raa,Rbb
eor  Rbb,Raa
eor  Raa,Rbb


10. Maksymalna częstotliwość taktowania

Maksymalna częstotliwość taktowania mikrokontrolera jest bezpośrednio zależna od jego napięcia zasilania: im
mniejsze napięcie, tym niższa częstotliwość. W notach aplikacyjnych (np. ATtiny25/45/85, ATmega48/88/168/328)
znajdują się wykresy ilustrujące tą zależność, jednak bez podanych konkretnych wartości napięcia/częstotliwości.
Poniższy wykres przedstawia w dokładny sposób, zależność maksymalnej częstotliwości taktowania Fmax mikro-
kontrolera od jego napięcia zasilania Vcc. Jest to tzw. bezpieczny obszar działania (Safe Operating Area) co oznacza,
że producent gwarantuje pracę mikrokontrolera przy podanych wartościach napięcia/częstotliwości.



11. Sygnatura i interfejs programowania

Każdy mikrokontroler posiada zapisaną 3-bajtową sygnaturę, która pozwala rozpoznać jego model podczas pro-
gramowania przez interfejs szeregowy ISP (In-System Programming), wysoko-napięciowy szeregowy HVSP (High
Voltage Serial Programming), nisko-napięciowy równoległy LVPP (Low Voltage Parallel Programming), wysoko-
napięciowy równoległy HVPP (High Voltage Parallel Programming), szeregowy JTAG (Joint Test Action Group)
lub szeregowy TPI (Tiny Programming Interface). Interfejs dW (debugWire) służy tylko do debugowania układu i nie
umożliwia odczytu jego sygnatury.
Pierwszy bajt sygnatury ma zawsze wartość $1E i oznacza producenta, czyli firmę Atmel/Microchip. Sygnatura jest
tworzona podczas projektowania układu i nie można jej później zmienić w żaden sposób. Algorytm odczytu sygnatury
jest dokładnie opisany w nocie aplikacyjnej danego modelu mikrokontrolera.

Poniżej znajduje się tabela z podstawowymi informacjami o 8-bitowych mikrokontrolerach AVR (pamięć FLASH/
EEPROM/SRAM, sygnatura, maksymalna częstotliwość, napięcie zasilania, interfejs programowania/debugowania,
obudowa). Informacje te pochodzą z not aplikacyjnych i plików definicji (XML/ATDF) środowiska "AVR Studio 4.19"
oraz "Atmel Studio 7.0.2397".

ModelFLASH/EEPR-
OM/SRAM [B]
SygnaturaFmax
[MHz]
Vcc [V]InterfejsObudowa
AT90
AT90S1200-4
AT90S1200-12
1k/64/-1E9001*4
12
2.7-6.0
4.0-6.0
ISP/HVPPDIP20/SOIC20/SSOP20
AT90S2313-4
AT90S2313-10
2k/128/1281E9101*4
10
2.7-6.0
4.0-6.0
ISP/HVPPDIP20/SOIC20
AT90S2323-10
AT90LS2323-4
2k/128/1281E9102*10
4
4.0-6.0
2.7-6.0
ISP/HVSPDIP8/SOIC8
AT90S2333-8
AT90LS2333-4
2k/128/1281E9105*8
4
4.0-6.0
2.7-6.0
ISP/HVPPDIP28/TQFP32
AT90S2343-10
AT90LS2343-4
AT90LS2343-1
2k/128/1281E9103*10
4
1
4.0-6.0
2.7-6.0
2.7-6.0
ISP/HVSPDIP8/SOIC8
AT90S4414-4
AT90S4414-8
4k/256/2561E9201*4
8
2.7-6.0
4.0-6.0
ISP/HVPPDIP40/PLCC44/TQFP44
AT90S4433-8
AT90LS4433-4
4k/256/1281E9203*8
4
4.0-6.0
2.7-6.0
ISP/HVPPDIP28/TQFP32
AT90S4434-8
AT90LS4434-4
4k/256/2561E9202*8
4
4.0-6.0
2.7-6.0
ISP/HVPPDIP40/PLCC44/TQFP44
AT90S8515-4
AT90S8515-8
8k/512/5121E9301*4
8
2.7-6.0
4.0-6.0
ISP/HVPPDIP40/PLCC44/TQFP44
AT90C8534
AT90VC8534
8k/512/2561E93041.5
1
3.3-6.0LVPPTQFP48
AT90S8535-8
AT90LS8535-4
8k/512/5121E9303*8
4
4.0-6.0
2.7-6.0
ISP/HVPPDIP40/PLCC44/TQFP44
AT90CAN3232k/1k/2k1E9581162.7-5.5ISP/HVPP/JTAGTQFP64/VQFN64
AT90CAN6464k/2k/4k1E9681162.7-5.5ISP/HVPP/JTAGTQFP64/VQFN64
AT90CAN128128k/4k/4k1E9781162.7-5.5ISP/HVPP/JTAGTQFP64/VQFN64
AT90PWM18k/512/5121E9383162.7-5.5ISP/HVPP/dWSOIC24/VQFN32
AT90PWM2
AT90PWM2B
8k/512/5121E9381
1E9383
162.7-5.5ISP/HVPP/dWSOIC24
AT90PWM3
AT90PWM3B
8k/512/5121E9381
1E9383
162.7-5.5ISP/HVPP/dWSOIC32/VQFN32
AT90PWM818k/512/2561E9388162.7-5.5ISP/HVPP/dWSOIC20/VQFN32
AT90PWM16116k/512/1k1E948B162.7-5.5ISP/HVPP/dWSOIC20/VQFN32
AT90PWM216
AT90PWM316
16k/512/1k1E9483162.7-5.5ISP/HVPP/dWSOIC24
SOIC32/VQFN32
AT90USB828k/512/5121E9382162.7-5.5ISP/HVPP/dWVQFN32
AT90USB16216k/512/5121E9482162.7-5.5ISP/HVPP/dWTQFP32/VQFN32
AT90USB646
AT90USB647
64k/2k/4k1E9682162.7-5.5ISP/HVPP/JTAGTQFP64/VQFN64
AT90USB1286
AT90USB1287
128k/4k/8k1E9782162.7-5.5ISP/HVPP/JTAGTQFP64/VQFN64
ATtiny
ATtiny4512/-/321E8F0A121.8-5.5TPISOT23-6/UDFN8
ATtiny5512/-/321E8F09121.8-5.5TPISOT23-6/UDFN8
ATtiny91k/-/321E9008121.8-5.5TPISOT23-6/UDFN8
ATtiny101k/-/321E9003121.8-5.5TPISOT23-6/UDFN8
ATtiny11
ATtiny11L
1k/-/-1E90046
2
4.0-5.5
2.7-5.5
HVSPDIP8/SOIC8
ATtiny12
ATtiny12L
ATtiny12V
1k/64/-1E9005*8
4
1.2
4.0-5.5
2.7-5.5
1.8-5.5
ISP/HVSPDIP8/SOIC8
ATtiny13
ATtiny13A
ATtiny13V
1k/64/641E900720
20
10
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVSP/dWDIP8/SOIC8/VDFN10/WQFN20
ATtiny15L1k/64/-1E90061.62.7-5.5ISP/HVSPDIP8/SOIC8
ATtiny202k/-/1281E910F121.8-5.5TPISOIC14/TSSOP14/VQFN20/
UFBGA15/WLCSP12
ATtiny22
ATtiny22L
2k/128/1281E9106*8
4
4.0-6.0
2.7-6.0
ISP/HVSPDIP8/SOIC8
ATtiny24
ATtiny24A
ATtiny24V
2k/128/1281E910B20
20
10
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVSP/dWDIP14/SOIC14/WQFN20
DIP14/SOIC14/VQFN20/WQFN20/UFBGA15
DIP14/SOIC14/WQFN20
ATtiny25
ATtiny25V
2k/128/1281E910820
10
2.7-5.5
1.8-5.5
ISP/HVSP/dWDIP8/SOIC8/WQFN20
ATtiny26
ATtiny26L
2k/128/1281E910916
8
4.5-5.5
2.7-5.5
ISP/HVPPDIP20/SOIC20/VQFN32
ATtiny28L
ATtiny28V
2k/-/-1E91074
1.2
2.7-5.5
1.8-5.5
HVPPDIP28/TQFP32/VQFN32
ATtiny404k/-/2561E920E121.8-5.5TPISOIC20/TSSOP20/VQFN20
ATtiny43U4k/64/2561E920C81.8-5.5ISP/HVPP/dWSOIC20/WQFN20
ATtiny44
ATtiny44A
ATtiny44V
4k/256/2561E920720
20
10
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVSP/dWDIP14/SOIC14/WQFN20
DIP14/SOIC14/VQFN20/WQFN20/UFBGA15
DIP14/SOIC14/WQFN20
ATtiny45
ATtiny45V
4k/256/2561E920620
10
2.7-5.5
1.8-5.5
ISP/HVSP/dWDIP8/SOIC8/TSSOP8/WQFN20
ATtiny484k/64/2561E9209121.8-5.5ISP/HVPP/dWDIP28/TQFP32/
VQFN28/VQFN32/UFBGA32
ATtiny84
ATtiny84A
ATtiny84V
8k/512/5121E930C20
20
10
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVSP/dWDIP14/SOIC14/WQFN20
DIP14/SOIC14/VQFN20/WQFN20/UFBGA15
DIP14/SOIC14/WQFN20
ATtiny85
ATtiny85V
8k/512/5121E930B20
10
2.7-5.5
1.8-5.5
ISP/HVSP/dWDIP8/SOIC8/WQFN20
ATtiny878k/512/5121E9387161.8-5.5ISP/HVPP/dWSOIC20/TSSOP20/VQFN32
ATtiny888k/64/5121E9311121.8-5.5ISP/HVPP/dWDIP28/TQFP32/
VQFN28/VQFN32/UFBGA32
ATtiny16716k/512/5121E9487161.8-5.5ISP/HVPP/dWSOIC20/TSSOP20/VQFN32/WQFN20
ATtiny261
ATtiny261A
ATtiny261V
2k/128/1281E910C20
20
10
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVPP/dWDIP20/SOIC20/VQFN32
DIP20/SOIC20/TSSOP20/VQFN32
DIP20/SOIC20/VQFN32
ATtiny32732k/1k/2k1E----162.7-5.5ISP/HVPP/dWSOIC20/TSSOP20/VQFN32/WQFN20
ATtiny4414k/256/2561E9215161.7-5.5ISP/HVSP/dWSOIC14/VQFN20/WQFN20
ATtiny461
ATtiny461A
ATtiny461V
4k/256/2561E920820
20
10
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVPP/dWDIP20/SOIC20/VQFN32
DIP20/SOIC20/TSSOP20/VQFN32
DIP20/SOIC20/VQFN32
ATtiny8288k/256/5121E9314201.7-5.5ISP/HVPP/dWTQFP32/VQFN32
ATtiny8418k/512/5121E9315161.7-5.5ISP/HVSP/dWSOIC14/VQFN20/WQFN20
ATtiny861
ATtiny861A
ATtiny861V
8k/512/5121E930D20
20
10
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVPP/dWDIP20/SOIC20/VQFN32
DIP20/SOIC20/TSSOP20/VQFN32
DIP20/SOIC20/VQFN32
ATtiny1634
ATtiny1634R
16k/256/1k1E9412121.8-5.5ISP/HVPP/dWSOIC20/WQFN20
ATtiny2313
ATtiny2313A
ATtiny2313V
2k/128/1281E910A20
20
10
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVPP/dWDIP20/SOIC20/WQFN20
DIP20/SOIC20/VQFN20/WQFN20
DIP20/SOIC20/WQFN20
ATtiny43134k/256/2561E920D201.8-5.5ISP/HVPP/dWDIP20/SOIC20/VQFN20/WQFN20
ATmega
ATmega4HVD4k/256/5121E931342.1-5.5ISP/HVSP/dWDRDFN18
ATmega8
ATmega8A
ATmega8L
8k/512/1k1E930716
16
8
4.5-5.5
2.7-5.5
2.7-5.5
ISP/HVPPDIP28/TQFP32/VQFN32
DIP28/TQFP32/VQFN32
DIP28/TQFP32/VQFN32
ATmega8U28k/512/5121E9389162.7-5.5ISP/HVPP/dWTQFP32/VQFN32
ATmega8HVA8k/256/5121E931041.8-9.0ISP/HVSP/dWTSOP28/LGA36
ATmega8HVD8k/256/5121E931242.1-5.5ISP/HVSP/dWDRDFN18
ATmega16
ATmega16A
ATmega16L
16k/512/1k1E940316
16
8
4.5-5.5
2.7-5.5
2.7-5.5
ISP/HVPP/JTAGDIP40/TQFP44/VQFN44
ATmega16M116k/512/1k1E9484162.7-5.5ISP/HVPP/dWTQFP32/VQFN32
ATmega16U216k/512/5121E9489162.7-5.5ISP/HVPP/dWTQFP32/VQFN32
ATmega16U4
ATmega16U4RC
16k/512/1.25k1E9488162.7-5.5ISP/HVPP/JTAGTQFP44/VQFN44
ATmega16HVA
ATmega16HVA2
16k/256/512
16k/256/1k
1E940C
1E940E
41.8-9.0ISP/HVSP/dWTSOP28/LGA36
ATmega16HVB16k/512/1k1E940D84.0-18.0ISP/HVPP/dWTSSOP44
ATmega32
ATmega32A
ATmega32L
32k/1k/2k1E950216
16
8
4.5-5.5
2.7-5.5
2.7-5.5
ISP/HVPP/JTAGDIP40/TQFP44/VQFN44
ATmega32C132k/1k/2k1E9586162.7-5.5ISP/HVPP/dWTQFP32/VQFN32
ATmega32M132k/1k/2k1E9584162.7-5.5ISP/HVPP/dWTQFP32/VQFN32
ATmega32U232k/1k/1k1E958A162.7-5.5ISP/HVPP/dWTQFP32/VQFN32
ATmega32U4
ATmega32U4RC
32k/1k/2.5k1E9587162.7-5.5ISP/HVPP/JTAGTQFP44/VQFN44
ATmega32U632k/1k/2.5k1E9588162.7-5.5ISP/HVPP/JTAGTQFP64/VQFN64
ATmega32HVB32k/1k/2k1E951084.0-18.0ISP/HVPP/dWTSSOP44
ATmega32HVE
ATmega32HVE2
32k/1k/4k1E9513155.0-27.0ISP/HVSP/dWTSOP28/LGA36
VQFN48
ATmega48
ATmega48A
ATmega48V
4k/256/5121E920520
20
10
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVPP/dWDIP28/TQFP32/VQFN28/VQFN32
DIP28/TQFP32/VQFN28/VQFN32/UFBGA32
DIP28/TQFP32/VQFN28/VQFN32
ATmega48P
ATmega48PA
ATmega48PV
4k/256/5121E920A20
20
10
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVPP/dWDIP28/TQFP32/VQFN28/VQFN32
DIP28/TQFP32/VQFN28/VQFN32/UFBGA32
DIP28/TQFP32/VQFN28/VQFN32
ATmega48PB4k/256/5121E9210201.8-5.5ISP/HVPP/dWTQFP32/VQFN32
ATmega64
ATmega64A
ATmega64L
64k/2k/4k1E960216
16
8
4.5-5.5
2.7-5.5
2.7-5.5
ISP/HVPP/JTAGTQFP64/VQFN64
ATmega64C164k/2k/4k1E9686162.7-5.5ISP/HVPP/dWTQFP32/VQFN32
ATmega64M164k/2k/4k1E9684162.7-5.5ISP/HVPP/dWTQFP32/VQFN32
ATmega64HVE
ATmega64HVE2
64k/1k/4k1E9610155.0-27.0ISP/HVSP/dWTSOP28/LGA36
VQFN48
ATmega64RFR264k/2k/8k1EA602161.8-3.6ISP/LVPP/JTAGVQFN64
ATmega88
ATmega88A
ATmega88V
8k/512/1k1E930A20
20
10
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVPP/dWDIP28/TQFP32/VQFN32
DIP28/TQFP32/VQFN28/VQFN32/UFBGA32
DIP28/TQFP32/VQFN32
ATmega88P
ATmega88PA
ATmega88PV
8k/512/1k1E930F20
20
10
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVPP/dWDIP28/TQFP32/VQFN32
DIP28/TQFP32/VQFN28/VQFN32/UFBGA32
DIP28/TQFP32/VQFN32
ATmega88PB8k/512/1k1E9316201.8-5.5ISP/HVPP/dWTQFP32/VQFN32
ATmega103
ATmega103L
128k/4k/4k1E97016
4
4.0-5.5
2.7-3.6
ISP/HVPPTQFP64
ATmega128
ATmega128A
ATmega128L
128k/4k/4k1E970216
16
8
4.5-5.5
2.7-5.5
2.7-5.5
ISP/HVPP/JTAGTQFP64/VQFN64
ATmega128RFA1128k/4k/16k1EA701161.8-3.6ISP/LVPP/JTAGVQFN64
ATmega128RFR2128k/4k/16k1EA702161.8-3.6ISP/LVPP/JTAGVQFN64
ATmega161
ATmega161L
16k/512/1k1E94018
4
4.0-5.5
2.7-5.5
ISP/HVPPDIP40/PLCC44/TQFP44
ATmega162
ATmega162V
16k/512/1k1E940416
8
2.7-5.5
1.8-5.5
ISP/HVPP/JTAGDIP40/TQFP44/VQFN44
ATmega163
ATmega163L
16k/512/1k1E94028
4
4.0-5.5
2.7-5.5
ISP/HVPPDIP40/TQFP44
ATmega164
ATmega164A
ATmega164V
16k/512/1k1E940F20
20
10
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVPP/JTAGDIP40/TQFP44/VQFN44
DIP40/TQFP44/VQFN44/DRQFN44/VFBGA49
DIP40/TQFP44/VQFN44
ATmega164P
ATmega164PA
ATmega164PV
16k/512/1k1E940A20
20
10
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVPP/JTAGDIP40/TQFP44/VQFN44/DRQFN44
DIP40/TQFP44/VQFN44/DRQFN44/VFBGA49
DIP40/TQFP44/VQFN44
ATmega165
ATmega165A
ATmega165V
16k/512/1k1E9405
1E9410
1E9405
16
16
8
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVPP/JTAGTQFP64/VQFN64
TQFP64/VQFN64/DRQFN64
TQFP64/VQFN64
ATmega165P
ATmega165PA
ATmega165PV
16k/512/1k1E940716
16
8
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVPP/JTAGTQFP64/VQFN64
TQFP64/VQFN64/DRQFN64
TQFP64/VQFN64
ATmega168
ATmega168A
ATmega168V
16k/512/1k1E940620
20
10
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVPP/dWDIP28/TQFP32/VQFN32
DIP28/TQFP32/VQFN28/VQFN32/UFBGA32
DIP28/TQFP32/VQFN32
ATmega168P
ATmega168PA
ATmega168PV
16k/512/1k1E940B20
20
10
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVPP/dWDIP28/TQFP32/VQFN32
DIP28/TQFP32/QFN28/VQFN32/UFBGA32
DIP28/TQFP32/VQFN32
ATmega168PB16k/512/1k1E9415201.8-5.5ISP/HVPP/dWTQFP32/VQFN32
ATmega169
ATmega169A
ATmega169V
16k/512/1k1E9405
1E9411
1E9405
16
16
8
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVPP/JTAGTQFP64/VQFN64
TQFP64/VQFN64/DRQFN64
TQFP64/VQFN64
ATmega169P
ATmega169PA
ATmega169PV
16k/512/1k1E940516
16
8
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVPP/JTAGTQFP64/VQFN64/DRQFN64
ATmega256RFR2256k/8k/32k1EA802161.8-3.6ISP/LVPP/JTAGVQFN64
ATmega323
ATmega323L
32k/1k/2k1E95018
4
4.0-5.5
2.7-5.5
ISP/HVPP/JTAGDIP40/TQFP44
ATmega324
ATmega324A
ATmega324V
32k/1k/2k1E951520
20
10
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVPP/JTAGDIP40/TQFP44/VQFN44
DIP40/TQFP44/VQFN44/DRQFN44/VFBGA49
DIP40/TQFP44/VQFN44
ATmega324P
ATmega324PA
ATmega324PV
32k/1k/2k1E9508
1E9511
1E9508
20
20
10
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVPP/JTAGDIP40/TQFP44/VQFN44
DIP40/TQFP44/VQFN44/DRQFN44/VFBGA49
DIP40/TQFP44/VQFN44
ATmega324PB32k/1k/2k1E9517201.8-5.5ISP/HVPP/JTAGTQFP44/VQFN44
ATmega325
ATmega325A
ATmega325V
32k/1k/2k1E950516
20
8
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVPP/JTAGTQFP64/VQFN64
ATmega325P
ATmega325PA
ATmega325PV
32k/1k/2k1E950D20
20
10
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVPP/JTAGTQFP64/VQFN64
ATmega328
ATmega328P
ATmega328PV
32k/1k/2k1E9514
1E950F
1E950F
20
20
10
1.8-5.5
2.7-5.5
1.8-5.5
ISP/HVPP/dWDIP28/TQFP32/VQFN28/VQFN32
DIP28/TQFP32/VQFN28/VQFN32
DIP28/TQFP32/VQFN32
ATmega328PB32k/1k/2k1E9516201.8-5.5ISP/HVPP/dWTQFP32/VQFN32
ATmega329
ATmega329A
ATmega329V
32k/1k/2k1E950316
20
8
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVPP/JTAGTQFP64/VQFN64
ATmega329P
ATmega329PA
ATmega329PV
32k/1k/2k1E950B20
20
10
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVPP/JTAGTQFP64/VQFN64
ATmega40640k/512/2k1E950714.0-25.0HVPP/JTAGLQFP48
ATmega603
ATmega603L
64k/2k/4k1E96016
4
4.0-5.5
2.7-3.6
ISP/HVPPTQFP64
ATmega640
ATmega640V
64k/4k/8k1E960816
8
2.7-5.5
1.8-5.5
ISP/HVPP/JTAGTQFP100/TFBGA100/CBGA100
ATmega644
ATmega644A
ATmega644V
64k/2k/4k1E960920
20
10
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVPP/JTAGDIP40/TQFP44/VQFN44
DIP40/TQFP44/VQFN44
DIP40/TQFP44/VQFN44
ATmega644P
ATmega644PA
ATmega644PV
64k/2k/4k1E960A20
20
10
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVPP/JTAGDIP40/TQFP44/VQFN44
ATmega644RFR264k/2k/8k1EA603161.8-3.6ISP/LVPP/JTAGVQFN48
ATmega645
ATmega645A
ATmega645V
64k/2k/4k1E960516
16
8
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVPP/JTAGTQFP64/VQFN64
ATmega645P64k/2k/4k1E960D161.8-5.5ISP/HVPP/JTAGTQFP64/VQFN64
ATmega649
ATmega649A
ATmega649V
64k/2k/4k1E960316
16
8
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVPP/JTAGTQFP64/VQFN64
ATmega649P64k/2k/4k1E960B161.8-5.5ISP/HVPP/JTAGTQFP64/VQFN64
ATmega1280
ATmega1280V
128k/4k/8k1E970316
8
2.7-5.5
1.8-5.5
ISP/HVPP/JTAGTQFP100/TFBGA100/CBGA100
ATmega1281
ATmega1281V
128k/4k/8k1E970416
8
2.7-5.5
1.8-5.5
ISP/HVPP/JTAGTQFP64/VQFN64
ATmega1284
ATmega1284P
128k/4k/16k1E9706
1E9705
201.8-5.5ISP/HVPP/JTAGDIP40/TQFP44/VQFN44
ATmega1284RFR2128k/4k/16k1EA703161.8-3.6ISP/LVPP/JTAGVQFN48
ATmega2560
ATmega2560V
256k/4k/8k1E980116
8
4.5-5.5
1.8-5.5
ISP/HVPP/JTAGTQFP100/TFBGA100/CBGA100
ATmega2561
ATmega2561V
256k/4k/8k1E980216
8
4.5-5.5
1.8-5.5
ISP/HVPP/JTAGTQFP64/VQFN64
ATmega2564RFR2
Rev. A
256k/8k/32k1EA803
1EA802
161.8-3.6ISP/LVPP/JTAGVQFN48
ATmega3250
ATmega3250A
ATmega3250V
32k/1k/2k1E950616
20
8
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVPP/JTAGTQFP100
ATmega3250P
ATmega3250PA
ATmega3250PV
32k/1k/2k1E950E20
20
10
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVPP/JTAGTQFP100
ATmega3290
ATmega3290A
ATmega3290V
32k/1k/2k1E950416
20
8
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVPP/JTAGTQFP100
ATmega3290P
ATmega3290PA
ATmega3290PV
32k/1k/2k1E950C20
20
10
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVPP/JTAGTQFP100
ATmega6450
ATmega6450A
ATmega6450V
64k/2k/4k1E960616
20
8
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVPP/JTAGTQFP100
ATmega6450P64k/2k/4k1E960E201.8-5.5ISP/HVPP/JTAGTQFP100
ATmega6490
ATmega6490A
ATmega6490V
64k/2k/4k1E960416
20
8
2.7-5.5
1.8-5.5
1.8-5.5
ISP/HVPP/JTAGTQFP100
ATmega6490P64k/2k/4k1E960C201.8-5.5ISP/HVPP/JTAGTQFP100
ATmega8515
ATmega8515L
8k/512/5121E930616
8
4.5-5.5
2.7-5.5
ISP/HVPPDIP40/PLCC44/TQFP44/VQFN44
ATmega8535
ATmega8535L
8k/512/5121E930816
8
4.5-5.5
2.7-5.5
ISP/HVPPDIP40/PLCC44/TQFP44/VQFN44

Osobne zestawienie zawiera nowsze mikrokontrolery ATxmega z interfejsem PDI (Program and Debug Interface)
oraz najnowsze modele ATtiny/ATmega z interfejsem UPDI (Unified PDI). W porównaniu do starszych modeli, mogą
one zawierać wbudowane dodatkowe moduły i systemy, np. kontroler bezpośredniego dostępu do pamięci DMA
(Direct Memory Access), moduł logiki programowalnej XCL (Xmega Custom Logic)/CCL (Configurable Custom
Logic), generator sumy kontrolnej CRC-16/CRC-32 (Cyclic Redundancy Code), 12-bitowy przetwornik analogowo-
cyfrowy ADC (Analog to Digital Converter), czy 12-bitowy przetwornik cyfrowo-analogowy DAC (Digital to Analog
Converter).

ModelFLASH/EEPR-
OM/SRAM [B]
SygnaturaFmax
[MHz]
Vcc [V]InterfejsObudowa
ATtiny
ATtiny1021k/-/321E900C121.8-5.5TPISOIC8/UDFN8
ATtiny1041k/-/321E900B121.8-5.5TPISOIC14
ATtiny2022k/64/1281E9123201.8-5.5UPDISOIC8
ATtiny2042k/64/1281E9122201.8-5.5UPDISOIC14
ATtiny2122k/64/1281E9121201.8-5.5UPDISOIC8
ATtiny2142k/64/1281E9120201.8-5.5UPDISOIC14
ATtiny4024k/128/2561E9227201.8-5.5UPDISOIC8
ATtiny4044k/128/2561E9226201.8-5.5UPDISOIC14
ATtiny4064k/128/2561E9225201.8-5.5UPDISOIC20/VQFN20
ATtiny4124k/128/2561E9223201.8-5.5UPDISOIC8
ATtiny4144k/128/2561E9222201.8-5.5UPDISOIC14
ATtiny4164k/128/2561E9221201.8-5.5UPDISOIC20/VQFN20
ATtiny4174k/128/2561E9220201.8-5.5UPDIVQFN24
ATtiny8048k/128/5121E9325201.8-5.5UPDISOIC14
ATtiny8068k/128/5121E9324201.8-5.5UPDISOIC20/VQFN20
ATtiny8078k/128/5121E9323201.8-5.5UPDIVQFN24
ATtiny8148k/128/5121E9322201.8-5.5UPDISOIC14
ATtiny8168k/128/5121E9321201.8-5.5UPDISOIC20/VQFN20
ATtiny8178k/128/5121E9320201.8-5.5UPDIVQFN24
ATtiny160416k/256/1k1E9425201.8-5.5UPDISOIC14
ATtiny160616k/256/1k1E9424201.8-5.5UPDISOIC20/VQFN20
ATtiny160716k/256/1k1E9423201.8-5.5UPDIVQFN24
ATtiny161416k/256/2k1E9422201.8-5.5UPDISOIC14
ATtiny161616k/256/2k1E9421201.8-5.5UPDISOIC20/VQFN20
ATtiny161716k/256/2k1E9420201.8-5.5UPDIVQFN24
ATtiny321432k/256/2k1E9520201.8-5.5UPDISOIC14
ATtiny321632k/256/2k1E9521201.8-5.5UPDISOIC20/VQFN20
ATtiny321732k/256/2k1E9522201.8-5.5UPDIVQFN24
ATmega
ATmega8088k/256/1k1E9326201.8-5.5UPDISSOP28/TQFP32/VQFN32
ATmega8098k/256/1k1E932A201.8-5.5UPDITQFP48
ATmega160816k/256/2k1E9427201.8-5.5UPDISSOP28/TQFP32/VQFN32
ATmega160916k/256/2k1E9426201.8-5.5UPDITQFP48
ATmega320832k/256/4k1E9530201.8-5.5UPDISSOP28/TQFP32/VQFN32
ATmega320932k/256/4k1E9531201.8-5.5UPDITQFP48/UQFN48
ATmega480848k/256/6k1E9650201.8-5.5UPDISSOP28/TQFP32/VQFN32
ATmega480948k/256/6k1E9651201.8-5.5UPDIDIP40/TQFP48/UQFN48
ATxmega
ATxmega8E58k/512/1k1E9341321.6-3.6PDITQFP32/VQFN32/UQFN32
ATxmega16A4
ATxmega16A4U
16k/1k/2k1E9441321.6-3.6PDITQFP44/VQFN44/VFBGA49
ATxmega16C416k/1k/2k1E9443321.6-3.6PDITQFP44/VQFN44/VFBGA49
ATxmega16D416k/1k/2k1E9442321.6-3.6PDITQFP44/VQFN44/VFBGA49
ATxmega16E516k/512/2k1E9445321.6-3.6PDITQFP32/VQFN32/UQFN32
ATxmega32A4
ATxmega32A4U
32k/1k/4k1E9541321.6-3.6PDITQFP44/VQFN44/VFBGA49
ATxmega32C332k/1k/4k1E9549321.6-3.6PDITQFP64/VQFN64
ATxmega32C432k/1k/4k1E9544321.6-3.6PDITQFP44/VQFN44/VFBGA49
ATxmega32D332k/1k/4k1E954A321.6-3.6PDITQFP64/VQFN64
ATxmega32D432k/1k/4k1E9542321.6-3.6PDITQFP44/VQFN44/VFBGA49
ATxmega32E532k/1k/4k1E954C321.6-3.6PDITQFP32/VQFN32/UQFN32
ATxmega64A1
ATxmega64A1U
64k/2k/4k1E964E321.6-3.6PDI/JTAGTQFP100/TFBGA100/VFBGA100/CBGA100
ATxmega64A3
ATxmega64A3U
64k/2k/4k1E9642321.6-3.6PDI/JTAGTQFP64/VQFN64
ATxmega64A4
ATxmega64A4U
64k/2k/4k1E9646321.6-3.6PDITQFP44/VQFN44
TQFP44/VQFN44/VFBGA49
ATxmega64B164k/2k/4k1E9652321.6-3.6PDI/JTAGTQFP100/VFBGA100
ATxmega64B364k/2k/4k1E9651321.6-3.6PDI/JTAGTQFP64/VQFN64
ATxmega64C364k/2k/4k1E9649321.6-3.6PDITQFP64/VQFN64
ATxmega64D364k/2k/4k1E964A321.6-3.6PDITQFP64/VQFN64
ATxmega64D464k/2k/4k1E9647321.6-3.6PDITQFP44/VQFN44/VFBGA49
ATxmega128A1
ATxmega128A1U
128k/2k/8k1E974C321.6-3.6PDI/JTAGTQFP100/TFBGA100/VFBGA100/CBGA100
ATxmega128A3
ATxmega128A3U
128k/2k/8k1E9742321.6-3.6PDI/JTAGTQFP64/VQFN64
ATxmega128A4
ATxmega128A4U
128k/2k/8k1E9746321.6-3.6PDITQFP44/VQFN44
TQFP44/VQFN44/VFBGA49
ATxmega128B1128k/2k/8k1E974D321.6-3.6PDI/JTAGTQFP100/VFBGA100
ATxmega128B3128k/2k/8k1E974B321.6-3.6PDI/JTAGTQFP64/VQFN64
ATxmega128C3128k/2k/8k1E9752321.6-3.6PDITQFP64/VQFN64
ATxmega128D3128k/2k/8k1E9748321.6-3.6PDITQFP64/VQFN64
ATxmega128D4128k/2k/8k1E9747321.6-3.6PDITQFP44/VQFN44/VFBGA49
ATxmega192A1192k/2k/16k1E974E321.6-3.6PDI/JTAGTQFP100/CBGA100
ATxmega192A3
ATxmega192A3U
192k/2k/16k1E9744321.6-3.6PDI/JTAGTQFP64/VQFN64
ATxmega192C3192k/2k/16k1E9751321.6-3.6PDITQFP64/VQFN64
ATxmega192D3192k/2k/16k1E9749321.6-3.6PDITQFP64/VQFN64
ATxmega256A1256k/4k/16k1E9846321.6-3.6PDI/JTAGTQFP100/CBGA100
ATxmega256A3
ATxmega256A3U
256k/4k/16k1E9842321.6-3.6PDI/JTAGTQFP64/VQFN64
ATxmega256A3B
ATxmega256A3BU
256k/4k/16k1E9843321.6-3.6PDI/JTAGTQFP64/VQFN64
ATxmega256C3256k/4k/16k1E9846321.6-3.6PDITQFP64/VQFN64
ATxmega256D3256k/4k/16k1E9844321.6-3.6PDITQFP64/VQFN64
ATxmega384A1
ATxmega384C3
384k/4k/32k1E9845321.6-3.6PDI/JTAG
PDI
TQFP100/CBGA100
TQFP64/VQFN64
ATxmega384D3384k/4k/32k1E9847321.6-3.6PDITQFP64/VQFN64

Oznaczenia dotyczące sygnatury:
* - kiedy obydwa bity zabezpieczające są zaprogramowane (Lock mode 3), sygnatury nie da się odczytać
     poprzez nisko-napięciowy interfejs szeregowy ISP - wtedy sygnatura zwróci wartość $000102.

Oznaczenia dotyczące obudowy:
SOIC (Small Outline Integrated Circuit) = SOP (Small Outline Package), BGA (Ball Grid Array), DFN (Dual Flat No
leads), DIP (Dual In-line Package), LCC (Leaded Chip Carrier), LGA (Land Grid Array), QFN (Quad Flat No leads) =
MLF (Micro Lead Frame), QFP (Quad Flat Package), CBGA (Ceramic BGA), FBGA (Fine-pitch BGA), SSOP (Shrink
SOP), TSOP (Thin SOP), PLCC (Plastic LCC), LQFP (Low profile QFP), TQFP (Thin QFP), UDFN (Ultra thin DFN),
UQFN (Ultra thin QFN), VDFN (Very thin DFN), VQFN (Very thin QFN), WQFN (Very VQFN), DRDFN (Dual Row DFN),
DRQFN (Dual Row QFN), SOT (Small Outline Transistor), TSSOP (Thin SSOP), TFBGA (Thin FBGA), UFBGA (Ultra
thin FBGA), VFBGA (Very thin FBGA), WLCSP (Wafer Level Chip Scale Package).

Rozmieszczenie sygnałów na złączach interfejsów programowania:





Dodatkowe informacje:
Algorytm programowania mikrokontrolera AT90S1200, jako jedyny różni się od pozostałych modeli, ponieważ nie
obsługuje on instrukcji ReadBack 0x53 synchronizującej programowanie. System programujący musi o tym wiedzieć,
w przeciwnym razie programowanie nie powiedzie się. Ponadto niektóre mikrokontrolery nie umożliwiają programo-
wania wszystkich fuse bitów (AT90S1200/2313/4414/8515), a większość tylko fuse bitu SPIEN (AT90S2323/2333/
2343/4433/4434/8535, AT90CAN32/64/128, AT90PWM1/2/3/81/161/216/316, AT90USB82/162/646/647/1286/1287,
ATtiny13/22/24/25/26/43/44/45/48/84/85/87/88/167/261/441/461/828/841/861/1634/2313/4313, ATmega4HVD/
8/8U2/8HVA/8HVD/16/16M1/16U2/16U4/16HVA/32/32C1/32M1/32U2/32U4/32U6/48/64/64C1/64M1/64RFR2/
88/103/128/128RFA1/128RFR2/161/162/163/164/165/168/169/256RFR2/323/324/325/328/329/603/640/644/
644RFR2/645/649/1280/1281/1284/1284RFR2/2560/2561/2564RFR2/3250/3290/6450/6490/8515/8535)
poprzez interfejs ISP.
Sygnatury następujących mikrokontrolerów są identyczne: AT90PWM2 = AT90PWM3, AT90PWM1 = AT90PWM2B
= AT90PWM3B, AT90PWM216 = AT90PWM316, AT90USB646 = AT90USB647, AT90USB1286 = AT90USB1287,
ATmega165(V) = ATmega169(V/P/PA/PV), ATmega324P = ATmega324PV, ATmega328P = ATmega328PV,
ATxmega256A1 = ATxmega256C3, ATxmega384A1 = ATxmega384C3.
W notach aplikacyjnych modeli ATmega4HVD, ATmega164/324 i ATxmega384A1 sygnatura nie została podana -
widnieje tam napis TBD (To Be Determined), co oznacza że w momencie tworzenia noty, sygnatura układu nie była
jeszcze ustalona. Podane w zestawieniu sygnatury tych mikrokontrolerów to tylko przypuszczenia. Mikrokontrolery
ATxmega192A1/256A1/384A1 prawdopodobnie nie były produkowane.
Mikrokontrolery ATmega164/324 pojawiły się w nocie aplikacyjnej "ATmega164/V, ATmega324/V, ATmega644/V"
w wersji 2593A, po czym zostały całkowicie usunięte w wersji 2593B (prawdopodobnie nie były produkowane).
Mikrokontroler ATmega32U6 pojawił się w nocie aplikacyjnej AT90USB646/647/1286/1287 w wersji 7593H, po czym
został całkowicie usunięty w wersji 7593K (był produkowany, a jego definicja znajduje się w "AVR Studio 4.19").
Modele AT90C8534, ATmega64RFR2/128RFA1/128RFR2/256RFR2/644RFR2/1284RFR2/2564RFR2 są programo-
wane równolegle, jednak bez użycia wysokiego napięcia (11.5-12.5V).
Poszukuję not aplikacyjnych mikrokontrolerów ATtiny327 (automotive - model przeznaczony dla branży motoryzacyjnej),
ATmega32HVE/64HVE (definicja 64HVE w "AVR Studio 4.19") oraz ATtiny3214 (definicja w "Atmel Studio 7.0.2397").
Podana w zestawieniu sygnatura mikrokontrolera ATmega32HVE to tylko przypuszczenie (możliwe, że nie był produ-
kowany). Posiadam noty nowszych modeli ATmega32HVE2/64HVE2.