Atmel AVR

Przykładowe mikrokontrolery
ATmega8 po odpryśnięciu obudowy
Najprostszy programator
STK500

Atmel AVR – typ ośmiobitowych mikrokontrolerów produkowanych przez firmę Atmel.

Jednostka arytmetyczno-logiczna opracowana przez dwóch studentów z Norweskiej Wyższej Szkoły Technicznej (NTH) oparta jest na schemacie procesora RISC i zasadach zmodyfikowanej architektury harwardzkiej, zawiera 32 ośmiobitowe rejestry. Instrukcje arytmetyczno-logiczne mogą być wykonywane na rejestrach. Dane z pamięci mogą być tylko przesyłane do i z rejestrów. Charakteryzuje się ona prostą strukturą rozkazów, dużą wydajnością obliczeniową (większość rozkazów wykonywana jest w jednym takcie zegara procesora).

Listę rozkazów dopasowano do wymagań współczesnych kompilatorów wprowadzając rozkazy pobierania danych przez adresowanie pamięci rejestrem 16-bitowym (zestaw dwóch rejestrów) z jednoczesnym zwiększeniem lub zmniejszeniem rejestru adresowego (pobierz i zwiększ/zmniejsz).

Mikrokontrolery AVR są popularne wśród hobbystów i amatorów, ze względu na łatwość programowania, a także łatwość uruchomienia. Do niektórych układów wystarczy podłączyć zasilanie, by stanowiły kompletny, programowalny system mikroprocesorowy. W połączeniu z dużymi obudowami typu DIP daje to rzadko spotykaną możliwość budowy prostszych układów mikroprocesorowych bez konieczności pracochłonnego przygotowywania płytki drukowanej.

Podział

Układy typu AVR zostały podzielone na kilka podtypów:

  • 8-bitowe
    • tinyAVR – oznaczenie ATtiny[1]
      • 0,5-16 kB pamięci programu
      • obudowy o 6-32 wyprowadzeniach
      • ograniczony zestaw zintegrowanych peryferiów
      • obniżony pobór mocy
    • megaAVR – oznaczenie ATmega[2]
      • 4-256 kB pamięci programu
      • obudowy o 28-100 wyprowadzeniach
      • rozszerzony zestaw poleceń (m.in. o polecenia do obsługi powiększonej pamięci programu)
      • liczne zintegrowane peryferia (przetworniki AC/CA, timery, liczniki, USB itp)
      • nowsze ATMegi (posiadające czterocyfrowe oznaczenia) cechują się znacznie rozbudowanymi funkcjonalnościami (event system, układ programowalnej logiki, rozbudowane porty IO)
    • AVR XMEGA – oznaczenie ATxmega[3]
      • 8-384 kB pamięci programu
      • obudowy o 32-100 wyprowadzeniach
      • rozszerzone możliwości, takie jak obsługa DMA, system zdarzeń (Event System), logika programowalna (XCL) i sprzętowe wsparcie dla kryptografii (używane m.in. przy współpracy z kartami inteligentnymi)
    • AVR Dx
      • najnowsza rodzina 8-bitowych mikrokontrolerów AVR
      • w przeciwieństwie do poprzednich rodzin płaska przestrzeń adresowa, w której znajduje się pamięć SRAM, EEPROM i wybrana strona pamięci FLASH
      • do 128 kB pamięci programu, do 8 kB pamięci SRAM
      • obudowy do 64 pinów, w tym dostępne są obudowy PDIP
      • układ programowalnej logiki (CCL)
      • system zdarzeń podobny do systemu obecnego w XMEGA
      • przetwornik ADC (12-bitowy) i DAC (10 bitowy)
      • do 4 komparatorów analogowych oraz wzmacniaczy operacyjnych o programowalnym wzmocnieniu
      • do 3 układów detekcji przejścia przez zero
      • do 8 timerów
  • 32 bitowe (lista rozkazów architektury AVR32 jest niekompatybilna z AVR)
    • AVR UC3[4]
      • obudowy QFP, BGA od 44 do 144 i więcej wyprowadzeń
      • seria D
        • najprostsza seria, posiada moduł obsługi pojemnościowych czujników dotykowych
      • seria C
        • wyposażone w jednostkę zmiennoprzecinkową (FPU), Ethernet, CAN, LIN, USB OTG, PWM 16-kanałowy 12-bitowy przetwornik analogowo-cyfrowy (ADC), 4-kanałowy, 12-bitowy przetwornik cyfrowo-analogowy (DAC)
      • seria L
        • seria L została zaprojektowana pod kątem minimalizacji zużycia prądu
      • seria A0/A1
        • jest dedykowana rozwiązaniom potrzebującym złącz Ethernet oraz USB
      • seria A3/A4
        • zawiera moduł kryptograficzny AES o wydajności 22,8 MB/s, może być używany do współpracy z kartami chipowymi
      • seria B
        • zaprojektowana do wykorzystania dużej mocy obliczeniowej oraz złącza USB

Wyposażenie

