|
Wyjście Spis treści Wstecz Dalej
Autor artykułu |
©2026 mgr Jerzy Wałaszek
|

If you use Microchip copyrighted material solely for educational (non-profit) purposes falling under the “fair use” exception of the U.S. Copyright Act of 1976 then you do not need Microchip’s written permission. For example, Microchip’s
permission is not required when using copyrighted material in:
https://www.microchip.com/about-us/legal-information/copyright-usage-guidelines

Rdzeń AVR łączy bogaty zbiór instrukcji z 32 roboczymi rejestrami ogólnego przeznaczenia. Wszystkie 32 rejestry są bezpośrednio połączone z Jednostką Arytmetyczno Logiczną JAL (ang. Arithmetic Logic Unit ALU), umożliwiając jednoczesny dostęp do dwóch niezależnych rejestrów w pojedynczej instrukcji wykonywanej w ciągu jednego cyklu zegarowego. Wynikowa architektura jest bardziej efektywna, a jednocześnie osiąga wydajność do dziesięciu razy większą od typowych mikrokontrolerów CISC (ang. Complex Instruction Set Computer – komputer o liście złożonych rozkazów).
ATmega48A/PA/88A/PA/168A/PA/328/P posiada następujące cechy: 4KB/8KB/16KB/32KB pamięci FLASH programowanej poprzez ISP z możliwością jednoczesnego programowania i odczytywania kodu, 256/512/512/1024 bajty EEPROM, 512/1024/1024/2048 bajty SRAM, 23 linie we/wy ogólnego przeznaczenia, 32 robocze rejestry ogólnego przeznaczenia, licznik czasu rzeczywistego (ang. Real Time Counter, RTC), trzy elastyczne timery/liczniki z trybami porównań i PWM, układ USART, zorientowany na bajty 2-przewodowy interfejs szeregowy, 6-kanałowy (8-kanałowy w obudowach TQFP i QFN/MLF) 10-bitowy przetwornik A/C, programowalny licznik zegarowy (ang. Watchdog Timer) z wewnętrznym oscylatorem, port szeregowy SPI i pięć wybieranych programowo trybów oszczędzania energii. Tryb bezczynny (ang. Idle Mode) zatrzymuje mikroprocesor, pozwalając jednak na pracę pamięci SRAM, timerów/liczników, modułu USART, portu SPI, przetwornika A/C i systemu przerwań. Tryb wyłączenia zasilania (ang. Power-down Mode) zachowuje zawartość rejestrów i zatrzymuje oscylator, wyłączając wszystkie funkcje układu aż do momentu następnego przerwania lub sprzętowego resetu. W trybie oszczędzania energii (ang. Power-save Mode) asynchroniczny timer kontynuuje pracę, pozwalając użytkownikowi utrzymać podstawę timera, natomiast reszta mikrokontrolera jest uśpiona. Tryb zmniejszania zakłóceń dla przetwornika A/C (ang. ADC Noise Reduction Mode) zatrzymuje mikroprocesor i wszystkie moduły we/wy za wyjątkiem asynchronicznego timera i przetwornika A/C w celu zminimalizowania szumu od przełączeń w sieciach logicznych mikrokontrolera podczas przetwarzania napięć wejściowych w przetworniku A/C. W trybie gotowości/czuwania (ang. Standby Mode) oscylator kwarcowy/rezonatorowy pracuje, natomiast reszta mikrokontrolera jest uśpiona. Pozwala to na szybkie uruchomienie w połączeniu z niskim poborem prądu.
Układ mikrokontrolera jest wytwarzany z wykorzystaniem technologii wysokiej gęstości pamięci nieulotnej, którą opracowała firma ATMEL. Wewnętrzna, programowalna poprzez ISP pamięć FLASH pozwala na zaprogramowanie w systemie za pomocą zwykłego programatora pamięci nieulotnych lub za pomocą wbudowanego kodu startowego uruchomionego na rdzeniu AVR. Kod lądujący (ang. boot-loader) może korzystać z dowolnego interfejsu do załadowania programu aplikacji do pamięci FLASH programu. Oprogramowanie w sekcji chronionej FLASH (ang. Boot FLASH Section) może normalnie pracować podczas programowania sekcji kodu aplikacji (ang. Application FLASH Section), cecha ta nosi nazwę Read-While-Write (odczyt podczas zapisu). Przez połączenie 8-bitowego mikroprocesora RISC z samoprogramowalną w systemie pamięcią FLASH w monolitycznym układzie scalonym mikrokontroler ATmega48A/PA/88A/PA/168A/PA/328/P staje się potężnym mikrokontrolerem dostarczającym wysoko elastycznego i efektywnego kosztowo rozwiązania dla wielu wbudowanych w urządzenia aplikacji sterujących.
Mikrokontrolery ATmega48A/PA/88A/PA/168A/PA/328/P są wspierane przez komplet narzędzi do tworzenia systemów oraz ich oprogramowywania, łącznie z makroasemblerami, kompilatorami języka C oraz zestawami uruchomieniowymi.
Mikrokontrolery ATmega48A/PA/88A/PA/168A/PA/328/P różnią się jedynie rozmiarami pamięci, wsparciem boot-loadera oraz rozmiarem wektorów przerwań, co podsumowuje poniższa tabelka.
| Mikrokontroler | FLASH | EEPROM | RAM | Rozmiar wektorów przerwań |
| ATmega48A | 4KB | 256B | 512B | 1 słowo instrukcji na wektor |
| ATmega48PA | 4KB | 256B | 512B | 1 słowo instrukcji na wektor |
| ATmega88A | 8KB | 512B | 1KB | 1 słowo instrukcji na wektor |
| ATmega88PA | 8KB | 512B | 1KB | 1 słowo instrukcji na wektor |
| ATmega168A | 16KB | 512B | 1KB | 2 słowa instrukcji na wektor |
| ATmega168PA | 16KB | 512B | 1KB | 2 słowa instrukcji na wektor |
| ATmega328 | 32KB | 1KB | 2KB | 2 słowa instrukcji na wektor |
| ATmega328P | 32KB | 1KB | 2KB | 2 słowa instrukcji na wektor |
Mikrokontrolery ATmega48A/PA/88A/PA/168A/PA/328/P wspierają prawdziwy mechanizm samoprogramowania z odczytem podczas zapisu (ang. Read-While-Write Self-Programming mechanism). Istnieje oddzielna sekcja Boot Loadera, a instrukcja SPM może być wykonywana tylko z niej. W mikrokontrolerach ATmega48A/48PA nie ma obsługi odczytu przy zapisie oraz nie występuje osobna sekcja Boot Loadera. Instrukcja SPM może być wykonywana w całym obszarze pamięci FLASH.
Do programowania mikrokontrolerów AVR stosowane jest kilka pakietów IDE. Szczególnie polecam Atmel Studio 7, które umożliwia programowanie w języku C oraz w asemblerze. Opis instalacji tego środowiska znajdziesz w tym rozdziale:
Równie popularnym środowiskiem programowania jest Eclipse z uwagi na to, iż może pracować w systemie Linux. Zaletą tego rozwiązania jest to, iż Eclipse pozwala na wykorzystanie tanich programatorów USBasp:
Również środowisko MPLAB X firmy Microchip posiada możliwość programowania mikrokontrolerów AVR:
Dla rejestrów we/wy znajdujących się w rozszerzonej pamięci we/wy należy zastąpić instrukcje IN, OUT, SBIS, SBIC, CBI i SBI instrukcjami, które umożliwiają dostęp do rozszerzonej pamięci we/wy. Zwykle oznacza to instrukcje LDS i STS połączone z SBRS, SBRC, SBR i CBR. Nie wszystkie mikrokontrolery AVR zawierają rozszerzoną pamięć we/wy.
Wykrywanie dotyku (ang. touch sensing) można w prosty sposób dołączyć do dowolnej aplikacji przez połączenie z jej kodem biblioteki QTouch i użycie funkcji interfejsu API udostępnianego przez tę bibliotekę w celu zdefiniowania kanałów dotykowych i czujników dotyku. Aplikacja następnie wywołuje funkcje API do pobrania informacji z kanałów i określania stanu czujnika dotyku.
Biblioteka QTouch jest bezpłatna i można ją pobrać z witryny Microchip'a (w 2016 firma Microchip przejęła swojego konkurenta Atmel i obecnie udostępnia wszystkie materiały pierwotnie udostępniane w sieci przez Atmela), na której znajdziesz również dokumentację oraz przewodniki dla użytkownika.
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2026 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.