AVR
AVR to rodzina 8‑bitowych mikrokontrolerów opracowana i produkowana przez firmę Atmel (od 2016 roku część Microchip Technology). Architektura AVR jest oparta na rdzeniu RISC (Reduced Instruction Set Computing) i została zaprojektowana z myślą o wysokiej wydajności przy jednoczesnym niskim zużyciu energii, co czyni ją popularnym wyborem w zastosowaniach wbudowanych (systemy embedded).
Historia
Projektowanie pierwszych układów AVR rozpoczęło się w latach 1996 w firmie Atmel, a pierwsze seryjne części – AT90S1200 i AT90S2313 – trafiły na rynek w 1996 roku. Nazwa „AVR” pochodzi od inicjałów trzech kluczowych inżynierów projektu: Alfons, Veronica i Robert.
Architektura
- Rdzeń RISC – zestaw instrukcji składa się z jedynie kilku dziesięciu poleceń, z których większość realizowana jest w jednym cyklu zegara.
- Rejestry – 32 ogólnego przeznaczenia rejestrów 8‑bitowych, które można łączyć w pary 16‑bitowe.
- Pamięć – wbudowana pamięć FLASH do przechowywania kodu, SRAM i EEPROM do danych trwałych.
- Interfejsy peryferyjne – UART, SPI, I²C (TWI), PWM, ADC, Timery i Watchdog.
- Tryby niskiego poboru mocy – m.in. tryb Power‑down, Power‑save i Standby, umożliwiające pracę na bateriach przez lata.
Rodziny i modele
W ciągu lat powstało kilka rodzin układów AVR, różniących się ilością pamięci, prędkością taktowania i zestawem peryferiów:
| Rodzina | Przykładowe modele | Pamięć FLASH | Typ aplikacji |
|---|---|---|---|
| ATtiny | ATtiny13, ATtiny85 | 0,5 KB – 8 KB | Proste układy sterujące, czujniki |
| ATmega | ATmega328P, ATmega2560 | 2 KB – 256 KB | Rozbudowane projekty, robotyka |
| AT90CAN | AT90CAN128 | 128 KB | Systemy automotive, CAN bus |
| XMEGA | XMEGA128A1U | 128 KB – 256 KB | Wysoka wydajność, przetwarzanie sygnałów |
Programowanie
Do programowania mikrokontrolerów AVR najczęściej wykorzystuje się język C oraz zestaw narzędzi AVR‑GCC. Popularne środowiska IDE to Atmel Studio oraz PlatformIO. W praktyce wielu hobbystów i edukatorów korzysta z platformy Arduino, której płytki opierają się na układach AVR (np. Arduino Uno – ATmega328P).
Zastosowania
Mikrokontrolery AVR znajdują zastosowanie w szerokiej gamie dziedzin:
- Elektronika konsumencka – piloty zdalnego sterowania, zegary elektroniczne.
- Automatyka domowa – sterowniki oświetlenia, czujniki temperatury.
- Robotyka i drony – kontrolery silników, systemy nawigacji.
- Systemy przemysłowe – sterowniki PLC, interfejsy komunikacyjne.
- Edukacja – platformy edukacyjne Arduino i Raspberry Pi Pico (oparty na RP2040, ale kompatybilny z kodem AVR dzięki SDK).
Porównanie z innymi architekturami
W porównaniu z innymi 8‑bitowymi mikrokontrolerami, takimi jak PIC firmy Microchip, AVR wyróżnia się:
- jednocyklowym wykonaniem większości instrukcji.
- większą ilością rejestrów ogólnego przeznaczenia.
- bogatszym zestawem peryferiów w domyślnych wersjach.
Rozwój i przyszłość
Mimo rosnącej popularności 32‑bitowych rdzeni ARM Cortex‑M, rodzina AVR pozostaje w użyciu ze względu na prostotę, niską cenę i duży ekosystem oprogramowania. Firma Microchip kontynuuje rozwój linii AVR, wprowadzając nowe modele łączące technologię AVR z nowoczesnymi interfejsami takimi jak USB, Ethernet i BLE.
Przykładowy kod
// Miganie diodą LED podłączoną do pinu PB5 (Arduino Uno)
#include <avr/io.h>
#include <util/delay.h>
int main(void) {
// Ustaw PB5 jako wyjście
DDRB |= (1 << DDB5);
while (1) {
// Włącz LED
PORTB |= (1 << PORTB5);
_delay_ms(500);
// Wyłącz LED
PORTB &= ~(1 << PORTB5);
_delay_ms(500);
}
return 0;
}
Źródła i dalsza lektura
Więcej informacji można znaleźć w następujących artykułach encyklopedycznych:
- Atmel – historia i działalność firmy twórcy AVR.
- Arduino – platforma programistyczna oparta na mikrokontrolerach AVR.
- AVR‑GCC – darmowy kompilator C/C++ dla AVR.
- C (język programowania) – język najczęściej używany do programowania AVR.
- Systemy embedded – ogólne zagadnienia dotyczące systemów wbudowanych.