Poszczególne mikrokontrolery typu AVR różnią się między sobą, przede wszystkim ilością pamięci flash, RAM, liczbą portów wejść/wyjść oraz układami dodatkowymi.

Przykładowo: ATtiny13 ma 1 kB pamięci programu (flash), 64 bajtów EEPROM, 64 bajtów RAM + 32 rejestry, 6 linii wejść/wyjść, 2 kanały PWM, 4 kanały A/D, wewnętrzny oscylator; montowany jest w obudowie o 8 wyprowadzeniach[5].

ATmega2560 ma 256 kB pamięci programu, 4 kB EEPROMu, 8 kB RAM, 86 wejść/wyjść, 4 16-bitowe liczniki sterujące w sumie 6 wyjściami PWM, SPI, 2 układy USART, 16-kanałowy przetwornik analogowo-cyfrowy[6].

Podstawowe elementy AVR (nie wszystkie występują w każdym układzie):

  • pamięć flash - pamięć programu; programowalna w układzie, część programowana podczas pracy układu,
  • pamięć EEPROM,
  • pamięć SRAM,
  • uniwersalne porty wejścia/wyjścia,
  • 8 i 16 bitowe układy czasowo-licznikowe z możliwością generowania sygnału z modulacją szerokości impulsu PWM (w Atxmega można zwiększyć szerokość przez połączenia kaskadowe liczników, a także poszerzyć możliwości generacji sygnałów PWM poprzez wykorzystanie modułu WeX/AWeX)
  • licznik czasu rzeczywistego (RTC)
  • wielokanałowy multipleksowany 10 bitowy przetwornik analogowo-cyfrowy (w Atxmega i AVR Dx 12 bitowy o maksymalnej prędkości 2 milionów próbek na sekundę),
  • przetwornik cyfrowo-analogowy (DAC) 10-bitowy - rodziny Atxmega i AVR Dx,
  • Interfejs TWI pełniący funkcję sprzętowego kontrolera w standardzie I2C
  • interfejs szeregowy USART,
  • interfejs SPI - domyślny interfejs programowania dla Atmega,
  • układy programowalnej logiki,
  • Watchdog,
  • wewnętrzny generator RC,
  • Funkcja ISP realizowana przy użyciu wybranego interfejsu (SPI, JTAG, PDI, TPI, aWire)
  • JTAG, interfejs programowania i debugowania (rezerwuje 4 piny mikrokontrolera) obecny tylko w większych modelach Atmega/Atxmega,
  • DebugWire, umożliwia debugowanie programu dla kontrolerów z ograniczoną liczbą pinów.
  • PDI umożliwiający programowanie i debugowanie układów przy wykorzystaniu jedynie 2 linii sygnałowych (w tym sygnału RESET) - domyślny interfejs dla Atxmega

Zobacz też

  • system operacyjny Contiki

Linki zewnętrzne

  • AVR 8-Bit RISC strona firmy Atmel o mikrokontrolerach AVR (ang.)
  • AVRFreaks najpopularniejszy portal o AVR (ang.)
  • Microchip Studio darmowe środowisko programistyczne dostarczane przez Microchip (ang.) - po przejęciu przez firmę Microchip firmy Atmel nastąpiła zmiana nazwy sztandarowego IDE z Atmel Studio na Microchip Studio
  • WinAVR darmowy kompilator GCC i zestaw narzędzi dla AVR (ang.) - projekt zarzucony, obecnie firma Atmel wydaje własny toolchain dla systemów MS Windows i GNU/Linux, który można pobrać oddzielnie lub razem z Microchip Studio.
  • mikrokontrolery.blogspot.com - popularny portal o AVR w języku polskim (pol.)

Przypisy

  1. tinyAVR Microcontrollers. [dostęp 2014-07-18]. (ang.).
  2. megaAVR Microcontrollers. [dostęp 2014-07-18]. (ang.).
  3. AVR XMEGA Microcontrollers. [dostęp 2014-07-18]. (ang.).
  4. 32-bit AVR UC3 Microcontrollers. [dostęp 2014-07-14]. (ang.).
  5. ATtiny13. [dostęp 2014-07-14]. (ang.).
  6. ATmega2560. [dostęp 2014-07-14]. (ang.).

Media użyte na tej stronie

AVR group.jpg
Autor: Springob, Licencja: CC BY 3.0
ATtiny45-20SU

ATmega8-16PU

ATXmega128A1
Atmega8 lpt programmer.svg
Autor: FDominec, Licencja: CC BY-SA 3.0
Minimal connection to upload the program from PC to the MCU Atmega8-16PU using the parallel port. The MCU is powered from some bit on LPT, which has logical 1 during the programming. This is acceptable regarding the very low power consumption of Atmega8. The LPT connector is intended to be plugged directly to the computer.
Atmel STK 500 DSC00557 wp.jpg
Autor: smial (talk), Licencja: FAL
Atmel STK 500 Entwicklerboard für AVR-Mikrokontroller
Atmel ATmega8 Disassembled.jpg
Autor: Gophi, Licencja: CC BY-SA 3.0
Atmel ATmega8 z odpryśniętą obudową