Inne układy peryferyjne AVR Komparator analogowy Komparator rodzaj prostego przetwornika A/C blok pozwalający na dokonanie 1-bitowej konwersji sygnału z postaci analogowej na cyfrową, czyli sprawdzenia czy napięcie na wejściu komparatora jest powyŝej, czy poniŝej progu komparacji. Zwykle w komparatorze moŝna ustawić: próg komparacji (poziom komparacji), czyli zewnętrzne napięcie podawane na jedno z wejść komparatora traktowane jako napięcie odniesienia (napięcie progowe), warunek komparacji, tzn. co się stanie w przypadku, gdy napięcie wejściowe wzrośnie powyŝej (zmaleje poniŝej) progu komparacji. Spełnienie warunku komparacji powoduje ustawienie odpowiedniej flagi i generację przerwania, o ile nie zostało zablokowane. Schemat blokowy komparatora w ATmega 16 Komparator dokonuje porównania napięć na wejściu dodatnim AINO (pin PB2 ) i ujemnym AIN1 (pin PB3). Jeśli napięcie na pinie + jest wyŝsze niŝ na pinie, wyjście komparatora bit ACO jest ustawiane w stan 1. Wyjście komparatora moŝe sterować licznikiem T/C1 w trybie rejestratora zdarzeń, wyzwalaniem przetwornika A/C lub generacją przerwań dla warunków: zbocze narastające lub opadające lub przełączenie. Rejestr kontrolno-statusowy ACSR. ACD odłączenie komparatora analogowego. ACBG podłączenie źródła referencyjnego (Bandgap) do AIN0. ACO wyjście komparatora analogowego. ACI flaga przerwania komparatora analogowego. ACIE odblokowanie przerwania komparatora analogowego. ACIC funkcja Input Capture z komparatora analogowego. ACIS1:0 wybór sposobu wywołania przerwania komparatora analogowego. Ustawienie bitu ACME w rejestrze SFIOR umoŝliwia podłączenie jednego z pinów ADC7..0 do ujemnego wejścia komparatora (zamiast pinu AIN1). Wybór dokonywany jest bitami MUX2:0 w rejestrze ADMUX multipleksera analogowego przetwornika A/C (przetwornik musi być wyłączony - bit ADEN w rejestrze ADCSRA).
SPI (Serial Pheripheral Interface) Interfejs SPI słuŝy do dwukierunkowej (full-duplex), synchronicznej, szeregowej transmisji danych pomiędzy MK, a zewnętrznymi układami peryferyjnymi, np. przetwornikami A/C i C/A, pamięcią EEPROM, potencjometrami cyfrowymi, programowalnymi generatorami, innym MK, itp. Jest interfejsem trójprzewodowym: składa się z dwóch linii synchronicznie przesyłających dane w przeciwnych kierunkach i linii z sygnałem zegarowym synchronizującym transfer. Dodatkowo MK często wyposaŝone są w czwartą linię: SS słuŝącą do wyboru trybu pracy interfejsu SS = 1 układ Master, SS = 0 układ Slave. Połączenie interfejsu SPI pomiędzy układem nadrzędnym i układem podrzędnym Schemat blokowy SPI w ATmega16 Rejestry funkcyjne: Rejestr danych SPDR Rejestr kontroli SPCR Rejestr statusowy SPSR
Rejestr danych SPDR Rejestr danych SPI słuŝy do odczytu i zapisu transmitowanych danych. Zapis do rejestru inicjuje transmisję. Odczytywanie rejestru powoduje odczyt bufora odbiorczego rejestru przesuwnego. Rejestr kontroli SPCR SPIE Odblokowanie przerwania SPI. SPE włączenie interfejsu SPI. DORD Kolejność transferu bitów danej. MSTR Wybór master/slave. CPOL Polaryzacja zegara (w stanie spoczynku) CPHA Faza zegara. CPHA=1 pierwsze zbocze sygnału zegarowego próbkuje dane wejściowe a drugie przesuwa dane w rejestrze, CPHA=0 pierwsze zbocze przesuwa dane w rejestrze a drugie próbkuje dane wejściowe. SPR1:0 Szybkość zegara SPI dla trybu Master Przebiegi czasowe interfejsu SPI Rejestr statusowy SPSR SPIF flaga przerwania SPI WCOL flaga kolizji zapisu SPI2X podwójna szybkość SPI
Pamięć EEPROM W nieulotnej pamięci danych EEPROM przechowuje się dane pomiarowe, zmienne konfiguracyjne itp., które nie mogą ulec skasowaniu po wyłączeniu zasilania lub w trakcie resetowania MK. Zaletą tej pamięci jest moŝliwość kasowania jej zawartości i wpisu nowych danych z poziomu programu uŝytkownika zapisanego w pamięci programu MK. ATmega16 posiada pamięć EEPROM o rozmiarze 512 bajtów. Rejestry dostępu do EEPROM znajdują się w przestrzeni adresowej we/wy. Czas dostępu przy zapisie zaleŝy od napięcia zasilania i wynosi 2,5 4 ms. Kiedy następuje dostęp do pamięci EEPROM, JC jest zatrzymywana przez dwa takty zegara, a następnie kontynuuje wykonywanie programu. Rejestry funkcyjne pamięci EEPROM: rejestr danych EEDR, rejestr adresowy EEARH:L, rejestr sterujący EECR. Rejestr danych zawiera daną, która ma być zapisana lub która została odczytana z pamięci. Rejestr adresowy pamięci zawiera adres komórki do której realizowany będzie dostęp (EEARL zawiera młodsze 8 bitów adresu, a EEARH jeden najstarszy bit adresu) Rejestr sterujący EECR EERIE gotowość pamięci do wykonania kolejnej operacji. EEMWE ogólny dostęp do zapisu, EEWE zapis do pamięci EEPROM. Procedura zapisu danej do pamięci EEPROM: 1. Czy bit EEWE = 0 w EECR? 2. Czy bit SPMEN = 0 w SPMCR? 3. Wpisz adres do rejestru adresu EEARL:H. 4. Wpisz daną do EEDR. 5. Ustaw (1) bit EEMWE w EECR. 6. W ciągu 4 cykli ustaw bit EEWE w EECR. W czasie wykonywania zapisu przerwania muszą być wyłączone, gdyŝ obsługa przerwania moŝe zakłócić procedurę. EERE odczyt z pamięci EEPROM. Przed odczytem naleŝy sprawdzić czy bit EERE jest wyzerowany. Zakończenie odczytu jest sygnalizowane sprzętowym wyzerowaniem bitu EERE.
Układ nadzorujący - watchdog Układ nadzorujący zapobiega moŝliwości zawieszania się mikrokontrolera na skutek zakłóceń zaistniałych w systemie czy teŝ błędów w programie (niepoŝądane nieskończone pętle programu). Jeśli włączony licznik nadzorcy nie zostanie w określonym czasie wyzerowany, następuje wygenerowanie impulsu resetującego mikrokontroler. Taktowanie układu odbywa się poprzez niezaleŝny oscylator o częstotliwości pracy ok. 1MHz. Aby po uruchomieniu watchdoga (ustawienie bitu WDE) nie nastąpił reset MK naleŝy cyklicznie wykonywać instrukcję WDR.
Oszczędzanie energii RóŜnorodne tryby oszczędzania energii, pozwalają na znaczne wydłuŝenie czasu działania urządzeń zasilanych bateryjnie, a takŝe wpływają na redukcję emitowanych zakłóceń w środowiskach, gdzie ma to szczególne znaczenie. Idle Tryb Idle (bezczynności) zatrzymuje jednostkę CPU pozwalając na pracę układów interfejsów USART, TWI, SPI, przetwornika ADC, systemu przerwań, watchdoga i komparatora analogowego. W tym trybie zegary clkcpu i clkflash są zatrzymane podczas gdy inne mogą pracować. Wybudzenie moŝliwe jest przez wewnętrzne lub zewnętrze przerwanie. Jeśli układ nie musi być wzbudzany przez komparator, to takŝe komparator moŝna wyłączyć dla zwiększenia oszczędności energii. Jeśli ADC jest włączone, to po wejściu w tryb Idle nastąpi automatyczne wystartowanie konwersji. Power-down Tryb Power-down (wyłączonego zasilania) wyłącza mikrokontroler. W tym trybie zewnętrzny oscylator jest zatrzymany do chwili, aŝ pojawi się przerwanie zewnętrzne dopasowania adresu TWI, watchdoga, reset zewnętrzny lub Brown-out. Wyłączone zostają wszystkie zegary pozostawiając działające moduły asynchroniczne. Ponowne uruchomienie następuje z pewnym opóźnieniem, niezbędnym do rozpoczęcia ponownej generacji sygnału zegarowego i osiągnięcia jego stabilności. Czas wybudzania jest określany przez te same bity zabezpieczające CKSEL, które definiują opóźnienie resetu. Power-save Tryb Power-save (oszczędności zasilania) jest podobny do Power-down. Jedyną róŝnicą jest moŝliwość pracy Timera/Licznika2 w sposób asynchroniczny (np. ustawiony bit AS2 w rejestrze ASSR). MoŜe nastąpić przerwanie wybudzające spowodowane przez timer/licznik 2, jeśli odpowiedni bit włączający to przerwanie jest ustawiony w TIMSK oraz ogólny bit przerwań i w SREG jest ustawiony. Jeśli timer asynchroniczny nie będzie pracował z zegara asynchronicznego, wówczas zalecane jest zamiast Power-save uŝycie trybu Power-down. ADC Noise Reduction Tryb ADC Noise Reduction (redukcji szumów przetwornika ADC) zatrzymuje CPU pozwalając na pracę i wybudzenie przez ADC, zewnętrzne przerwania, monitorowanie adresu TWI, timera/licznika2 i watchdoga. Tryb ten pozwala zminimalizować szum przełączania podczas trwania konwersji przetwornika ADC dla zapewnienia większej dokładności. Jeśli przetwornik jest włączony, to wejście w stan uśpienia spowoduje automatyczne rozpoczęcie konwersji. Tryb ten powoduje zatrzymanie zegarów clkcpu, clki/o i clkflash, podczas gdy inne mogą pracować. Standby W trybie Standby (czuwania) rezonator kwarcowy pracuje, podczas gdy reszta układu jest w uśpieniu. Tryb ten moŝe być uŝyty tylko jeśli MK skonfigurowany jest do pracy z zewnętrznym źródłem zegarowym. Podobny jest do trybu Power-down, z tą róŝnicą Ŝe w połączeniu z bardzo niskim poborem mocy pozwala na bardzo szybkie wybudzenie układu. Extended Standby Tryb Extended Standby (rozszerzonego czuwania) od trybu Power-save roŝni się tym Ŝe oscylator pozostaje włączony. Wybudzenie następuje w ciągu sześciu cykli zegarowych.
Rejestr kontroli oszczędzania energii - MCUCR Aby wprowadzić układ w któryś ze stanów oszczędzania energii, naleŝy ustawić bit SE w rejestrze MCUCR oraz wykonać instrukcję SLEEP. Wykonywanie rozkazów zostaje wstrzymane w miejscu wywołania SLEEP i jest kontynuowane z tego miejsca po wybudzeniu. Jeśli wybudzenie następuje na skutek przerwania, to zachowanie się układu jest identyczne, jakby w tym momencie nastąpiło przerwanie podczas normalnej pracy. PoŜądany tryb wybiera się konfigurując bity SMn w MCUCR.
In-System Programming (programowanie w systemie) Moduł ISP Zarówno pamięć FLASH jak i EEPROM, a takŝe bity konfiguracyjne i zabezpieczające mogą być programowane za pomocą szeregowego interfejsu w systemie. Programowanie-w-systemie oznacza, Ŝe zaprogramowanie i weryfikacja zawartości pamięci układu są moŝliwe w mikrokontrolerze będącym fizycznie na docelowej płytce drukowanej wraz z innymi układami. Programowanie szeregowe w systemie moŝe odbywać się za pomocą szyny SPI i/lub JTAG. Programowanie szeregowe pamięci FLASH Programowanie szeregowe pamięci FLASH (12V) Interfejs JTAG JTAG to nazwa standardu definiującego protokół uŝywany do testowania połączeń na płytkach drukowanych, stosowany takŝe do uruchamiania i programowania układów programowalnych i systemów mikroprocesorowych. śeby moŝna było wykorzystywać JTAG układy scalone umieszczone w testowanym systemie muszą posiadać wewnątrz odpowiednią warstwę sprzętową tego interfejsu. Właściwości interfejsu JTAG w mikrokontrolerze ATMega16: Interfejs JTAG zgodny ze standardem IEEE 1149.1. MoŜliwości skanowania wyprowadzeń zgodnie ze standardem JTAG. Dodatkowe instrukcje diagnostyczne IDCODE, AVR_RESET. Instrukcje zapewniające moŝliwość programowania pamięci flash. Funkcje wspomagające debugowanie i śledzenie działania programu w układzie.