Notatki z prezentacji, którą teraz tworzę, może się przydadzą:
Mikrokontrolery AVR stosowane są w przemyśle samochodowym, w systemach zabezpieczających, bezpieczeństwa oraz rozrywkowym. Stosują je np firmy BMW, Daimler Chrysler oraz TRW
W X-Boxie, w padach zastosowano AVRy z interfejsem USB.
Atmega48 pojawia się jako dodatkowy mikrokontroler w Lego Mindstorms NXT.
Atmega8 to 8 bitowy mikrokontroler oparty na technologii CMOS. Jego konstrukcja opiera się na architekturze harwardzkiej. Podstawową cechą charakterystycznę tej architektury jest rozdzielenie przestrzeni adresowej pamięci programu i pamięci danych. Uzyskano to poprzez zastosowanie oddzielnych magistrali dla danych i programu.
Zalety takiego rozwiazania to:
- mozliwosc zastosowania słowa o różnej szerokości dla pamięci programu i pamięci danych
- uchronienie się od przypadków, w których dane mogłyby być interpretowanie jako instrukcje
Dwustopniowe przetwarzanie potokowe - podczas wykonywania instrukcji kod drugiej jest wstępnie pobierany z pamięci programu. Dzięki takiemu rozwiązaniu instrukcje wykonywane są w każdym cyklu zegarowym, zwiększa to znacznie wydajność.
Szczegółowiej:
Program trzymany jest w pamięci flash, która może być reprogramowana w systemie poprzez SPI.
Atmega8 posiada 32 8bitowe rejestry ogólnego użytku o szybkim dostępie - dostęp jest realizowany w trakcie jednego cyklu zegarowego. To z kolei pozwala jednostce ALU na wykonywanie operacji podczas jednego cyklu.
W typowych operacjach, ALU korzysta z dwóch rejestrów jako operandów, po wykonaniu operacji wynik także jest umieszczony w rejestrze, a wszystko to podczas jednego cyklu zegarowego.
6 rejestrów może być użytych jako 3 rejestry 16bitowe, wskaźniki, służące do adresowania pośredniego. Jeden z tych rejestrów może służyć jako wskaźnik do pamięci flash (czyli programu).
Duża liczba rejestrów sprawia, że programy stworzone przez kompilatory języków wysokiego poziomu działają dość wydajnie.
ALU pozwala na dokonywanie operacji matematycznych oraz logicznych pomiędzy rejestrami lub pomiędzy stałą a rejestrem. ALU potrafi także wykonywać operacje na jednym rejestrze.
Po każdej operacji ALU aktualizowany jest rejestr statusu.
Instrukcje w AVR w większości są 16 bitowe, więc pomimo rozmiaru pamięci programu wynoszącego 8kB, zmieszczą się w niej tylko 4k słowa.
Pamięć flash jest podzielona na dwie sekcje. Pierwsza zawiera boot program, druga aplikację.
Sekcja boot zawiera np bity zapezpieczające (o nich później).
Licznik programu jest 12 bitowy, adresuje 4ksłowa w pamięci flash.
Podczas przerwań oraz wywołań procedur, adres powrotny jest przechowywany na stosie. Stos znajduje się w pamięci SRAM, jego rozmiar jest ograniczony jedynie rozmiarem tej pamięci oraz jej innym wykorzystaniem.
Przed pierwszym skokiem przestrzeń stosu musi być zdefiniowana przez program. Wskaźnik stosu musi ustawiony powyżej 0x60.
Wskaźnik stosu jest dostępny z przestrzeni I/O, zarówno do odczytu jak i zapisu.
Wskaźnik stosu pokazuje zawsze na ostatni element stosu.
O AVRach to jest niezła książka Jarosława Dolińskiego. Część to przetłumaczona dokumentacja od Atmela
