You are on page 1of 341

ATmega 128

Wojciech Gldaa Tomasz Kope ukasz Przepira Tomasz Tokarski Piotr Zych

CECHY
o o Wysoka wydajno, niski pobr mocy AVR 8 bitowy mikrokontroler Zaawansowana architektura RISC o 133 rozkazy wikszo wykonywana w czasie jednego cyklu maszynowego o 32 x 8 rejestry oglno dostpne + rejestr kontroli zewntrznej o statyczne operacje o do 16 MIPS przy 16MHz o wbudowany dwu cyklowy mnonik trwaa pami programu i danych o 128KB wewntrznej reprogramowalnej Flash o wytrzymaoci 1000 cykli zapisy/wymazania o opcjonalna sekcja programu adujcego z niezalenymi bitami blokujcymi, wewntrzne programowanie oraz operacje odczytu podczas zapisu o 4KB EEPROM o wytrzymaoci 100 000 cykli zapisu/wymazania o 4KB wewntrznego SRAM o do 64KB opcjonalnej zewntrznej przestrzeni pamici o blokada programowania dla bezpieczestwa programw o interfejs SPI dla systemowego programowania interfejs JTAG o skanowanie graniczne w poszukiwaniu zgodnoci ze standardem JTAG o rozlege wbudowane wsparcie debugera o programowanie Flash, EEPROM, bezpiecznikw i bitw blokujcych przez interfejs JTAG cechy peryferyjne o dwa 8 bitowe liczniki/stopery z oddzielnymi prescalerami i trybami porwnywania o dwa rozszerzone 16 bitowe liczniki/stopery z oddzielnymi prescalerami, trybami porwnywania i trybami schwytania o licznik czasu rzeczywistego z oddzielnym oscylatorem o dwa 8 bitowe kanay PWM o 6 kanaw PWM z programowaln rozdzielczoci od 2 do 16 bitw o wyjciowy modulator porwnujcy o 8 kanaowy 10 bitowy ACD 8 sygnaw zakoczenia kanau 7 rnych kanaw 2 rne kanay z programowalnym przyrostem 1x, 10x lub 200x o bajtowo zorientowany dwuprzewodowy szeregowy interfejs o podwjny programowalny szeregowy USART o interfejs szeregowy SPI podrzdny/nadrzdny o programowalny licznik Watchdoga z wbudowanym oscylatorem o wbudowany analogowy komparator specjalne cechy mikrokontrolera o reset przy wczaniu zasilania, programowalny detektor obnionego napicia sieciowego o wewntrzny wzorcowy oscylator RC o wewntrzne i zewntrzne rda przerwa

o o o

sze trybw snu: Idyl, redukcja szumw ADC, oszczdno mocy, obniony pobr mocy, oczekiwanie i rozszerzone oczekiwanie o czstotliwo zegara wybierana przez oprogramowanie o tryb kompatybilnoci z ATmega103 wybierany poprzez bezpiecznik o globalne zablokowanie podcigania I/O i packages o 53 programowalnych linii I/O o 64- TQFP napicia pracy o 2.7 5.5 dla ATmega128L o 4.5 5.5 dla ATmega128 klasa szybkoci o 0-8 MHz ATmega128L o 0 16 MHz ATmega128 o

KONFIGURACJA NEK

KRTKI OPIS
ATmega128 jest 8 bitowym mikrokontrolerem o niskim poborze mocy opartym na architekturze AVR z rozszerzonym RISC. Poprzez wykonywanie instrukcji w jednym cyklu zegarowym, ATmega128 osiga rezultat w okolicy 1MIPS na MHz, co pozwala poprzez projektowanie systemu zoptymalizowa pobr mocy z jednoczesnym przyspieszeniem dziaania

Diagram blokowy

Rdze AVR zawiera bogaty zestaw instrukcji z 32 rejestrami dostpnymi do rnych celw. Wszystkie 32 rejestry s bezporednio podczone do Jednostki Arytmetyczno Logicznej (ALU), co pozwala na jednoczesny dostp do dwch niezalenych rejestrw w jednej instrukcji jednego taktu maszynowego. Taka architektura jest bardzie efektywna dla kodu obsugi oraz pozwala nawet na dziesiciokrotnie szybsz prac w porwnaniu z konwencjonalnymi mikrokontrolerami CISCowymi.

Atmega128 zapewnia nastpujce elementy: 128K bajtw wewntrznej programowalnej pamici typu FLASH z dopasowaniem odczytu podczas zapisu, 4K bajty EEPROM, 4K bajty SRAM, 53 linie wejcia/wyjcia, 32 robocze rejestry, Licznik rzeczywistego czasu(RTC), cztery liczniki z trybami porwnywania i PWM, dwa USART, bajtw zorientowany dwu-kablowy rwnolegy interfejs, 8 kanaw, 10 bitowy ADC z opcjonalnym rnicowym progiem wejciowym z programowalnym przyrostem, programowalny licznik Watchdog z wewntrznym oscylatorem, SPI rwnolegy port, IEEE standard 1149,1 ze zgodnym JTAG testowym interfejsem, rwnie uywanym przy dostpie do wbudowanego systemu debugowania i z szecioma programowalnymi trybami oszczdnoci mocy. Tryb nieaktywny (Idle) zatrzymuje CPU pozwalajc SRAM, licznikom, portom SPI i systemowi przerwa funkcjonowa. Tryb obnionego poboru mocy (Power-Down) zachowuje zawarto rejestrw, ale zatrzymuje Oscylator, uniemoliwiajc wykonywanie innych funkcji a do nastpnego przerwania lub resetu sprztu. Tryb oszczdzajcy moc (Power save) asynchroniczny zegar nie przestaje dziaa podczas, gdy reszta sprztu jest nieaktywna. Redukcja zakce ADC zatrzymuje CPU i wszystkie wyjciowo-wejciowe moduy z wyjtkiem asynchronicznego zegara i ADC w celu zmniejszenia haasw podczas konwersji ADC. W trybie oczekiwania (Standby) zarwno oscylator jak i asynchroniczny licznik dziaaj. Urzdzenie to zostao wyprodukowane przy uyciu Atmelowskiej najnowszej wysoko upakowanej trwaej technologii tworzenia pamici. Wbudowany ISP FLASH pozwala na reprogramowanie w systemie pamici mikrokontrolera poprzez szeregowy interfejs SPI, poprzez tradycyjne trwae programowanie pamici, lub poprzez wbudowany program adujcy dziaajcy na rdzeniu AVR. Program adujcy moe korzysta ze wszystkich tych interfejsw w celu zaadowania programu do pamici FLASH. Oprogramowanie w adowalnej czci Flash bdzie dziaao podczas aktualizacji czci programw tej pamici zapewniajcej prawdziwe operacje odczytu podczas zapisu. Poprzez poczenie 8-bitowego RISCowego CPU z wewntrznym systemowym samo-programowalnej pamici FLASH na jednej pytce, Atmelowski Atmega128 jest mikrokontrolerem, ktry zapewnia atw dopasowalno wraz z efektywnymi rozwizaniami wicymi kontrole aplikacji. Atmega128 AVR jest zaopatrzony w pen gam programw wspomagajcych rozwj: kompilatory C, assembler makro, debuger, emulatory itp.

DOPASOWANIE ATMEGA103 DO ATMEGA128


ATmega128 jest kompleksowym mikrokontrolerem gdzie liczba umiejscowie I/O zostaa zastpiona 64oma lokalizacjami I/O zarezerwowanymi dla zbioru rozkazw AVR. W celu zapewnienia kompatybilnoci z ATmega103, wszystkie I/O lokalizacje obecne w ATmega103 s w tym samym miejscu w ATmega128. Wikszo dodatkowych lokalizacji I/O zastaa dodana w rozszerzonej przestrzeni adresowej od $60 do $FF. Do tych miejsc pamici mona si odwoywa tylko poprzez instrukcje LD/LDS/LDD oraz ST/STS/STD, a nie prze rozkazy IN i OUT. Ta wewntrzna realokacja przestrzeni pamici RAM moe nadal by problemem dla uytkownikw ATmega103. Rwnie zwikszona liczba wektorw przerwa moe sprawia problem dla kodw operujcych na bezwzgldnym adresowaniu. W celu rozwizania tego programu tryb dopasowania ATmega103 moe zosta wybrany poprzez programowanie bezpiecznika M103C. W tym trybie adna z funkcji w rozszerzonej przestrzeni adresowej jest niedostpna, jak i wewntrzna pami RAM jest zlokalizowana jak w ATmega103. Rwnie, rozszerzony wektor przerwa jest usunity. 100% wyj z ATmega128 jest kompatybilne z wyjciami z ATmega128 i moe zastpowa ATmega103 na pytkach drukowanych.

TRYBY KOMPATYBILNOCI ATMEGA103 Poprzez programowanie bezpiecznika M103C ATmega128 jest kompatybilna z ATmega103 zarwno w stosunku do RAM jak i nek I/O, wektorw przerwa. Jednake, niektre z tych rzeczy w ATmega103 nie s dostpne w tym trybie dopasowania, s to: - jeden USART zamiast dwch, tylko w trybie asynchronicznym. Tylko 8 najmniej znaczcych bitw w rejestrze szybkoci transferu jest dostpne - jeden 16-bitowy licznik z dwoma rejestrami porwnawczymi, zamiast dwch licznikw z trzema rejestrami - dwu-drutowy rwnolegy interfejs nie jest obsuone - port C jest tylko wyjciowy - port G suy rnym/(alternatywnym ) funkcjom nie jest to caociowo port I/O - port F suy tylko jako bitowy wejciowy port jako dodatek do analogowego wejcia ADC - program adujcy nie jest obsuony - Nie mona dostosowa czstotliwo wewntrznego RP oscylatora - Rozszerzony interfejs pamici nie moe zwolni adnych adresw dla I/O, jak rwnie skonfigurowa rnych stanw oczekiwania dla rnych sekcji rozszerzonego adresu pamici W dodatku, jest tu jeszcze par mniej znacznych rnic, aby zapewni lepsz kompatybilnoci z ATmega103: - tylko EXTRF i PORF istniej w MCUCSR - sekwencje czasowe nie wymagaj dla Watchdoga zmiany czasu oczekiwania - Zewntrzne nki przerwa 0-3 su tylko jako stopnie przerwa - USATR nie ma buforu FIFO, wic do przekroczenia liczby danych dochodzi wczeniej Nieuywane bity I/O w ATmega103 powinny by 0, aby zapewni takie same operacje w ATmega128.

OPIS NEK
VCC zasilanie GND masa Port A (PA0-PA7) 8-bitowy dwukierunkowy port I/O z wewntrznymi rezystorami podcigajcymi (dla kadego bitu). Bufory wyjciowy maj symetryczne charakterystyki sterownikw zarwno z wysokim opadajcym poziomem i dopasowaniem rda. Na wyjciu jest stan niski i pobieraj prd jeeli rezystory podcigajce s aktywowane. Wyjcia z portu po wykonaniu resetu s w trzecim stanie nawet jeeli zegar nie dziaa. Dodatkowe informacje strona 67. Port B (PB0-PB7) opis jak wyej. Dodatkowe informacje na stronie 68 Port C(PC0-PC7) opis jak wyej. Dodatkowe informacje na stronie 71. W trybie dopasowania do ATmega103, jest to wycznie port wyjciowy i wyjcia nie s w trzecim stanie dla aktywnego resetu. Port D (PD0-PD7) jak wyej. Dodatkowe informacje na stronie 72 Port E (PE0-PE7) - jak wyej. Dodatkowe informacje na stronie 78. Port F (PF0-PF7) suy jako analogowe wejcie dla A/D konwertera. Jeli nie pracuje w tym trybie dziaa jak powysze porty. Jeeli jest zaczony interfejs JTAG rezystory podcigajce bd uaktywnione dla PF7(TDI), PF5(TMS) i PF4(TCK) nawet jeeli dla sygnau reset.

W trybie zgodnoci z Tamega103 jest to tylko port wejciowy. Port G (PG0-PG7) od powyszych portw rni si tym tylko, e jest 5-bitowy W trybie dopasowania do ATmega103 wyjcia te su tylko jako sygnay do zewntrznej pamici zarwno jak wejcia do 32 kHz oscylatora. Wyjcia te s inicjalizowane asynchronicznie PG0 = 1, PG1 = 1, PG2 = 0 kiedy zostanie wykonana operacja reset, nawet przy niedziaajcym zegarze. Pg3 i PG 4 s wejciami do oscylatora. RESET wejcie. Dla sygnau niskiego trwajcego duej ni minimalny takt cyklu zostanie wygenerowany rozkaz restartu nawet przy niedziaajcym zegarze, Dugo minimalnego impulsu jest podana w tabeli na stronie 46 w tabeli 19. Krtsze impulsy nie gwarantuj wygenerowania restartu. XTAL1 ujemne wejcie do wzmacniacza oscylatora , oraz do wewntrznego zegara. XTAL2 ujemne wyjcie ze wzmacniacza oscylatora AVCC zasb napicia dla portu F i A/D konwertera. Powinien by podczony do zewntrznego napicia, nawet jeeli ADC nie jest uywany. Jeeli ADC jest uywane powinien by podczony do napicia przez filtr dolnoprzepustowy. AREF jest to analogowy odpowiednik dla wejcia A/D konwerter. PEN - wejcie umoliwiajce programowanie dla SPI tryb szeregowego programowania . Przyciskajc to wyjcie podczas resetu w trybie uruchamiania, urzdzenie przejdzie do trybu SPI. W czasie normalnych operacji wejcie to nie ma adnych funkcji. PRZYKADY KODU

Ten arkusz danych zawiera proste przykady kodu, ktre w prosty sposb obrazuj jak wykorzystywa rne czci urzdzenia. Kody te zakadaj, e specyficzne nagwki zostay doczone przed kompilacj. Naley by wiadomym tego, e nie wszystkie sprzedawane kompilatory C zawierajc definicje bitw w plikach nagwkowych i obsuga procedur przerwa w C jest zalena od kompilatora. W celu uzyskania dodatkowych informacji prosz przejrze dokumentacj kompilatora C.

JEDNOSTKA CENTRALNA
Architektura:

W celu zwikszenia wydajnoci i rwnolegoci, AVR korzysta ze architektury Harvard z oddzielnymi pamiciami i magistralami dla programw i danych. Instrukcje w programach s wykonywane w sposb jednopotokowy. W czasie wykonywania jednej instrukcji, nastpna jest wstpnie pobierana z pamici programu. W ten sposb umoliwia wykonywanie instrukcji w kadym cyklu maszynowym. Program jest zapisany w wewntrznej systemowej reprogramowalnej pamici Flash. Zestaw rejestrw szybkiego dostpu skada si z 32 8-bitowych oglnych rejestrw roboczych o czasie dostpu rwnemu jednemu cyklowi maszynowemu. To pozwala na jednocyklowe operacje na Jednostce Arytmetyczno Logicznej (ALU). W typowych operacjach na ALU dwa operandy s pobierane z rejestrw, wykonywana jest operacja i jej rezultat jest zapisywany do jednego ze zestawu rejestrw w jednym takcie maszynowym. Sze z tych 32 rejestrw moe by uywanych jako 16-bitowe wskaniki z adresami porednimi do przestrzeni danych co umoliwia efektywne operowanie na adresach. Jeden z tych wskanikw adresw moe rwnie by uywany jako wskanik na adres w tablicy przegldowej pamici Flash. Te dodatkowe funkcje dotycz szesnastobitowych rejestrw X, Y i Z, ktre zostan opisane pniej. ALU wspiera arytmetycznie i logiczne operacje pomidzy rejestrami lub pomidzy sta i rejestrem. Operacje na pojedynczych rejestrach rwnie mog by wykonywane w ALU. Po operacji arytmetycznej, rejestr stanu jest aktualizowany by odzwierciedla rezultat operacji. Przepyw programu jest moliwy dziki warunkowym i bezwarunkowym rozkazom skoku (jump) i przywoania (call) zdolnych do bezporedniego zaadresowania caej przestrzeni adresowej. Wikszo rozkazw AVR ma 16-bitwy format sowa. Kady adres pamici programu zawiera 16-to lub 32-bitowy rozkaz.

Pami programowa Flash jest podzielona na dwie sekcje: Program adujcy i Program uytkowy. Obydwie sekcje maj wydzielone bity dla ochrony zapisu lub zapisu i odczytu. Instrukcja SMP, ktra zapisuje do czci uytkowej pamici Flash musi rezydowa w sekcji Programu adujcego. Podczas przerwa i wywoa programu standardowego adres powrotu z Licznika Program(PC) jest odkadany na stos. Stos jest alokowany w pamici SRAM i jego rozmiar jest limitowany przez rozmiar tej pamici. i jej uytkowanie. Wszystkie programy uytkowe musz inicjalizowa wskanik stosu (SP) podczas procedury RESET (zanim przerwania lub inne programy zostan wykonane). Wskanik stosu jest dostpny zarwno do odczytu jak i zapisu w przestrzeni I/O. Dane w SRAM mog by atwo dostpne poprzez pi rnych trybw adresowania wspieranych przez architektur AVR.. Przestrze pamici w architekturze AVR jest linearna i regularna mapa pamici. Elastyczny modu przerwa ma swoje rejestry kontrolne w przestrzeni I/O z dodatkowymi globalnymi bitami przerwa w rejestrze stanu. Wszystkie przerwania maj osobny wektor przerwania w tablicy wektorw przerwa. Przerwania maj priorytety zgodnie z rozmieszczeniem ich w tablicy wektorw przerwa. Im niszy adres wektora przerwa tym wyszy jego priorytet. Przestrze adresowa I/O zawiera 64 adresw, ktre mog by dostpne bezporednio lub jako lokacje przestrzeni danych nastpujce po tych okrelajcych zestaw rejestrw, $20 - $4F. Dodatkowo ATmega128 ma rozszerzon przestrze I/O od $60-$FF w SRAM, gdzie dostp maj tylko rozkazy: ST/STS/STD i LD/LDS.LDD. Jednostka Arytmetyczno Logiczna ALU:

Wysokiej klasy ALU pracuje z bezporednim poczeniem ze wszystkimi 32 uniwersalnymi roboczymi rejestrami. Podczas jednego cyklu maszynowego wykonywane s operacje arytmetyczne pomidzy tymi rejestrami lub midzy rejestrem i sta. Operacje wykonywane przez ALU mona podzieli na trzy gwne kategorie: arytmetyczne, logiczne i bitowe. Niektre implementacje tej architektury zapewniaj rwnie mnoenie ze znakiem i format uamkowy. Dokadny opis w spisie rozkazw. Rejestr Stanu (SR)

Rejestr stanu zawiera informacje o rezultacie ostatniej operacji arytmetycznej. Ta informacja moe zosta wykorzystana poprzez rne programy do wykonania operacji warunkowych. Naley zwrci uwag, e rejestr stanu jest aktualizowany po kadej operacji na ALU. TO w wielu przypadkach sprawia, e niepotrzebne jest uywanie wyspecjalizowanych instrukcji porwnywania, co wpywa na przyspieszenie dziaania kodu i bardziej zwizy kod. Rejestr stanu nie jest automatycznie zapamitywany kiedy procesor przechodzi do obsugi przerwania i ustawiany podczas powrotu z przerwania. To musi zosta obsuone przez oprogramowanie. Rejestr stanu SREG jest zdefiniowany jako: Bit 7 I R/W InVal 0 6 T R/W 0 5 H R/W 0 4 S R/W 0 3 V R/W 0 2 N R/W 0 1 Z R/W 0 0 C R/W 0

R/W odczyt/zapis InVal warto inicjujca

a. Bit 7 I: Globalne przerwanie Bit ten musi by ustawiony na 1 dla przerwa. Indywidualna kontrola przerwa jest wtedy wykonywana w oddzielnym rejestrze kontrolnym. Jeeli globalny rejestr przerwa jest wyzerowany, adne z przerwa nie moe zosta obsuone niezalenie od indywidualnych ustawie przerwa. I-bit jest wyzerowany sprztowo po zajciu przerwania i jest ustawiany przez rozkaz RETI, aby mona byo obsugiwa nastpne przerwania. I-bit moe zosta rwnie programowo wyzerowany poprzez rozkazy SEI i CLI. b. Bit 6 T: odpis pamici Rozkazy kopiowania bitu BLD i BST korzystaj z bitu T jako rdo lub bit docelowy dla zmienianego bitu. Rozkaz BST kopiuje bit z rejestru do bitu T, natomiast rozkaz BLD kopiuje bit T do rejestru w zestawie rejestrw. c. Bit 5 H: flaga poowicznego przeniesienia Flaga ta wskazuje przeniesienie w niektrych operacjach arytmetycznych. Flaga ta jest wykorzystywana przy arytmetyce BCD. d. Bit 4 S: bit znaku S= N + V (+ exclusive or) Bit ten jest zawsze alternatyw pomidzy zanegowanym N i dwjkowym uzupenieniem flagi V. e. Bit 3 V: dwjkowe dopenienie Flaga ta wspiera dwjkow arytmetyk . f. Bit 2 N: flaga zaprzeczenia

Flaga ta wskazuje na ujemny rezultat w operacjach logicznych lub arytmetycznych. g. Bit 1 Z: flaga Zero Flaga ta wskazuje zerowy rezultat w operacjach arytmetycznych i logicznych. h. Bit 0 C: flaga przeniesienia Flaga przeniesienia wskazuje na przeniesienie podczas operacji logiczej lub arytmetycznej. Oglny zestaw rejestrw Zestaw rejestrw jest zoptymalizowany dla AVR zwikszonego zestawu rozkazw RISC. W celu osignicia wymaganej szybkoci i dopasowalnoci nastpujce I/O schematy s wspierane przez zestaw rejestrw: a. jeden 8-bitowy wyjciowy argument i jeden 8-bitowy wejciowy wynik b. dwa 8-bitowe wyjciowe argumenty i jeden 8-bitowy wejciowy wynik c. dwa 8-bitowe wyjciowe argumenty i jeden 16-bitowy wejciowy wynik d. jeden 16-bitowy wyjciowy argument i jeden 16-bitowy wejciowy rezultat. Rysunek 4 pokazuje struktur 32 roboczych rejestrw w jednostce centralnej. 7 0 Adres

$00 $01 $0D Zestaw Rejestrw Roboczych $0E $0F $10

R0 R1 R2 ... R13 R14 R15 R16 R17 ... R26 R27 R28 R29 R30 R31

$1A

X rejestr modszych bitw X rejestr starszych bitw Y rejestr modszych bitw Y rejestr starszych bitw Z rejestr modszych bitw Z rejestr starszych bitw Wikszo rozkazw operujcych na tych rejestrach ma bezporedni dostp do wszystkich rejestrw i wikszo to rozkazy wykonywane w jednym cyklu maszynowym. Jak pokazano na 4 rysunku, kady z rejestrw ma rwnie adres w pamici, ktry umieszcza zestaw rejestrw na pierwszych 32 bajtach przestrzeni danych. Chocia nie s fizycznie zaimplementowane jako lokacje SRAM, taka organizacja pamici zapewnia atwy dostp do rejestrw. X, Y i Z rejestry mog by ustawione jako wskanik do innych rejestrw w zbiorze. Rejestry R26..R31 maj par dodatkowych funkcji. Rejestry te s 16-bitowymi wskanikami porednimi na adres przestrzeni danych. I tak w skad rejestru X wchodz komrki R26 i R27, Y R28 i R29 , Z R30 i R31, gdzie pierwsza komrka okrela modszy bajt. W rnych trybach adresacji rejestry te peni funkcje staego przemieszczenia, automatycznej inkrementacji i dekrementacji (szczegy dalej). Wskanik stosu

Stos jest gwnie uywany do przechowywania tymczasowych danych, lokalnych zmiennych i adresw powrotw z przerwa lub wywoa podprogramw. Rejestr wskanika stosu zawsze pokazuje na gr stosu. Stos jest zaimplementowany rosnco w pamici od wyszych numerw do niszych. Wpywa to na to, e instrukcja PUSH zmniejsza warto wskanika stosu. Wskanik stosu wskazuje na dane w przestrzeni stosu w SRAM, gdzie s ulokowane stosy Przerwa i Wywoa podprogramw. Rozmiar stosu musi by zdefiniowany zanim moe doj do wykonania podprogramw lub przerwa. Wskanik stosu musi zosta ustawiony tak aby wskazywa ponad adres $60. Wskanik stosu jest dekrementowany o jeden kiedy dane s odkadane na stos przez instrukcj PUSH i

jest dekrementowany o dwa kiedy odkadany jest adres powrotu z przerwania lub podprogramu. Wskanik stosu jest inkrementowany o jeden kiedy dane pobierane s przez instrukcj POP a o dwa przy powrotach z podprogramw - RET i przerwa RETI. Wskanik stosu w AVR jest zaimplementowany jako dwa 8-bitowe rejestry w przestrzeni I/O. Numer aktualnie uywanych bitw jest zaleny od implementacji. Naley zauway, e przestrze danych w niektrych implementacjach architektury AVR jest tak maa, e tylko SPL (modszy bajt) jest potrzebne, w tym wypadku SPH (starszy bajt) nie bdzie obecny. Bit SPH SPL InVal 15 SP15 SP7 7 0 0 14 SP14 SP6 6 0 0 13 SP13 SP5 5 0 0 12 11 10 SP12 SP11 SP4 SP3 4 0 0 3 0 0 2 0 0 9 SP10 SP2 1 8 SP9 SP1 0 0 0

SP8 SP0 0 0

InVal wartoci pocztkowe Wszystkie bity s do zapisu i odczytu. Bit R/W InVal R 0 RAMPZ RAM page Z Select register 7 R 0 6 R 0 5 R 0 4 R 0 3 R 0 2 R 0 1 0 RAMPZ0 R/W 0

a: bity 7..2 Res: Zarezerwowane bity To s bity zarezerwowane i zawsze bd miay warto zero. Podczas zapisu do tych lokacji naley zapisywa zero w celu kompatybilnoci z przyszymi wersjami sprztu. b: bit 1 TAMPZ0: rozszerzony stronicowy Z-wskanik RAM Rejestr RAMPZ jest normalnie uywany do wybrania, ktre 64k strony RAM jest dostpne przez Zwskanik. Poniewa ATmega128 nie wspiera wicej ni 64k pamici SRAM ten rejestr jest uywany tylko do wybrania, ktra strona w pamici programu jest dostpna podczas korzystania z instrukcji ELPM/SPM. Rne ustawienia tego bitu maj nastpujce znaczenie: RAMPZ0 = 0 przez ELPM/SPM jest dostpny adres pamici programu od $0000 - $7FFF RAMPZ0 = 1 przez ELPM/SPM dostpna jest pami o adresie $8000-$FFFF. Ustawienie RAMPZ nie wpywa na LPM. Przebiegi czasowe rozkazw

Ta sekcja opisuje przebieg czasowy poszczeglnych instrukcji. Jednostka centralna AVR jest napdzana przez zegar jednostki centralnej, bezporednio wygenerowany ze rda zegara w ukadzie scalonym. aden wewntrzny dzielnik zegara nie jest uywany.

Rysunek 6 przedstawia rwnolegy rozkaz pobrania i wykonania. To jest podstawowy potokowy model osigajcy do 1 MIPS na MHz.

Rysunek 7 przedstawia wewntrzny model taktowania Zbioru rejestrw. W jednym cyklu maszynowym wykonywana jest operacja pobierajca operandy z dwch rejestrw do ALU i jej wynik jest zapisywany w rejestrze przeznaczenia.

RESET i obsuga przerwa

AVR zapewnia wiele rnych rde przerwa. Przerwania i oddzielne wektory resetu maj oddzielny wektor programu w przestrzeni pamici programu. Kade przerwanie ma przypisany bit przerwania, ktry musi by zapisany zgodnie logicznie z Globalnym bitem przerwa w rejestrze stanu w celu moliwoci obsugiwania przerwa. Zalenie od wartoci licznika programu (PC) przerwania mog by automatycznie unieruchamiane kiedy bity blokujce program adujcy BLB02 lub BLB12 s zaprogramowane. To rozwizanie ulepsza bezpieczestwo oprogramowania. Szczegowy opis w sekcji programowanie pamici 282. Modsze adresy w przestrzeni pamici programu s domylnie zdefiniowane jako wektory RESETu i przerwa. Kompletna lista wektorw jest opisana w sekcji Przerwania 54. Lista ta determinuje priorytet poszczeglnych przerwa. Im niszy adres tym wyszy priorytet. RESET ma najwyszy priorytet, nastpnie INT0. Wektory przerwa mog zosta przeniesione na pocztek adowalnej sekcji pamici Flash prze ustawienie bitu IVSEL w MCU rejestrze kontroli. Wektor RESETu rwnie moe zosta przeniesiony do tej sekcji poprzez programowanie bezpiecznika BOOTRST. Dalsze informacje na stronie 269. W przypadku wystpienia przerwania, I-bit rejestru globalnych przerwa jest zerowany i wszystkie inne przerwania zostaj zablokowane. Oprogramowanie uytkownika moe wpisa do tego bitu logiczn jedynk, aby odblokowa zagniedone przerwania. Wtedy wszystkie przerwania mog przerywa procedur obsugi przerwania. I-bit jest automatycznie ustawiany przy powrocie z przerwania - RETI.

Wyrniamy dwa podstawowe rodzaje przerwa. Pierwszy typ jest uruchamiany poprzez zdarzenie, ktre ustawia flag przerwa. Dla tych przerwa licznik programu (PC) jest ustawiany na aktualny wektor przerwania w celu wykonania procedury obsugi przerwania i sprzt zeruje odpowiedni flag przerwania. Flagi przerwa mog by zerowane poprzez wpisywanie logicznej jedynki do bitu flagi. Jeli zajd wszystkie warunki przerwania podczas obsugi takiego samego przerwania zerujcego bit przerwa, flaga zostanie ustawiona i zapamitana do obsuenia tego przerwania, lub jest ona wyzerowana przez oprogramowanie. Podobnie, jeeli zostan zgoszone przerwania podczas, gdy bit globalnego przerwania jest wyzerowany, flagi tych przerwa zostan zapamitane do czasu ustawienia globalnego bitu przerwania i zostan wykonane zgodnie z priorytetem. Drugi typ przerwa bdzie uruchamiany tak dugo, jak warunki na zaistnienie przerwania bd obecne. Takie przerwanie nie musz koniecznie mie flag przerwa. Jeli warunki powodujce przerwanie zakocz si zanim zostanie ono obsuone, przerwanie to nie zostanie obsuone. Kiedy AVR wyjdzie z obsugi przerwania zawsze powrci do gwnego programu i wykona nastpn instrukcj przed obsug oczekujcego przerwania. Naley zauway, e rejestr stanu nie jest automatycznie odkadany na stos przy przejciu do obsugi przerwania, jak rwnie nie jest z tego stosu pobierany po powrocie z obsugi przerwania. To musi zosta obsuone programowo. Korzystajc z rozkazu CLI moemy natychmiastowo zamaskowa przerwanie. adne przerwanie nie zostanie obsuone po tym rozkazie, nawet jeeli zostao zgoszone rwnolegle z wykonywaniem tego rozkazu. Przykad pokazuje jak mona wykorzysta ten rozka w celu uniknicia przerwa przy zapisie do EEPROM. Kod w asemblerze: in r16, SREG cli sbi EECR, EEMWE sbi EECR, EEWE out SREG, r16

//rozpoczcie zapisu do EEPROM

Kod w C: char cSREG; cSREG = SREG; _CLI(); EECR |= (1<<EEMWE); /* pocztek zapisu*/ EECR |= (1<<EEWE); SREG = cSREG ; Korzystajc z rozkazu SEI mona odmaskowa zamaskowane przerwania. Instrukcja nastpujca po SEI bdzie wykonana przed obsug przerwania. Czas odpowiedzi na przerwanie

Minimalnym czasem oczekiwania na wykonanie przerwania jest czas czterech cykli maszynowych. Po czterech cyklach maszynowych adres programu wskazywany wektorem dla aktualnego obsugi przerwania jest wykonywany. W tym czasie licznik programu jest odkadany na stos. Zwyczajnie wektor jest skokiem do podprogramu obsugi przerwania, i skok ten trwa zazwyczaj trzy cykle maszynowe. Jeeli dojdzie do zgoszenia przerwania podczas wykonywania wielocyklowej operacji, operacja jest koczona

przed obsug przerwania. Jeeli zostanie zgoszone przerwanie gdy MCU jest w trybie snu, odpowied na przerwanie jest wyduona o cztery cykle maszynowe. To zwikszenie jest nastpstwem czasu potrzebnego na rozpoczcie dziaania. Powrt z procedury obsugi przerwania trwa cztery cykle maszynowe. W tym czasie ze stosu jest pobierany licznik programu, wskanik stosu jest zwikszany o dwa i jest ustawiany I-bit rejestru SREG.

PAMICI AVR ATMEGA128


Sekcja ta opisuje rne rodzaje pamici w ATmega128. Architektura ATmega128 ma dwie gwne przestrzenie pamici: Pami Danych i Pami Programu. W dodatku, ATmega128 ma pami EEPROM suc przechowywaniu danych. Wszystkie te przestrzenie pamici s linearne i regularne. Wewntrzna reprogramowalna pami programu typu Flash.

ATmega128 zawiera 128k bajtw reprogramowalnej pamici Flash w strukturze pprzewodnikowej sucej do magazynowania pamici. Odkd wszystkie rozkazy s 16-to lub 32 bitowe, pami Flash jest zorganizowana jako 64K x 16. Dla bezpieczestwa oprogramowania pami Flash jest podzielona na dwie sekcje: Inicjujc system i dla programw uytkowych. Pami Flash ma trwao ponad 1000 cykli zapisu i odczytu. Licznik programu w ATmega128 jest 16 bitowy, tak wic moe zaadresowa on 64k pamici. Szczegy dotyczce sekcji inicjujcej system i zwizane z nim bity zabezpiecze zostay opisane na stronie 269. Szczegowy opis adowania programu poprzez SPI przy uyciu JTAG interfejsu znajduje si na stronie 282. Stae tablice mog by alokowane przy uyciu caej przestrzeni adresowej pamici programu. Przebiegi czasowe dla instrukcji pobrania i wykonania znajduj si na stronie 13.

Pami danych SRAM

ATmega128 wspiera dwa rodzaje konfiguracji pamici SRAM: Konfiguracja Wewntrzna Zewntrzna pami SRAM pami SRAM tryb normalny 4096 Do 64k Tryb 4000 Do 64k kompatybilnoci z ATmega103 ATmega128 jest zoonym mikrokontrolerem z wiksz iloci jednostek peryferyjnych ni moe by obsuona za pomoc 64 lokacji zarezerwowanych w kodzie operacyjnym dla rozkazw IN i OUT. Dla rozszerzonej przestrzeni pamici I/O od $60 do $FF w SRAM, tylko rozkazy ST/STS/STD oraz LD/LDS/LDD mog zosta uyte. Ta przestrze adresowa nie istnieje gdy jest wczony tryb kompatybilnoci z ATmega103. W normalnym trybie pierwszych 4352 lokacji pamici danych adresuje zarwno zestaw rejestrw jak i pami I/O, rozszerzon pami I/O oraz wewntrzn pami SRAM. Pierwsze 32 adresy odpowiadaj zestawowi rejestrw, nastpne 64 adresy to pami I/O, potem 160 adresw to rozszerzona pami I/O i wreszcie 4096 adresw adresuje przestrze danych w SRAM. W trybie kompatybilnoci z ATmega103, pierwsze 4096 adresw pamici danych adresuje zarwno zestaw rejestrw jak i pami I/O, wewntrzny SRAM. Pierwsze 32 adresy odnosz si do zestawu rejestrw, nastpne 64 do pamici I/O a pozostae 4000 do SRAM. Opcjonalna zewntrzna pami danych SRAM moe by doczona do ATmega128. Ta pami bdzie zajmowaa pozosta przestrze adresow 64K. Przestrze ta rozpoczyna si po przestrzeni adresowej dla wewntrznej pamici SRAM. Zestaw rejestrw, I/O, rozszerzone I/O i wewntrzna SRAM zajmuj 4096 modszych adresw w trybie kompatybilnoci z ATmega103, wic korzystajc z 64KB zewntrznej pamici 61184 bajty zewntrznej pamici s dostpne w trybie normalnym a 61440 w trybie kompatybilnoci z ATmega103. Dalsze szczegy w Rozszerzonym interfejsie pamici na stronie 24. Kiedy adresy dostpu do przestrzeni pamici SRAM przekrocz adresy wewntrznej pamici, pami zewntrzna jest dostpna dla tych samych rozkazw, dla ktrych bya dostpna pami wewntrzna. Kiedy wewntrzna pami jest dostpna, wyprowadzenia strobowe do odczytu i zapisu (PG0 PG1) s nieaktywne podczas cyklu dostpu. Zewntrzna pami SRAM jest dostpna poprzez ustawienie bity SRE w rejestrze MCUCR. NA dostp do zewntrznej pamici potrzebny jest dodatkowy cykl maszynowy porwnujcy bajt dostpu do wewntrznej SRAM. TO znaczy, e rozkazy: LD, ST, LDS, STS, LDD, STD, PUSH i POP s dusze o jeden cykl maszynowy. Jeeli stos jest umiejscowiony w zewntrznej pamici SRAM rozkazy powrotw i wej do programw obsugi przerwa i podprogramw s o trzy cykle dusze ze wzgldu na odkadanie i pobieranie dwubajtowej zawartoci licznika rozkazw i adres zewntrznej pamici nie korzysta z wewntrznej linii dostpu do pamici. Kiedy zewntrzny interfejs pamici SRAM jest uywany w trybie oczekiwania, jedno bajtowy zewntrzny dostp trwa jeden, trzy lub nawet o cztery dodatkowe cykle maszynowe duej odpowiednio dla jednego, trzech i czterech stanw oczekiwania. Zgoszenia przerwa i odwoania do podprogramw i powroty z nich bd potrzeboway o pi, siedem lub dziewi cykli maszynowych wicej ni jest to przewidziane w zestawie rozkazw dla stanw oczekiwa. Pi trybw adresowania dla pamici danych zawiera: bezporedni, poredni z przemieszczeniem, poredni, poredni z wczeniejsz dekrementacj i poredni z pniejsz inkrementacj. W zestawie rejestrw, rejestry R26 R31 wystpuj w roli porednich wskanikw do pamici. Adresowanie bezporednie osiga caa przestrze adresow. Adresowanie bezporednie z przemieszczeniem osiga 63 adresy od bazy podanej przez rejestr Y lub Z.

Korzystajc z poredniego adresowania z wczeniejsz dekrementacj lub pniejsz inkrementacj, rejestry adresu X, Y, Z s dekrementowane lub inkrementowane. 32 oglno dostpne rejestry robocze, 64 rejestrw I/O, i 4096 bajtw wewntrznej przestrzeni danych SRAM w ATmega128 jest dostpne przez wszystkie tryby adresowania.

Czas dostpu do pamici danych. Sekcja ta opisuje oglny pojcie czasu dostpu do pamici. Dostp do wewntrznej pamici SRAM trwa dwa cykle maszynowe jak opisano na rysunku 10.

EEPROM pami danych

ATmega128 zawiera 4k bajty pamici danych EEPROM. Jest ona zorganizowana jako oddzielna przestrze pamici, w ktrej oddzielny bajt moe by zapisywany lub odczytywany. EEPROM wytrzymuje ponad 100000 cykli zapisu i wymazania. Dostp pomidzy EEPROM i jednostk centraln jest opisany poprzez wyszczeglnienie Rejestrw adresw EEPROM, Rejestrw danych EEPROM i rejestru kontroli EEPROM. Szczegowy opis adowania pamici poprzez SPI znajduje si na stronie 296 i 301. EEPROM dostp do zapisu i odczytu Rejestry dostpu w EEP{ROM s dostpne w przestrzeni I/O. Czas dostpu w przypadku zapisu jest podany w tabeli 2. Samowyzwalajce si funkcje, jednake pozwalaj oprogramowaniu uytkownika wykrywa kiedy nastpny bajt moe zosta zapisany. Jeli program uytkowy zawiera instrukcje zapisujc do EEPROM niektre rodki ostronoci musz zosta zachowane. W silnie filtrowanych zasobach mocy, napicie V moe powoli opada lub narasta podczas wyczania lub zaczania. To powoduje, e urzdzenie pracuje przy niszym zasilaniu ni minimalne potrzebne do utrzymania odpowiedniej czstotliwoci zegara. Szczegy w Zapobieganiu uszkodzeniom EEPROM na stronie 23. W celu uniknicia niezamierzonych zapisw do EEPROM musi by przestrzegana specjalistyczna procedura zapisu. Szczegowy opis w rejestrach kontroli EEPROM. Podczas odczytu z EEPROM jednostka centralna jest zatrzymywana na cztery cykle maszynowe zanim nastpny rozkaz zostanie wykonany. Kiedy EEPROM jest zapisywany jednostka centralna jest zatrzymywana na dwa cykle maszynowe przed wykonaniem nastpnej instrukcji. Rejestr Adresu EEPROM EEARH, EEARL EEAR11 EEAR10 EEAR9 EEAR8 EEAR7 EEAR6 EEAR5 EEAR4 EEAR3 EEAR2 EEAR1 EEAR0 R/W InVal R R/W 0 X R R/W 0 X RR R/W 0 0 X R/W R/W X X R/W R/W R/W R/W X X X X X X R/W R/W X R/W

R/W odczyt/zapis InVal wartroci pocztkowe a: bity15..12 Res: Bity zarezerwowane Te bity s zarezerwowane i zawsze bd odczytywane jako 0. Podczas zapisu pod te adresy naley przypisa tym bitom zera dla kompatybilnoci z przyszymi urzdzeniami. b: bity 11..0 EEAR11..0: Adresy EEPROM Rejestry adresu EEPROM EEARL, EEARH specyfikuj adres w 4k przestrzeni adresw EEPROM. Bajty danych w EEPROM s uoone linearnie pomidzy 0 i 4096. Pocztkowa warto EEAR jest niezdefiniowana. Jednak odpowiednia warto musi zosta wpisana nim EEPROM bdzie dostpny.

Rejestr danych EEPROM EEDR MSB LSB

Wszystkie bity s zarwno do zapisu jak i odczytu. Wszystkie bity s inicjowane wartoci logiczn 0. a: bity 7..0 EEDR7..0 : dane EEPROM Dla operacji zapisu w EEPROM, rejestr EEDR zawiera dane, ktre maj zosta zapisane pod adres podany w rejestrze EEAR. Przy operacji odczytu z EEPROM rejestr EEDR zawiera odczytan dan z pod adresu podanego przez rejestr EEAR. Rejestr kontroli EEPROM EECR R/W InVal R 0 R 0 R 0 R 0 EERIE EEMWE EEWE R/W R/W R/W R/W 0 0 X EERE 0

a: bity7..4 Res: bity zarezerwowane Te bity s bitami zarezerwowanymi i bd zawsze odczytywane jako zero. b: bit 3 EERIE: bit gotowoci do obsuenia przerwania Wpisanie jeden umoliwia obsug przerwania jeeli I-bit w SREG jest ustawiony. Wpisanie zera maskuje przerwania. Bit gotowoci przerwania EEPROM generuje stae przerwanie iedy EEWE jest wyzerowane. c: bit 2 EEMWE: wzorcowy bit umoliwiajcy zapis Bit ten determinuje czy ustawienie EEWE na jeden powoduje zapis do EEPROM. Jeeli EEMWE jest ustawione na jeden to zapis jedynki do EEWE w przecigu czterech cykli maszynowych spowoduje zapis danej do EEPROM pod wybranym adresem. Jeeli EEMWE jest wyzerowane to wpisanie jedynki do EEWE nie bdzie miao adnego efektu. Jedynkujc EEMWE przez oprogramowanie, sprzt wyzeruje t warto po czterech cyklach maszynowych. d: bit 1 EEWE: Bit umoliwiajcy zapis do EEPROM Kiedy adres i dane s dobirze ustawione bit ten musi by ustawiony aby zapisa warto do EEPROM. EEMWE musi by ustawione kiedy logiczna jedynka jest wpisywana do EEWE, w przeciwnym wypadku nie nastpi zapis do EEPROM. Nastpujca progredura powinna by przestrzegana podczas zapisu do EEPROM: 1. Czeka dopki EEWE stanie si zerem 2. Czeka, a SPMEN w SPMCR stanie si zerem 3. Zapisa nowy adres do EEAR opcjonalne 4. Zapisa now dan do EEDR opcjonalne 5. Zapisa logiczn jedynk do EEMWE podczas zapisu zera do EEWE i EECR 6. W czasie czterech cykli maszynowych po ustawieniu EEMWE zapisa logiczn jedynk do EEWE. EEPROM nie moe by programowany podczas zapisu CPU do pamici Flash. Oprogramowanie musi sprawdzi czy programowanie Flash jest skoczone nim zacznie przygotowywa zapis do EEPROM. Krok 2 jest zaleny od tego czy oprogramowanie zawiera boot loadera pozwalajcego jednostce centralnej programowa Flash. Jeeli Flash nigdy nie jest aktualizowane przez CPU krok 2 moe zosta pominity.

UWAGA: Przerwanie midzy 5 i 6 krokiem spowoduj, e zapis bdzie nieudany, poniewa upynie czas dla wzorcowego bitu umoliwiajcego zapis. Jeli obsuga przerwania majca dostp do EEPROM przerywa inny proces majcy dostp do EEPROM rejestry EEAR i EEDR zostan zmodyfikowane powodujc bd przy dostpie do EEPROM. Zaleca si, aby globaln flag przerwa zerowa przy wykonywaniu czterech ostatnich krokw w celu uniknicia tych problemw. Kiedy czas na zapis upyn bit EEWE jest zerowany przez sprzt. Oprogramowanie uytkownika moe sprawdza ten bit w oczekiwaniu pojawienia si tam zera przed zapisem nastpnego bajtu. Kiedy EEWE jest ustawiony, jednostka centralna jest wstrzymywana na dwa cykle i nim nastpna instrukcja zostanie wykonana. e: bit 0 EERE: bit umoliwiajcy odczyt z EEPROM Kiedy odpowiedni adres jest ustawiony w rejestrze EEAR bit EERE musi zosta ustawiony na logiczne jeden aby spowodowa odczyt z EEPROM. Odczyt z EEPROM zajmuje jedn instrukcj i dana dana jest dostpna od razu. Kiedy nastpuje odczyt z EEPROM jednostka centralna jest wstrzymywana na cztery cykle nim zostanie wykonana nastpna instrukcja. Uytkownik powinien sprawdza bit EERE przed rozpoczciem operacji odczytu. Jeli jest wykonywana instrukcja zapisu, to nie mona ani odczyta EEPROM, ani zmieni danych w rejestrze EEAR. Wzorcowy oscylator jest uywany do regulacji dostpu do EEPROM. Tabela 2 przedstawia typowe czasy programowania dla dostpu do EEPROM z jednostki cendtralnej. Symbol Zapis CPU) EEPROM Numer wzorcowego Typ programowanego RC czasu Cykle oscylatora (z 8448 8.5 ms

Uwaga: Uycie zegara o czstotliwoci 1MHz zalenego od ustawie CKSEL-bezpiecznika. Nastpujce przykady kodu pokazuj funkcje zapisujce do EEPROM. Przykady zakadaj, e przerwania s kontrolowane tak, e nie zajdzie adne przerwanie podczas wykonywania tych funkcji. Przykady te zakadaj rwnie, e nie ma flash boot loadera obecnego w oprogramowaniu. Jeli taki kod jest obecny, funkcje zapisu musz rwnie oczekiwa na rozkaz zakoczenia z SPM. Kod w asemblerze: EEPROM_write: ;czekaj, a zostanie zakoczony zapis poprzednich danych sbic EECR, EERE rjmp EEPROM_write ;ustaw adresy r18:r17 w rejestrze adresw out EEARH ,r18 out EEARL, r17 ; zapisz dane do rejestru r16 out EEDR, r16 ; ustaw EEMWE na jeden sbi EECR, EEMWE ;rozpocznij zapis

sbi EECR, EEWE ret Kod e C: void EEPROM_write(unsigned int uiAddress, unsigned char ucData) { while(EECR & (1<<EEWE )) EEAR = uiAddress; EEDR =ucData; EECR |= (1<<EEMWE); EECR |= (1<<EEWE); } Nastpne przykady kodu przedstawiaj funkcje odczytujce z EEPROM. Przykady te zakadaj, e przerwania s kontrolowane i e nie zajdzie adne podczas obsugi tych funkcji.. Kod w Asemblerze: EEPROM_read; // czekaj na zakoczenie wczeniejszego zappisu sbic EECR, EEWE rjmp EEPROM_read // ustaw rejestr adresw out EEARH, r18 out EEARL, r17 //rozpocznij odczyt sbi EECR, EERE // odczytaj dane z rejestru danych in r16, EEDR ret Kod w C: unsigned char EEPROM_read(unsigned char uiAddress) { while(EECR & (1<<EEWE)) ; EEAR= uiAddress; EECR |= (1<<EERE); return EEDR; } Zapobieganie znieksztaceniom EEPROM W okresach kiedy jest niski stan napicia dane w EEPROM mog ulec znieksztaceniu poniewa zasb napici jest zbyt niski by CPU i EEPROM mogy dziaa poprawnie. Rezultaty s takie same jak dla tablicowego poziomu systemw korzystajcych z EEPROM i takie same rodzaje rozwiza powinny zosta zastosowane. Znieksztacenia danych w EEPROM mog zaj w dwch przypadkach gdzy napicie jest za niskie. Po pierwsze, normalna sekwencja zapisu do EEPROM wymaga minimalnego napicia aby przebiega

poprawnie. Po drugie, jednostka centralna sama w sobie moe wykonywa rozkazy niepoprawnie przy zbyt niskim napiciu. Bdw w danych zapisanych na EEPROM mona atwo unikn postpujc w nastpujcy sposb: Naley utrzymywa AVR RESET w stanie aktywnym (stan niski) w okresach niewystarczajcego zasobu mocy. To moe zosta zapewnione przez odblokowanie wewntrznego detektora zuycia energii elektrycznej (BOD). Jeeli poziom wykrycia nie odpowiada wymaganemu poziomowi zewntrzny obwd ochrony przed resetem moe zosta wykorzystany. Jeeli podczas operacji zapisu procesor zostanie zresetowany to operacja zapisu zostanie dokoczona po zapewnieniu odpowiedniego zasobu napicia. Pami I/O Definicja przestrzeni pamici I/O dla ATmega128 jest pokazana w Streszczeniu rejestrw na stronie 341. Wszystkie urzdzenia zewntrzne i peryferyjne ATmega128 s umiejscowione w przestrzenie pamici I/O. Wszystkie te lokacje s osigalne poprzez rozkazy LD/LDD/LDS i ST/STS/STD, ktre przekazuj dane pomidzy 32 oglnymi roboczymi rejestrami i przestrzeni pamici I/O. Rejestry I/O o adresach rzdu $00 - $1F s bezporednio bitowo dostpne korzystajc z rozkazw SBI i CBI. W tych rejestrach warto poszczeglnych bitw moe zosta sprawdzona poprzez rozkazy SBIS i SBIC. Szczegy w sekcji o rozkazach. Korzystajc ze specyficznych rozkazw I/O IN, OUT musz zosta wykorzystane adresy $00 - $3F. Adresujc rejestry I/O jako przestrze danych korzystajc z rozkazw LD i ST $20 musi zosta dodane do pierwotnego adresu. ATmega128 jest zoonym mikrokontrolerem z wiksz iloci jednostek peryferyjnych ni moe zosta obsuonych przez 64 lokacje zarezerwowane w kodzie operacyjnym dla rozkazw IN i OUT. Dla rozszerzonej pamici I/O od $60 - $FF w SRAM tylko rozkazy ST/STS/STD i LD/LDS/LDD mog zosta uyte. Rozszerzona przestrze pamici I/O jest wymieniana z SRAM kiedy ATmega128 jest w trybie kompatybilnoci z ATmega103. W celu zapewnienia wsppracy z przyszymi urzdzeniami, bity zarezerwowane powinny by ustawione na zero jeli s dostpne. Zarezerwowane adresy pamici I/O nigdy nie powinny by zapisywane. Niektre flagi statusu s zerowane przed zapisywaniem logicznych jedynek do nich. Naley zauway, e rozkazy CBI i SBI bd operoway na wszystkich bitach rejestru I/O zapisujc jedynk z powrotem do kadej odczytanej flagi, tak wic zerujc te flagi. CBI i SBI pracuj tylko na rejestrach $00 - $1F. Rejestry kontrolne dla I/O i urzdze peryferyjnych s opisane w pniejszych sekcjach. Interfejs zewntrznej pamici.

Z wszystkimi swoimi cechami Zewntrzny interfejs pamici zapewnia dobre dopasowanie do operowania na nim jako na interfejsie do pamici takich jak zewntrzny SRAM i Flash oraz do urzdze peryferyjnych takich jak wywietlacze LCD, A/D i D/A. Gwne cechy to: o Cztery rne ustawienia stanw oczekiwania o Uzalenienie ustawie stanw oczekiwania od rnych rodzai zewntrznych sektorw pamici (konfigurowalny rozmiar sektora) o Liczba bitw przeznaczona na zaadresowanie wyszych bajtw jest obieralna. o Stranik magistrali na liniach danych minimalizujcy pobr prdu. (opcjonalne) Kiedy pami zewntrzna jest dostpna (XMEM) przestrze adresowa na zewntrz wewntrznego SRAM staje si dostpna poprzez korzystania z przeznaczonych do pamici zewntrznej wyj. Konfiguracja pamici przedstawiona jest na rysunku 11.

Uwaga: ATmega128 nie pracujca w trybie kompatybilnoci z ATmega103 Dostpna konfiguracja pamici A (Konfiguracja pamici B N/A) ATmega128 pracujca w trybie kompatybolnoci z ATmega103: Dostpna konfiguracja pamici B (Konfiguracja pamici A N/A) Kompatybilno z ATmega103

Obydwa rejestry kontroli pamici zewntrznej (XMCRA i XMCRB) s umieszczone w przestrzeni rozszerzonej I/O. W trybie kompatybilnoci z ATmega103 rejestry te nie s dostpne jak i waciwoci przez nie specyfikowane. Ograniczenia w kompatybilnoci z ATmega103 to: o Tylko dwa stany oczekiwania s dostpne (SRW1n = 0b00 i SRW1n = 0b01); o Liczba bitw przypisanych wyszym bajtom adresowym jest staa. o Pami zewntrzna nie moe by podzielona na sekcje z rnymi ustawieniami stanw oczekiwania. o Stranik magistrali nie jest dostpny o Wyjcia RD, WR i ALE s tylko wyjciowe (port G w ATmega128) Korzystanie z interfejsu zewntrznej pamici

Interfejs skada si z: o AD7..0: multipleksowana magistrala adresowa i magistrala danych aktywna niskim poziomem o A15..8: aktywna wysokim poziomem magistrala adresowa (konfigurowalna ilo bitw) o ALE: Zatrzask adresu o RD: strob odczytu o WR: strob zapisu Bity kontrolne dla interfejsu zewntrznej pamici s ulokowane w trzech rejestrach: rejestr kontroli MCU (MCUCR), rejestr kontroli pamici zewntrznej A (XMCRA) i rejestr kontroli zewntrznej pamici B (XMCRB). Kiedy XMEM interfejs jest odblokowany przepisze ustawienia rejestru namiaru danych, ktry odpowiada portom przeznaczonym na interfejs XMEM. Szczegy w sekcji Porty I/O na stronie 60. Interfejs XMEM wykrywa czy jest dostp zewntrzny czy wewntrzny. Jeeli dostp jest z zewntrz interfejs XMEM bdzie wystawia adres, dane i sygnay kontrolne na portach tak jak jest to pokazane na rysunku 13 (rysunek nie bierze pod uwag stanw oczekiwania) . Kiedy sygna ALE przejdzie z jedynki logicznej do zera oznacza to wystawienie dobrego adresu na liniach AD7..0. ALE jest w stanie niskim podczas transferu danych. Kiedy interfejs XMEM jest odblokowany rwnie wewntrzny dostp do pamici spowoduje aktywno na liniach adresw, danych i portach ALE, jednak stroby WR i RD nie bd aktywne. Kiedy interfejs zewntrznej pamici jest zablokowany normalne wyjcia i ustawienia namiaru danych s uywane. Naley zauway, e kiedy interfejs XMEM jest zablokowany przestrze adresowa ponad granic przestrzeni w pamici wewntrznej SRAM nie jest mapowany w tej pamici. Rysunek 12 ilustruje jak podczy zewntrzny SRAM do AVR korzystajc z semkowego zatrzasku (zazwyczaj 74x573 lub rwnowanego), ktry jest niewidoczny dla G w stanie wysokim. Wymagania zatrzasku adresu

Ze wzgldu na du szybko operacji na interfejsie XRAM zatrzask adresu musi zosta dobrany z ostronoci dla systemw o czstotliwociach wikszych ni 8MHz i 4V lub 4MHz i 2.7V. Podczas operowania w przy wikszych czstotliwociach typowy zatrzask 74HC staje si nieodpowiedni. Interfejs pamici zewntrznej zosta zaprojektowany zgodnie z t seri zatrzasku. Chocia wikszo zatrzaskw moe by uywana jak dugo przestrzegaj parametrw gwnego taktowania. Parametry te dla zatrzaskw adresowych to: o Od D do Q opnienie czasu propagacji (tPD) o Czas ustalania danych przed G w stanie niskim (tSU) o Czas podtrzymywania adresu po przejciu G do stanu niskiego (TH) Interfejs zewntrznej pamici zosta zaprojektowany w celu zagwarantowania minimalnego czasu utrzymywania adresu po zapewnieniu G niskiego stanu tH = 5ns. Odnoszc si do tLAXX_LD/tLLAXX_ST w Taktowaniu zewntrznej pamici danych tabela 137 do 144 na stronach 321 323. Opnienie czasu propagacji od D do Q musi by brane pod uwag podczas obliczania wymaganego czasu dostpu poprzez zewntrzny komponent. Czas ustalania si danych nim G przejdzie w stan niski nie moe przekracza adresu obowizujcego w niskim stanie ALE pomniejszonym o opnienie zapisu PCB (zalene od pojemnociowego obcienia).

Rezystory podcigajce i stranik magistrali

Rezystory podcigajce i porty AD7..0 mog by uaktywnione jeeli w odpowiadajcym im rejestrze portu jest zapisane jeden. Aby zmniejszy pobr mocy w trybie snu jest rekomendowany aby odci rezystory podcigajce poprzez wpisanie do rejestru portw zera przed przejciem w tryb snu. Interfejs XMEM zapewnia rwnie stranika magistrali na liniach AD7..0. Kontroler magistrali moe by odcinany i blokowany poprzez oprogramowanie co jest opisane w sekcji Rejestr kontrolny zewntrznej pamici B XMCRB na stronie 31. Kiedy linie s odblokowane stranik magistrali bdzie utrzymywa poprzedni warto na liniach AD7..0 magistrali podczas, gdy interfejs XMEM ustawi je w trzeci stan. W przypadku gdy, ani kontroler magistrali, ani rezystor podcigajce nie s odblokowane interfejs XMEM pozostawi linie AD7..0 w trzecim stanie podczas dostpu do odczytu dopki nie pojawi si nastpny dostp do RAM. Pamici zewntrzne maj rne wymagania taktowania. Aby sprosta tym wymaganiom interfejs XMEM ATmega128 zapewnia cztery rne stany oczekiwania jak pokazuje tabela 4. Przed wyborem stany oczekiwania naley zapozna si ze specyfikacj zewntrznej pamici. Najwaniejszymi parametrami s czas dostpu do zewntrznej pamici porwnywany z wymaganiami zaczania ATmega128. Czas dostpu do pamici zewntrznej jest zdefiniowany jako czas, ktry upyn od otrzymania adresu do wyprowadzenia danych przez niego opisywanych na magistral. Czas dostpu nie moe przekroczy czasu impulsu ALE, ktry musi by w stanie niskim by zapewni stao danych przy odczycie. ( przejrzyj tLLRL + tRLRH tDVRH w tabelach 137..144 na stronach 321 323). Rne czasy oczekiwania s ustawione w oprogramowaniu. Dodatkow cech jest moliwo podziau pamici zewntrznej na dwa sektory z indywidualnymi ustawieniami czasw oczekiwania. Takie rozwizanie umoliwia podczenie dwch rnych pamici z rnymi wymaganiami czasowymi do jednego interfejsu XMEM. Szczegy w tablicach 137 144 oraz na rysunkach 156 159 w rozdziale Taktowanie zewntrznej pamici danych na stronie 321. Naley zauway, e interfejs XMEM jest asynchroniczny i ksztat fali na nastpujcych rysunkach jest odniesiony do wewntrznego systemu zegarowego. Skos pomidzy zewntrznym zegarem XTAL1 nie jest gwarantowana (zmienia si wraz z temperatur urzdzenia i doprowadzonym napiciem. Zgodnie z tym, interfejs XMEM jest nie dopasowany do synchronicznych operacji.

Uwaga: SRWn1 = SRW11 (wyszy sektor) lub SRW01 (niszy sektor), SRWn0 = SRW10 (wyszy sektor) lub SRW00 (niszy sektor. Impuls ALE w T4 jest obecny tylko jeeli nastpna instrukcja da dostpu do pamici.

Uwaga: SRWn1 = SRW11 (wyszy sektor) lub SRW01 (niszy sektor), SRWn0 SRW10 (wyszy sektor) lub SRW00 (niszy sektor). Impuls ALE w T5 jest obecny tylko jeeli nastpna instrukcja da dostpu do pamici.

Uwaga: SRWn1 = SRW11 (wyszy sektor) lub SRW01 (niszy sektor), SRWn0 = SRW10 (wyszy sektor) lub SRW00 (niszy sektor) Impuls ALE w T6 jest obecny tylko jeeli nastpna instrukcja da dostpu do pamici.

Uwaga: SRWn1 = SRW11 (wyszy sektor) lub SRW01 (niszy sektor), SRWn0 SRW10 (wyszy sektor) lub SRW00 (niszy sektor). Impuls ALE w T7 jest obecny tylko jeeli nastpna instrukcja da dostpu do pamici. Opis rejestru XMEM o Rejestr kontroli MCU MCUCR

a: bit 7 SRE: Odblokowanie zewntrzne SRAM/XMEM

Zapisujc jeden do tego bitu odblokowuje si interfejs zewntrznej pamici. Funkcje wyj AD7.0, A15..8, ALE, WR i RD s aktywne jako alternatywne funkcje wyj. Bit SRE przecia ustawienia kierunku kadego wyjcia w odpowiednim rejestrze kierunku danych. Ustawiajc SRE na zero zablokowuje si ten interfejs i normalne wyjcia i ustawienia kierunkw danych s uywane. b: bit 6 SRW10: bit wyboru trybu oczekiwania Dokadny opis w trybie bez wsppracy z ATmega103 przejrzyj zwyczajny opis poniej dla bitw SRWn (XMCRA). Natomiast w trybie wsppracy z ATmega103 zapisanie jedynki SRW10 dodaje jeden dodatkowy takt podczas strobu zapisu lub odczytu w stanie oczekiwania. Rysunek 14. o Rejestr kontroli pamici A XMCRA

a: bit 7 Res: bit zerezerwowany Ten bit jest zarezerwowany i zawsze bdzie odczytywany jako zero. Podczas zapisu do tego adresu naley wpisa zero w celu zapewnienia kompatybilnoci z przyszymi urzdzeniami. b: bity 6..4 SRL2, SRL1, SRL0: sektor limitu czasu oczekiwania Dla rnych adresw zewntrznych pamici mona skonfigurowa rne stany oczekiwania. Adresy zewntrznej pamici mog by podzielone na dwa sektory z oddzielnymi bitami stanw oczekiwania. SRL2, SRL1, SRL0 wybieraj miejsce podziau na sektory, zobacz tabel 3 i rysunek 11. Domylnie bity SRL2, SRL1, SRL0 s ustawione na zero i caa zewntrzna przestrze adresowa pamici jest traktowana jako jeden sektor. Kiedy caa przestrze adresowa SRAM jest skonfigurowana jako jeden sektor bity SRW11 i SRW10 okrelaj stan oczekiwania.

c: bit 1 i bit 6 MCUCR SRW11, SRW10: bity wyboru stanu oczekiwania dla wyszego sektora SRW11 I SRW10 s bitami kontroli liczby stanw oczekiwania dla wyszego sektora przestrzeni adresowej pamici zewntrznej. Patrz tabela 4. d: bity 3..2 SRW01, SRW00: bity wyboru stanu oczekiwania dla sektora niszego Bity te kontroluj liczb stanw oczekiwania dla niszego sektora przestrzeni adresowej pamici zewntrznej. Patrz tabela 4. Tabela 4 SRWn1 0 0 1 1 Stany oczekiwania Nie ma stanu oczekiwania Czekaj jeden cykl maszynowy przy strobie zapisu/odczytu Czekaj dwa cykle maszynowy przy strobie zapisu/odczytu Czekaj dwa cykle maszynowy przy strobie zapisu/odczytu i czekaj jeden cykl przed wyprowadzeniem nowego adresu Uwaga: n=0 lub 1 (wyszy/niszy sektor) Dalsze informacje o taktowaniu stanw oczekiwa dla interfejsu pamici zewntrznej obejrzyj rysunki 1316. e: bit 0 Res: bit zarezerwowany Ten bit jest zarezerwowany i zawsze bdzie odczytywany jako zero. Podczas zapisu do tego adresu naley wpisa zero w celu zapewnienia kompatybilnoci z przyszymi urzdzeniami. SRWn0 0 1 0 1

Rejestr kontroli pamici zewntrznej BXCRB

a: bit 7 XMBK: bit umoliwiajcy kontrol magistrali zewntrznej pamici Wpisanie jedynki do tego bitu odblokowuje kontrolera magistrali na liniach AD7..0. Kiedy kontroler ten jest odblokowany ,linie danych bd przetrzymywa ostatni wpisan warto nawet jeeli interfejs XMEM ustawi linie w trzecim stanie. Wpisujc XMBK zero odcinamy kontrolera magistrali XMBK nie zaley od SRE, wic gdy interfejs XMEM jest odcity kontrolerzy magistrali s aktywni dopki XMBK jest jedynk. b: bity 6..4 Res: bit zarezerwowany Ten bity s zarezerwowane i zawsze bd odczytywane jako zero. Podczas zapisu do tego adresu naley wpisa zero w celu zapewnienia kompatybilnoci z przyszymi urzdzeniami c: bity 2..0 XMM2, XMM!, XMM0: Maska pamici zewntrznej Kiedy jest moliwy dostp do zewntrznej pamici wszystkie wyjcia portu C s domylnie uywane dla starszych bajtw adresowych. Jeeli penie 60K przestrzeni adresowej nie jest potrzebne dla dostpu do pamici zewntrznej, niektre albo i wszystkie wyjcia portu C mog by zwolnione i dziaa zgodnie z pierwotnym przeznaczeniem patrz tabela 5. Jak opisano w Wykorzystywanie wszystkich 64K lokacji zewntrznej pamici na stronie 32, jest moliwe by bity XMMn byy uywane jako bity dostpu do 64KB pamici zewntrznej.

Wykorzystanie wszystkich adresw 64kB pamici zewntrznej.

Odkd pami zewntrzna jest mapowana za pamici wewntrzn jak pokazana na rysunku 11 tylko 60 KB tej pamici jest dostpnych domylnie (przestrze adresowa 0x0000 0x10FF jest zarezerwowana dla

pamici wewntrznych). Chocia, jest moliwe korzystanie z caej pamici zewntrznej poprzez maskowanie starszych bitw adresw przez zero. Mona w tym celu wykorzysta bity XMMn i kontrolowa poprzez oprogramowanie znaczce bity adresu. Ustawiajc port C jako wyjciowy 0x00 i umoliwiajc normaln prac waniejszych bitw portu C interfejs pamici bdzie adresowany nastpujco 0x0000 0x1FFF. Przejrzyj przykady kodw: Kod w asemblerze: //OFSET jest zdefiniowany jako 0x2000 by zapewni dostp do zewntrznej pamici //starsze bity portu C s skonfigurowane jako wyjciowe dla tych wyj pracujcych normalnie.

Przykad kodu w C:

Uwaga: Przykady kodu zakadaj, e odpowiednie pliku nagwkowe s doczone. Naley korzysta z tych moliwoci z ostronie gdy wikszo pamici jest zamaskowana.

ZEGAR SYSTEMOWY I JEGO OPCJE


Systemy zegarowe i ich dystrybucja Rysunek 17 przedstawia gwne systemy zegarowe w AVR i ich rozdzia. Wszystkie te zegary nie musz dziaa razem. W celu zmniejszenia poboru mocy zegary do poszczeglnych nieuywanych moduw mog zosta zatrzymane przy wykorzystaniu rnych trybw snu, co zostao opisane w Zarzdzanie moc i tryby snu na stronie 31. Systemy zegarowe s opisane szczegowo poniej.

Zegar CPU

Zegar CPU taktuje operacje systemu na rdzeniu AVR. Przykadami takich moduw jest zestaw rejestrw oglnego dostpu, rejestr statusu oraz pami danych przetrzymujca wskanik stosu. Zatrzymujc ten zegar zatrzymujemy gwn jednostk, tak, e nie mog by wykonywane gwne operacje i obliczenia. o Zegat I/O

Zegar I/O jest uywany w wikszoci moduw I/O jak stopery liczniki, SPI i USART. Zegar ten jest rwnie uywany przez wewntrzny modu przerwa, ale naley pamita, e niektre zewntrzne przerwania s wykrywane asynchroniczn logik, co pozwala je wykrywa nawet jeeli zegar I/O jest zatrzymany. Rwnie naley zauway, e rozpoznawanie adresu w module TWI jest wykonywane asynchronicznie kiedy zegar I/O jest wstrzymany, umoliwiajc pobr adresu TWI we wszystkich trybach snu.

Zegar Flash

Zegar Flash kontroluje operacje interfejsu Flash. Jest zazwyczaj aktywny rwnolegle z zegarem CPU. o Asynchroniczny ukad czasowy

Asynchroniczny ukad czasowy umoliwia asynchronicznemu licznikowi by by zliczany bezporednio z zewntrznego krzemowego zegara 32kHZ. Dziedzina przeznaczenia tego zegara umoliwia taktowanie w czasie rzeczywistym nawet gdy urzdzenie jest w trybie snu. o Zegar ADC

ADC jest zaopatrzony w wyspecjalizowan domen zegara. Pozwala to zatrzymywa zegary CPU i I/O w celu redukcji zakce generowanych przez cyfrowe obwody. To daje bardziej dokadne rezultaty konwersji w ADC. rda zegara

Urzdzenie to ma nastpujce opcje rde taktowania, wybierane przez bity bezpiecznika Flash jak pokazano niej. Zegar z wybranych rde jest wejciem do generatora AVR i (routed) do odpowiedniego moduu. Opcje taktowania Zewntrzny kwarcowy/ceramiczny rezonator Zewntrzny niskoczstotliwociowy kwarc Zewntrzny oscylator RC Wykalibrowany wewntrzny oscylator RC Zewntrzny zegar CKSEL3.0 1111-1010 1001 1000-0101 0100-0001 0000

Uwaga: Dla wszystkich bezpiecznikw 1 oznacza nie zaprogramowany, podczas gdy 0 oznacza zaprogramowany. W nastpnych sekcjach s podane rne wybory dla kadej opcji taktowania. Kiedy CPU budzi si ze stanu obnionego poboru mocy lub oszczdnoci mocy korzysta si z wybranego rda taktowania do procedury uruchamiajcej, zapewniajcej stabilizacj oscylatora nim rozpocznie si wykonywanie operacji. Kiedy CPU startuje po resecie jest dodawane dodatkowe opnienie umoliwiajce osignicie stabilnego poziomy poprzez moc przed rozpoczciem normalnego dziaania. Oscylator Watchdoga jest uywany do taktowania czci uruchamiania w czasie rzeczywistym. Liczba cykli oscylatora WDT potrzebna w kadym z czasw przerwy pokazuje tabela 7. Czstotliwo Watchdoga zaley od napicia co opisuje ATmega128 typowe charakterystyki na stronie 326. Urzdzenie to jest zaadowane(shipped) z CKSEL = 0001 i SUT = 10 (1MHz Wewntrzny oscylator RC, wolno podnoszcy moc). Typowy czas przerwy 5.0V 4.1ms 65ms Kwarcowy oscylator Typowy czas przerwy 3.0V 4.3ms 69ms Liczba cykli 4K(4,096) 64K(65,536)

XTAL1 i XTAL2 s indywidualnie wejciowym i wejciowym odwracajcym wzmacniaczem , ktry moe zosta skonfigurowany jako oscylator na pytce, co pokazuje rysunek 18. Kady kwarcowy lub ceramiczny rezonator moe by uyty. Bezpiecznik CKOPT wybiera pomidzy dwoma rnymi trybami wzmacniacza oscylatorw. Kiedy CKOPT jest zaprogramowany, wyjcie oscylatora bdzie oscylowa z penym wahaniem pomidzy minimum i maksimum na wyjciu. Ten tryb jest odpowiedni dla operowania w bardzo gonym rodowisku lub kiedy wyjcie z XTAL2 napdza drugi bufor zegara. Ten tryb ma szeroki zakres czstotliwoci. Kiedy CKOPT jest nie zaprogramowane oscylator ma mniejsze wahania na wyjciu. Co zmniejsza pobr mocy. Tryb ten ma limitowany zakres czstotliwoci i nie moe by uywany do napdzania innych buforw zegarw. Dla rezonatorw minimalna czstotliwo to 8MHz z nie zaprogramowanym CKOPT i 16MHz z zaprogramowanym CKOPT. C1 i C2 powinny by zawsze rwne dla oby kwarcw i rezonatorw. Optymalna warto dla kondensatorw zaley od kwarcu lub rezonatora, ktry jest uywany wielkoci rozproszonej reaktancji pojemnociowej i zakce elektromagnetycznych rodowiska. Niektre pocztkowe wytyczne dla wyboru kondensatora dla pracy z kwarcem s oddane w tabeli 8. Dla ceramicznych rezonatorw wartoci kondensatora zostay podane przez producenta. Wikszej iloci informacji na temat doboru kondensatorw znajduje si w nocie aplikacyjnej.

Oscylator moe pracowa w trzech trybach, kady jest zoptymalizowany dla specyficznego zakresu czstotliwoci. Tryb pracy oscylatora wybieraj bezpieczniki CKSEL3..1 jak pokazuje tabela 8. CKOPT CKSEL3..1 Zakres czstotliwoci(1) Rekomendowany zakres dla kondensatorw MHz C1 i C2 przy wsppracy z kwarcem 1 101(2) 0.4-0.9 1 110 0.9 3.0 12pF 22pF 1 111 3.0 8.0 12pF 22pF 0 101,110,111 1.0 12pF 22pF Uwaga: 1: zakres czstotliwoci s wartociami wstpnymi. Wartoci aktualne to TBD 2: opcja ta nie powinna by uywana wraz z kwarcem, tylko z rezonatorem ceramicznym. Bezpiecznik CKSEL0 wraz z bezpiecznikami SUT1..0 wybieraj czasy uruchamiania co przedstawia tabela 9. CKSEL0 SUT1..0 Czas startu po (wyczenie zasilania, trybie oszczdzania mocy) dodatkowe opnienie od resetu V = 5V Rekomendowane uycie

0 0 0 0 1 1 1 1

00 01 10 11 00 01 10 11

258CK(1) 258CK(1) 1K CK(2) 1K CK(2) 1K CK(2) 16K CK 16K CK 16K CK

4.1 ms 64ms 4.1ms 65 ms 4.1ms 65 ms

Rezonator ceramiczny, szybki wzrost mocy Ceramiczny rezonator, wolniejszy wzrost mocy Ceramiczny rezonator Odblokowany BOD Ceramiczny rezonator Szybki wzrost mocy Ceramiczny rezonator Wolny wzrost mocy Kwarcowy oscylator Odblokowane BOD Kwarcowy oscylator Szybki wzrost mocy Kwarcowy oscylator Wolny wzrost mocy

Uwagi: 1. Te opcje powinny by uywane tylko kiedy nie operuje si na wartociach w pobliu minimum czstotliwoci urzdzenia i tylko jeeli stabilno czstotliwo przy uruchamianiu nie jest wana dla programu. Te opcje nie s odpowiednie dla kwarcw. 2. TE opcje maj wspdziaa z ceramicznymi rezonatorami i zapewniaj stabiln czstotliwo przy uruchamianiu. Mog by one uywane wraz z krysztaami kiedy czstotliwo nie zblia si do minimum i jest stabilna przy uruchamianiu oprogramowania. Krysztaowy oscylator o niskiej czstotliwoci

Aby korzysta z 32.768 kHz kwarcowego zegara jako rda taktowania dla urzdzenia kwarcowy niskoczstotliwociowy oscylator musi zosta wybrany poprze ustawienie CKSEL na 1001. Kwarc powinien zosta podczony jak pokazuje rysunek 18. Poprzez programowanie bezpiecznika CKOPT uytkownik moe odbezpieczy wewntrzny kondensator n aXTAL1 i XTAL2 co sprawia, e niepotrzebne staj si zewntrzne kondensatory. Wewntrzny kondensator ma nominaln warto 36pF. Dalsze informacje w nocie aplikacyjnej kwarcowego oscylatora 32MHz. Kiedy ten oscylator jest wybrany czasy uruchamiania sa determinowane przez bezpieczniki SUT jak pokazuje tabela 10. SUT1..0 Czas startu po (wyczenie zasilania, trybie oszczdzania mocy) 1K CK(1) 1K CK(1) 32K CK dodatkowe opnienie od resetu V = 5V 4.1ms Rekomendowane uycie

00 01 10 11

Pierwszy pobr mocy lub odblokowany BOD 65ms Wolny wzrost mocy 65ms Stabilna czstotliwo przy uruchamianiu Zarezerwowane

Uwaga: 1. TE opcje nie powinny by wykorzystywane jeeli stabilno czstotliwoci przy uruchamianiu nie jest istotna dla aplikacji.

Zewntrzny oscylator RC

Przy taktowaniu nie wraliwych aplikacji konfiguracja zewntrznego RC pokazana jest na rysunku 19. Czstotliwo z grubsza oszacowana jest przez rwnanie f = 1/(3RC). C najmniej powinno wynosi 22pF. Poprzez programowanie bezpiecznika CKOPT uytkownik moe odblokowa wewntrzny kondensator (36pF) pomidzy XTAL1 i GND, co sprawia, zewntrzny kondensator staje si nie potrzebny. Wicej informacji w noce aplikacyjnej Zewntrzny oscylator RC.

Oscylator moe pracowa w czterech rnych trybach, kady jest zoptymalizowany dla specyficznego zakresu czstotliwoci. Tryb operacji jest wybierany poprzez bezpiecznik CKSEL3..0 co pokazuje tabela 11. CKSEL3..0 Zakres czstotliwoci (MHz) 0101 -.0.9 0110 0,9-3,0 0111 3,0-8,0 1000 8,0-12,0 Kiedy oscylator jest wybrany czas uruchamiania seterminuje bezpiecznik SUT co przedstawia tabela 12. SUT1..0 00 01 10 11 Czas startu po (wyczenie zasilania, trybie oszczdzania mocy) 18 CK 18 CK 18 CK 6 CK(1) dodatkowe opnienie od resetu V = 5V 4.1ms 65ms 4.1ms Rekomendowane Uycie Odblokowany BOD Szybki wzrost mocy Wolny wzrost mocy Szybki wzrost mocy Odblokowany BOD

Uwaga: 1. Te opcje nie powinny by uywane przy operowaniu na granicy minimalnej czstotliwoci dal urzdzenia. Wzorcowy wewntrzny oscylator RC

Wzorcowy wewntrzny oscylator zapewnia stay zegar o czstotliwoci 1, 2, 4 i 8 MHz. Wszystkie te czstotliwoci s wyznaczone dla napicia nominalnego 5V w temperaturze 25 stopni C. Zegar ten moe zosta wybrany jako zegar systemowy poprzez zaprogramowanie bezpiecznikw CKSEL jak pokazuje tabela 13. Jeeli zostanie wybrany nie bdzie wsppracowa z adnymi zewntrznymi elementami.

Bezpiecznik CKOPT powinien zawsze by nie zaprogramowany kiedy korzysta si z opcji zegara. Podczas resetu sprzt aduje bit wzorcowy do rejestru OSCCAL i nastpuje automatyczne wzorcowanie oscylatora RC. Przy napiciu 5 V w temperaturze 25 stopni czstotliwo oscylatora 1,0MHz nie odchyla si od nominalnej czstotliwoci o wicej ni 1%. Kiedy oscylator jest wykorzystywany jako zegar moduu, oscylator Watchdoga nadal bdzie wykorzystywany do taktowanie Watchdoga i czasu przerw w resecie. Wicej informacji zawartych jest w sekcji Bajt wzorcowy na stronie 285. CKSEL3..0 Czstotliwo nominalna (MHz) 0001(1) 1.0 0010 2.0 0011 4.0 0100 8.0 Uwaga: Urzdzenie jest zaadowany z wybranej opcji Kiedy ten oscylator zostanie wybrany, czas uruchamiania jest determinowany przez bezpieczniki SUT co pokazuje tabela 14. XTAL1 i XTAL2 powinny zosta nie podczone. SUT1..0 00 01 10(1) 11 Czas startu po dodatkowe opnienie Rekomendowane (wyczenie zasilania, od resetu Uycie trybie oszczdzania mocy) V = 5V 6 CK Odblokowany BOD 6 CK 4.1ms Szybki wzrost mocy 6 CK 65ms Wolny wzrost mocy Zarezerwowane

Uwaga: Urzdzenie jest zaadowany z wybranej opcji o Rejestr wzorcowego oscylatora OSCCAL

Uwaga: rejestr OSCAL nie jest dostpny w trybie kompatybilnoci z ATmega103 a: bity 7..0 CAL7..0 wartoci wzorcowe oscylatora Zapisujc bit wzorcowy pod ten adres wyregulujemy wewntrzny oscylator by pozby si procesowych waha z czstotliwoci oscylatora. Operacja ta jest wykonywana automatycznie przy resecie. Dla OSCCAL rwnego zero najnisza dostpna czstotliwo zostaa wybrana. Wpisywanie wartoci niezerowych do tego rejestru zwiksza czstotliwo wewntrznego oscylatora. Wpisanie $FF do rejestru umoliwia osignicie najwyszej czstotliwoci. Wzorcowy oscylator jest wykorzystywany do taktowania EEPROM i Flash. Jeeli EEPROM lub Flash jest zapisywane nie naley kalibrowa o wicej ni 10% nominalnej czstotliwoci. Inaczej zapis do EEPROM i Flash moe si nie uda. Naley zauway, e oscylator dy do wzorcowych czstotliwoci 1.0, 2.0, 4.0, 8.0. Dostrajanie do innych czstotliwoci nie zapewnia bezpieczestwa dziaania co pokazuje tabela 15. Wartoci OSCCAL Min. czstotliwo Jako odchylenie od Max. czstotliwo Jako odchylenie od

$00 $7F $FF Zewntrzny zegar

wartoci nominalnej(%) wartoci nominalnej(%) 55 100 75 150 100 200

Aby napdza urzdzenie z zewntrznego rda , XTAL1 powinien by podczony jak pokazuje rysunek 20. Aby urzdzenie dziaao na zewntrznym zegarze, bezpiecznik CKSEL musi by zaprogramowany na 0000. Poprzez programowanie bezpiecznika CKOPT uytkownik moe odblokowa wewntrzny 36pF kondensator pomidzy XTAL1 i GND

Kiedy to rdo zegara zostanie wybrane, czas uruchamiania jest determinowany przez bezpiecznik SUT co pokazuje tabela 16. SUT1..0 00 01 10 11 Czas startu po dodatkowe opnienie Rekomendowane (wyczenie zasilania, od resetu Uycie trybie oszczdzania mocy) V = 5V 6 CK Odblokowany BOD 6 CK 4.1ms Szybki wzrost mocy 6 CK 65ms Wolny wzrost mocy Zarezerwowane

Oscylator licznika stopera

Dla mikrokontrolerw z wyjciami licznika stopera (TOSC1 i TOSC2), kwarc podczamy bezporednio pomidzy te wyjcia. Nie potrzebne s adne zewntrzne kondensatory. Oscylator jest przystosowany do pracy z kwarcem o czstotliwoci 32.768 MHz. Stosujc zewntrznego rda zegara do TOSC1 nie jest zalecane. o XTAL rejestr podziau kontroli XDIV

Rejestr podziau kontroli XTAL1 jest wykorzystywany do dzielenia rda czstotliwoci porze liczby z zakresu 2 129. Cecha ta jest wykorzystywana do zmniejszenia poboru mocy kiedy wymagania procesu s niskie.

a: bit 7 XDIVEN :bit umoliwiajcy podzia XTAL Kiedy bit ten jest zapisany zerem czstotliwo zegara CPU i wszystkich urzdze peryferyjnych jest dzielona przez czynnik zdefiniowany przez ustawienia pozostaych bitw rejestru. Ten bit moe by zapisywany w czasie dziaania w celu zmiany czstotliwoci zegara tak aby dostosowa j do aplikacji. b: bity 6..0 XDIV6..0: bity wyboru podziau XTAL Bity te definiuj czynnik podziau, ktry stosuje si kiedy bit XDIVEN jest ustawiony(zapisany na jeden). Jeeli warto tych bitw jest oznaczona przez d, nastpujce rwnanie definiuje czstotliwo zegara CPU i urzdze peryferyjnych.

f CKL =

zegar _ rdowy 129 d

Wartoci tych bitw mog by zmieniane tylko kiedy XDRIVEN jest rwny zero. Kiedy XDIVEN jest zapisany jedynk, warto zapisywana rwnolegle do XDIV6..0 jest brana jako czynnik podziaw. Kiedy XDIVEN jest rwny zero warto wpisywana rwnolegle do XDIV6..0 jest odrzucana. Jako, e dzielnik dzieli gwne wejcie zegara do MCU prdko urzdze peryferyjnych jest zredukowana kiedy czynnik podziau jest uywany. Uwaga: Licznik0 nie powinien by uywany kiedy zegar systemowy jest dzielony. Odkd Licznik suy rwnie jako asynchroniczny licznik stoper zegar nie bdzie dzielony dla danego moduu zgodnie z ustawieniami rejestru XDIV nawet jeeli Licznik stoper pracuje synchronicznie. W konsekwencji przerwania mog si gubi i dostp do licznika stopera moe zakoczy si niepowodzeniem.

ZARZDZANIE POBOREM MOCY I TRYBY SNU


Tryby sny umoliwiaj aplikacji zamyka moduy, z ktrych nie korzystaj w MCU, co oszczdza moc. AVR zapewnia rne tryby snu umoliwiajce uytkownikowi dostosowa pobr mocy do wymaga aplikacji/ Aby przej w jeden z szeciu trybw snu naley wpisa logiczn jedynk do bitu SE w MCUCR i rozkaz SLEEP musi zosta wykonany. Bity SM2..0 w rejestrze MCUCR wybieraj tryb snu (Idyl, redukcja szumw ADC, obnienie poboru mocy, oszczdnoci mocy, oczekiwanie, rozszerzone oczekiwanie), ktry jest aktywowany przez rozkaz SLEEP. Streszczenie w tabeli 17. Jeeli odblokowane przerwanie zajdzie podczas gdy MCU jest w trybie snu, MCU budzi si. MCU jest wtedy wstrzymywane na cztery dodatkowe cykle maszynowe podczas uruchamiania, nastpnie jest rozpoczynana obsuga przerwania i jest wznawiane wykonywanie nastpujce po rozkazie SLEEP. Zawarto zestawu rejestrw i SRAM pozostaje niezmieniona kiedy urzdzenie budzi si z trybu snu. Kiedy w czasie trybu snu nastpi reset, MCU budzi si i zaczyna wykonywa rozkazy od wektora resetu. Rysunek 17 na stronie 33 przedstawia rne systemy zegarowe a ATmega128 i ich rozkad. Rysunek ten jest pomocny przy wybieraniu odpowiedniego trybu snu.

Rejestr kontroli MCU MCUCR

Rejestr kontroli MCU zawiera bity kontrolne dla zarzdzania moc.

a: bit 5 SE: bit uaktywniajcy spanie Bit ten musi zosta zapisany przez logiczn jedynk, aby MCU weszo w tryb snu kiedy zostanie wykonany rozkaz SLEEP. Aby unikn wejcia MCU w tryb snu jeli nie jest to celem programisty, naley wpisywa do SE jedynk tylko przed wykonywaniem rozkazu SLEEP i wyzerowa ten bit zaraz po przebudzeniu. b: bity 4..2 SM2..0: bity wyboru trybu snu Ustawiajc te bity mona wybra jeden z szeciu trybw snu, co przedstawia tabela 17. SM2 SM1 SM0 Tryb snu 0 0 0 Idyl 0 0 1 Redukcja zakce ADC 0 1 0 Tryb obnionego poboru mocy 0 1 1 Tryb oszczdnoci mocy 1 0 0 Zarezerwowany 1 0 1 Zarezerwowany 1 1 0 Tryb oczekiwania(1) 1 1 1 Rozszerzony tryb oczekiwania(1) Uwaga: 1. Tryb oczekiwania i rozszerzony tryb oczekiwania s dostpne tylko przy zewntrznym kwarcu lub rezonatorze. Idyll tryb

Kiedy do bitw SM2..0 zostanie wpisane 000 rozkaz SLEEP sprawia, MCU wchodzi w tryb Idyll zatrzymujc prac CPU, ale pozwalajc SPI, USART, komparatorowi analogowemu, ADC, interfejsowi cza szeregowego dwuprzewodowego, Licznikowi stoperowi, Watchdogowi i systemowi przerwa kontynuowa dziaanie. Ten tryb snu zasadniczo zatrzymuje clkCPU i clkFlash pozwalajc pozostaym zegarom pracowa. Tryb idyll umoliwia MCU budzenie si gdy wystpi zewntrzne wywoanie przerwania jak rwnie wewntrzne takie jak przepenienie ukadu czasowego i przerwanie zakoczenia transmisji USART. Jeeli wybudzenie nie jest potrzebne przy przerwaniu pochodzcemu od analogowego komparatora, komparator moe otrzyma mniej mocy przez ustawienie bitu ACD w rejestrze kontroli i statusu analogowego komparatora ACSR. To zmniejszy pobr mocy w trybie idyll. Jeeli ADC jest odblokowane, konwersja zaczyna si automatycznie przy wejciu w ten tryb. Tryb redukcji szumw ADC

Kiedy bity SM2..0 maj wpisan warto 001 rozkaz SLEEP sprawi, e MCU wejdzie w tryb redukcji szumw, zatrzymujc dziaanie CPU, ale pozwalajc pracowa ADC, zewntrznemu ukadowi przerwa,

kontrolerowi adresw interfejsu dwuprzewodowego szeregowego interfejsu, Licznikowi- stoperowi i Watchdogowi jeeli ma moliwo pracy. Ten tryb snu zasadniczo zatrzymuje clkI/O i clkCPU i clkFlash pozwalajc pozostaym zegarom pracowa. To udoskonala rodowisko zakce dla ADC, umoliwiajc wysz rozdzielczo pomiarw. Jeli ADC jest odblokowane , konwersja zaczyna si automatycznie kiedy urzdzenie wejdzie w ten tryb. Poza kompletn konwersj przerwa ADC tylko zewntrzny reset, Watchdog reset, reset spowodowany obnieniem napicia sieciowego, przerwanie oznajmiajce zgodno adresw szeregowego dwuprzewodowego interfejsu, przerwania licznika- stopera, przerwanie gotowoci SPM/EEPROM, przerwanie zewntrznego poziomu INT7..4 lub przerwanie zewntrzne INT3..0 mog wybudzi MCU z tego trybu snu. Tryb obnionego poboru mocy

Kiedy na bity SM2..0 wpiszemy 010 rozkaz SLEEP spowoduje wejcie urzdzenia w tryb obnionego poboru mocy. W tym trybie, zewntrzny oscylator jest zatrzymywany, podczas gdy przerwania zewntrzne , kontroler adresw interfejsu szeregowego dwuprzewodowego, i Watchdog kontynuuj prac. Tylko zewntrzny reset, reset Watchdoga, reset spowodowany obnieniem napicia sieciowego, przerwanie dopasowania adresu szeregowego dwuprzewodowego interfejsu, zewntrznego poziomu przerwania INT7..4 lub zewntrznego przerwania INT3..0 poe wybudzi MCU. Ten tryb snu zasadniczo zatrzymuje wszystkie zegary pozwalajc pracowa tylko moduom asynchronicznym. Naley zauway, e wyzwalacz poziomu przerwania jest uywany do wybudzania urzdzenia z tego trybu snu, zmieniony poziom musi by przytrzymany przez jaki czas. Szczegy na stronie 84 w Przerwania zewntrzne. Po przebudzeniu z tego trybu snu nastpuje opnienie przy stanie przebudzenia trwajce do czasu a stan przebudzenia bdzie aktywny. To pozwala zegarowi zrestartowa si i sta si stabilnym po zatrzymaniu. Okres przebudzenia jest zdefiniowany przez bezpiecznik CKSEL, ktry definiuje okres czasu przerwy restartu, co opisuje sekcja rda zegara na stronie 34. Tryb oszczdnoci mocy

Kiedy na bitach SM2..0 jest wpisane 011 rozkaz SLEEP sprawia, e MCU wchodzi w stan oszczdnoci mocy. Tryb ten jest podobny od trybu obnienia pobieranej mocy z jednym wyjtkiem: Jeeli licznik stoper jest taktowany asynchronicznie , np. bit AS0 w ASSR jest ustawiony na 1, licznik stoper bdzie pracowa podczas snu. Urzdzenie moe wybudzi si ze snu albo ze wzgldu na przepenienie licznika, albo na zdarzenie zewntrznego porwnania z licznikiem stoperem jeeli odpowiedni bit przerwania licznika-stopera jest odblokowany w TIMSK i rwnie jest odblokowany globalny bit przerwa w SREG. Jeli asynchroniczny zegar nie jest taktowany asynchronicznie tryb obnienie poboru mocy jest rekomendowany zamiast trybu oszczdnoci mocy poniewa zawarto rejestrw w asynchronicznym liczniku powinna by brana pod uwag jako nie zdefiniowana po kadym wybudzeniu z trybu oszczdnoci mocy jeeli AS0 jest 0. Ten tryb generalnie wstrzymuje wszystkie zegary z wyjtkiem clkASY , pozwalajc na dziaanie tylko operacjom w asynchronicznych moduach, w skad ktrych wchodzi rwnie licznik stoper jeeli jest taktowany asynchronicznie.

Tryb oczekiwania

Kiedy na bitach SM2..0 jest ustawiona 110 i opcja zewntrznego kwarcu lub rezonatora zegara jest wybrana, rozkaz SLEEP wprowadza MCU w stan oczekiwania. Ten tryb jest podobny do trybu oszczdnoci mocy z tym wyjtkiem, e nadal pracuje oscylator. Z rozszerzonego trybu oczekiwania urzdzenie wybudza si w czasie szeciu cykli maszynowych. Rozszerzony tryb oczekiwania

Kiedy na bitach SM2..0 s ustawione 111 opcja zewntrznego kwarcu i rezonatora jest wybrana, rozkaz SLEEP sprawia, e MCU przechodzi w tryb rozszerzonego oczekiwania. Ten tryb jest podobny do trybu oszczdnoci mocy z tym wyjtkiem, e nadal pracuje oscylator. Z rozszerzonego trybu oczekiwania urzdzenie wybudza si w czasie szeciu cykli maszynowych. Tryby snu Idyl ADC Redukcja Zakce Obnienie Poboru Mocy Oszczdno mocy Oczekiwanie(1) Rozszerzone oczekiwanie(1) Aktywna domena zegara clkCPU clkFLASH clkID clkADC clkASY X X X X X

oscylatory rda budzenia rdo Odblokowanie INT7..0 TWI Licznik gotowo A Dopasowanie SPM/ odbokowywujce zegara OSC 0 adresu gwny zegar EEPROM X X(2) X X X X X X(2) X(3) X(3) X X X X X X(2) X(2) X X

X(2) X
(2)

X(2) X X X(2)

X(3) X(3) X(3)

Uwagi: 1 .Zewntrzny kwarc lub rezonator jest wybrany jako rdo zegara 2. Jeli bit AS0 w ASSR jest ustawiony na 1 3. Tylko INT3..0 lub poziom przerwa INT7..4 MINIMALIZACJA POBORU MOCY

Jest wiele wynikw, ktre naley wzi pod uwag kiedy prbuje si zmniejszy pobr mocy w systemie kontrolowanym przez AVR. Generalizujc, tryby snu powinny by wykorzystywane jak najczciej jest to moliwe i powinny by tak dobierane, aby jak najmniej funkcji urzdze pracowao. Wszystkie funkcje nie potrzebne powinny by wyczone. W szczeglnoci nastpujce moduy naley wzi pod specjaln uwag przy prbach uzyskania najniszych moliwych poborw mocy. o Konwerter analogowo binarny

Jeeli jest moliwe, ADC bdzie umoliwiao wszystkie tryby snu. W celu zaoszczdzenia mocy, ADC powinno by odcite przed przejciem w jakikolwiek z trybw snu. Kiedy ADC jest wyczane i wczane na zmian nastpna konwersja bdzie konwersj oczekiwan. Szersze informacje w sekcji konwerter analogowo binarny na stronie 225.

Komparator analogowy

Wchodzc w tryb Idyl, komparator analogowy powinien by zablokowany jeeli nie jest uywany. Wchodzc w tryb redukcji zakce, analogowy komparator powinien by wyczony. W pozostaych trybach snu analogowy komparator jest automatycznie odcinany. Jednake, gdy analogowy komparator jest ustawiony do korzystania z wewntrznego odniesienia napicia jako wejcia, analogowy komparator powinien by wyczony we wszystkich trybach snu. Dalsze szczegy na stronie 222 w sekcji analogowy komparator. o Detekcja obnienia napicia sieciowego

Jeeli detektor obnionego napicia sieciowego jest niepotrzebny dla aplikacji modu ten powinien by wyczony. Jeeli detektor jest odblokowany poprzez bezpiecznik BODEN, bdzie on odblokowany we wszystkich trybach snu i bdzie pobiera moc. W gbszych trybach snu przyczyni si to znacznie do cakowitego poboru prdu. Szczegy w sekcji Detektor obnienia napicia na stronie 44. o Wewntrzne odniesienie napicia

Wewntrzne odniesienie napicia bdzie odblokowane kiedy bdzie potrzebne przez detektor obnienia napicia, analogowy komparator lub ADC. Jeeli te moduy s odcite jak opisano w powyszych sekcjach, wewntrzne odniesienie napicia bdzie odcite i nie bdzie pobierao mocy. Po ponownym wczeniu, uytkownik musi pozwoli odniesieniu wystartowa nim wyjcie jest uywane. Jeeli odniesienie jest utrzymywane w trybie snu, wyjcie moe wykorzystane natychmiastowo. Wicej informacji w sekcji wewntrzne odniesienie napicia na stronie 50. o Regulator czasowy Watchdoga

Jeeli regulator czasowy Watchdoga nie jest potrzebny aplikacji, modu ten powinien by wyczony. Jeeli jest on wczony, bdzie on take dziaa w trybie snu i w zwizku z tym pobiera moc. W gbszych trybach snu przyczyni si to znacznie do cakowitego poboru prdu. Szczegy w sekcji Regulator czasowy Watchdoga na stronie 50. o Wyjcia portw

Wchodzc w tryb snu wszystkie wyjcia portw powinny by skonfigurowane, tak, aby korzysta z najmniejszej mocy. Najwaniejsz rzecz jest by zapewnienie adne z wyj nie miao obcienia. W trybie snu gdzie zarwno zegar I/O jak i zegar ADC s zatrzymane, bufor wejciowy urzdzenia bdzie odcity. Zapewnienia to, e nie bdzie pobierana adna moc przez logiczne wejcie kiedy nie jest to potrzebne. W niektrych przypadkach wejcie logiczne jest potrzebne, aby wykry kondycj wybudzania i wtedy bdzie odblokowane. Szczegy w sekcji Binarne wejcie i tryby snu na stronie 64. Jeeli bufor wejciowy jest odblokowany i sygnay wejciowe s nie uziemione lub maj analogowy sygna bliski V/2, bufor wejciowy bdzie korzysta z nadmiernej mocy.

SYSTEM KONTROLI I RESET


Resetowanie AVR W czasie resetu wszystkie rejestry I/O s ustawione na swoj warto pocztkow i program zaczyna prac od wektora resetu. Rozkazem umieszczonym w wektorze resetu musi by JPM skok bezwzgldny

do rozkazw obsugujcych procedur resetu Jeeli program nigdy nie uaktywnia rde przerwa , wektory przerwa s niewykorzystywane i kod programu moe by zapisany w tych lokacjach. Ten przypadek dotyczy rwnie wektora resetu w sekcji programowej pamici podczas gdy wektory przerwa s w sekcji adowalnej i vice versa. Schemat pocze na rysunku 21 pokazuje resetowanie logiczne. Tabela 19 definiuje elektryczne parametry tego obwodu. Porty I/O w AVR s natychmiastowo resetowane do ich pocztkowych stanw kiedy uaktywnia si wejcie resetu. Nie wymaga to adnego dziaajcego zegara. Kiedy wszystkie rda resetu stan si nieaktywne, licznik opnienia jest przywoywany rozcigajc czas trwania wewntrznego resetu. Pozwala to mocy osign stabilny poziom przed rozpoczciem normalnego dziaania. Czas przerwy licznika opnienia jest zdefiniowany przez uytkownika poprzez bezpieczniki CKSEL. Szczegy w sekcji rda zegara na stronie 34. rda resetu

ATmega128 ma pi rde resetu: Reset przy wczonej mocy. MCU jest resetowane kiedy zasb napicia spadnie poniej progu minimalnej mocy. Reset zewntrzny. MCU jest resetowane kiedy na wejciu RESET(zanegowane) jest niski poziom duej ni minimalna dugo impulsu. Reset Watchdoga. MCU jest resetowane kiedy okres licznika Watchdoga wyganie i Watchdog zostanie odblokowany. Reset przy obnionym napiciu zasilania. MCU jest resetowane kiedy zasb napicia spadnie poniej poziomu i detektor obnionego napicia zasilania jest odblokowany. Reset JTAG AVR. MCU jest resetowane tak dugo jak w rejestrze resetu jest wpisana logiczna jedynka, jeden ze skanowanych acuchw systemu JTAG. Szczegy w sekcji IEEE 1149.1 (JTAG) przeszukiwanie obszaru granicznego na stronie 248.

Tabela 19. Symb ol Parametry Reset przy poziomie napicia przy wczaniu.(narastanie) Reset przy poziomie napicia przy wczaniu. (opadanie)(1) Poziom napicia na wejciu RESET Minimalny czas trwania impulsu Wejcia RESET Poziom napicia przy obnionym zasialaniu sieciowym Minimalny okres niskiego napicia dla detektora obnionego napicia sieci Histereza detektora obnionego napicia sieciowego Warunek Mini Ty mum p 1.4 1.3 0.2 Vcc 50 BODLEVEL =1 BODLEVEL = 0 BODLEVEL = 1 BODLEVEL = 1 2.5 3,7 2.7 4,0 2 2 50 Mikrosekun d mV 3,2 4,2 V Maksimu m 2.3 2.3 0.85 Vcc Jednostka V V V ns

VPOT VRST tRST VBOT

tBOD

VHYST

Uwaga: 1. Reset ten nie bdzie dziaa dopki zasb napicia nie bdzie poniej VPOT (opadanie) Reset przy wczonej mocy

Impuls resetu przy wczonej mocy (POR) jest generowany przez ukad detekcji w strukturze. Poziom detekcji jest przedstawiony w tabeli 19. POR jest aktywowany zawsze, kiedy Vcc jest poniej poziomy detekcji. Obwd POR moe by wykorzystany jak czynnik powodujcy Reset przy uruchamianiu, jak rwnie jako wykrywacz bdw przy dostarczaniu napicia. Obwd POR zapewnia, e urzdzenie jest resetowane przy wczaniu zasilania. Osigajc poziom napici a okrelony dla resetu przy uruchamianiu przywouje licznik opnienia, co determinuje jak dugo urzdzenie jest zresetowane po podniesieniu Vcc. Sygna RESET jest aktywowany , be adnego opnienia, kiedy Vcc opadnie poniej poziomu detekcji.

Zewntrzny reset

Zewntrzny reset jest generowany poprzez niski poziom wyjcia RESET. Impuls resetu musi trwa duej ni minimalna szeroko impulsu podana w tabeli 19 aby wygenerowa reset, nawet jeli zegar nie pracuje. Krtsze impulsy nie gwarantuj wygenerowania resetu. Kiedy zastosowany sygna osignie napicie poziomu resetu VRST na swoim dodatnim zboczu, licznik opnienia uruchamia MCU po okresie rwnym czasowi przerwy tOUT.

Wykrywanie obnionego napicia sieciowego

Atmega128 ma wbudowany obwd detekcji obnienia napicia zasilania (BOD) w celu monitorowania poziomu Vcc podczas dziaania poprzez porwnywanie napicia do zewntrznego poziomu porwnawczego. Poziom porwnawczy dla BOD moe zosta wybrany poprzez ustawienie bezpiecznika BODLEVEL na 2.7V(nie zaprogramowany) lub 4.0V (zaprogramowany). Poziom porwnawczy jest histerez w celu zapewnienia ostrego impulsu uwalniajcy detekcj obnionego napicia zewntrznego. Histereza poziomu detekcji powinna by interpretowana jako VBOT+ = VBOT + VHYST/2 i VBOT- = VBOT VHYST/2. Obwd BOD moe by odcinany i doczany poprzez bezpiecznik BODEN. Kiedy BOD jest doczone (BODEN zaprogramowany) i Vcc opada do wartoci poniej poziomu porwnawczego (VBOT- na rysunku 25), reset przy obnionym napiciu zasilania jest natychmiastowo aktywowany. Kiedy Vcc wzrasta powyej poziomu porwnawczego (VBOT+ na rysunku 25) licznik opnienia uruchamia MCU po okresie rwnym czasowi przerwy. Obwd BOD wykryje tylko spadek Vcc jeeli napici pozostaje poniej poziomu porwnawczego duej ni tBOD podany w tabeli 19.

Reset Watchdoga

Kiedy czas przerwy Watchdoga upynie zostanie wygenerowany krtki impuls resetu o trwaniu 1CK cyklu maszynowego. Na opadajcym zboczu tego impulsu licznik opnienia zaczyna zliczanie czasu okresu przerwy tTOUT. Szczegy na stronie 50 przy opisie Watchdoga.

Rejestr statusu i kontroli MCU MCUCSR Rejestr kontroli i statusu MCU zapewnia informacje na podstawi ktrej rdo resetu powoduje zresetowanie MCU.

Naley zauway, e tylko EXTRF i PORF s dostpne w trybie kompatybilnoci z ATmega103. a: bit 4 JTRF: flaga resetu JTAG Ten bit jest ustawiony jeeli przyczyn resetu byo wpisanie jedynki logicznej do rejestru resetu JTAG wybranego przez rozkaz AVR_RESET. Bit ten jest resetowany przez reset przy wzonej mocy lub poprzez przypisanie mu logicznego zera. b: bit 3 WDRF: flaga resetu Watchdoga Ten bit jest ustawiany jeeli zajdzie reset Wathcdoga. Jest on resetowany przez reset przy wczonej mocy lub przez wpisanie mu zera. c: bit 2 BORF: flaga resetu przy obnionym napiciu sieci Bit ten jest ustawiony jeeli zajdzie reset przy obnionym napiciu zasilania. Jest on resetowany przez reset przy wczonej mocy lub przez wpisanie mu zera. d: bit 1 EXTRF: flaga zewntrznego resetu Bit ten jest ustawiony jeeli zajdzie zewntrzny reset. Jest on resetowany przez reset przy wczonej mocy lub przez wpisanie mu zera. e: bit 0 PORF: flaga resetu przy wczaniu mocy Bit ten jest ustawiony jeeli zajdzie reset przy wczonej mocy. Jest on resetowany tylko przez wpisanie mu zera.

Aby korzysta z flag resetu do rozrniania poszczeglnych warunkw wystpienia resetu, uytkownik powinien odczyta i dopiero pniej resetowa MCUCSR najwczeniej jak tylko to moliwe w programie. Jeeli rejestr ten jest wyzerowany nim zajdzie inny reset, rdo resetu moe zosta ustalone poprzez sprawdzanie flag reset. Odniesienie do wewntrznego napicia

Cechy ATmega128 jako wewntrznego odniesienia dla pasma wzbronionego. Odniesienie to jest wykorzystywane przy detekcji obnionego napicia sieciowego i moe by wykorzystywane jako wejcie dla analogowego komparatora lub ADC. Napicie odniesienia 2.56 do ADC jest generowane poprzez wewntrzne odniesienie pasma wzbronionego. o Odniesienie do napicia odblokowujcego sygnay i czas uruchamiania

Odniesienie napicia ma czas uruchamiania, ktry moe wpywa na sposb w jaki bdzie uywany. Czasy uruchamiania s podane w tabeli 20. Aby oszczdza moc, odniesienie to nie zawsze jest wczone. W nastpujcych sytuacja odniesienie jest wczone: 1. Kiedy BOD jest odblokowany (poprzez programowanie bezpiecznika BODEN) 2. Kiedy odniesienie pasma wzbronionego jest poczone z analogowym komparatorem (poprzez ustawienie ACBG i ACSR) 3. Kiedy ADC jest odblokowane. Dlatego, kiedy BOD nie jest odblokowany, po ustawieniu bitu ACBG lub odblokowaniu ADC, uytkownik moe zawsze pozwoli by odniesienie do uruchamiania przed wyjciem z analogowego komparatora lub ADC byo uywane. W celu redukcji zuywanej mocy w trybie obnionego poboru mocy, uytkownik moe pomin trzy powysze warunki aby zapewni, e odniesienie jest wyczone przed wejciem w tryb obnionego poboru mocy. Tabela20. Symbol Parametr Minimum Typ Maksimum Jednostka VBG Napicie odniesienia pasma zabronionego 1,15 1,23 1,35 V tBG Czas uruchamiania odniesienia pasma zabronionego 40 70 s IBG Pobr prdu dla odniesienia w amie zabronionym 10 A Taktowanie Watchdoga

Watchdog jest taktowany przy uyciu oddzielnego wbudowanego oscylatora, ktry pracuje z czstotliwoci 1MHz. Jest to typowa warto dla Vcc = 5V. Przejrzyj charakterystyk danych dla typowych wartoci przy innych poziomach napicia Vcc. Poprzez kontrolowanie prescalera Watchdoga, przerwa wywoania resetem Watchdoga moe by dopasowywana co pokazuje tabela 22 na stronie 52. Rozkaz WDR Watchdog Reset resetuje taktowanie Watchdoga. Jest ono take resetowane kiedy Watchdog zostaje odcity lub gdy zajdzie resetowanie moduu. Osiem rnych okresw cykli maszynowych moe by wybranych aby zdeterminowa okres resetu. Jeli okres resetu trwa bez innego resetu Watchdoga, ATmega128 resetuje si i rozpoczyna prac od wektora resetu. Szczegly czasowe na temat resetu Wwatchdoga na stronie 49. Aby zapobiec nie przewidzianym odczeniom Watchdoga lub zmiano okresu czasu przerwy, trzy rne poziomy bezpieczestwa s wybierane przez bezpieczniki M103C i WDTON co pokazuje tabela 21. Poziom bezpieczestwa 0 odpowiada ustawieniom ATmega103. Nie ma tutaj adnych ogranicze na odblokowywanie WDT w jakimkolwiek z trybw bezpieczestwa, Szczegy w Sekwencje czasowe dla zmiany konfiguracji taktowania Watchdoga na stronie 53.

Tabela 21. Poziom bezpieczestwa Nieprogramowany Nieprogramowany 1 Nieprogramowany Programowany 2 0 2 M103C WDTON Pocztkowy stan WDT Zablokowany Odblokowany Zablokowany Odblokowany Jak zablokowa WDT Sekwencja czasowa Zawsze odblokowany Sekwencja czasowa Zawsze odblokowany Jak zmieni czas przerwy Sekwencja czasowa Sekwencja czasowa Bez ogranicze Sekwencja czasowa

Nieprogramowany Nieprogramowany Nieprogramowany programowany

Rejestr kontroli taktowania Wathcdoga WDTCR

a: bity 7..5 Res: bity zarezerwowane Bity te s zarezerwowane i w ATmega128 zawsze bd zerem. b: bit 4 WDCE: odblokowanie zmian Watchdoga Bit ten musi zosta ustawiony kiedy bit WDE jest zapisany logiczn jedynk. W innym razie, Watchdog nie bdzie zablokowany. Raz zapisany jedynk, sprzt wyzeruje wszystkie bity po czterech cyklach zegarowych. Szczegy w opisie bitu WDE dla procedury blokowania Watchdoga. W poziomach bezpieczestwa 1 i 2, bit ten musi take by ustawiony, kiedy zmieniany s bity prescalera. Szczegy w Sekwencje czasowe dla zmiany konfiguracji taktowania Watchdoga na stronie 53. c: bit 3 WDE: odblokowanie Watchdoga

Kiedy do tego bitu jest wpisana logiczna jedynka, taktowanie Watchdoga jest odblokowane i jeeli WDE jest zapisane zerem, funkcje Watchdoga s zablokowane. WDE moe by wyzerowane tylko jeeli bit WDCE jest ustawiony. Aby odblokowywa i zablokowywa taktowanie Watchdoga nastpujca procedura musi by przestrzegana: 1. W jednej operacji naley wpisa logiczn jedynk do WDCE i WDE. Logiczna jedynka musi by wpisana do WDE nawet jeeli jest on ju wczeniej ustawiony na jeden. 2. W cigu nastpnych czterech cykli zegarowych naley wpisa zero do WDE. To blokuje Watchdoga. Na 2 poziomie bezpieczestwa nie mona zablokowa taktowanie Watchdoga nawet algorytmem opisanym powyej. Szczegy w Sekwencje czasowe dla zmiany konfiguracji taktowania Watchdoga na stronie 53. d: bit 2..0 WDP2..0: prescaler taktowania Watchdoga 2,1,0 Bity te determinuj czy taktowanie Watchdoga bdzie przeliczane kiedy taktowanie Watchdoga jest odblokowane. Rne wartoci przelicznika i odpowiadajce im okresy czasw przerw opisuje tabela 22. WDP2 WDP1 WDP0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 Liczba cykli oscylatoraWDT 16K (16,384) 32K (32,768) 64K (65,536) 128K (131,072) 256K (262,144) 512K (524,288) 1024K (1048,576) 2048K (2097,152) Typowe wartoci czasw przerwy dla Vcc = 3.0V 17,1ms 34,3ms 68,5ms 0,14s 0,27s 0,55s 1,1s 2,2s Typowe wartoci czasw przerwy dla Vcc = 5.0V 16,3ms 32,5ms 65ms 0,13s 0,26s 0,52s 1,0s 2,1s

Nastpujce przykady kodu pokazuj jak wyczy WDT. Przykady te zakadaj, e przerwania s kontrolowane (np., przez zablokowanie globalnego bitu przerwa) tak, e nie nastpi przerwanie w czasie wykonywania tych procedur.

Sekwencje czasowe dla zmiany konfiguracji taktowania Watchdoga

Sekwencje zmiany konfiguracji rni si nieznacznie pomidzy trzema poziomami bezpieczestwa. Osobne procedury zostay opisane dla poszczeglnych poziomw. o Poziom bezpieczestwa 0

Ten tryb jest porwnywalny z operacjami Watchdoga znajdujcymi si w Atemga103. Taktowanie Wathcdoga jest pocztkowe zablokowane, ale moe zosta odblokowane przez wpisanie jedynki do bitu WDE. Okres czasu przerwy moe by zmieniany w kadym momencie bez ogranicze. Aby zablokowa taktowanie Watchdoga, procedura opisana na stronie 51 (opis bitu WDE) musi by przestrzegana. o Poziom bezpieczestwa 1

W tym trybie taktowanie Watchdoga jest pocztkowo zablokowane, ale moe zosta odblokowane poprzez wpisanie jedynki do bitu WDE. Sekwencje czasowe s potrzebne podczas zmiany okresu czasu przerwy lub trzeba zablokowa odblokowane taktowanie Watchdoga. Aby zablokowa odblokowane taktowanie Watchdoga i/lub zmieni okres czasu przerwy naley wykona nastpujc procedur: 1. w tej samej operacji naley zapisa logiczn jedynk do WDCE i WDE. Logiczna jedynka musi zosta zapisana do WDE niezalenie od wczeniejszej jego wartoci. 2. w cigu nastpnych czterech cykli maszynowych, w jednej operacji, naley zapisa WDE i WDP jak si chce ale naley wyzerowa bit WDCE. o Poziom bezpieczestwa 2

W tym trybie taktowanie Wathcdoga jest zawsze odblokowane i bit WDE jest zawsze odczytywany jako 1. Sekwencje czasowe sa potrzebne w celu zmienienia okresu czasu przerwy. Aby to zmieni naley postpowa zgodnie z procedura:

1. W jednej operacji naley zapisa logiczn jedynk do WDCE i WDE. Niezalenie od tego, e WDE zawsze jest ustawione naley ustawia je od nowa. 2. W przecigu nastpnych czterech cykli zegarowych, w jednej operacji, naley zapisa bit WDP jak si chce ale bit WDCE musi zosta wyzerowany. Warto wpisana do bitu WDE jest nieistotna.

PRZERWANIA
Sekcja ta opisuje specyfik obsugi przerwa jakie s obsugiwane w ATmega128. Oglny opis jest w sekcji Obsuga resetu i przerwa na stronie 13. Wektory przerwa w ATmega128 Nr wektora 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 Adres programu(2) $0000(1) $0002 $0004 $0006 $0008 $000A $000C $000E $0010 $0012 $0014 $0016 $0018 $001A $001C $001E $0020 $0022 $0024 $0026 $0028 $002A $002C $002E $0030(3) $0032(3) $0034(3) $0036(3) $0038(3) $003A(3) $003C(3) $003E(3) $0040(3) $0042(3) $0044(3) rdo RESET INT0 INT1 INT2 INT3 INT4 INT5 INT6 INT7 TIMER2 COMP TIMER2 OVF TIMER1 CAPT TIMER1 COMPA TIMER1 COMPB TIMER1 OVF TIMER0 COMP TIMER0 OVF SPI, STC USART0, RX USART0 UDRE USART0 TX ADC EE READY ANALOG CMP TIMER1 COMPC TIMER3 CAPT TIMER3 COMPA TIMER3 COMPB TIMER3 COMPC TIMER3 OVR USART1 RX USART1 UDRE USART1 TX TWI SPM READY Definicja przerwania Wszystkie resety Zewntrzne danie przerwania 0 Zewntrzne danie przerwania 1 Zewntrzne danie przerwania 2 Zewntrzne danie przerwania 3 Zewntrzne danie przerwania 4 Zewntrzne danie przerwania 5 Zewntrzne danie przerwania 6 Zewntrzne danie przerwania 7 Licznik-stoper2 porwnanie Licznik-stoper2 przepenienie Licznik-stoper1 przechwyt zdarzenia Licznik-stoper1 porwnanie A Licznik-stoper1 porwnanie B Licznik-stoper1 przepenienie Licznik-stoper0 porwnanie Licznik-stoper0 przepenienie SPI ukoczenie transmisji szeregowej USART0 zakoczenie RX USART0 pusty rejestr danych USART0 zakoczenie TX zakoczenie konwersji ADC EEPROM gotowe Analogowy komparator Licznik-stoper1 porwnanie C Licznik-stoper3 przechwyt zdarzenia Licznik-stoper3 porwnanie A Licznik-stoper3 porwnanie B Licznik-stoper3 porwnanie C Licznik-stoper3 przepenieni USART1 zakoczenie RX USART1 pusty rejestr danych USART1 zakoczenie TX Interfejs dwuprzewodowy Pami przechowujca program gotowa

Uwaga: 1. Jeeli bezpiecznik BOOTRST jest zaprogramowany, urzdzenie przeskoczy do adresu adowania programu przy resecie Wsparcie adowania programu... na stronie 269. 2. Kiedy bit IVSEL w MCUCR jest ustawiony, wektory przerwa zostan przesunite na pocztek sekcji adowanej Flash. Adres kadego przerwania bdzie dodany do pocztkowego adresu sekcji adowanej we Flash. 3. Przerwania w adresach $0030 - $0044 nie istniej w trybie kompatybilnoci z Atmegoa103. Tabela 24 przedstawia umiejscowienie wektorw przerwa i resetu dla rnych kombinacji ustawie BOOTRST i IVSEL. Jeeli program nigdy nie odblokuje rde przerwa, wektory te nie s wykorzystywane i kod programu moe zosta umieszczony w tych adresach. Rwnie kod moe zaj te lokacje, kiedy wektory przerwa resetu s w czci pamici dla aplikacji a wektory przerwa w czci adowalnej i vice versa. BOOTRST IVSEL Adres resetu Adres pocztkowy wektorw przerwa 1 0 $0000 $0002 1 1 $0000 Adres adowania resetu + $0002 0 0 Adres adowania resetu $0002 0 1 Adres adowania resetu Adres adowania resetu + $0002 Uwaga: Adres adowania resetu jest przedstawiony w tabeli 112 na stronie 280. Dla bezpiecznika BOOTRST jedynka oznacza nie zaprogramowanie, natomiast dla zera jest on zaprogramowany. Najczciej spotykana struktura adresw programu dla resetu i wektorw przerwa w ATmega128:

Kiedy bezpiecznik BOOTRST nie jest zaprogramowany, sekcja adowania programw jest ustawiona na 8KB i bit IVSEL w rejestrze MCUCR jest ustawiony przed odblokoaniem przerwa. Najczciej spotykana struktura adresw programu dla resetu i wektorw przerwa s:

Kiedy bezpiecznik BOOTRST jest zaprogramowany, sekcja adowania programw jest ustawiona na 8KB to najczciej spotykana struktura adresw programu dla resetu i wektorw przerwa s:

Kiedy bezpiecznik BOOTRST jest zaprogramowany, sekcja adowania programw jest ustawiona na 8KB i bit IVSEL w rejestrze MCUCR jest ustawiony przed odblokoaniem przerwa. Najczciej spotykana struktura adresw programu dla resetu i wektorw przerwa s:

Przenoszenie przerwa miedzy programami i przestrzeni boot

Gwny rejestr kontroli kontroluje umieszczenie tablicy wektorw przerwa. o Rejestr kontroli MCU MCUCR

a: bit 1 IVCE: wybr wektora przerwania

Kiedy bit ten jest wyzerowany, wektor przerwa umieszczony jest na pocztku pamici Flash. Kiedy bit ten jest ustawiony, wektory przerwa zostaj przeniesione na pocztek sekcji adowania pamici Flasz. Adres rozpoczynajcy ta sekcj jest zaleny od bezpiecznika BOOTRST. Odnie si do sekcji Wsparcie programu inicjujcego...na stronie 269. W celu uniknicia niezamierzonych zmian tablicy wektorw przerwa specjalna procedura zapisu musi by przestrzegana do zmiany ustawienia bitu IVSEL: 1. Zapisz bit odblokowujcy zmian wektora przerwa (IVCE) na jeden. 2. Podczas czterech cykli maszynowych zapisz dan warto do IVSEL podczas zapisu zera do IVCE Przerwania automatycznie zostan zablokowane podczas wykonywania tej sekwencji. Przerwania s blokowane w cyklach gdzie IVCE jest ustawione i pozostaj zablokowane dopki nie zostanie wykonana instrukcja zapisu do IVSEL. Jeeli IVSEL nie jest zapisane, przerwania zostaj zablokowane na cztery cykle maszynowe. Automatyczne blokowanie przerwa nie ma wpywu na bit I w rejestrze statusu. Uwaga: Jeeli wektory przerwa s umieszczone w czci inicjujcej w pamici Flash i bit odblokowujcy adowanie BLB02 jest zaprogramowany, przerwania s blokowane podczas wykonywania programu z czci programowej pamici. Jeeli wektory przerwa s umieszczone w czci programowej pamici i bit BLB12 jest zaprogramowany przerwania s zablokowane podczas wykonywania programu z sekcji inicjujcej pamici. Zobacz w sekcji Wsparcie programu inicjujcego... a stronie 269. b: bit 0- IVCE: bit odblokowujcy moliwo zmiany wektora przerwa Bit ten musi by ustawiony na logiczn jedynk, aby odblokowa zmian bitu IVSEL. IVCE jest zerowane przez sprzt cztery cykle maszynowe po tym jak zosta zapisany, lub jak IVSEL zosta zapisane. Ustawienie bitu IVCE zablokuje przerwania co zostao wyjanione powyej w opisie IVSEL. Przykady kodu:

PORTY WEJCIA WYJCIA


WPROWADZENIE
Wszystkie porty s portami dwukierunkowymi jeli s uywane jako cyfrowe porty we/wy oglnego przeznaczenia. Oznacza to, e kierunkowo jakiegokolwiek wyprowadzenia moe by zmieniana bez niezamierzonej zmiany kierunkowoci ktregokolwiek z pozostaych wyprowadze. Ta sama sytuacja ma miejsce w przypadku wczania/wyczania rezystorw podcigajcych: mog by wczane/wyczane dla kadego wyprowadzenia niezalenie od innych wyprowadze. Obcialno portw we/wy jest wystarczajca do podczenia wprost wywietlacza LED. Wszystkie wyprowadzenia maj niezalene rezystory podcigajce oraz posiadaj diody zabezpieczajce ( rys. 28.) Rys. 28.

Rys 29. Schemat funkcjonalny wyprowadzenia portu we/wy

KONFIGURACJA WYPROWADZE
Konfiguracj kadego wyprowadzenia opisuj trzy bity w odpowiednich rejestrach: DDxn (bit rejestru DDRx) ustawia kierunkowo portu. Jeli wpisana jest warto 1 wyprowadzenie Pxn pracuje jako wyjcie, jeli jest wpisane 0 pracuje jako wejcie. PORTxn (bit rejestru PORTx) jeli jest wpisana jedynka i pin jest skonfigurowany jako wejcie : rezystor podcigajcy jest uywany. Aby wyczy rezystor podcigajcy naley do tego bitu wpisa warto zero lub skonfigurowa wyprowadzenie jako wyjcie. Jeli bit PORTxn ma warto 1 przy konfiguracji jako wyjcie to na wyprowadzeniu jest stan wysoki. Jeli POTRx = 0 i wyprowadzenie peni funkcj wyjcia to na tym wyjciu jest stan niski.

Przy przeczaniu midzy trzecim stanem ({DDxn, PORTxn} = 0b00) i stanem wysokim wyjcia musi wystpi stan poredni (z wczonym ktrym z rezystorw podcigajcych) ({DDxn, PORTxn} = 0b01) lub stan niski wyjcia ({DDxn, PORTxn} = 0b10). Przeczanie midzy wejciem z wczonymi rezystorami podcigajcymi a wyjciem w stanie niskim rwnie powoduje wystpienie tego samego problemu. Jako stan poredni musi wystpi trzeci stan({DDxn, PORTxn} = 0b00) lub wysoki stan wyjcia W celu wyczenia rezystorw podcigajcych we wszystkich portach naley ustawi warto bitu PUD ( rejestr SFIOR) na 1. Tabela 25. Konfiguracja wyprowadze portw. DDxn POTRxn PUD We/wy Wczone rezystory podcigajce

0 0 0 1 1

0 1 1 0 1

--0 1 -----

We We We Wy Wy

Nie Tak Nie Nie Nie

ODCZYT STANU WYPROWADZE


Niezalenie od ustawienia bitu DDxn, stan wyprowadze portu moe by odczytany przez bity rejestru PINxn.
Rys. 30. Przebieg czasowy obrazujcy synchronizacje przy czytaniu wartoci na wyprowadzeniu. Maksymalne i minimalne czasy propagacji s oznaczone jako tpd,max i tpd,min .

Cykl zegara rozpoczyna si krtko po pierwszym opadajcym zboczu sygnau zegara systemowego. Przejcie wyprowadzenia portu w nowy stan jest opnione od do 1 okresu zegara systemowego. Podczas odczytu programowo ustawionej wartoci wyprowadzenia w odpowiednim czasie naley wykona instrukcj nop jak zaznaczono na rys. 31. Instrukcja out ustawia sygna SYNC LATCH na 1 przy narastajcym zboczu sygnau zegarowego. W tym przypadku czas opnienia tpd potrzebny na synchronizacj wynosi jeden okres zegara. Rys 31.

Poniszy fragment kodu pokazuje jak ustawi wyprowadzenia 0 i 1 portu B na 1 4 do 7 jako wejcie przy czym wyprowadzenia 6 i 7 maj wczone rezystory podcigajce.
Kod assemblera: .. ldi r16,(1<<PB7)|(1<<PB6)|(1<<PB1)|(1<<PB0) ldi r17,(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0) out PORTB,r16 out DDRB,r17 nop in r16,PINB ... Kod w jzyku C: unsigned char i; ...

PORTB = (1<<PB7)|(1<<PB6)|(1<<PB1)|(1<<PB0); DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0); _NOP(); i = PINB;


...

Jak zaznaczono na rys. 29. sygna cyfrowego wejcia moe by zwarty do masy na wejciu
przerzutnika Schmitta. Sygna oznaczony jako SLEEP jest generowany przez MCU Sleep Controller w stanie wyczenia(Power-down mode), w stanie ograniczonego poboru mocy( Power-save mode) lub w stanie bezczynnoci (Standby mode, Extended Standby mode) w celu ograniczenia zuycia energii. Sygna SLEEP jest nieaktywny dla wyprowadze ustawionych jako External Interrupt pins. SLEEP

jest rwnie uniewaniany jeli wyprowadzenie peni alternatywn funkcj.przez

ALTERNATYWNE FUNKCJE WYPROWADZE PORTW WE/WY


Wikszo wyprowadze moe peni dodatkowe funkcje oprcz funkcji cyfrowego wejcia wyjcia. Na rys.32. zaznaczono w jaki sposb sygnay sterowania wyprowadze nog by znoszone przez dodatkowe funkcje. Sygnay dodatkowe mog nie by dostpne dla wszystkich wyprowadze portw, jednak rysunek stanowi oglny opis dodatkowych funkcji mikrokontrolerw AVR.

Rys. 32.

W tabeli 26 zostay przedstawione sygnay uaktywniajce dodatkowe funkcje wyprowadze

Nazwa sygnau PUOE

Pena nazwa sygnau


Pull-up Override Enable

Opis
Jeli sygna jest aktywny, wczenie rezystorw podcigajcych jest kontrolowane przez sygna PUOV. Jeli sygna jest nieaktywny Rezystory podcigajce s wczone gdy {DDxn, PORTxn, PUD} = 0b010. Przy wczonym PUOE rez. Podcigajce s wczone(wyczone) gdy PUOV jest aktywny(nieaktywny) bez wzgldu na warto bitw DDxn,
PORTxn i PUD.

PUOV DDOE DDOV PVOE

Pull-up Override Value Data Direction Override Enable Data Direction Override Value Port Value Override Enable

Jeli DDOE jest aktywny wczenie wzmacniacza wyjcia jest zalene od sygnau DDOV. Jeli DDOV jest nieaktywny wzmacniacz wyjcia jest w/wy zalenie od wartoci bitu DDxn. Przy aktywnym DDOE aktywny (nieaktywny) DDOV powoduje wczenie (wyczenie) wzmacniacza wyjcia niezalenie od stanu bitu DDxn Jeli ten sygna jest aktywny i wzmacniacz wyjcia jest wczony, warto portu jest kontrolowana przez sygna PVOV. Jeli PVOE jest nieaktywny a wzmacniacz wyjcia jest wczony warto portu jest kontrolowana przez bit PORTxn Jeli PVOV jest aktywny warto portu jest ustawiana tym sygnaem, niezalenie od wartoci bitu PORTxn Jeli jest aktywny wczenie cyfrowego wejcia jest zalene od sygnau DIEOV. Jeli DIEOE jest nieaktywny uaktywnienie wejcia cyfrowego jest zalene od stanu MCU (stan normalny, stany upienia(sleep)) Jeli DIEOE jest aktywny, wejcie cyfrowe jest (wczone/wyczone) jeli DIEOV jest aktywny (nieaktywny) niezalenie od stanu MCU Na rysunku (rys 32) sygna jest poczony z wyjciem przerzutnika Schmitta przed synchronizatorem. Niezalenie od wykorzystania wejcia cyfrowego jako rda sygnau zegarowego modu z funkcj alternatywn uywa wasnego synchronizatora. Sygna wejcia/wyjcia do/z dla dodatkowych funkcji.

PVOV DIEOE

Port Value Override Value Digital Input Enable Override Enable Digital Input Enable Override Value Digital Input

DIEOV

DI

AIO

Analog Input/output

DODATKOWE FUNKCJE PORTU A


Port A moe by wykorzystany do adresowania linii danych lub adresowych interfejsu pamici zewntrznej. Tabela 27. Wyprowadzenie Funkcja dodatkowa PA7 interfejs pamici zewntrznej: 7 bit adresu lub danych

PA6 PA5 PA4 PA3 PA2 PA1 PA0

interfejs pamici zewntrznej: 6 bit adresu lub danych interfejs pamici zewntrznej: 5 bit adresu lub danych interfejs pamici zewntrznej: 4 bit adresu lub danych interfejs pamici zewntrznej: 3 bit adresu lub danych interfejs pamici zewntrznej: 2 bit adresu lub danych interfejs pamici zewntrznej: 1 bit adresu lub danych interfejs pamici zewntrznej: 0 bit adresu lub danych

Tabele 28 i 29 zawieraj zaleno midzy sygnaami a alternatywnymi funkcjami portu A. Tabela 28. Alternatywne funkcje pinw PA7...PA4

Tabela 29. Alternatywne funkcje pinw PA3...PA0

DODATKOWE FUNKCJE PORTU B

Tabela 30

Wyprowadzenie PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0

Funkcja dodatkowa OC2/OC1C OC1B OC1A OC0 MISO MOSI SCK SS

OC2/OC1C (bit 7)
OC2 :(Output Compare Match output) Wyprowadzenie PB7 mona wykorzysta jako zewntrzne wyjcie dla licznika2 modulatora OCM1C2 (Timer/Counter2 Output Compare). .W tym wypadku wyprowadzenie musi by skonfigurowane jako wyjcie (bit DDB7 = =1).Wyprowadzenie OC2 moe by rwnie wyjciem dla licznika PWM.
OC1C (Output Compare Match C output) Wyprowadzenie PB7 mona wykorzysta jako zewntrzne wyjcie dla licznika1 modulatora OCM1C2 (Timer/Counter1 Output Compare C). . W tym wypadku wyprowadzenie musi by skonfigurowane jako wyjcie (bit DDB7 = =1).Wyprowadzenie OC2 moe by rwnie wyjciem dla licznika PWM.

OC1B (bit 6) OC1B (Output Compare Match B output) wyprowadzenie PB6 moe by uyte jako zewntrzne wyjcie
licznika1 OCM1C2 (Timer/Counter1 Output Compare B).Aby peni t funkcje wyprowadzenie musi by skonfigurowane jako wyjcie(DDB6 = 1) OC1A (bit 5) OC1A (Output Compare Match A output) wyprowadzenie PB65 moe by uyte jako zewntrzne wyjcie licznika1 OCM1C2 (Timer/Counter1 Output Compare A).Aby peni t funkcje wyprowadzenie musi by skonfigurowane jako wyjcie(DDB5 = 1) OC0 (bit 4) OC0 (Output Compare Match output) pin PB4 moe by wykorzystany jako wyjcie dla licznika 0 OCM1C2 (Timer/Counter0 Output Compare), aby peni t funkcj wyprowadzenie musi by skonfigurowane jako wejcie. MISO (bit 3) MISO: (Master Data Input, Slave Data Output). Jeli kana SPI jest ustawiony jako master to wyprowadzenie PB3 pracuje jako wejcie niezalenie od ustawienia bitu DDB3. Jeli SPI jest ustawiony jako slave kierunkowo tego wyprowadzenia zaley od wartoci wpisanej do bitu DDB3. W przypadku, gdy pin pracuje jako wejcie wczenie rezystorw podcigajcych jest zalene od wartoci bitu PORTB3. MOSI (bit 2) MOSI (SPI Master Data Output, Slave Data Input) Jeli SPI jest ustawiony na slave to wyprowadzenie pracuje jako wejcie niezalenie od wartoci bitu DDB2. Jeli kana SPI pracuje jako master kierunkowo tego wyprowadzenia jest ustawiana bitem DDB2. Jeli wyprowadzenie jest ustawione jako wejcie aktywacja rezystorw podcigajcych zaley od wartoci bitu PORTB2. SCK (bit 1) SCK (Master Clock output, Slave Clock input). W przypadku, gdy SPI jest ustawiony na slave to wyprowadzenie pracuje jako wejcie niezalenie od wartoci bitu DDB1. Jeli kana SPI pracuje jako master kierunkowo tego wyprowadzenia jest ustawiana bitem DDB1. Jeli wyprowadzenie jest ustawione jako wejcie aktywacja rezystorw podcigajcych zaley od wartoci bitu PORTB1. SS (bit 0) SS (Slave Port Select Input) ) Jeli SPI jest ustawiony na slave to wyprowadzenie pracuje jako wejcie niezalenie od wartoci bitu DDB0. Spi jest ustawiony na slawe jeli na tym wyprowadzeniu jest warto niska. Jeli kana SPI pracuje jako master kierunkowo tego wyprowadzenia jest ustawiana bitem DDB0. Jeli wyprowadzenie jest ustawione jako wejcie aktywacja rezystorw podcigajcych zaley od wartoci bitu PORTB1.

Tabela 31. Alternatywne funkcje pinw PB7...PB4

Tabela 32. Alternatywne funkcje wyprowadze PB3...PB0

DODATKOWE FUNKCJE PORTU C

W trybie zgodnoci z ATmega 103 Port C moe by uywany tylko jako wyjcie. Port C moe peni dodatkow funkcj adresowania starszego bajtu interfejsu pamici zewntrznej. Tabela 33. Alternatywne funkcje portu C.

Wyprowadzenie PC7

Funkcja dodatkowa
A15 A14 A13 A12 A11 A10 A9 A8

PC6 PC5 PC4 PC3 PC2 PC1 PC0

Tabela 34. Alternatywne funkcje portu C.

Tabela 35. Alternatywne funkcje portu C.

DODATKOWE FUNKCJE PORTU D T2 (bit7) wejcie licznika 2 T2 (bit6) wejcie licznika 1


XCK1 (bit 5) (USART1 External clock) Warto bitu DDD4 decyduje, czy wyprowadzenie jest wejciem (DDD4 = 1) czy wyjciem(DDD4 = 0). Pin XCK1 jest aktywny jedynie gdy USART1 pracuje synchronicznie. IC1 (bit 4) moe dziaa jako wejcie INT3/TXD1 (bit 3) INT3 Wyprowadzenie PD3 moe dziaa jako wejcie przerwa zewntrznych dla MCU.

TXD1 Wyjcie danych dla USART1: jeli transmiter USART jest wczony wyprowadzenie PD3 jest skonfigurowane jako wyjcie niezalenie od wartoci bitu DDD3
INT2/RXD1 (bit 2) INT2 Pin PD2 moe pracowa jako wejcie przerwa zewntrznych dla MCU

TXD1 Wyjcie danych dla USART1: kiedy odbiornik USART1 jest aktywny wyprowadzenie PD2 jest skonfigurowane jako wejcie niezalenie od wartoci bitu DDD2, wczenie rezystorw podcigajcych jest nadal kontrolowane przez bit PORTD2
INT1/SDA (bit 1) INT1 Wyprowadzenie PD1 moe dziaa jako wejcie przerwa zewntrznych dla MCU. SDA (Two-wire Serial Interface Data) Kiedy dwuprzewodowy szeregowy interfejs jest wczony, bit TWEN w rejestrze TWCR =1 co powoduje, e wyprowadzenie PD1 przestaje peni rol wyprowadzenia portu D i staje si wyprowadzeniem danych dwuprzewodowego interfejsu szeregowego. W tym trybie dziaa filtr impulsw tumicy impulsy krtsze od 50 ns. INT0/SCL (bit 0) INT0 Wyprowadzenie PD0 moe dziaa jako wejcie przerwa zewntrznych dla MCU.

SCL (Two-wire Serial Interface Clock:). Jeli w rejestrze TWCR bit TWEN ma warto 1 (dwuprzewodowy szeregowy interfejs jest wczony) Pin PD0 przestaje by wyprowadzeniem portu D i peni funkcje zegara dla dwuprzewodowego interfejsu szeregowego W tym trybie dziaa filtr impulsw tumicy impulsy krtsze od 50 ns. Tabela 37 i Tabela 38 Alternatywne funkcje portu D Tabela 37.Dodatkowe funkcje wyprowadze PD7...PD4

Tabela 38. Dodatkowe funkcje wyprowadze PD3...PD0

DODATKOWE FUNKCJE PORTU E


INT7/IC3 (bit 7) INT7 : Wyprowadzenie PE7 moe suy jako wejcie przerwania zewntrznego IC3 : Pin PE7 moe by uyty jako wejcie dla licznika3

INT6/T3 (bit 6) INT6 : Wyprowadzenie PE6 moe suy jako wejcie przerwania zewntrznego T3 : wejcie dla licznika3 NT5/OC3C (bit 5) INT5 : Wyprowadzenie PE5 moe suy jako wejcie przerwania zewntrznego OC3C (Output Compare Match C output) wyprowadzenie PE5 moe by uyte jako zewntrzne wyjcie licznika3 OCM1C2 (Timer/Counter3 Output Compare C).Aby peni t funkcje wyprowadzenie musi by skonfigurowane jako wyjcie(DDE5 = 1). Wyprowadzenie OC3C moe take peni funkcj wyjcia dla licznika z PVM.
INT4/OC3B (bit 4)

INT4 : Wyprowadzenie PE4 moe suy jako wejcie przerwania zewntrznego OC3B (Output Compare Match B output) wyprowadzenie PE4 moe by uyte jako wyjcie zewntrzne licznika3 OCM1C2 (Timer/Counter3 Output Compare B).Aby peni t funkcje wyprowadzenie musi by skonfigurowane jako wyjcie(DDE4 = 1). Wyprowadzenie OC3B moe take peni funkcj wyjcia dla licznika z PVM.
AIN1/OC3A (bit 3) AIN1 : ujemne wejcie komparatora analogowego. To wyprowadzenie jest podczone wprost do ujemnego wejcia komparatora analogowego. OC3B (Output Compare Match A output) wyprowadzenie PE3 moe by uyte jako wyjcie zewntrzne

licznika3 OCM1C2 (Timer/Counter3 Output Compare A).Aby peni t funkcje wyprowadzenie musi by skonfigurowane jako wyjcie(DDE3 = 1). Wyprowadzenie OC3B moe take peni funkcj wyjcia dla licznika z PVM.
AIN0/XCK0 (bit 2) AIN0 dodatnie wejcie komparatora analogowego. Wyprowadzenie jest podczone wprost do dodatniego wejcia komparatora analogowego.

XCK0 zegar zewntrzny. Bit DDE2 decyduje o tym, czy jest to wejcie (DDE2 = 1) czy wyjcie (DDE2 = 0 ). Wyprowadzenie XCK0 jest aktywne tylko wtedy, kiedy USART jest w trybie synchronicznym.

PDO/TXD0 (bit 1) PDO (SPI Serial Programming Data Output) podczas szeregowego wprowadzania programu to wyprowadzenie pracuje jako linia wyjcia danych dla Atmega 128. TXD0 wyprowadzenie transmisji dla USART0 PDI/RXD0 (bit 0) PDO (SPI Serial Programming Data Input) podczas szeregowego wprowadzania programu to wyprowadzenie pracuje jako linia wejcia danych dla Atmega 128.
RXD0 Wejcie danych dla USART0. Kiedy odbiornik USART0 jest aktywny, wyprowadzenie PE0 jest skonfigurowane jako wejcie niezalenie od wartoci bitu DDRE0. Jeli USART0 wymusza prace tego trybu jako wejcia wczenie rezystorw podcigajcych jest moliwe przez wpisanie 1 do bitu PORTE0. Tabela 40 i 41 Alternatywne funkcje portu E Tabela 40 Dodatkowe funkcje wyprowadze PE7...PE4

Tabela 41 Dodatkowe funkcje wyprowadze PD3...PD0

DODATKOWE FUNKCJE PORTU F

Port F moe suy jako wejcie analogowe konwertera analogowo cyfrowego(ADC). W przypadku, gdy ktre z wyprowadze portu s skonfigurowane jako wyjcia jest niezwykle istotne to, e nie mona ich przeczy na wejcia w czasie konwersji. Nie jest to moliwe poniewa mogoby spowodowa bdy konwersji. W trybie zgodnoci z Atmega 103 port F moe pracowa jedynie jako wejcie. Jeli interfejs JTAG jest aktywny rezystory podcigajce wyprowadze PF7, PF5, i PF4 bd wczone nawet jeli nastpi reset.
TDI, ADC7 (bit 7) ADC7 : 7. kana ADC

TDI Szeregowe wejcie danych JTAG, jeli interfejs JTAG jest aktywny to wyprowadzenie nie moe pracowa jako pin portu we/wy. TCK, ADC6 (bit 6) ADC6 : 6. kana ADC Szeregowe wyjcie danych z rejestrw instrukcji lub danych. Jeli interfejs JTAG jest aktywny to wyprowadzenie nie moe pracowa jako pin portu we/wy. TMS, ADC5 Port F, Bit 5 ADC5 : 5. kana ADC TMS (JTAG Test Mode Select) :Jeli interfejs JTAG jest aktywny to wyprowadzenie nie moe pracowa jako pin portu we/wy. TDO, ADC4 Port F, Bit 4 ADC4 : 4. kana ADC TCK (JTAG Test Clock): Operacje JTAG s synchronizowane z TCK Jeli interfejs JTAG jest aktywny to wyprowadzenie nie moe pracowa jako pin portu we/wy.

ADC3 ADC0 Port F, Bit 3..0


ADC0-3 : kanay 0 do 3 ADC

Tabela 43 i 44 Alternatywne funkcje portu F Tabela 43 Dodatkowe funkcje wyprowadze PF7...PF4

Tabela 44 Dodatkowe funkcje wyprowadze PF3...PF0

DODATKOWE FUNKCJE PORTU G

W trybie zgodnoci z Atmega 103 port G nie moe by uywany jako port we/wy. W tym trybie mog by uyte jedynie funkcje alternatywne tego portu
TOSC1 (bit 4) Jeli bit AS0 w rejestrze ASSR = 1 w celu uaktywnienia asynchronicznego taktowania licznika0 wyprowadzenie PG4 jest odczane od portu G i staje si wejciem wzmacniacza odwracajcego oscylatora. W tym trybie, jeli oscylator jest podczony do tego wyprowadzenia wyprowadzenie nie moe by uywane jako pin we/wy. TOSC2 (bit 3) (bit 4) Jeli bit AS0 w rejestrze ASSR = 1 w celu uaktywnienia asynchronicznego

taktowania licznika0 wyprowadzenie PG3 jest odczane od portu i staje si wyjciem wzmacniacza odwracajcego oscylatora. W tym trybie, jeli oscylator jest podczony do tego wyprowadzenia wyprowadzenie nie moe by uywane jako pin we/wy.

ALE (bit 2) Sygna umoliwiajcy stosowanie pamici zewntrznej RD (bit 1)Sygna strobujcy odczyt pamici zewntrznej WR (bit 0) Sygna strobujcy zapis pamici zewntrznej

Tabela 46 i 47 Alternatywne funkcje portu G Tabela 46 Dodatkowe funkcje wyprowadze PG4...PG1

Tabela 46 Dodatkowe funkcje wyprowadzenia PG0

OPIS REJESTRW PORTW WEJCIA/WYJCIA


Rejestr PORTA

Rejestr DDRA

Rejestr PINA

Rejestr PORTB

Rejestr DDRB

Rejestr PINB

Rejestr PORTC

Rejestr DDRC

Rejestr PINC

Rejestr PORTD

Rejestr DDRD

Rejestr PIND

Rejestr PORTE

Rejestr DDRE

Rejestr PINE

Rejestr PORTF

Rejestr DDRF

Rejestr PINF

Rejestr PORTG

Rejestr DDRG

Rejestr PING

Uwaga : Rejestry PORTF, DDRF, PINF, PORTG, DDRG, PING nie s dostpne w trybie zgodnoci z Atmega103

PRZERWANIA ZEWNTRZNE
Zewntrzne przerwania s wywoywane przez wejcia INT7..0. Warto zauway, e jeeli przerwania te s odblokowane bd wywoywane nawet jeli nki INT7.0 sa skonfigurowane jako wyjcia. Cecha ta zapewnia moliwo na generowania przerwa programowych. Zewntrzne przerwania mog by wywoywane zboczem opadajcym lub narastajcym lub niskim poziomem. T to ustawiane zgodnie z opisem rejestru kontroli przerwa zewntrznych EICRA (INT3..0 i EICRB (INT7..4). Kiedy zewntrzne przerwania s odblokowane i s wywoywane poziomem, przerwanie bdzie zgaszane przez cay czas utrzymywania niskiego poziomu na wejciu. Rozpoznanie opadajcego lub narastajcego zbocza przerwania na nkach INT7..4 wymaga obecnoci zegara I/O opisanego w sekcji systemy zegarowe i ich dystrybucja na stronie 33. Przerwania powodowane niskim poziomem i zboczami na nkach INT3..0 s wykrywane asynchronicznie. Powoduje to, e przerwania te mog by wykorzystywane do wybudzania urzdzenia z trybw snu innych ni IDLE . Zegar I/O jest wstrzymywany we wszystkich trybach snu za wyjtkiem trybu IDYL. Naley zauway, e jeeli przerwania zgaszane poziomem s wykorzystywane do wybudzenia z trybu obnionego poboru mocy. Zmieniony poziom napicia musi by utrzymywany przez jaki czas, aby uruchomi MCU. To powoduje, e MCU jest mniej czue na zakcenia. Zmieniony poziom jest prbkowany dwa razy przez oscylator Watchdoga. Okres Watchdoga wynosi 1mikros dla 5.0V w temperaturze 25 stopni. Czstotliwo Wathcdogs zaley od napicia co pokazano w sekcji Charakterystyki elektryczne na stronie 314. MCU wybudzi si, jeeli wejcie ma wymagany poziom podczas prbkowania lub jest ono utrzymywane do koca czasu uruchamiania. Czas uruchamiania jest zdefiniowany przez bezpiecznik SUT co opisana w sekcji Zegary systemowe i ich dystrybucja na stronie 33. Jeeli poziom jest prbkowany dwa razy przez oscylator Watchdoga ale zaniknie przed upywem czasu uruchamiania , MCU wybudzi si, ale adne przerwanie nie zostanie wygenerowane. Wymagany poziom musi by utrzymywany wystarczajco dugo, aby MCU mogo ukoczy wybudzanie i wywoa poziom przerwania.
Rejestr kontroli zewntrznych przerwa A EICRA

Rejestr ten jest nie dostpny w trybie kompatybilnoci z ATmega103, ale pocztkowe wartoci INT#..0 zdefiniowane jako niski poziom przerwa s takie jak w ATmega103.
a: bity 7..0 ISC31, ISC30 ISC00, ISC00: zewntrzne przerwania 3..0 bity kontroli

Zewntrzne przerwania 3..0 s aktywowane przez zewntrzne wejcia INT3..0 jeli flaga I w rejestrze SREG i odpowiadajca jej maska przerwania w EIMSK s ustawione. Poziom i zbocza na zewntrznych wyjciach, ktre aktywuj przerwania s zdefiniowane w tabeli 48. Zbocza na wejciach INT3..0 s rejestrowane asynchronicznie. Impulsy na wejciach INT3..0 szersze od minimalnej szerokoci impulsu s podane w tabeli 49. Krtsze impulsy nie gwarantuj

wygenerowania przerwania. Jeeli przerwanie niskopoziomowe jest wybrane, niski poziom musi by utrzymywany do ukoczenia wykonywanej instrukcji aby wygenerowa przerwanie. Jeli odblokowane, przerwania zgaszane poziomem bd generowa dania przerwania tak dugo jak na danym wyjciu jest stan niski. Podczas zmian bitu ISCn moe wystpi przerwanie. Dlatego, zaleca si najpierw zablokowa INTn poprzez wyzerowanie bitu umoliwiajcego przerwania w rejestrze EIMSK. Nastpnie bit ISCn moe zosta zmieniony. Wreszcie, flagi przerwa INTn powinny zosta wyzerowane poprzez wpisanie logicznej jedynki do bitu flagi przerwa w rejestrze EIFR nim przerwania zostan z powrotem odblokowane. ISCn1 ISCn0 Opis 0 0 Niski poziom INT n wygeneruje danie przerwania 0 1 Zarezerwowane 1 0 Opadajce zbocze INTn wygeneruje asynchroniczne danie przerwania 1 1 Narastajce zbocze INTn wygeneruje asynchroniczne danie przerwania Uwaga: 1. n = 3..0 Podczas zmian ISCn1/ISCn0 przerwanie musi by zablokowane poprzez wyzerowanie bitu umoliwiajcego przerwania w rejestrze EIMSK. W przeciwnym wypadku przerwanie moe wystpi podczas zmiany tych bitw. Symbol tINT

Parametr Minimalna szeroko impulsu dla asynchronicznego zewntrznego przerwania

Warunki Min Typ Max Jednostki 50 ns

Rejestr kontroli zewntrznych przerwa B EICRB

a: bit 7..0 ISC71, ISC70 ISC41m ISC40: zewntrzne przerwania 7-4 bity kontroli

Zewntrzne przerwania 7 4 s aktywowane przez zewntrzne nki INT7..4 jeeli flaga I rejestru SREG i odpowiednie maski przerwa s ustawione. Poziom i zbocza na wyjciach zewntrznych, ktre aktywuj przerwanie s zdefiniowane w tabeli 50. Wartoci na wyjciach INT7..4 s prbkowane przed wykryciem zbocza. Jeli zbocze lub przecznik przerwa jest wybrany impulsy trwajce duej ni jeden cykl maszynowy wygeneruj przerwanie. Krtsze impulsy nie gwarantuj generacji przerwania. Zauwa, e czstotliwo zegara CPU moe by mniejsza ni czstotliwo XTAL jeeli dzielnik XTAL jest odblokowany. Jeeli wybrana jest przerwanie wyzwalane niskim poziomem niski poziom musi by utrzymywany a skoczy si wykonywana instrukcja w celu wygenerowania przerwania. Jeli jest odblokowane, poziomowe zgoszenie przerwania bdzie generowa danie przerwania tak dugo ja na wyjciach jest niski poziom. ISCn1 ISCn0 Opis 0 0 Niski poziom INTn generuje danie przerwania

0 1 Jakakolwiek logiczna zmiana na INTn generuje przerwanie 1 0 Opadajce zbocze midzy prbkowaniem INTn generuje przerwanie 1 1 Narastajce zbocze midzy prbkowaniem INTn generuje przerwanie Uwaga: n = 7..4 Podczas zmian ISCn1/ISCn0 przerwanie musi by zablokowane poprzez wyzerowanie bitu umoliwiajcego przerwania w rejestrze EIMSK. W przeciwnym wypadku przerwanie moe wystpi podczas zmiany tych bitw.
Rejestr maskujcy zewntrzne przerwania EIMSK

a: bity 7..0 INT7 INT 0: Odblokowanie zewntrznego dania przerwania

Kiedy na tych bitach s zapisane jedynki i bit I w rejestrze statusu (SREG) jest ustawiony (!), odpowiadajce bitom zewntrzne przerwania s odblokowane. Bity kontroli przerwa w rejestrach EICGA i EICGB definiuj czy przerwanie zewntrzne jest aktywowane narastajcym, opadajcym zboczem, czy poziomem. Aktywno na ktrymkolwiek z tych wyj spowoduje danie przerwania nawet jeli dana nka jest wyjciem. Zapewnia to moliwo generowania przerwa za pomoc oprogramowania.
Rejestr flag przerwa zewntrznych EIFR

a: bity 7..0 INTF7 - INTF0: flagi przerwa zewntrznych 7..0

Kiedy zbocze albo poziom spowoduje danie przerwania na wejciach INT7..0 flaga INTF7..0 zostanie ustawiona na jeden. Jeeli bit I w rejestrze SREG i odpowiednie bity przerwa w EIMSK s odblokowane (1) MCU przeskoczy do wektora przerwa. Flaga jest zerowana po wykonaniu procedury obsugi przerwania. Lub moe zosta wyczyszczona poprzez wpisanie logicznej jedynki do niej. Flagi INTF7..0 s zawsze czyszczone w przypadku wywoywania przerwa poziomem. Wchodzc w stan snu z zablokowanymi flagami INT3..0 bufory wejciowe na tych nkach bd zablokowane. Moe to powodowa logiczn zmian w wewntrznych sygnaach, ktre bd ustawiay flagi INTF3..0. Przejrzyj Odblokowanie binarnego wejcia i tryby snu.

8-BITOWY LICZNIK Z PWM I OPERACJE ASYNCHRONICZNE


Gwne cechy: jednokanaowy licznik kasowanie licznika podczas dopasowania wolny od zakce, Modulacji Szerokoci Impulsu z Korekcj Fazy (PWM) generator czstotliwoci 10-bitowy prescaler licznika rda przerwa przepenienia i dopasowania (TOV0 i OCF0) moliwo zegarowania z zewntrznego generatora 32 kHz niezalenie od zegara we/wy

Przegld
Uproszczony diagram blokowy 8-bitowega zegara/licznika przedstawiony jest na rys. 33. Rzeczywiste rozmieszczenie stykw we/wy przedstawione jest w Konfiguracji stykw na stronie 2. Rejestry we/wy dostpne dla CPU , wczajc bity we/wy I styki we/wy zostay pogrubione. Opis specyficznych rejestrw we/wy oraz rozmieszczenie bitw znajduje si na stronie 98.

Rys. 33. Diagram blokowy 8-bitowego zegara/licznika

Rejestry Zegar/Licznik (TCNT0) oraz zewntrzny rejestr porwnawczy (OCR0) s 8-bitowymi rejestrami. Sygnay dania przerwania (skrt: Int.Req.) s widoczne w rejestrze flagi przerwania zegara (TIFR). Wszystkie przerwania s osobno maskowane w rejestrze maski przerwania zegara (TIMSK). TIFR oraz TIMSK nie s ukazane na rysunkach , jeli rejestry s wspdzielone przez rne urzdzenia zegarowe. Zegar/Licznik moe by taktowany wewntrznie za pomoc prescalera lub asynchronicznie Ze stykw TOSC1/2. Asynchroniczne operacja jest kontrolowana przez rejestr asynchronicznego stanu (ASSR). Zegar/Licznik jest nieaktywny gdy nie ma wybranego adnego rda zegarowego. Podwjnie buforowany zewntrzny rejestr porwnawczy (OCR0) jest zawsze porwnywany z wartoci Zegar/Licznik. Rezultat porwnania moe by uyty przez generator przebiegw falowych W celu generacji PWM lub zmiennej czstotliwoci wyjciowej na styku porwnania wyjcia (OC0). Szczegy znajduj si na stronie 89. Zdarzenie zgodnoci porwnania ustawi flag porwnania (OCF0), ktra moe zosta uyta do generacji dania przerwania porwnania wyjcia. Pojcia Maa litera n zastpuje numer Zegar/Licznik, w tym przypadku 0. Pojcia przedstawione w tabeli 51 s czsto uywane w tym dokumencie.

Tabela 51 Pojcia
BOTTOM MAX TOP Licznik osiga BOTTOM gdy jego stan wynosi 0 (0x00). Licznik osiga MAXimum gdy jego stan wynosi 0xFF(dziesitnie 255). Licznik osiga MAXimum gdy jego stan osiga najwiksz warto w licznej sekwencji. Warto TOP Moz by przypisana do staej wartoci 0xFF(MAX) lub do wartoci znajdujcej si w rejestrze OCR0. Przypisanie to jest zalene od trybu operacji.

RDA ZEGAROWE DLA ZEGAR/LICZNIK (TIMER/COUNTER)


rda Zegar/Licznik moe by taktowany przez wewntrzne synchroniczne rdo taktowania lub zewntrzne asynchroniczne. rdo zegarowe clkT0 jest domylnie rwne zegarowi MCU, clkI/O. Gdy bit AS0 w rejestrze ASSR jest ustawiany na jedynk logiczn, rdo zegarowe jest brane z Zegar/Licznik oscylatora podczonego do TOSC1 i TOSC2.

Jednostka licznika Gwn czci 8-bitowego Zegara/Licznika jest dwukierunkowy programowalny licznik. Rysunek 34 prezentuje diagram blokowy licznika oraz jego otoczenie.

Rys. 34. Diagram blokowy licznika

Opis sygnaw (sygnay wewntrzne): Mount inkrementuje lub dekrementuje TCNT0 .

direction Wybiera inkrementacj lub dekrementacj. clear resetuje TCNT0 (ustawia wszystkie bity na zero). clkT0 Zegar/Licznik . top sygnalizuje, e TCNT0 osign maksymaln warto. bottom sygnalizuje, e TCNT0 osign minimaln warto(zero).

W zalenoci od trybu uywanych operacji, licznik jest resetowany, inkrementowany lub dekrementowany w trakcie kadego taktu zegarowego (clkT0). clkT0 moe by generowany przez zewntrzne lub wewntrzne rdo zegarowe , wybierane przez bity clock select (CS02:0). W przypadku, gdy nie jest wybrane adne rdo zegarowe (CS02:0 = 0) zegar jest zatrzymywany. Jednake warto TCNT0 moe by odczytana przez CPU, niezalenie od tego czy clkT0 jest obecny. Zapis CPU ma wyszy priorytet od wszystkich resetw licznikw oraz operacji obliczeniowych. Sekwencja zliczania zalena jest od ustawie bitw WGM01 oraz WGM00 znajdujcych si w rejestrze sterowania Zegar/Licznik (TCCR0). Istniej cise powizania pomidzy sposobem zliczania licznika i generacja przebiegu falowego na OC0. Wicej szczegw nt. sekwencji zliczania znajdziesz na stronie 92. Flaga przepenienia Zegara/Licznika (TOV0) jest ustawiana w zalenoci od trybu operacji wybranego przez bity WGM01:0. TOV0 moe zosta uyty do generacji przerwania CPU.

Komparator wyjciowy
8-bitowy komparator stale porwnuje TCNT0 z zewntrznym rejestrem porwnawczym (CR0). Ilekro TCNT0 rwna si OCR0, komparator o tym sygnalizuje. Jeli wynik porwnania jest pozytywny flaga OCF0 zostaje ustawiona w trakcie nastpnego cyklu zegarowego. Jeli OCIE0 = 1, flaga OCF generuje przerwanie output compare. Flaga OCF0 flag jest automatycznie resetowana gdy przerwanie zostaje wykonane. Flaga OCF0 moe zosta zresetowana programowo przez zapis jedynki logicznej w miejsce odpowiedniego bitu we/wy.

Rys. 35. Komparator wyjciowy , diagram blokowy

Rejestr OCR0 jest podwjnie buforowany e czasie trybu modulacji szerokoci impulsu(PWM). W trybach normalnym i CTC , podwjne buforowanie jest wyczone. Podwjne buforowanie synchronizuje uaktualnienie rejestru porwnawczego OCR0 do wartoci grnej lub dolnej zliczanej sekwencji. Synchronizacja zapobiega wystpowaniu impulsw niesymetrycznych, nieparzystej dugoci, dziki czemu wyjcie jest wolne od zakce. Dostp do rejestru OCR0 moe wydawa si zoony , ale to nie jest przypadek. Jeli podwjne buforowanie jest wczone , CPU ma dostp do bufora rejestru OCR0, w przeciwnym wypadku CPU ma bezporedni dostp do OCR0.

Wymuszenie dopasowania na wyjciu


W trybach generacji przebiegw falowych bez PWM , wyjcie porwnania komparatora moe by wymuszone przez zapis jedynki do bitu FOC0. Wymuszenie pozytywnego wyniku porwnania nie ustawi flag OCF0 i nie zresetuje zegara. Styk OC0 zostanie zaktualizowany tylko gdy zasza rzeczywicie zasza taka zgodno (ustawienie bitu COM01:0 okrela stan styku OC0). Blokowanie komparatora poprzez zapis TCNT0 Wszystkie operacje zapisu CPU do rejestru TCNT0 blokuj kady wynik porwnania, ktry wystpi podczas nastpnego cyklu zegarowego, nawet gdy zegar jest wyczony. Ta cecha pozwala zainicjalizowa OCR0 t sam wartoci co TCNT0 bez wymuszania przerwania gdy Zegar/Licznik jest wczony. Wykorzystanie komparatora wyjciowego Odkd zapis TCNT0 w kadym trybie operacji blokuje na jeden cykl zegarowy wszystkie wyniki porwnania , istnieje ryzyko podczas zmiany TCNT0 w trakcie uywania kanau porwnania wyjcia, niezalenie od tego czy Zegar/Licznik pracuje. Jeli warto zapisana do TCNT0 rwna si wartoci CR0 , wynik porwnania zostanie

pominity, skutkiem czego zostanie wygenerowany nieprawidowy ksztat fali. Nie zapisuj rwnie wartoci TCNT0 rwnej BOTTOM gdy licznik zlicza w d. Najatwiejsz metod ustawienia wartoci OC0 jest wymuszenie bitu FOC0 w normalnym trybie. Rejestr OC0 trzyma swoj warto nawet podczas zmiany trybw generacji fali. Bd wiadom tego, e bity COM01:0 nie s podwjnie buforowane razem z wartoci porwnania. Zmiana bitw COM01:0 nastpuje natychmiastowo.

JEDNOSTKA KOMPARACJI WYJCIA


Bity COM01:0 maj dwa zastosowania. Generator przebiegu falowego uywa bitw COM01:0 w celu zdefiniowania stanu OC0 podczas nastpnego pozytywnego wyniku porwnania. Bity COM01:0 steruj rdem styku OC0. Rys. 36 pokazuje uproszczony schemat logiczny afektowany przez ustawienie bitu COM01:0. Rejestry we/wy, bity we/wy , oraz styki we/wy zostay pogrubione.

Rys 36. Jednostka komparacji wyjcia, schemat

Ogln funkcja portu we/wy jest zamiana OC0 z generatora przebiegu falowego jeli oba bity COM01:0 s ustawione. Jednake kierunek styku OC0 (we lub wy) jest nadal sterowany przez rejestr kierunku danych DDR dla styku port. Bit rejestru kierunku danych dla styku OC0 (DDR_OC0) musi zosta ustawiony jako wyjcie przed pojawieniem si wartoci OC0 na styku. Funkcja ta nie jest zalena od trybu generacji przebiegu falowego. Budowa styku output compare pozwala na inicjalizacj stanu OC0 przed wczeniem wyjcia. Niektre ustawienia bitw OM01:0 bit s zarezerwowane dla pewnych trybw operacji (patrz strona 98). Generator fal uywa bitw COM01:0 w odmienny sposb w trybach: normalnym, CTC, oraz PWM. Dla wszystkich trybw ustawienie COM01:0 = 0 mwi generatorowi, e adna operacja nie zostanie wykonana na rejestrze OC0 w cigu nastpnego udanego porwnania. Wicej informacji znajdziesz na stronach 99 (tabela 53, tabela 54) oraz 100(tabela 55). Zmiana stanu bitw COM01:0 odniesie skutek w trakcie pierwszego udanego porwnania po zapisie bitw. Dla trybw innych ni PWM , mona wymusi natychmiastow zmian stanu bitw poprzez uycie bitw strobujcych FOC0.

Tryby operacji
Tryb operacji ,np. zachowanie Zegar/Licznik oraz wyjciowych stykw porwnania jest zdefiniowany przez kombinacj trybu generacji fali (WGM01:0) oraz trybu bitw wyjcia porwnania (COM01:0). Bity wyjcia porwnania nie wpywaj na sekwencj zliczania, ale tryb generacji fali ma taki wpyw. Bity COM01:0 steruj odwrceniem lub nie generowanego wyjcia PWM. Dla trybw innych ni PWM bity COM01:0 decyduj czy wyjcie powinno by ustawione, zresetowane, czy przeczone na stan pozytywnego wyniku porwnania. Tryb Normalny Najprostszym trybem operacji jest tryb normalny (WGM01:0 = 0). W tym trybie licznik zlicza zawsze w gr (inkrementacja), nie jest wykonywany reset licznika. Licznik po osigniciu maksymalnego stanu 8-bit (TOP = 0xFF) zaczyna zlicza od pocztku (bottom =0x00). W normalnych operacjach flaga przepenienia Zegar/Licznik (TOV0) zostanie ustawiona w cyklu zegarowym, w ktrym wartoci TCNT0 bdzie zero. W tym przypadku flaga TOV0 flag zachowuje si jak dziewity bit , przy czym ona jest ustawiona a nie zresetowana. Jednake, w poczeniu z przerwaniem przepenienia zegara, ktre automatycznie kasuje flag TOV0 flag, rozdzielczo zegara moe zosta zwikszona programowo. Nowy stan licznika moe by zapisany w dowolnym momencie. Zewntrzna jednostka porwnawcza moe zosta uyta w celu generacji przerwania. W trybie normalnym nie powinno si uywa tej jednostki do generacji przebiegw falowych poniewa w taka operacja zabiera zbyt wiele czasu procesora. Tryb CTC (kasowanie zegara, przy zgodnoci wyjcia) W tym trybie (WGM01:0 = 2), rejestr OCR0 jest uywany do zmiany rozdzielczoci licznika. W trybie CTC licznik jest ustawiany na zero gdy jego warto (TCNT0) wynosi OCR0. OCR0 definiuje grn warto(top) licznika, a co za ty idzie rozdzielczo. Ten tryb upraszcza operacj zliczania zewntrznych zdarze. Diagram czasowy trybu CTC znajduje si na rys. 37. Stan licznika (TCNT0)jest zwikszany a do zajcia rwnoci midzy TCNT0 a OCR0, wwczas licznik (TCNT0) jest kasowany. Rys. 37. Tryb CTC, diagram czasowy

Przerwanie moe by generowane za kadym razem gdy warto licznika osignie TOP, poprzez uycie flagi OCF0. Jeli przerwanie wystpio, rutyna obsugujca przerwanie moe zosta uyta w celu uaktualnienia wartoci TOP. Jednake zmiana wartoci TOP na warto blisk BOTTOM, gdy licznik zlicza bez prescalera lub z ma wartoci prescalera musi zosta wykonana uwanie, poniewa tryb CTC nie obsuguje podwjnego buforowania. Jeli nowa warto zapisana do OCR0 jest mniejsza ni obecna warto TCNT0, licznik pominie pozytywny wynik porwnania. Czstotliwo generowanej fali w trybie CTC opisuje ponisze rwnanie:

,gdzie: N wspczynnik prescalera (1, 8, 32, 64, 128, 256, 1024).

Szybki tryb Modulacji Szerokoci Impulsu (Szybki tryb PWM) Szybki tryb PWM (WGM01:0 = 1) zapewnia opcj generacji fal wysokiej czstotliwoci. Szybki tryb rni si od innych trybw PWM operacj na pojedynczym zboczu. Licznik zlicza cyklicznie od dou(BOTTOM) do gry (MAX). W trybie nieodwracajcym wyjcia porwnujcego, OC0 jest resetowany gdy zajdzie rwno wartoci TCNT0 i OCR0, i ustawiany na warto BOTTOM. W trybie odwracajcym, wyjcie jest ustawiane gdy zajdzie powysza rwno i resetowane przy wartoci minimalnej (BOTTOM). Przez operacje wykonywane na pojedynczym zboczu czstotliwo pracy w szybkim trybie PWM moe by dwa razy wiksza ni przy operacjach wykonywanych na podwjnym zboczu. Wysoka czstotliwo czyni szybki tryb PWM odpowiedni do regulacji zasilania, prostowania, przetwornikw analogowo-cyfrowych. Szybkim trybie PWM warto licznika jest zwikszana a do momentu osignicia wartoci maksymalnej(MAX). Licznik jest kasowany w trakcie nastpnego cyklu zegarowego.

Rys 38. Szybki tryb PWM, diagram czasowy

Flaga przepenienia licznika TOV0 jest ustawiana za kadym razem gdy licznik osiga warto MAX. Jeli jedno z przerwa jest wczone, podprogram obsugi przerwa moe by uyty do aktualizowania wartoci porwnania. W tym trybie jednostka porwnawcza pozwala na generacj fal na styku OC0. Ustawienie bitw COM01:0 na 2 uruchomi tryb nieodwrcony PWM, a ustawienie tych bitw na 3 uruchomi tryb odwrcony. Rzeczywista warto OC0 bdzie widoczna na styku portu jeli kierunek danych portu bdzie ustawiony jako wyjcie. Fala PWM jest generowana poprzez ustawienie(lub skasowanie) rejestru OC0 w momencie zgodnoci wartoci OCR0 i TCNT0, ustawienie i skasowanie rejestru OC0 w trakcie cyklu zegarowego skasuje licznik(zmiana z wartoci MAX na BOTTOM). Czstotliwo PWM dla wyjcia moe by obliczona wg nastpujcego wzoru:

,gdzie: N reprezentuje wspczynnik prescalera (1, 8, 32, 64, 128, 256, lub 1024). Skrajne wartoci rejestru OCR0 reprezentuj specjalne przypadki generacji fali PWM na wyjciu w trakcie szybkiego trybu PWM

Tryb Modulacji Szerokoci Impulsu z Korekcj Fazy


Modulacja szerokoci impulsu z korekcj fazy (WGM01:0 = 3) posiada opcj generacji przebiegw PWM z korekcj fazy. Tryb PWM z korekcj fazy jest oparty o operacje dwuzboczowe. Licznik liczy kolejno od BOTTOM do MAX i potem od MAX do BOTTOM W trybie porwnania wyjcia bez odwracania, porwnanie wyjcia (OC0) jest zerowane gdy porwnanie TCNT0 i OCR0 jest pozytywne w trakcie zliczania w gr, i ustawiane w trakcie liczenia w d. W trybie porwnania wyjcia z odwracaniem wykonywana jest przeciwna operacja. Dziaanie w oparciu o dwa zbocza powoduje ograniczenie maksymalnej czstotliwoci w porwnaniu do dziaania na jednym zboczu. Jednake, z powodu symetrii trybu PWM pracujcego na dwch zboczach, s one rekomendowane do dziaania w zastosowaniach zwizanych z kontrol silnikw. Rozdzielczo PWM dla trybu PWM z korekcj fazy

Rys. 39. Tryb PWM z korekcj fazy, diagram czasowy

Flaga przepenienia licznika (TOV0) jest ustawiana za kadym razem, gdy stan licznika jest rwny BOTTOM. Flaga przerwania moe zosta uyta w celu generacji przerwania w momencie osignicia przez licznik wartoci BOTTOM. W trybie PWM z korekcj fazy, jednostka komparatora zezwala na generacje przebiegw na styku OC0. Tryb PWM bez odwracania wyjcia mona osign przez wystawienie bitw COM01:0 na 2, za tryb PWM z odwrconym wyjciem poprzez ustawienie COM01:0 na 3. Rzeczywista warto OC0 bdzie widoczna na nce portu, jeli nka ta ustawiona jest jako wyjcie. Przebiegi PWM s generowane poprzez kasowanie(lub ustawianie) rejestru OC0 w trakcie zajcia rwnoci w czasie porwnania OC0 i TCNT0, gdy licznik zlicza w gr, i w sposb przeciwny gdy licznik zlicza w d. Czstotliwo na wyjciu trybie PWM z korekcj fazy mona obliczy wedug wzoru:

gdzie: N wspczynnik prescalera (1, 8, 32, 64, 128, 256, lub 1024). Skrajne wartoci rejestru OCR0 reprezentuj specjalne przypadki generacji fali PWM na wyjciu w trakcie trybu PWM z korekcj fazy. Jeli OCR0 jest rwny BOTTOM, wyjcie bdzie cigle w stanie niskim, gdy OCR0 wyniesie MAX wyjcie bdzie stale w stanie wysokim dla trybu PWM bez odwracania. W odwrconym trybie PWM wyjcie bdzie miao przeciwne wartoci logiczne.

Przebiegi czasowe
Rys. 40. Zegar/Licznik diagram czasowy, bez prescalowania

Rys. 41. Zegar/Licznik diagram czasowy, prescaler (fclk_I/O/8)

Rys. 42. Zegar/Licznik diagram czasowy, ustawianie OCF0, prescaler (fclk_I/O/8)

Rys. 43 Zegar/Licznik diagram czasowy, kasowanie zegara w trybie zgodnoci porwnania, prescaler (fclk_I/O/8)

8-BITOWY ZEGAR/LICZNIK - OPIS REJESTRW

REJESTR TCCR0

Bit 7 FOC0: wymuszenie komparacji wyjcia Bit FOC0 jest nieaktywny tylko w trybie PWM. Jednake dla zachowania kompatybilnoci z przyszymi urzdzeniami, bit ten musi by ustawiony na zero podczas zapisu TCCR0 w trybie PWM. Podczas zapisu jedynki logicznej do bitu FOC0, zostaje wymuszane dopasowanie na generatorze przebiegw falowych. Wyjcie OC0 zmienia si zgodnie z ustawieniami bitw COM01:0. Bit FOC0 jest zaimplementowany jako strobujcy. FOC0 nie moe generowa przerwania, ani kasowa licznika w trybie CTC w ktrym OCR0 jest wartoci TOP. Bit FOC0 jest odczytywany jako zero.

Bit 6, 3 WGM01:0: Tryb generacji przebiegw falowych

Bity te steruj kolejnoci zliczania licznika, rdem maksymalnej (TOP) wartoci licznika, wybieraj typ generowanego przebiegu falowego. Tryby dziaania jednostki Zegar/Licznik: normalny, CTC, dwa tryby PWM.

Tabela 52. Tryb generacji przebiegw falowych opis bitw


Tryb 0 1 2 3 WGM01 (CTC0) 0 0 1 1 WGM00 (PWM0) 0 1 0 1 Tryb Operacji Zegara/Licznika Normalny PWM, korekcja fazy CTC Szybki PWM TOP 0xFF 0xFF OCR0 0xFF Ustawienie flagi TOV0 przy: Natychmiastowo MAX TOP BOTTOM Natychmiastowo TOP MAX MAX Aktualizacja OCR0 przy

Bit 5:4 COM01:0: Tryb zgodnoci komparacji wyjcia Bity te steruj pinem porwnania wyjcia (OC0). Jeli co najmniej jeden bit z bitw COM01:0 jest ustawiony, wyjcie OC0 uniewania normalne dziaanie pinu I/O do ktrego jest ono podczone. Gdy OC0 jest podczony do styku, funkcja bitw COM01:0 jest zalena od ustawie WGM01:0. Tabela 53. Compare Output Mode, non-PWM Mode COM01 COM00 Opis
0 0 1 1 0 1 0 1 Normalne dziaanie portu, OC0 odczony Zmiana OC0 przy dopasowaniu Kasowanie OC0 przy dopasowaniu Ustawienie OC0 przy dopasowaniu

Tabela 54. Compare Output Mode, Fast PWM Mode(1) COM01 COM00 Opis
0 0 1 1 0 1 0 1 Normalne dziaanie portu, OC0 odczony Zarezerwowane Kasowanie OC0 przy dopasowaniu, ustawienie OC0 przy TOP Ustawienie OC0 przy dopasowaniu, kasowanie OC0 przy TOP

Tabela 55. Compare Output Mode, Phase Correct PWM Mode(1) COM01 COM00 Opis
0 0 0 1 Normalne dziaanie portu, OC0 odczony Zarezerwowane

1 1

0 1

Kasowanie OC0 przy dopasowaniu gdy licznik zlicza w gr. Ustawienie OC0 przy dopasowaniu gdy licznik zlicza w d. Ustawienie OC0 przy dopasowaniu gdy licznik zlicza w gr. Kasowanie OC0 przy dopasowaniu gdy licznik zlicza w d.

Bit 2:0 CS02:0: Wybr zegara Tabela 56. Opis bitu wyboru zegara
CS02 0 0 0 0 1 1 1 1 CS01 0 0 1 1 0 0 1 1 CS00 0 1 0 1 0 1 0 1

Opis
Brak rda zegarowego (Zegar/Licznik zatrzymany)

clkT0S/(brak prescalera) clkT0S/8 (z prescalera) clkT0S/32 (z prescalera) clkT0S/64 (z prescalera) clkT0S/128 (z prescalera)
clkT0S/256 (z prescalera) clkT0S/1024 (z prescalera)

Timer/Counter Register TCNT0


Bit Odczyt/Zapis (R/W) Warto pocztkowa 7 R/W 0 6 R/W 0 5 R/W 0 4 3 TCN0[7:0] R/W R/W 0 0 2 R/W 0 1 R/W 0 0 TCN0 R/W 0

Rejestr jednostki Zegar/Licznik umoliwia bezporedni dostp dla operacji zapisu i odczytu. Zapis do rejestru TCNT0 usuwa dopasowanie podczas nastpnego cyklu zegarowego. Modyfikacja licznika (TCNT0) podczas jego pracy stwarza ryzyko utraty dopasowania midzy TCNT0 i rejestrem OCR0.

Output Compare Register OCR0


Bit Odczyt/Zapis (R/W) Warto pocztkowa 7 R/W 0 6 R/W 0 5 R/W 0 4 3 OCR0[7:0] R/W R/W 0 0 2 R/W 0 1 R/W 0 0 OCR0 R/W 0

Rejestr porwnania wyjcia zawiera 8-bitow warto, ktra jest stale porwnywana z wartoci licznika (TCNT0). Dopasowanie moe by wykorzystane do generacji przerwania lub przebiegu falowego na styku OC0.

Zegar/Licznik - Asynchroniczne Operacje


Asynchronous Status Register ASSR
Bit Odczyt/Zapis (R/W) Warto pocztkowa 7 R 0 6 R 0 5 R 0 4 R 0 3 AS0 R/W 0 2 TCN0UB R 0 1 OCR0UB R 0 0 TCR0UB R 0

ASSR

Bit 3 AS0: Asynchroniczny Zegar/Licznik0 Jeli AS0 ma zapisan warto zero, Zegar/Licznik0 jest taktowany z zegara We/Wy, clkI/O. W przeciwny przypadku (1 w AS0), Zegar/Licznik jest taktowany z oscylatora podczonego do TOSC1. Po zmianie wartoci AS0, zawarto TCNT0, OCR0, oraz TCCR0 moe by niepoprawna. Bit 2 TCN0UB: Zegar/Licznik Update Busy Bit ten zostaje ustawiony gdy Zegar/Licznik pracuje asynchronicznie i TCNT0 jest zapisywany. Bit ten zostaje skasowany sprztowo, po uaktualnieniu TCNT0 z rejestru tymczasowych wartoci. Zero logiczne w tym bicie wskazuje gotowo TCNT0 do zapisania nowej wartoci. Bit 1 OCR0UB: Rejestr0 porwnania wyjcia Update Busy Bit ten zostaje ustawiony gdy Zegar/Licznik pracuje asynchronicznie i OCR0 jest zapisywany. Bit ten zostaje skasowany sprztowo, po uaktualnieniu OCR0 z rejestru tymczasowych wartoci. Zero logiczne w tym bicie wskazuje gotowo OCR0 do zapisania nowej wartoci. Bit 0 TCR0UB: Rejestr0 sterujcy Zegar/Licznik Update Busy Bit ten zostaje ustawiony gdy Zegar/Licznik pracuje asynchronicznie i TCCR0 jest zapisywany. Bit ten zostaje skasowany sprztowo, po uaktualnieniu TCCR0 z rejestru tymczasowych wartoci. Zero logiczne w tym bicie wskazuje gotowo TCCR0 do zapisania nowej wartoci. Podczas odczytu TCNT0, pobierana jest rzeczywista warto zegara. Podczas odczytu OCR0 i TCCR0, pobierana jest zawarto rejestru tymczasowych wartoci

Rejestr maski przerwa jednostki Zegar/Licznik TIMSK


Bit Odczyt/Zapis (R/W) Warto pocztkowa 7 OCIE2 R/W 0 6 TOIE2 R/W 0 5 TICIE1 R/W 0 4 OCIE1A R/W 0 3 OCIE1B R/W 0 2 TOIE1 R/W 0 1 OCIE0 R/W 0 0 TOIE0 R/W 0 TIMSK

Bit 1 OCIE0: Wczenie przerwania dopasowania Zegar/Licznik0 Gdy bit OCIE0 jest zapisany jedynk, i bit I rejestru stanu jest ustawiony (jedynka), zostaje wczone przerwanie dopasowania Zegar/Licznik0. Odpowiednie przerwanie jest wykonywane jeli zajdzie dopasowanie w Zegar/Licznik0. Bit 0 TOIE0: Zegar/Licznik0 Overflow Interrupt Enable

Gdy bit TOIE0 jest zapisany jedynk, i bit I rejestru stanu jest ustawiony (jedynka), zostaje wczone przerwanie przepenienia Zegar/Licznk0. Odpowiednie przerwanie jest wykonywane jeli nastpi przepenienie w Zegar/Licznik0. REJESTR FLAG PRZERWA LICZNIKA TIFR
Bit Odczyt/Zapis (R/W) Warto pocztkowa 7 OCF2 R/W 0 6 TOV2 R/W 0 5 ICF1 R/W 0 4 OCF1A R/W 0 3 OC1B R/W 0 2 TOV1 R/W 0 1 OCF0 R/W 0 0 TOV0 R/W 0 TIFR

Bit 1 OCF0: Porwnanie wyjcia - Flaga 0 Bit OCF0 jest ustawiany (jedynka) gdy zajdzie dopasowanie pomidzy Zegar/Licznik0 i danymi w OCR0. OCF0 jest kasowany sprztowo po wykonaniu odpowiedniego podprogramu obsugi przerwania. OCF0 mona take skasowa przez zapis jedynki logicznej do flagi. Gdy bit I w SREG, OCIE0, i OCF0 s ustawione (jedynka), zostaje obsuone przerwanie dopasowania Zegar/Licznik0.

Bit 0 TOV0: Timer/Counter0 Overflow Flag Bit TOV0 jest ustawiany gdy nastpi przepenienie w Zegar/Licznik0. jest kasowany sprztowo po wykonaniu odpowiedniego podprogramu obsugi przerwania. TOV0 mona take skasowa poprzez zapis jedynki logicznej. Gdy bit I w SREG, TOIE0, i TOV0 s ustawione (jedynka), zostaje obsuone przerwanie przepenienia Zegar/Licznik0. W trybie PWM, bit ten jest ustawiony gdy Zegar/Licznik0 zmienia kierunek przy $00.

Zegar/Licznik Prescaler
Rys. 44. Prescaler dla Zegar/Licznik0

rdo zegarowe dla Zegar/Licznik0 oznaczane jest jako clkT0. clkT0 jest domylnie podczone do gwnego zegara clkI/O. Poprzez ustawienie bitu AS0 w ASSR, nastpuje asynchroniczne taktowanie Zegar/Licznik0 ze styku TOSC1. W ten oto sposb Zegar/Licznik0 pracuje jak licznik czasu rzeczywistego (RTC). Gdy bit AS0 jest ustawiony, styki TOSC1 i TOSC2 zostaj odczone od portu C. Moliwe konfiguracje dla Zegar/Licznik0 z prescalerem: clkT0S/8, clkT0S/32, clkT0S/64, clkT0S/128, clkT0S/256, i clkT0S/1024. Dodatkowo mona wybra clkT0S jako 0 (stop). Ustawienie bitu PSR0 w SFIOR kasuje prescaler.

Specjalne funkcje rejestru IO SFIOR


Bit Odczyt/Zapis (R/W) Warto pocztkowa 7 TSM R/W 0 6 R 0 5 R 0 4 ADHSM R/W 0 3 ACME R/W 0 2 PUD R/W 0 1 PSR0 R/W 0 0 PSR231 R/W 0 SFIOR

Bit 7 TSM: Tryb synchronizacji jednostki Zegar/Licznik Zapis jedynki do TSM, spowoduje trzymanie wartoci rejestrw PSR0 i PSR321 a do momentu ponownego zapisania , lub zapisu zera w TSM. Tryb ten jest uyteczny dla synchronizacji licznikw.

Bit 1 PSR0: Kasowanie prescaler Zegar/Licznik0 Prescaler zostaje zresetowany, gdy bit 1 jest zapisywany jedynk. Zapis zera do tego bitu nie spowoduje adnej akcji. Bit ten zostanie zawsze odczytany jako zero jeli Zegar/Licznik0 jest taktowany z wewntrznego zegara CPU. Jeli ten bit jest zapisywany podczas asynchronicznej pracy jednostki Zegar/Licznik0, pozostanie on jedynk a do zresetowania prescalera.

16-BIT TIMER/LICZNIK (TIMER/LICZNIK1 I TIMER/LICZNIK3)


Szesnastobitowa jednostka timera/licznika pozwala na dokadn kontrol parametrw czasowych zwizanych z wykonywaniem instrukcji (zarzdzanie zdarzeniami), generacj przebiegw oraz pomiary parametrw czasowych sygnaw. Gwne jej cechy to: - Pena zgodno z architekturami 16-bitowymi - Trzy niezalene jednostki porwnywania wyj - Podwjnie buforowane rejestry porwnywania wyj - Jedna jednostka kontrolna wejcia - Reduktor szumw jednostki kontrolnej wejcia - Timer z zerowaniem przy zgodnoci z zadanym warunkiem (samoprzeadowanie) - Bezhazardowy modulator szerokoci impulsu z poprawn faz - Zmienny okres PWM - Generator - Licznik zdarze zewntrznych - 10 niezalenych rde przerwa

REJESTRY
Timer/Licznik (TCNTn), wyjciowe rejestry porwnania (OCRnA/B/C), oraz Wejciowy rejestr zdarze (ICRn) s rejestrami 16-bitowymi. Rejestry kontrolne licznika (TCCRnA/B/C) s rejestrami 8-bitowymi i nie nakadaj adnych ogranicze dostpu na procesor. Wszystkie sygnay dania przerwa s widoczne w rejestrze przerwa TIFR w rozszerzonym rejestrze przerwa ETIFR. Podwjnie buforowane wyjciowe rejestry porwnania (OCRnA/B/C) s cay czas porwnywane z wartoci licznika. Wynik porwnania moe by uyty przez generator fal.

KOMPATYBILNO
Omawiany licznik jest now ulepszon wersj 16-bitowego licznika AVR. Jest on w peni kompatybilny z poprzedni wersj jeli chodzi o: - Wszystkie lokacje adresowe 16-bitowego rejestru I/O, wcznie z rejestrem przewa - Lokacje bitw we wszystkich 16-bitowych rejestrach - Wektory przerwa Nastpujce kontrolne bity zmieniy nazw, lecz posiadaj te same funkcje i lokacje: - PWMn0 zmieniony na WGMn0 - PWMn1 zmieniony na WGMn1 - CTCn zmieniony na WGMn2 Nastpujce rejestry zostay dodane: - Rejestr kontrolny C (TCCRnC) - Rejestry OCRnCH, OCRnCL Nastpujce bity zostay dodane: - COM1C1:0 dodany do rejestru TCCR1A - FOCnA, FOCnB, FOCnC dodane do nowego rejestru TCCRnC.

RDA TAKTOWANIA
Timer/Licznik moe by taktowany przez wewntrzne lub zewntrzne rdo. Wyboru dokonuje si poprzez ustawienie bitw CSn2:0 zlokalizowanych w rejestrze kontrolnym B (TCCRnB).

Jednostka Liczca Gwn czci 16-bitowego Licznika/Zegara jest programowalna 16-bitowa dwukierunkowa jednostka liczca.

Count zwikszenie lub zmniejszenie TCNTn o 1. Direction Wybr pomidzy inkrementacj i dekrementacj. Clear Wyzerowanie TCNTn (ustawienie wszystkich bitw na zero). clkTn Impuls zegara/licznika. TOP Sygnalizuje e TCNTn osign warto maksymaln. BOTTOM Sygnalizuje e TCNTn osign warto minimaln. 16-bitowy licznik jest odwzorowany w dwie 8-bitowe I/O lokacje pamici: TCNTnH zawiera wysze 8 bitw licznika, TCNTnL zawiera 8 bitw niszych. Procesor ma poredni dostp do rejestru TCNTnH. Kiedy zawarto TCNTnL jest czytana to do rejestru tymczasowego (TEMP) zapisywana jest zawarto TCNTnH natomiast zawarto TCNTnH jest aktualizowana zawartoci rejestru tymczasowego kiedy warto TCNTnL jest zapisywana. To pozwala procesorowi na zapisywanie i odczytywanie caego 16bitowego licznika w jednym cyklu zegara. Naley odnotowa, e wystpuj szczeglne przypadki zapisywania do rejestru TCNTn kiedy licznik jest w trakcie liczenia. Daje to nieprzewidywalne wyniki. W zalenoci od wybranego trybu licznik jest czyszczony, inkrementowany lub dekrementowany za kadym impulsem zegara. Impulsy mog by generowane z zewntrznego lub zewntrznego rda w zalenoci od ustawienia bitw wyboru zegara(Clock Select, CSn2:0). Jeeli adne rdo nie jest wybrane (CSn2:0=0) licznik jest zatrzymany. Procesor w takim wypadku ma dostp do zawartoci TCNTn poniewa operacja zapisu przez procesor ma wyszy priorytet ni operacje liczenia i czyszczenia licznika. Sekwencja liczenia jest okrelona przez ustawiania odpowiednich bitw (Waveform Generation, WGMn3:0) zlokalizowanych w rejestrach kontrolnych A i B (TCCRnA , TCCRnB). Istnieje bliski zwizek midzy tym jak licznik si zachowuje (jak liczy) a tym jakie ksztaty fal generowane s na wyjciu OCnx.

Jednostka Przechwytujca Sygnay Wejciowe Licznik zawiera wejciow jednostk, ktra potrafi przechwytywa zewntrzne zdarzenia i nadawa im znacznik czasowy wskazujcy czas wystpienia. Zewntrzny sygna wskazujcy na zdarzenie, lub grup zdarze moe by stosowany przez pin ICPn lub alternatywnie przez Analogowy Komparator. Znacznik czasowy moe by potem uyty do zliczenia czstotliwoci i innych waciwoci sygnau. Alternatywnie znacznik czasowy moe by wykorzystany do stworzenia dziennika zdarze.

Jeeli na wejciu powyszego ukadu (ICPn) lub na wyjciu analogowego komparatora (ACO) wystpuje zmiana poziomu logicznego i ta zmiana jest zgodna z ustawieniami wykrywacza zbocza, dane zostan zatrzanite. W takim przypadku 16-bitowa warto licznika (TCNTn) jest zapisywana do wejciowego rejestru (ICRn). Wejciowy wskanik stanu (ICFn) jest ustawiany w tym samym takcie w ktrym zawarto TCNTn jest kopiowana do rejestru ICRn. Wejciowy wskanik stanu generuje przerwanie. Po wygenerowaniu przerwania wskanik jest automatycznie czyszczony. Czytanie 16-bitowej wartoci rejestru wejciowego (ICRn) odbywa si w dwch etapach. Najpierw czytane s modsze bajty (ICRnL) a nastpnie starsze (ICRnH). Gdy modsze bajty s czytane, starsze s kopiowane do rejestru tymczasowego (TEMP).

Rejestr ICRn moe by czytany tylko gdy tryb generacji fali jest wczony. Tryb ten wykorzystuje rejestr ICRn dla zdefiniowania maksymalnej wartoci licznika. W tym przypadku bit trybu generacji fali (WGM3:0) musi by ustawiony zanim maksymalna warto licznika zostanie zapisana do rejestru ICRn. Kiedy rejestr ICRn jest zapisywany, to starszy bajt musi zosta zapisany do lokacji wejcia/wyjcia rejestru ICRnH zanim modszy bajt zostanie zapisany do rejestru ICRnL.
rdo wyzwalania dla jednostki kontrolnej wejcia Gwnym rdem wyzwalania dla jednostki kontrolnej wejcia jest pin ICPn. Timer/Licznik1 moe uywa w zamian take wyjcia komparatora analogowego jako alternatywnego rda wyzwalania. Komparator analogowy jest rdem sygnau wyzwalania gdy ustawiony jest bit ACIC w rejestrze ACSR. Istnieje moliwo niekontrolowanego wyzwolenia i przypadkowego zatrzanicia danych wejciowych w

jednostce kontrolnej wejcia. Flaga zatrzanicia wejcia musi by wic wyzerowana po takiej zmianie. Oba piny- ICPn i ACO s prbkowane przy uyciu tym samym sposobem jak i piny Tn . Detektor zbocza jest wic identyczny. Jednake, gdy wczony jest reduktor szumw doczana jest dodatkowa ilo logiki przed detektorem zbocza ktra powoduje wzrost opnienia o 4 cykle zegara systemowego. Naley zauway, e wejcie reduktora szumu i detektor zbocza s zawsze wczone dopki Timer/Licznik jest ustawiony w trybie generacji przebiegw ktry uywa ICRn do definiowania TOP. Zatrzanicie wejcia moe by wyzwolone programowo za pomoc portu zwizanego z pinem ICPn. Reduktor Zakce Reduktor Zakce zwiksza odporno ukadu na zakcenia, poprzez zastosowanie prostego ukadu filtracji cyfrowej. Wejcie reduktora jest monitorowane przez cztery prbki, i wszystkie cztery musz by jednakowe eby nastpia zmiana wyjcia. Reduktor Zakce jest wczany przez ustawienie wejciowego bitu redukcji szumw (ICNCn) w rejestrze kontrolnym licznika (TCCRnB). Kiedy redukcja szumw jest wczona wprowadza dodatkowe cztery cykle zegarowe. Reduktor uywa zegara systemowego i dlatego nie ma na niego wpywu przelicznik wstpny. Uywanie jednostki przechwytywania sygnaw wejciowych Gwnym zadaniem przy uywaniu jednostki przechwytywania sygnaw wejciowych jest okrelenie wystarczajcej mocy obliczeniowej procesora, eby by on w stanie obsuy napywajce zdarzenia. Czas pomidzy dwoma zdarzeniami jest krytyczny. Jeli procesor nie przeczyta przechwyconej wartoci z rejestru ICRn przed nastpnym zdarzeniem, zawarto rejestru ICRn zostanie zamazana przez now warto. W tym przypadku wynik operacji bdzie nieprawidowy. Kiedy wystpuje przerwanie (po wychwyceniu zdarzenia na wejciu), rejestr ICRn powinien zosta przeczytany przez podprogram obsugi przerwa, tak szybko jak to tylko moliwe. Chocia to przerwanie posiada wzgldnie wysoki priorytet, to maksymalny czas reakcji jest uzaleniony od maksymalnej liczby cykli zegarowych potrzebnych do obsugi kadego innego zgoszenia przerwania. Uywanie omawianej jednostki w dowolnym trybie, kiedy warto maksymalna licznika (TOP) jest zmieniana na bieco podczas operacji nie jest wskazane. Pomiar zewntrznego sygnau cyklu pracy wymaga, aby zbocze wyzwalajce byo zmieniane po kadym wychwyceniu zdarzenia. Zmiana odczytu zbocza musi by wykonana tak wczenie jak to moliwe, po tym jak rejestr ICRn zosta odczytany. Po zmianie zbocza, flaga (ICFn) musi zosta wyczyszczona programowo (zapisanie logicznej jedynki to bitu lokacji I/O). Dla pomiaru tylko czstotliwoci, czyszczenie flagi ICFn nie jest konieczne.

KOMPARATOR WYJCIOWY
16-btowy komparator porwnuje zawarto licznika (TCNTn) z zawartoci rejestru OCRnx. Jeeli zawartoci s takie same to komparator sygnalizuje to poprzez ustawienie odpowiedniej flagi (OCFnx) w nastpnym cyklu zegarowym. powoduje to wygenerowanie przerwania. Flaga OCFnx jest automatycznie czyszczona po wykonaniu przerwania. Generator falowy uywa sygnau porwnania do generowania sygnau wyjciowego zgodnie z trybem wsppracy okrelonym przez bity tryb generacji fali (WGMn3:0) i porwnania (COMnx1:0). Specjalna cecha jednostki A pozwala na zdefiniowanie maksymalnej wartoci (TOP) licznika. Warto ta okrela okres generowanych fali.

Rejestr OCRnx jest podwjnie buforowany kiedy uywany jest dowolny z dwunastu trybw modulacji szerokoci impulsu (PWM). Dla normalnego trybu operacji i dla trybu czyszczenia zegara przy porwnaniu (CTC) podwjne buforowanie jest wyczone. Podwjne buforowanie synchronizuje aktualizacje zawartoci rejestru OCRnx kadej grnej (TOP) albo dolnej (BOTTOM) sekwencji liczenia. Synchronizacja zapobiega wystpowania niesymetrycznych impulsw PWM, czynic wyjcie wolne od zakce. Dostp do rejestru OCRnx jest skomplikowany, ale nie przez przypadek. Jeeli podwjne buforowanie jest wczone, procesor ma dostp do rejestru buforowego OCRnx. Gdy podwjne buforowanie jest wyczone, procesor ma bezporedni dostp do rejestru OCRnx. Zawarto rejestru OCR1x moe by zmieniona tylko przez operacj zapisu (Licznik nie aktualizuje rejestru automatycznie jak rejestrw TCNTn oraz ICRn). Rejestr OCRnx nie jest czytany za porednictwem rejestru tymczasowego (TEMP). Jednak dobrym zwyczajem jest odczytanie najpierw niskich bajtw, tak jak przy dostpie do innych 16bitowych rejestrw. Zapisywanie rejestru OCRnx musi odbywa si przez rejestr tymczasowy (TEMP). Wysze bajty (OCRnxH) musz zosta zapisane najpierw. Kiedy lokacja I/O jest zapisana przez procesor, rejestr TEMP zostanie zaktualizowany zapisan wartoci. Nastpnie gdy zawarto OCRnxL jest zapisana do niskich 8 bitw, wysokie bajty zostan skopiowane do wyszych 8 bitw bufora lub rejestru OCRnx w tym samym cyklu zegarowym. Wymuszenie dopasowania na wyjciu W trybie generacji fal przy wyczonej modulacji szerokoci impulsu, dopasowanie na wyjciu komparatora moe zosta wymuszone przez zapisanie jedynki do bitu wymuszenia porwnania na wyjciu (FOCnx). Nie spowoduje to ustawienia flagi OCFnx ani przeadowania czy wyczyszczenia zegara. Wszystkie procesory zapisujc do rejestru TCNTn bd blokowa kade sprawdzenie dopasowania, ktre nastpi w nastpnym cyklu zegarowym, nawet gdy zegar jest zatrzymany. Ta cech pozwala rejestrowi OCRnx by inicjalizowanym t sam wartoci co licznik TCNTn bez wyzwolenia przerwania.

Zastosowanie Komparatora Fakt, e zapisywanie do licznika (TCNTn) blokuje wszystkie operacje porwnania na czas jednego cyklu zegarowego, sprawia e wystpuje ryzyko wystpienia bdu. Jeeli warto zapisana do TCNTn jest rwna wartoci OCRnx, porwnanie nie nastpi i w rezultacie wystpi nieprawidowa generacja fali. Nie wolno zapisywa jednoczenie zawartoci licznika (TCNTn) oraz wartoci maksymalnej (TOP) w trybie PWM. Sprawdzenie dopasowania dla wartoci maksymalnej zostanie zignorowane i licznik bdzie kontynuowa prac do wartoci 0xFFFF. Podobnie nie mona zapisywa jednoczenie TCNTn oraz wartoci minimalnej (BOTTOM) kiedy licznik liczy w d.

Trzeba zwrci uwag na to, e bity COMnx1:0 nie s podwjnie buforowane. Efekt Zmiany tych bitw bdzie natychmiastowy.
Jednostka porwnujca dopasowanie na wyjciu Bity trybu porwnania wyjcia (COMnx1:0) posiadaj dwie funkcje. Generator falowy uywa bitw COMnx1:0 dla zdefiniowania stanu porwnania wyjcia (OCnx) przy nastpnym porwnaniu dopasowania. Po drugie bity COMnx1:0 kontroluj rdo wyjciowe OCnx.

Generator falowy uywa bitw COMnx1:0 rnie w trybie normalnym, CTC i PWM. We wszystkich trybach ustawienie COMnx1:0=0 informuje generator, e adne dziaanie na rejestrze OCnx nie bdzie podjte przy nastpnym dopasowaniu. Zmiana bitw COMnx1:0 bdzie miaa efekt przy pierwszym dopasowaniu po zapisaniu bitw.

W trybie CTC i normalnym mona wymusi natychmiastowy efekt przez uycie strobujcych bitw FOCnx.
Tryby Operacji
Tryb operacji, czyli zachowanie Licznika i pinw porwnania wyjcia, jest zdefiniowane przez kombinacj bitw trybu generacji fal (WGM3:0) i trybu porwnania wyjcia (COMnx1:0). Bity trybu porwnania wyjcia nie maj wpywu na sekwencj liczenia, dopki okrelaj to bity trybu generacji fali. Bity COMnx1:0 okrelaj, czy generowany sygna wyjciowy powinien by odwrcony czy nie. Dla trybw rnych od PWM bity COMnx1:0 czy wyjcie powinno by ustawione, czyszczone czy przeczone przy porwnaniu.

Tryb Normalny Najprostszym trybem operacji jest tryb normalny (WGM3:0=0). W tym trybie licznik zawsze liczy w gr, i nie jest wykonywane czyszczenie licznika. Licznik gdy osiga swoj maksymaln warto (MAX=0xFFFF) zaczyna liczy od wartoci minimalnej (BOTTOM=0x0000). W tym trybie flaga przekroczenia zakresu (Timer/Counter Overflow Flag- TOVn ) zostanie ustawiona w tym samym cyklu zegarowym, w ktrym warto TCNTn staje si zerem. W tym przypadku flaga TOVn zachowuje si jak siedemnasty bit, z wyjtkiem tego e jest tylko ustawiana, nie czyszczona. Nie ma w tym trybie adnych specjalnych przypadkw do rozpatrywania. Nowa warto licznika moe by zapisana w kadej chwili. Jednostka przechwytujca sygnay wejciowe jest atwa do uycia w trybie normalnym. Komparator wyjciowy moe by uyty do generowania przerwa, nie zaleca si stosowania do generacji fal poniewa wtedy za bardzo obciony jest procesor. Tryb CTC (czyszczenia zegara) W trybie CTC (WGMn3:0=4 lub 12) rejestr OCRnA lub ICRn jest uywany do manipulowania rozdzielczoci licznika. W trybie CTC licznik jest czyszczony do zera kiedy warto licznika (TCNTn) jest zgodna z rejestrem OCRnA (WGM3:0=4) lub z rejestrem ICRn (WGMn3:0=12). Rejestry te mog okrela maksymaln warto licznika, a zatem i jego rozdzielczo. Ten tryb pozwala na wiksz kontrol nad dopasowaniem czstotliwoci na wyjciu. Upraszcza on take operacje liczenia zewntrznych zdarze. Na rysunku pokazano wykres czasowy dla trybu CTC. Warto licznika (TCNTn) jest zwikszana dopki nie wystpi zgodno z OCRnA lub ICRn. Wtedy nastpuje czyszczenie licznika.

Przerwanie moe zosta wygenerowane, za kadym razem gdy licznik osignie warto maksymaln (TOP) uywajc flagi ICFn lub OCFnA zgodnie z rejestrem uywanym do zdefiniowania wartoci maksymalnej. Jeeli przerwanie jest dostpne, podprogram obsugi przerwa moe zosta uyty do odwieania wartoci TOP. Jednak zmienianie wartoci maksymalnej na blisk wartoci minimalnej podczas pracy licznika naley robi bardzo ostronie jeeli tryb CTC nie jest podwjnie buforowany. Jeeli nowa warto maksymalna jest mniejsza od biecej wartoci licznika, to licznik tego nie wychwyci i bdzie liczy do swojej maksymalnej wartoci (0xFFFF) i zacznie liczy od zera. W wielu przypadkach jest to niepodane. Rozwizaniem jest uycie szybkiego trybu PWM, uywajc OCRnA dla zdefiniowania wartoci TOP (WGMn3:0=15). OCRnA bdzie wtedy podwjnie buforowany. Dla generowania fali na wyjciu w trybie CTC, wyjcie OCnA moe by ustawione na zmian swojego stanu logicznego przy kadym dopasowaniu. Robi si to ustawiajc bity trybu porwnania wyjcia na tryb zmiany (COMnA1:0=1). Generowana fala bdzie miaa maksymaln warto czstotliwoci gdy OCRnA jest ustawiony na zero (0x0000):

fOCnA = fclk_I/O/2 Czstotliwo generowanej fali jest okrelona nastpujcym wzorem:


f clk _ I / O 2 N (1 + OCRnA)

f OCnA =

Wspczynnik N przyjmuje wartoci 1,8,64,256,1024. Tak jak w trybie normalnym flaga TOV jest ustawiana w tym samym cyklu zegarowym, w ktrym licznik przechodzi z wartoci MAX do 0x0000. Szybki tryb Modulacji Szerokoci Impulsu(Szybki tryb PWM) Szybki tryb PWM (WGMn3:0=5,6,7,14,15) zapewnia opcj generacji fal wysokiej czstotliwoci. Szybki tryb rni si od innych trybw PWM operacj na pojedynczym zboczu. Licznik liczy w ptli od wartoci BOTTOM do wartoci TOP. W nieodwracajcym trybie porwnania wyjcia, wyjcie OCnx jest ustawiane przy porwnaniu rejestru OCRnx i TCNTn, i jest czyszczone przy wartoci maksymalnej (TOP). W trybie odwracajcym jest czyszczone przy porwnaniu i ustawiane przy TOP. Przez operacje wykonywane na pojedynczym zboczu czstotliwo pracy w szybkim trybie PWM moe by dwa razy wiksza ni przy operacjach wykonywanych na podwjnym zboczu. Wysoka czstotliwo czyni szybki tryb PWM odpowiedni do regulacji zasilania, prostowania, przetwornikw analogowo-cyfrowych. Minimalna rozdzielczo trybu PWM to 2-bity (ICRn lub OCRnA ustawione na 0x0003), a maksymalna rozdzielczo to 16-bitw (ICRn lub OCRnA ustawione na MAX). Wedug poniszego wzoru mona okreli rozdzielczo w bitach:

R FPWM =

log(TOP + 1) log(2)

W szybkim trybie PWM licznik jest inkrementowany dopki warto licznika nie jest zgodna z jedn z ustalonych wartoci: 0x00FF, 0x01FF, 0x03FF (WGMn3:0=5,6,7) lub z wartoci rejestru ICRn (WGMn3:0=14), lub te z wartoci rejestru OCRnA (WGMn3:0=15). Licznik jest wtedy czyszczony w nastpnym cyklu zegarowym. Na rysunku pokazano przebieg czasowy dla szybkiego trybu PWM.

Flaga przepenienia licznika TOVn jest ustawiana za kadym razem gdy licznik osiga warto TOP. W dodatku flaga ICnA lub ICFn jest ustawiana w tym samym cyklu zegarowym. Jeli jedno z przerwa jest wczone, podprogram obsugi przerwa moe by uyty do aktualizowania wartoci TOP. Podczas zmiany wartoci TOP program musi by pewny, e nowa warto jest rwna lub wiksza od zawartoci wszystkich rejestrw OCRnx. Jeli warto TOP jest od ktrego rejestru mniejsza, wtedy nigdy nie nastpi przypadek w ktrym licznik TCNTn i rejestr OCRnx bd miay t sam warto. Rejestr ICRn nie jest podwjnie buforowany. Znaczy to, e jeli zawarto ICRn jest zmieniona na nisk warto podczas pracy licznika bez przeliczania wstpnego, istnieje ryzyko, e nowa warto ICRn jest nisza od aktualnej wartoci TCNTn. W rezultacie licznik nie wykona porwnania przy wartoci maksymalnej(TOP). Licznik bdzie wtedy musia doliczy do wartoci 0xFFFF i zacz od zera. Rejestr OCRnA jest podwjnie buforowany. Pozwala to na zapisanie lokacji I/O rejestru OCRnA w dowolnym momencie. Kiedy tak si stanie, to zapisana warto zostanie umieszczona w buforowym rejestrze OCRnA. Rejestr OCRnA zostanie zaktualizowany now wartoci z rejestru buforowego w nastpnym cyklu zegarowym gdy TCNTn osignie warto TOP. Aktualizacja nastpi w tym samym cyklu, w ktrym TCNTn jest czyszczony i flaga TOVn jest ustawiona. Uycie rejestru ICRn dla zdefiniowania wartoci TOP dziaa dobrze dla ustalonych wartoci. Jednak uycie rejestru OCRnA jako wartoci TOP jest lepszym rozwizaniem ze wzgldu na podwjne buforowanie. W szybkim trybie PWM, moliwe jest generowanie fal na pinie OCnx. Ustawienie bitw COMnx1:0 na warto 2 spowoduje generacje fal nieodwrconych. Generacja fal odwrconych nastpi przy ustawieniu COMnx1:0 na warto 3. Czstotliwo mona obliczy wedug nastpujcej zalenoci:

f OCnxPWM =

f clk _ I / O N (1 + TOP )

Wspczynnik N przyjmuje wartoci 1,8,64,256,1024.


Graniczne wartoci rejestru OCRnx okrelaj specjalne zdarzenia podczas generacji w szybkim trybie PWM. Jeli OCRnx jest ustawiony na warto BOTTOM, to na wyjciu pojawi si ostry impuls dla kadego TOP+1-szego cyklu zegara. Ustawienie rejestru OCRnx na warto TOP, spowoduje pojawienie

si na wyjciu stanu wysokiego lub niskiego (w zalenoci od polaryzacji wyjcia ustawionej na bitach COMnx1:0). Generowane fale maj maksymaln czstotliwo:

fOCnA=fclk_I/O /2
gdy rejestr OCRnA jest ustawiony na zero (0x0000). Tryb Modulacji Szerokoci Impulsu z Korekcj Fazy Tryb modulacji szerokoci impulsu z korekcj fazy (WGMn3:0=1,2,3,10,11) zapewnia opcje generowania fal o wysokiej rozdzielczoci. Ten tryb podobnie jak tryb PWM z korekcj fazy i czstotliwoci bazuje na operacjach wykonywanych na podwjnym zboczu. Licznik liczy od wartoci BOTTOM (0x0000) do wartoci TOP, i nastpnie od TOP do BOTTOM. W nieodwracajcym trybie porwnania wyjcia, OCnx jest czyszczone przy dopasowaniu pomidzy TCNTn i OCRnx podczas liczenia w gr. OCnx jest ustawiane przy dopasowaniu podczas liczenia w d. Rozdzielczo modulacji szerokoci impulsu w tym trybie moe by ustawiona na 8-,9-,10-bit, lub moe by okrelona przez ICRn lub OCRnA. Minimalna rozdzielczo to 2 bity (ICRn lub OCRnA ustawione na 0x0003), a maksymalna to 16 bit (ICRn lub OCRnA ustawione na MAX). Rozdzielczo w bitach wyraona jest nastpujcym wzorem:

W omawianym trybie licznik jest inkrementowany dopki nie osignie jednej z wartoci: 0x00FF, 0x01FF, 0x02FF (WGMn3:0=1,2,3), wartoci w rejestrze ICRn(WGMn3:0=10) lub wartoci OCRnA (WGMn3:0=11). Wtedy licznik osign warto TOP i zmienia kierunek liczenia. Warto TCNTn bdzie rwna TOP na jeden cykl zegarowy. Poniszy przebieg przedstawia tryb PWM z korekcj fazy w sytuacji gdy OCRnA oraz ICRn s uywane do zdefiniowania wartoci TOP.

Flaga przepenienia licznika TOVn jest ustawiana za kadym razem gdy licznik osiga warto minimaln. Gdy rejestr OCRnA lub ICRn jest uywany do zdefiniowania wartoci TOP, flaga ICF lub OCnA jest ustawiana odpowiednio w tym samym cyklu w ktrym rejestr OCRnx jest aktualizowany. Flaga przerwania moe zosta wykorzystana do wygenerowania przerwania za kadym razem gdy licznik osignie warto TOP lub BOTTOM. Podczas zmiany wartoci TOP program musi by pewny, e nowa warto jest rwna lub wiksza od zawartoci wszystkich rejestrw OCRnx. Jeli warto TOP jest od ktrego rejestru mniejsza, wtedy nigdy nie nastpi przypadek w ktrym licznik TCNTn i rejestr OCRnx bd miay t sam warto. Zalecane jest uywanie trybu z korekcj fazy i czstotliwoci zamiast trybu z korekcj fazy gdy warto TOP jest zmieniana w czasie pracy licznika. Kiedy uywamy staej wartoci TOP nie praktycznie rnicy midzy tymi trybami. W trybie PWM z korekcj fazy moliwe jest generowanie fali na pinie OCnx. Czstotliwo na wyjciu w tym trybie mona obliczy wedug wzoru:

f OCnxPWM =

f clk _ I / O

2 N TOP

Wspczynnik N przyjmuje wartoci 1,8,64,256,1024. Graniczne wartoci rejestru OCRnx reprezentuj specjalne przypadki podczas generacji w trybie PWM z korekcj fazy. Jeli OCRnx jest ustawiona na warto BOTTOM to na wyjciu pojawi si stan niski, a jeli rejestr jest ustawiony na TOP to na wyjciu pojawi si stan wysoki. W trybie inwersyjnym wyjcie bdzie miao przeciwne logicznie wartoci. Tryb modulacji szerokoci impulsu z korekcj fazy i czstotliwoci Tryb modulacji szerokoci impulsu z korekcj fazy i czstotliwoci (WGMn3:0=8, 9) zapewnia opcj generowania fali wysokiej czstotliwoci. Ten tryb podobnie jak tryb PWM z korekcj fazy bazuje na operacjach wykonywanych na podwjnym zboczu. Licznik liczy od wartoci BOTTOM (0x0000) do wartoci TOP, i nastpnie od TOP do BOTTOM. W nieodwracajcym trybie porwnania wyjcia, OCnx jest czyszczone przy dopasowaniu pomidzy TCNTn i OCRnx podczas liczenia w gr. OCnx jest ustawiane przy dopasowaniu podczas liczenia w d. Gwn rnic pomidzy trybem PWM z korekcj fazy a trybem PWM z korekcj fazy i czstotliwoci jest czas w ktrym rejestr OCRnx jest aktualizowany przez rejestr buforowy. Rozdzielczo modulacji szerokoci impulsu w tym trybie moe by okrelona przez ICRn lub OCRnA. Minimalna rozdzielczo to 2 bity (ICRn lub OCRnA ustawione na 0x0003), a maksymalna to 16 bit (ICRn lub OCRnA ustawione na MAX). Rozdzielczo w bitach wyraona jest nastpujcym wzorem:

W szybkim trybie PWM licznik jest inkrementowany dopki warto licznika nie jest zgodna z jedn z wartoci rejestru ICRn (WGMn3:0=8), lub te z wartoci rejestru OCRnA (WGMn3:0=9). Licznik osiga wtedy warto TOP i zmienia kierunek liczenia. Warto TCNTn bdzie rwna TOP na czas jednego cyklu.

Poniszy przebieg przedstawia sytuacj gdy OCRnA lub ICRn s uyte do okrelenia wartoci TOP:

Flaga przepenienia licznika TOVn jest ustawiana w tym samym cyklu, w ktrym rejestr OCRnx jest aktualizowany. Gdy OCRnA lub ICRn s uywane do zdefiniowania wartoci TOP, flagi OCnA lub ICFn s ustawiane gdy TCNTn osignie warto TOP. Flaga przerwania moe zosta wykorzystana do wygenerowania przerwania za kadym razem gdy licznik osignie warto TOP lub BOTTOM. Podczas zmiany wartoci TOP program musi by pewny, e nowa warto jest rwna lub wiksza od zawartoci wszystkich rejestrw OCRnx. Jeli warto TOP jest od ktrego rejestru mniejsza, wtedy nigdy nie nastpi przypadek w ktrym licznik TCNTn i rejestr OCRnx bd miay t sam warto. Czstotliwo PWM w trybie korekcji fazy i czstotliwoci jest okrelona wzorem:

Wspczynnik N przyjmuje wartoci 1,8,64,256,1024. Graniczne wartoci rejestru OCRnx reprezentuj specjalne przypadki podczas generacji w trybie PWM z korekcj fazy i czstotliwoci. Jeli OCRnx jest ustawiona na warto BOTTOM to na wyjciu pojawi si stan niski, a jeli rejestr jest ustawiony na TOP to na wyjciu pojawi si stan wysoki. W trybie inwersyjnym wyjcie bdzie miao przeciwne logicznie wartoci.

PRZEBIEGI CZASOWE

Poniszy wykres przedstawia przebieg czasowy ustawiania rejestru OCRnx.

Poniszy wykres przedstawia ten sam przebieg, lecz z wczon opcj przelicznika wstpnego:

Kolejny przebieg pokazuje sekwencj liczenia blisko wartoci maksymalnej (TOP) dla rnych trybw:

Ten wykres rwnie pokazuje sekwencj liczenia, lecz z wczon opcj przelicznika wstpnego:

Opis wybranych rejestrw 16-bitowego Zegara/Licznika


Rejestr kontrolny A Zegara/Licznika1 TCCR1A
7 COM1A1 Odczyt/Zapis R/W (R/W) Warto 0 pocztkowa Bit 6 COM1A0 R/W 0 5 COM1B1 R/W 0 4 COM1B0 R/W 0 3 COM1C1 R/W 0 2 COM1C0 R/W 0 1 WGM11 R/W 0 0 WGM10 R/W 0 TCCR1A

Rejestr kontrolny A Zegara/Licznika3 TCCR3A


7 COM3A1 Odczyt/Zapis R/W (R/W) Warto 0 pocztkowa Bit 6 COM3A0 R/W 0 5 COM3B1 R/W 0 4 COM3B0 R/W 0 3 COM3C1 R/W 0 2 COM3C0 R/W 0 1 WGM31 R/W 0 0 WGM30 R/W 0 TCCR3A

Bit 7:6 COMnA1:0: Tryb porwnania wyjcia dla Kanau A Bit 5:4 COMnB1:0: Tryb porwnania wyjcia dla Kanau B Bit 3:2 COMnC1:0: Tryb porwnania wyjcia dla Kanau C Ponisza tabela pokazuje funkcje bitu COMnx1:0, gdy bity WGMn3:0 s ustawione na tryb normalny lub CTC: COMnA1/COMnB1/ COMnA0/COMnB0/ Opis COMnC1 COMnC0

0 0 1 1

0 1 0 1

Normalne dziaanie portu, OCnA/OCnB/OCnC - odczone Przeczenie OCnA/OCnB/OCnC przy dopasowaniu Wyczyszczenie OCnA/OCnB/OCnC przy dopasowaniu (ustawienie wyjcia na niski poziom) Ustawienie OCnA/OCnB/OCnC przy dopasowaniu (Ustawienie wyjcia na poziom wysoki)

Kolejna tabela pokazuje funkcje bitu COMnx1:0 gdy bity WGMn3:0 s ustawione na tryb szybki PWM: COMnA1/COMnB1/ COMnA0/COMnB0/ Opis
COMnC1 COMnC0

1 1

0 1

Normalne dziaanie portu, OCnA/OCnB/OCnC - odczone WGMn3=0 Normalne dziaanie portu, OCnA/OCnB/OCnC odczone. WGMn3=1: Przeczenie OCnA przy dopasowaniu, OCnB/OCnC zarezerwowane. Wyczyszczenie OCnA/OCnB/OCnC przy dopasowaniu. Ustawienie OCnA/OCnB/OCnC przy wartoci TOP. Ustawienie OCnA/OCnB/OCnC przy dopasowaniu. Czyszczenie OCnA/OCnB/OCnC przy wartoci TOP.

Nastpna tabela pokazuje funkcje bitu COMnx1:0 gdy bity WGMn3:0 s ustawione na tryb PWM z korekcj fazy i czstotliwoci: COMnA1/COMnB1/ COMnA0/COMnB0/ Opis COMnC1 COMnC0

Normalne dziaanie portu, OCnA/OCnB/OCnC - odczone WGMn3=0 Normalne dziaanie portu, OCnA/OCnB/OCnC odczone. WGMn3=1: Przeczenie OCnA przy dopasowaniu, OCnB/OCnC zarezerwowane. Wyczyszczenie OCnA/OCnB/OCnC przy dopasowaniu podczas liczenia w gr. Ustawienie OCnA/OCnB/OCnC przy dopasowaniu podczas liczenia w d. Ustawienie OCnA/OCnB/OCnC przy liczeniu w gr. Czyszczenie OCnA/OCnB/OCnC przy dopasowaniu podczas liczenia w d.

Bit 1:0 WGMn1:0: Tryb Generacji Fali Te bity kontroluj sekwencj liczenia, rdo wartoci maksymalnej (TOP) licznika, oraz okrlaj jaki typ fal zostanie wygenerowany.

Opis bitw trybu generacji fali:

Tryb 0 1 2 3 4 5 6 7 8 9

WGMn3 0 0 0 0 0 0 0 0 1 1

WGMn2 (CTCn) 0 0 0 0 1 1 1 1 0 0

WGMn1 (PWMn1) 0 0 1 1 0 0 1 1 0 0

10 11 12 13 14 15

1 1 1 1 1 1

0 0 1 1 1 1

1 1 0 0 1 1

Tryb Operacji WGMn0 (PWMn0) Zegara/Licznika 0 Normalny 1 PWM, korekcja fazy, 8-bit 0 PWM, korekcja fazy, 9-bit 1 PWM, korekcja fazy, 10-bit 0 CTC 1 Szybki PWM, 8-bit 0 Szybki PWM, 9-bit 1 Szybki PWM, 10-bit 0 PWM, korekcja fazy i czstotliwoci 1 PWM, korekcja fazy i czstotliwoci 0 PWM, korekcja fazy 1 PWM, korekcja fazy 0 CTC 1 (zarezerwowany) 0 Szybki PWM 1 Szybki PWM

TOP 0Xfff 0x00FF 0x01FF 0x03FF OCRnA 0x00FF 0x01FF 0x03FF ICRn OCRnA

Aktualizacja Ustawienie OCRnx flagi TOVn przy: przy: Natychmiast MAX TOP BOTTOM TOP TOP Natychmiast TOP TOP TOP BOTTOM BOTTOM BOTTOM BOTTOM MAX TOP TOP TOP BOTTOM BOTTOM

ICRn OCRnA ICRn ICRn OCRnA

TOP TOP Natychmiast TOP TOP

BOTTOM BOTTOM MAX TOP TOP

Rejestr kontrolny B Zegara/Licznika1 TCCR1B


Bit Odczyt/Zapis (R/W) Warto pocztkowa 7 INCN1 R/W 0 6 ICES1 R/W 0 5 R 0 4 WGM13 R/W 0 3 WGM12 R/W 0 2 CS12 R/W 0 1 CS11 R/W 0 0 CS10 R/W 0 TCCR1B

Rejestr kontrolny B Zegara/Licznika3 TCCR3B


Bit Odczyt/Zapis (R/W) Warto pocztkowa 7 ICNC3 R/W 0 6 ICES3 R/W 0 5 R 0 4 WGM33 R/W 0 3 WGM32 R/W 0 2 CS32 R/W 0 1 CS31 R/W 0 0 CS31 R/W 0 TCCR3B

Bit 7 ICNCn: Reduktor Zakce Wejciowych Ustawienie tych bitw (na warto 1) aktywuje reduktor zakce, co powoduje e sygna wejciowy na pinie przechwytywania wejcia ICPn jest filtrowany. Przechwytywanie sygnaw na wejciu jest wtedy opnione.

Bit 6 ICESn: Wybr Zbocza Ten bit okrela ktre zbocze bdzie uyte na pinie ICPn do wywoania przechwyconego zdarzenia. Kiedy bit ICESn jest ustawiony na zero, to zostanie uyte opadajce zbocze. Jeli ustawimy ICESn na jeden, narastajce zbocze wywoa zdarzenia. Jeeli rejestr ICRn jest uywany jako warto TOP dla licznika, to pin ICPn zostaje odczony. Bit 5 Bit Zarezerwowany Bit 4:3 WGMn3:2: Tryb Generacji Fali Bit 2:0 CSn2:0: Wybr rda taktowania Trzy bity okrelaj rdo taktowania licznika. Opis bitw: CSn2 CSn1

CSn0
0 1 0 1 0 1 0 1

Opis
adne rdo nie zostao wybrane clkI/O/1 clkI/O/8 clkI/O/64 clkI/O/256 clkI/O/1024 zewntrzne rdo podczone do Tn (taktowanie opadajcym zboczem) zewntrzne rdo podczone do Tn (taktowanie narastajcym zboczem)

0 0 0 0 1 1 1 1

0 0 1 1 0 0 1 1

Rejestr kontrolny C Zegara/Licznika3 TCCR3C


Bit Odczyt/Zapis (R/W) Warto pocztkowa 7 FOC3A W 0 6 FOC3B W 0 5 FOC3C W 0 4 R 0 3 R 0 2 R 0 1 R 0 0 R 0 TCCR3C

Bit 7 FOCnA: Wymuszenie Porwnania na Wyjciu dla Kanau A Bit 6 FOCnB: Wymuszenie Porwnania na Wyjciu dla Kanau B Bit 5 FOCnC: Wymuszenie Porwnania na Wyjciu dla Kanau C Bity FOCnA/FOCnB/FOCnC s aktywne tylko gdy bity WGMn3:0 s ustawione na tryb inny ni PWM. Bit 4:0 Bity Zarezerwowane Rejestr Porwnawczy 1A OCR1AH oraz OCR1AL
Bit 7 6 5 4 3 2 1 0 OCR1AH OCR1AL

OCR1A[15:8]
OCR1A[7:0]

Odczyt/Zapis (R/W) Warto pocztkowa

R/W 0

R/W 0

R/W 0

R/W 0

R/W 0

R/W 0

R/W 0

R/W 0

Rejestr Porwnawczy 1B OCR1BH oraz OCR1BL


Bit 7 6 5 4 3 2 1 0 OCR1BH OCR1BL R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0

OCR1B[15:8]
OCR1B[7:0]
Odczyt/Zapis (R/W) Warto pocztkowa R/W 0 R/W 0

Rejestr Porwnawczy 1C OCR1CH oraz OCR1CL


Bit 7 6 5 4 3 2 1 0 OCR1CH OCR1CL R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0

OCR1C[15:8]
OCR1C[7:0]
Odczyt/Zapis (R/W) Warto pocztkowa R/W 0 R/W 0

Rejestr Porwnawczy 3A OCR1AH oraz OCR1AL


Bit 7 6 5 4 3 2 1 0 OCR3AH OCR3AL R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0

OCR3A[15:8]
OCR3A[7:0]
Odczyt/Zapis (R/W) Warto pocztkowa R/W 0 R/W 0

Rejestr Porwnawczy 3B OCR3BH oraz OCR3BL


Bit 7 6 5 4 3 2 1 0 OCR3BH OCR3BL R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0

OCR3B[15:8]
OCR3B[7:0]
Odczyt/Zapis (R/W) Warto pocztkowa R/W 0 R/W 0

Rejestr Porwnawczy 3C OCR3CH oraz OCR3CL


Bit 7 6 5 4 3 2 1 0 OCR3CH OCR3CL R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0

OCR3C[15:8]
OCR3C[7:0]
Odczyt/Zapis (R/W) Warto pocztkowa R/W 0 R/W 0

Wyjciowy rejestr porwnawczy zawiera 16-bitow warto ktra jest cigle porwnywana z wartoci licznika (TCNTn). Porwnanie moe zosta uyte do generowania przerwania lub fali na pinie OCnx. Dostp procesora do rejestrw odbywa si poprzez 8-bitowy rejestr TEMP. Ten rejestr jest dzielony przez wszystkie 16-bitowe rejestry.

Wejciowy Rejestr 1 ICR1H oraz ICR1L


Bit 7 6 5 4 3 2 1 0 ICR1H ICR1L R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0

ICR1[15:8]
ICR1[7:0]
Odczyt/Zapis (R/W) Warto pocztkowa R/W 0 R/W 0

Wejciowy Rejestr 3 ICR3H oraz ICR3L


Bit 7 6 5 4 3 2 1 0 ICR3H ICR3L R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0

ICR3[15:8]
ICR3[7:0]
Odczyt/Zapis (R/W) Warto pocztkowa R/W 0 R/W 0

Dostp procesora do rejestrw odbywa si poprzez 8-bitowy rejestr TEMP. Ten rejestr jest dzielony przez wszystkie 16-bitowe rejestry.

UKAD CZASOWO-LICZNIKOWY 3, UKAD CZASOWOLICZNIKOWY 2, UKAD CZASOWO-LICZNIKOWY 1, PRESCALERY


Ukad czasowo-licznikowy 3, ukad czasowo-licznikowy 2, ukad czasowo-licznikowy 1 wspdziel ten sam modu prescalera, ale mog mie rne jego ustawienia. Poniszy opis odnosi si do wszystkich wspomnianych ukadw czasowo-licznikowych. WEWNTRZNE RDO ZEGAROWE Ukad czasowo-licznikowy moe by taktowany bezporednio przez zegar systemowy (przez ustawienie CSn 2:0 = 1). Operacje wykonuj si wtedy najszybciej z maksymaln czstotliwoci zegara ukadu czasowo-licznikowego rwn czstotliwoci zegara systemowego (fCLK_I/O). Inne rozwizanie polega na

uyciu jednego z czterech zaworw (taps) prescalera jako rda zegarowego. Zegar prescalera ma wwczas czstotliwo rwn fCLK_I/O/8, fCLK_I/O/64, fCLK_I/O)/256 lub fCLK_I/O/1024. RESET PRESCALERA Prescaler dziaa niezalenie od ukadu wyboru zegara ukadu czasowo-licznikowego i jest wspdzielony przez ukad czasowo-licznikowy 1, ukad czasowo-licznikowy 2 oraz ukad czasowo-licznikowy 3. Poniewa wybr zegara ukadu czasowo-licznikowego nie oddziauje na prescaler, jego stan bdzie mia znaczenie w sytuacjach w ktrych preskalowany zegar jest uywany. Przykad preskalowania artefaktw (artifacts) pojawia si gdy ukad czasowy jest aktywny i taktowany przez prescaler (6 > CSn 2:0 >1). Liczba taktw zegara systemowego od chwili gdy ukad czasowy jest aktywny do momentu pojawienia si pierwszego zliczenia zawiera si od 1 do N+1, gdzie N jest dzielnikiem prescalera (8, 64, 256, 1024). Istnieje moliwo uycia resetu prescalera do synchronizacji ukadu czasowo-licznikowego z wykonaniem programu. Jednak w tym przypadku naley zachowa ostrono jeeli inny ukad czasowy ktry wspdzieli prescaler rwnie uywa preskalowania. Reset prescalera ma wpyw na okres prescalera wszystkich ukadw czasowo-licznikowych jakie s do niego podczone. ZEWNTRZNE RDO ZEGAROWE Zewntrzne rdo zegarowe podpite do pinu Tn moe zosta uyte jako zegar ukadu czasowolicznikowego (clkT1, clkT2, clkT3). Pin jest prbkowany raz w kadym takcie zegara systemowego przez pin ukadu synchronizujcego. Zsynchronizowany (prbkowany) sygna jest przepuszczany przez detektor zbocza. Rys. 58 pokazuje schemat blokowy ukadu synchronizacji i detektora zbocza. Rejestry s taktowane narastajcym zboczem wewntrznego zegara systemowego (clkI/O). Zatrzask jest przezroczysty dla wysokich okresw wewntrznego zegara systemowego. Detektor zbocza generuje jeden impuls clkT1/clkT2/clkT3 dla kadego narastajcego bd opadajcego zbocza jakie wykryje. Rys. 58 Prbkowanie pinu Tn

Ukad synchronizacji i detektor zbocza wprowadzaj opnienie od 2,5 do 3,5 taktu zegara systemowego.

Aktywacja i dezaktywacja wejcia zegara musi zosta dokonana kiedy Tn jest stabilny przez przynajmniej jeden takt zegara systemowego, w przeciwnym razie istnieje ryzyko e zostanie wygenerowany faszywy impuls zegara ukadu czasowo-licznikowego. Kada poowa okresu dodanego zewntrznego zegara musi by dusza ni jeden takt zegara systemowego aby zapewni waciwe prbkowanie. Zewntrzny zegar musi mie zagwarantowan czstotliwo mniejsz od poowy czstotliwoci zegara systemowego (fExtClk < fclk_I/O/2). Od czasu gdy detektor zbocza uywa prbkowania, maksymalna czstotliwo zewntrznego zegara jaka moe zosta przez niego wykryta rwna si poowie czstotliwoci prbkowania (twierdzenie Nyquista). Zmienno czstotliwoci zegara systemowego i cyklu roboczego jest spowodowana przez tolerancj rda oscylacji (kryszta, rezonator i kondensatory) sprawiaj, e zalecana maksymalna czstotliwo zewntrznego zegara jest mniejsza ni fCLK_I/O/2,5. Zewntrzne rdo zegarowe nie moe by preskalowane. Rys. 59 Prescaler ukadw czasowych

REJESTR SPECJALNY WEJCIA/WYJCIA SFIOR

Bit 7 TSM: Tryb synchronizacji ukadu czasowo-licznikowego Wpisanie 1 na bit TSM spowoduje e PSR0 i PSR321 stan si rejestrami, ktre utrzymaj sw pocztkow warto dopki nie zostan zapisane ponownie lub bit TSM nie zostanie zmieniony na zero. Ten tryb jest uyteczny jeeli chcemy zsynchronizowa ukady czasowo-licznikowe. Ustawienie wszystkich bitw TSM oraz odpowiednich/odpowiedniego bitw/bitu PSR spowoduje e odpowiednie ukady czasowo-licznikowe zostan zatrzymane i mog zosta skonfigurowane t

sam wartoci bez ryzyka, e jeden z nich przesunie si naprzd podczas konfiguracji. Kiedy bit TSM jest ustawiony na zero ukady czasowo-licznikowe zaczynaj liczy rwnoczenie. Bit 0 PSR321: Reset prescalera ukadu czasowo-licznikowego 3, ukadu czasowolicznikowego 2, ukadu czasowo-licznikowego 1 Wpisanie na bit PSR321 jedynki resetuje prescaler ukadu czasowo-licznikowego 3, ukadu czasowo-licznikowego 2 i ukadu czasowo-licznikowego 1. Bit zostanie skasowany sprztowo po rozpoczciu operacji. Wpisanie zera na ten bit nie przynosi adnych efektw. Naley zauway e wszystkie ukady czasowo-licznikowe dziel ten sam prescaler i reset tego prescalera ma wpyw na wszystkie ukady czasowe. Bit zawsze jest odczytywany jako zero.

8-BITOWY LICZNIK PWM


Gwne cechy 8-bitowego Timera/Licznika2: - Licznik z pojedynczym kanaem - Timer z zerowaniem przy zgodnoci z zadanym warunkiem (samoprzeadowanie) - Bezhazardowy modulator szerokoci impulsu z poprawn faz - Generator - Licznik zdarze zewntrznych - rda przerwa przepenienia i porwnania (TOV2, OCF2) Uproszczony schemat blokowy licznika:

BOTTOM zawarto licznika wynosi 0x00 MAX zawarto licznika wynosi 0xFF

TOP zawarto licznika jest rwna najwyszej wartoci w sekwencji liczenia

REJESTRY
Rejestr licznika TCNT2 oraz rejestr porwnawczy OCR2 s rejestrami 8-bitowymi. Wszystkie sygnay przerwa s umieszczane w rejestrze TIFR. Kade przerwanie jest indywidualnie maskowane przez rejestr TIMSK. Licznik moe by sterowany wewntrznie poprzez prescalera lub zewntrznie poprzez pin T2. Licznik jest nieaktywny, gdy adne rdo nie jest wybrane. Podwjnie buforowany rejestr OCR2 jest porwnywany z wartoci licznika przez cay czas. Wyniki porwnania moe by przez generator.

rda taktowania
Licznik moe by taktowany przez wewntrzne lub zewntrzne rdo. Wyboru dokonuje si przez ustawienie bitw CS22:0 znajdujcych si w rejestrze TCCR2.

Jednostka liczca
Gwn czci 8-bitowego licznika jest programowalna dwukierunkowa jednostka liczca:

Count zwikszenie lub zmniejszenie TCNTn o 1. Direction Wybr pomidzy inkrementacj i dekrementacj. Clear Wyzerowanie TCNTn (ustawienie wszystkich bitw na zero). clkTn Impuls zegara/licznika. TOP Sygnalizuje e TCNTn osign warto maksymaln. BOTTOM Sygnalizuje e TCNTn osign warto minimaln.

W zalenoci od wybranego trybu licznik jest czyszczony, inkrementowany lub dekrementowany za kadym impulsem zegara. Impulsy mog by generowane z zewntrznego lub zewntrznego rda w zalenoci od ustawienia bitw wyboru zegara(CS22:0). Jeeli adne rdo nie jest wybrane (CS22:0=0) licznik jest zatrzymany Sekwencja liczenia jest okrelana za pomoc bitw WGM01 i WGM00 zlokalizowanych w rejestrze kontrolnym TCCR2.
Flaga przepeniena licznika TOV2 jest ustawiana zgodnie z trybem wybranym przez bity WGM21:0. TOV2 moe by uyta do generowania przerwa.

Komparator
8-bitowy komparator cigle porwnuje zawarto TCNT2 z zawartoci rejestru OCR2. Kiedy zawartoci s takie same, kompartor sygnalizuje dopasowanie. Spowoduje to ustawienie flagi OCF2 w nastpnym cyklu. Jeeli OCIE2 = 1, to flaga OCF2 generuje przerwanie. Flaga jest automatycznie czyszczona po wykonaniu przerwania.

Rejestr OCR2 jest podwujnie buforowany, gdy uywany jest jeden z trybw PWM(modulacja szerokoci impulsu). W trybie normalnym i CTC podwjne buforowanie jest niedostpne. Przy podwjnym buforowaniu procesor posiada dostp do rejestru buforowego OCR2. Jeeli podwjne buforowanie jest wyczone procesor ma bezporedni dostp do rejestru OCR2.

Wymuszanie komparacji wyjcia


W trybie generacji przebiegw nie-PWM wyjcie komparatora moe zosta wymuszone za pomoc zapisu jedynki do bitu FOC2 tak aby speniao przewidzian funkcj .Czynno ta nie spowoduje ustawienia flagi OCF2 ani powtrnego zaadowania/wyzerowania timera ,lecz stan pinu OC2 zostanie uaktualniony tak jakby stao si to w przypadku rzeczywistej zgodnoci porwnywanych wartoci (ustawienia bitu COM21:0 definiuj czy pin OC2 jest ustawiony, wyzerowany lub zmieni warto) Wszystkie operacje zapisywania przez procesor rejestru TCNT2 blokuj kade porwnanie, ktre wystpi w nastpnym cyklu zegarowym, nawet gdy licznik jest zatrzymany. Dziki temu OCR2 moe by inicjalizowany t sam wartoci co TCNT2 bez wywoywania przerwania. Uycie jednostki komparacji wyjcia Jeli zapis TCNT2 w dowolnym trybie pracy zablokuje wszystkie moliwoci porwnania na jeden okres zegara to istniej zagroenia zwizane ze zmian TCNT2 gdy uyty jest jakikolwiek kana komparacji wyjcia, niezalenie od tego czy Timer/Licznik zlicza czy nie. Jeeli warto zapisana do TCNT2 rwna jest wartoci OCR2 wtedy dobry rezultat porwnania moe zosta przeoczony czego skutkiem bdzie bd w generowanym przebiegu. Podobnie nie naley zapisywa wartoci do TCNT2 rwnej BOTTOM kiedy licznik zlicza w d. Jednostka zgodnoci komparacji wyjcia

Bity trybu porwnywania wyjcia (COM21:0) maj dwie funkcje. Generator przebiegw uywa bitw COM21:0 do definiowania stanu porwnania wyjcia (OC2) w sprawdzeniu zgodnoci nastpnego porwnania. Bity COM21:0 kontroluj rwnie pin OC2.

Generator falowy uywa bitw COM21:0 rnie w trybie normalnym, CTC i PWM. We wszystkich trybach ustawienie COM21:0=0 informuje generator, e adne dziaanie na rejestrze OCnx nie bdzie podjte przy nastpnym dopasowaniu. Zmiana bitw COMnx1:0 bdzie miaa efekt przy pierwszym dopasowaniu po zapisaniu bitw. W trybie CTC i normalnym mona wymusi natychmiastowy efekt przez uycie strobujcych bitw FOC2.

Tryby Operacji Tryb operacji, czyli zachowanie Licznika i pinw porwnania wyjcia, jest zdefiniowane przez kombinacj bitw trybu generacji fal (WGM21:0) i trybu porwnania wyjcia (COM21:0). Bity trybu porwnania wyjcia nie maj wpywu na sekwencj liczenia, dopki okrelaj to bity trybu generacji fali. Bity COM21:0 okrelaj, czy generowany sygna wyjciowy powinien by odwrcony czy nie. Dla trybw rnych od PWM bity COM21:0 czy wyjcie powinno by ustawione, czyszczone czy przeczone przy porwnaniu.
Tryb Normalny Najprostszym trybem operacji jest tryb normalny (WGM21:0=0). W tym trybie licznik zawsze liczy w gr, i nie jest wykonywane czyszczenie licznika. Licznik gdy osiga swoj maksymaln warto (MAX=0xFF) zaczyna liczy od wartoci minimalnej (0x00). W tym trybie flaga przekroczenia zakresu TOV2 zostanie ustawiona w tym samym cyklu zegarowym, w ktrym warto TCNT2 staje si zerem. W tym przypadku flaga TOV2 zachowuje si jak dziewity bit, z wyjtkiem tego e jest tylko ustawiana, nie czyszczona. Nie ma w tym trybie adnych specjalnych przypadkw do rozpatrywania. Nowa warto licznika moe by zapisana w kadej chwili. Komparator wyjciowy moe by uyty do generowania przerwa, nie zaleca si stosowania do generacji fal poniewa wtedy za bardzo obciony jest procesor. Tryb CTC (czyszczenia zegara)

W trybie CTC (WGM21:0=2) rejestr OCR2 jest uywany do manipulowania rozdzielczoci licznika. W trybie CTC licznik jest czyszczony do zera kiedy warto licznika (TCNT2) jest zgodna z rejestrem OCR2. Rejestr ten moe okrela maksymaln warto licznika, a zatem i jego rozdzielczo. Ten tryb pozwala na wiksz kontrol nad dopasowaniem czstotliwoci na wyjciu. Upraszcza on take operacje liczenia zewntrznych zdarze. Na rysunku pokazano wykres czasowy dla trybu CTC. Warto licznika (TCNT2) jest zwikszana dopki nie wystpi zgodno z OCR2. Wtedy nastpuje czyszczenie licznika.

Przerwanie moe zosta wygenerowane, za kadym razem gdy licznik osignie warto maksymaln (TOP) uywajc flagi OCF2. Jeeli przerwanie jest dostpne, podprogram obsugi przerwa moe zosta uyty do odwieania wartoci TOP. Jednak zmienianie wartoci maksymalnej na blisk wartoci minimalnej podczas pracy licznika naley robi bardzo ostronie jeeli tryb CTC nie jest podwjnie buforowany. Jeeli nowa warto maksymalna jest mniejsza od biecej wartoci licznika, to licznik tego nie wychwyci i bdzie liczy do swojej maksymalnej wartoci (0xFF) i zacznie liczy od zera.

Dla generowania fali na wyjciu w trybie CTC, wyjcie OCnA moe by ustawione na zmian swojego stanu logicznego przy kadym dopasowaniu. Robi si to ustawiajc bity trybu porwnania wyjcia na tryb zmiany (COM21:0=1). Generowana fala bdzie miaa maksymaln warto czstotliwoci gdy OCR2 jest ustawiony na zero (0x00): fOC2 = fclk_I/O/2 Czstotliwo generowanej fali jest okrelona nastpujcym wzorem:
f OCn = f clk _ I / O 2 N (1 + OCRn)

Wspczynnik N przyjmuje wartoci 1,8,64,256,1024. Tak jak w trybie normalnym flaga TOV2jest ustawiana w tym samym cyklu zegarowym, w ktrym licznik przechodzi z wartoci MAX do 0x00. Szybki tryb Modulacji Szerokoci Impulsu(Szybki tryb PWM) Szybki tryb PWM (WGM21:0=1) zapewnia opcj generacji fal wysokiej czstotliwoci. Szybki tryb rni si od innych trybw PWM operacj na pojedynczym zboczu. Licznik liczy w ptli od wartoci BOTTOM do wartoci TOP. W nieodwracajcym trybie porwnania wyjcia, wyjcie OC2 jest czyszczone przy porwnaniu rejestru OCR2 i TCNT2, i jest ustawiane przy wartoci minimalnej (BOTTOM). W trybie odwracajcym jest ustawiane przy porwnaniu i czyszczone przy BOTTOM. Przez operacje wykonywane na pojedynczym zboczu czstotliwo pracy w szybkim

trybie PWM moe by dwa razy wiksza ni przy operacjach wykonywanych na podwjnym zboczu. Wysoka czstotliwo czyni szybki tryb PWM odpowiedni do regulacji zasilania, prostowania, przetwornikw analogowo-cyfrowych. W szybkim trybie PWM licznik jest inkrementowany dopki nie osignie MAX. Nastpnie licznik jest czyszczony w nastpnym cyklu zegarowym.

Przebieg czasowy dla omawianego trybu:

Flaga przepenienia TOV2 jest ustawiana za kadym razem gdy licznik osiga Max. W szybkim trybie PWM komparator umoliwia generowanie przebiegw PWM na pinie OC2. Ustawienie bitw COM21:0 na warto 2 spowoduje generacje przebiegw odwrconych, a ustawienie tych bitw na warto 3 nieodwrconych. Fale PWM s generowane poprzez ustawienie (lub czyszczenie) rejestru OC2 przy zgodnoci porwnania pomidzy OCR2 i TCNT2, i czyszczenie (lub ustawianie) rejestru OC2 w cyklu zegarowym w ktrym licznik jest czyszczony (zmiana stanu z MAX na BOTTOM). Czstotliwo mona obliczy wedug wzoru:

f OCnPWM =

f clk _ I / O N 256

Wspczynnik N przyjmuje wartoci 1,8,64,256,1024.


Graniczne wartoci rejestru OCR2 okrelaj specjalne zdarzenia podczas generacji w szybkim trybie PWM. Jeli OCR2 jest ustawiony na warto BOTTOM, to na wyjciu pojawi si ostry impuls dla kadego MAX+1-szego cyklu zegara. Ustawienie rejestru OCRnx na warto MAX, spowoduje pojawienie si na wyjciu stanu wysokiego lub niskiego (w zalenoci od polaryzacji wyjcia ustawionej na bitach COMnx1:0). Czstotliwo generacji rwn 50% cyklu pracy, mona osign poprzez ustawienie OC2 na zmian swojego stanu logicznego przy dopasowaniu (COM21:0=1). Generowane fale maj maksymaln czstotliwo:
fOC2=fclk_I/O /2

gdy rejestr OCR2 jest ustawiony na zero (0x00). Tryb Modulacji Szerokoci Impulsu z Korekcj Fazy Tryb modulacji szerokoci impulsu z korekcj fazy (WGM21:0=3) zapewnia opcje generowania fal o wysokiej rozdzielczoci. Ten tryb bazuje na operacjach wykonywanych na podwjnym zboczu. Licznik liczy od wartoci BOTTOM do wartoci MAX, i nastpnie od MAX do BOTTOM. W nieodwracajcym trybie porwnania wyjcia, OC2 jest czyszczone przy dopasowaniu pomidzy TCNT2 i OCR2 podczas liczenia w gr. OC2 jest ustawiane przy dopasowaniu podczas liczenia w d. W omawianym trybie licznik jest inkrementowany dopki nie osignie wartoci MAX. Wtedy licznik zmienia kierunek liczenia. Warto TCNTn bdzie rwna MAX na jeden cykl zegarowy.

Poniszy przebieg przedstawia tryb PWM z korekcj :

Flaga przepenienia licznika TOV2 jest ustawiana za kadym razem gdy licznik osiga warto BOTTOM. Flaga przerwania moe zosta wykorzystana do wygenerowania przerwania za kadym razem gdy licznik osignie warto BOTTOM. W trybie PWM z korekcj fazy moliwe jest generowanie fali na pinie OC2. Czstotliwo na wyjciu w tym trybie mona obliczy wedug wzoru:
f OCnPWM =
Wspczynnik N przyjmuje wartoci 1,8,64,256,1024.

f clk _ I / O N 510

Graniczne wartoci rejestru OCR2 reprezentuj specjalne przypadki podczas generacji w trybie PWM z korekcj fazy. Jeli OCRnx jest ustawiona na warto BOTTOM to na wyjciu pojawi si stan niski, a jeli rejestr jest ustawiony na MAX to na wyjciu pojawi si stan wysoki. W trybie inwersyjnym wyjcie bdzie miao przeciwne logicznie wartoci.

Przebiegi czasowe Licznika


Poniszy wykres pokazuje przebiegi czasowe, podczas liczenia przy wartoci bliskiej MAX, dla wszystkich trybw oprcz trybu PWM z korekcj fazy:

Poniszy wykres przedstawia ten sam przebieg, lecz z wczon opcj przelicznika wstpnego(prescaler) :

Kolejny przebieg przedstawia ustawianie OCF2 dla wszystkich trybw oprcz CTC:

Przebieg przedstawia ustawianie OCF2 i czyszczenie TCNT2 dla trybu CTC:

OUTPUT COMPARE MODULATOR (OCM1C2)


Output Compare Modulator (OCM) pozwala na generowanie fal przez modulacj czstotliwoci nonej. Komparator uywa wyj: licznika 16 bitowego ( wyjcie Output Compare Unit C) i licznika 8 bitowego 2 ( wyjcie Output Compare Unit). Rys. 71. Schemat blokowy OCM

Kiedy modulator jest wczony oba wyjcia licznikw s modulowane razem jak zaznaczono na rys. 71. Output Compare unit 1C (OCIC) and Output Compare unit 2 (OC2) wspdziel wyprowadzenie PB7 ( port B) jako wyjcie (jest do alternatywna funkcja tych wyprowadze portu B). Jeli OC1C i OC2 s wczone jednoczenie zostaje automatycznie wczony modulator OCM. Rys. 72. Funkcjonalny schemat zastpczy OCM

Kiedy modulator jest wczony typ modulacji (suma lub iloczyn logiczny) jest ustawiany przez rejestr PORTB7. Rys 73. Przykadowy przebieg czasowy modulatora OCM

Rozdzielczosc sygnau PWM (OC1C) jest redukowana w modulacji. Czynnik redukcji jest rwny iloci cykli zegara systemowego przypadajcych na jeden okres czestotliwoci nonrj (OC2).

SZEREGOWY INTERFEJS PERYFERYJNY PERIPHERIAL INTERFACE SPI)


AVR. SPI posiada nastpujce cechy: -

(SERIAL

Szeregowy interfejs peryferyjny umoliwia bardzo szybk, synchroniczn wymian danych pomidzy procesorem ATmega128 a urzdzeniami zewntrznymi oraz pomidzy poszczeglnymi urzdzeniami operacj Master oraz Slave moliwo jednoczesnej komunikacji w obu kierunkach, trjprzewodowy synchroniczny przesy danych moliwo przesyu danych od najstarszego lub najmodszego bitu siedem programowalnych szybkoci przesyu danych w bitach na sekund flaga przerwania koniec transmisji tryb master z podwojon prdkoci znacznik zabezpieczenia przed kolizj podczas zapisu wzbudzanie ze stanu upienia

Rys. 74 Schemat blokowy SPI

Wewntrzne poczenie jednostki centralnej Master i Slave z SPI zostao pokazane na rys. 75. System skada si z dwch rejestrw przesuwnych oraz zegara nalecego do moduu Master. SPI Master inicjuje cykl komunikacyjny kiedy wymusi stan niski na pinie Slave Select (/SS) danego moduu Slave. Moduy Master i Slave przygotowuj dane do wysania w swoich rejestrach przesuwnych. Z kolei modu Master generuje impulsy zegarowe na linii SCK aby w ich takt wymieni dane. Dane zawsze s przesuwane z moduu Master do moduu Slave na linii Master Out - Slave In (MOSI), natomiast z moduu Master do moduu Slave na linii Master In - Slave Out (MISO). Po kadym pakiecie danych, modu Master synchronizuje si z moduem Slave przez ustawienie stanu wysokiego na linii Slave Select. Jeeli modu jest skonfigurowany jako Master, interfejs SPI nie ma automatycznej kontroli nad lini /SS. Ten problem musi zosta rozwizany przez uytkownika na drodze programowej zanim komunikacja si rozpocznie. Wpisanie bajtu do rejestru danych SPI (SPDR) wczy zegar, a ukad przesunie 8 bitw do moduu Slave.

Po przesuniciu jednego bajtu, zegar SPI zatrzyma si ustawiajc znacznik koca transmisji (SPIF). Jeeli bit zezwolenia na przyjcie przerwania w rejestrze SPCR jest ustawiony przerwanie zostaje zgoszone. Modu Master moe kontynuowa przesuwanie nastpnego bajtu poprzez wpisanie go do SPDR. Moe te zakoczy transmisj pakietu danych ustawiajc stan wysoki na linii Slave Select. Ostatni otrzymany bajt bdzie zachowany w rejestrze buforowym, aby mona go uy pniej. Jeeli modu jest skonfigurowany jako Slave, interfejs SPI bdzie pozostawa w upieniu ze stanem wysokiej impedancji na linii MISO tak dugo dopki pin /SS nie znajdzie si w stanie wysokim. W tym czasie program moe uaktualni zawarto SPDR. Dane nie zostan jednak przesunite przez nadchodzce impulsy zegara na pinie SCK, dopki na /SS jest stan niski. Po przesaniu w caoci jednego bajtu znacznik koca transmisji SPIF zostaje ustawiony. Jeeli bit zezwolenia na przyjcie przerwania w rejestrze SPCR jest ustawiony wystpuje danie przyjcia przerwania. Modu Slave moe kontynuowa umieszczanie nowych danych przeznaczonych do przesania w SPDR przed odczytaniem przychodzcych danych. Ostatni otrzymany bajt bdzie zachowany w rejestrze buforowym, aby mona go uy pniej.

Rys. 75 Wewntrzne poczenie Master-Slave

System jest pojedynczo buforowany w kierunku nadawania i podwjnie w kierunku wysyania. Oznacza to e nadawany bajt nie moe by wczytany do rejestru danych SPI zanim cay cykl przesuwania nie zostanie zakoczony. Kiedy dane s odbierane, otrzymywany znak musi zosta przeczytany z rejestru danych SPI zanim nastpny znak zostanie w caoci wprowadzony. W przeciwnym razie doszo by do utraty danych. W trybie SPI Slave, ukad sterujcy bdzie prbkowa nadchodzcy sygna na pinie SCK. Aby zapewni waciwe prbkowanie sygnau zegarowego, czstotliwo zegara SPI nie powinna nigdy przekroczy fOSC/4. Kiedy SPI jest wczony, kierunki przesyania danych linii MOSI, MISO, SCK oraz pinw /SS s przeadowane zgodnie z tabel 69.

Tabela 69 Przeadowania pinw

Poniszy przykadowy kod pokazuje jak zainicjowa SPI w trybie Master oraz jak przygotowa prost transmisj. DDR_SPI w przykadach naley zstpi przez aktualny rejestr kierunku danych sterujcy pinami SPI. DD_MOSI, DD_MISO i DD_SCK musz by zastpione przez aktualne bity okrelajce kierunek danych dla tych pinw. Np. jeeli MOSI jest na miejscu pinu PB5, zastpujemy DD_MOSI DDB5 a DDR_SPI DDRB.

Poniszy kod pokazuje jak zainicjowa SPI w trybie Slave i jak przygotowa prosty odbir danych.

FUNKCJONALNO PINU /SS


Tryb Slave Kiedy SPI jest skonfigurowany jako Slave, Slave Select jest zawsze wejciem. Kiedy /SS jest w stanie niskim, SPI zostaje uaktywniony, a MISO staje si wyjciem jeeli tak zosta skonfigurowany przez uytkownika. Wszystkie inne piny s wejciami. Kiedy /SS jest w stanie wysokim, wszystkie piny s

wejciami, a SPI jest bierny co oznacza e nie bdzie odbiera nadchodzcych danych. Naley zauway e ukad SPI bdzie resetowany za kadym razem gdy pin /SS znajdzie si w stanie wysokim. Pin /SS jest uyteczny przy synchronizacji pakiet/bajt aby utrzyma synchronizacj pomidzy licznikiem bitowym oraz zegarem moduu Master. Kiedy pin /SS przejdzie w stan wysok, SPI natychmiast skasuje przesyane dane oraz ukad odbiornika, jak rwnie utraci czciowo otrzymane dane znajdujce si w rejestrze przesuwnym. Kiedy SPI jest skonfigurowany jako Master Tryb Master (MSTR jest ustawione w SPCR), uytkownik moe zadecydowa o tym czy /SS bdzie wejciem czy wyjciem. Jeeli pin /SS jest wyjciem nie wpywa na system SPI. Jeeli pin /SS jest wejciem naley na nim utrzyma stan wysoki aby zapewni operacje SPI w trybie Master. Aby unikn konfliktw na magistrali system SPI podejmuje nastpujce dziaania: 1. Bit MSTR w SPCR jest kasowany, a system SPI przechodzi w tryb Slave, MOSI i SCK staj si wejciami 2. Flaga SPIF w rejestrze SPSR jest ustawiona i jeeli przerwania SPI s aktywne oraz I-ty bit w SREG jest ustawiony, procedura obsugi przerwania zacznie si wykonywa. Dlatego kiedy sterowana przerwaniami transmisja SPI jest uywana w trybie Master i istnieje moliwo, e /SS zostanie sprowadzone do stanu niskiego, przerwanie powinno zawsze sprawdzi czy bit MSTR jest cigle ustawiony. Jeeli bit MSTR zostanie skasowany przez wybr Slavea musi by ustawiony przez uytkownika aby reaktywowa SPI w trybie Master. Rejestr sterujcy SPI SPCR

Bit 7 SPIE: SPI Interrupt Enable Ten bit powoduje e przerwanie SPI bdzie wykonane jeeli ustawiony jest bit SPIF w rejestrze SPSR oraz globalna flaga zezwolenia na przyjcie przerwania w rejestrze SREG. Bit 6 SPE: SPI Enable Jeeli bit SPE jest ustawiony na jeden, SPI jest aktywne. Ustawienie go jest niezbdne gdy chcemy wykonywa jakiekolwiek operacje SPI.

Bit 5 DORD: Data Order Jeeli DORD jest rwny 1 LSB danej jest transmitowany jako pierwszy. Ustawienie DORD na 0 powoduje przesanie MSB w pierwszej kolejnoci.

Bit 4 MSTR: Master/Slave Select 1 tryb Master, 0 tryb Slave

Jeeli /SS jest skonfigurowane jako wejcie i jest w stanie niskim kiedy MSTR jest ustawione, MSTR zostanie wyczyszczone a SPIF w SPSR zostanie ustawione. Uytkownik bdzie musia ustawi MSTR aby ponownie uaktywni tryb Master. Bit 3 CPOL: Clock Polarity 1 SCK jest w stanie wysokim w chwilach bezczynnoci 0 - SCK jest w stanie niskim w chwilach bezczynnoci Przykad na rys. 76 i 77. Funkcjonalno CPOL przedstawiona jest w poniszej tabeli. Tabela 70 Funkcjonalno CPOL

Bit 2 CPHA: Clock Phase Ustawienie tego bitu okrela aktywne zbocze SCK. Przykad na rys. 76 i 77. Funkcjonalno CPHA przedstawiona jest w poniszej tabeli.

Tabela 71 Funkcjonalno CPHA

Bits 1, 0 SPR1, SPR0: SPI Clock Rate Select 1 and 0

Bity SPR1 i SPR0 steruj prdkoci urzdze skonfigurowanych jako master. Jeeli SPI jest w trybie Slave ich ustawienie nie daje adnych skutkw. Zaleno pomidzy SCK a czstotliwoci zegara fOSC przedstawia ponisza tabela. TABELA 72 RELACJE POMIDZY SCK A CZSTOTLIWOCI OSCYLATORA

Rejestr stanu SPI SPSR

Bit 7 SPIF: SPI Interrupt Flag Jeeli szeregowy transfer jest zakoczony znacznik SPIF jest ustawiony. Przerwanie jest generowane jeeli ustawiony zosta SPCR oraz globalne przerwania s aktywne. Jeeli /SS jest wejciem i znajduje si w stanie niskim, podczas gdy SPI jest w trybie Master rwnie spowoduje to ustawienie znacznika SPIF. SPIF jest kasowane sprztowo kiedy wykonywany jest odpowiedni wektor przerwania. SPIF moe zosta wykasowane take wtedy gdy po pierwszym odczycie rejestru stanu z ustawionym SPIF zadamy dostpu do SPDR. Bit 6 WCOL: Write COLision Flag Bit WCOL jest ustawiony jeeli SPDR jest zapisywany podczas transferu danych. Bit WCOL i bit SPIF s kasowane przez pierwszy odczyt rejestru stanu z ustawionym WCOL i pniejszy dostp do rejestru danych SPI. Bits 5..1 Res: Reserved Bits Te bity s zarezerwowane i zawsze bd odczytywane jako 0. Bit 0 SPI2X: Double SPI Speed Bit Ustawienie tego bitu na 1 czstotliwo SCK zostanie podwojona gdy SPI znajduje si w trybie Master (patrz tabela 4). Oznacza to, e minimalny okres SCK bdzie rwny dwm okresom zegara jednostki centralnej. W przypadku gdy SPI zosta skonfigurowany jako Slave, SPI gwarantuje prac z czstotliwoci mniejsz lub rwn fOSC/4. Interfejs SPI na Atmega128 jest rwnie uywany do programowania pamici oraz pobierania/adowania danych z/do pamici typu EEPROM. Rejestr danych SPDR

SPDR jest rejestrem przeznaczonym do zapisu i odczytu, uywa si go przy przesyaniu danych pomidzy plikiem rejestru i rejestrem przesuwnym SPI. Wpis to rejestru inicjuje transmisj danych. Odczyt rejestru powoduje rozpoczcie odczytywania z bufora przesuwnego rejestru nadajnika (???).

TRYBY DANYCH
Istniej 4 kombinacje fazy i polaryzacji SCK odnoszce si do danych w postaci szeregowej, ktre okrelaj bity sterujce CPHA oraz CPOL. Format przesyu danych SPI pokazuj rys. 76 i 77. Bity danych s przesuwane i zatrzaskiwane na przeciwnych zboczach sygnau SCK, zapewniajc tym samym wystarczajc ilo czasu na ustabilizowanie si sygnau danych. Tabela 73 Funkcjonalno CPOL

Rys. 76 Format transferu SPI z CPHA = 0

Rys. 77 Format transferu SPI z CPHA = 1

USART
Uniwersalny synchroniczny i asynchroniczny odbiornik i nadajnik (USART) jest wysoce elastycznym szeregowym urzdzeniem do transmisji danych. Jego gwne cech to: Cakowite, dwustronne operacje (niezalene rejestry szeregowego odbiornika i nadajnika) Operacje asynchroniczne i synchroniczne. Operacje synchroniczne taktowane zegarem Master-Slave Generator szybkiej transmisji o wysokiej rozdzielczoci Wsparcie dla szeregowych ramek o 5,6,7,8, lub 9 bitach danych i 1 lub 2 bitach stopu Parzyste lub nieparzyste generatory parzystoci i sprawdzanie parzystoci wspierane sprztowo Wykrycie przekroczenia danych Detekcja bdw ramki Filtrowanie zakce zawierajce wykrywanie faszywych bitw startu i binarny filtr dolnoprzepustowy Trzy oddzielne przerwania TX zakoczenie, pusty rejestr danych TX, zakoczenie RX Tryb komunikacji wieloprocesorowej Tryb komunikacji asynchronicznej o podwjnej prdkoci
Podwjny USART

ATmega128 ma dwa USARTy: USART0 i USART1. Funkcjonalno obu USARTw jest opisana poniej. USART0 i USART1 maj rne rejestry I/O co jest pokazane w streszczeniu rejestrw na stronie 341. Naley zauway, e w trybie kompatybilnoci z ATmega103, USART1 jest niedostpny, jak i rejestry UBRROH i UCRSOC. To oznacza, e w trybie kompatybilnoci z ATmega103, ATmega128 wspiera tylko asynchroniczn transmisj przez USART0.
Krtki opis

Uproszczony diagram blokowy USARTu przedstawia rysunek 78. Dostpne rejestry I/O CPU tak jak ich wyjcia s pogrubione.

Uwaga: Naley odnie si do rysunku 1 na stronie 2, tabeli 36 na stronie 72 i tabeli 93 na stronie 75 gdzie zostao opisane umiejscowienie wyj. Prostokty zaznaczone lini przerywan w diagramie blokowym dziel USART na trzy gwne czci (patrzc od gry): generator zegara, nadajnik, odbiornik. Rejestry kontroli s dzielone midzy tymi trzema jednostkami. Generacja logicznego zegara skada si z logicznej synchronizacji dla wejcia zewntrznego zegara wykorzystywanego przez synchroniczne operacje zalene i generator szybkoci transmisji. Nka XCK (zegar transferu) jest tylko wykorzystywana w trybie synchronicznej transmisji. Nadajnik skada si z pojedynczego buforu do zapisu, szeregowego rejestru przesunicia, generatora parzystoci i kontroli logiczne obsugujcej rne szeregowe formaty ramek. Bufor do zapisu umoliwia cigy transfer danych bez opnie midzy ramkami. Odbiornik jest najbardziej zoon czci w module USARTu ze wzgldu na zegar i jednostki odzyskiwania danych. Jednostki odzyskiwania danych s wykorzystywane w pobieraniu asynchronicznym danych. Ponad to odbiornik posiada sprawdzanie parzystoci, kontrol logiczn, rejestr przesunicia i dwa poziomy buforw odbiorczych (UDR). Odbiornik wspiera te same rodzaje ramek co nadajnik, moe wykry bd ramki i przekroczenie danych i bd parzystoci.
o Kompatybilno AVR USART z AVR UART

USART jest w peni kompatybilny z AVR UART co do: Lokacji bitw we wszystkich rejestrach USARTu Generacji szybkoci transmisji Operacji nadajnika Funkcjonalnoci buforu nadajnika

Operacji odbiornika Jednake buforowanie odbiornika ma dwa ulepszenia, ktre wpywaj na kompatybilno w niektrych specjalnych przypadkach: Zosta dodany drugi rejestr buforujcy. Obydwa te bufory dziaaj na zasadzie kolejki FIFO. Dlatego UDR moe by odczytywane tylko raz na kade przyjcie danych. Waniejszy jest jednak fakt, e flagi bdw (FE i DOR) i dziewity bit danych (RXB8) s buforowane z danymi w buforze odbiornika. Dlatego bit statusu musi zawsze by odczytywany przed odczytem z rejestru UDR. W przeciwnym wypadku status bdu zostanie zgubiony wraz ze statusem bufora. Rejestr przesuwny odbiornika moe teraz dziaa jako trzeci poziom bufora. Zostao to zapewnione poprzez pozostawienie danych w tym rejestrze (rysunek 78) jeeli bufory s zapenione, do czasu wykrycia nowego bitu startu. Dlatego USART jest bardzie wytrzymay na przeadowanie danymi. Nastpne bity kontrolne maj zmienione nazwy, ale maj ta sam funkcjonalno i umiejscowienie w rejestrach: CHR9 zosta zmieniony na UCSZ2 OR na DOR
Generacja zegarw

Logiczna generacja zegarw generuje podstawowy zegar dla nadawania i odbioru. USART wspiera cztery tryby operacji czasowych: normalny asynchroniczny, asynchroniczny o podwjnej szybkoci, nadrzdny synchroniczny i podrzdny synchroniczny. Bit UMSEL w rejestrze statusu i kontroli C (UCSRC) wybiera midzy trybem asynchronicznym i synchronicznym. Podwjna szybko (w trybie asynchronicznym) jest kontrolowana przez U2X znajdujcy si w rejestrze UCSRA. Podczas korzystania z trybu synchronicznego (UMSEL=1), rejestr kierunku przepywu danych sprawdza dal wyjcia XCK (DDR_XCK) czy ro zegara jest wewntrzne (nadrzdne) czy zewntrzne (podrzdne). Wyjcie XCK jest tylko aktywne w trybie synchronicznym.

Opis sygnaw: txclk zegar nadajnika (wewntrzny sygna) rxclk podstawa zegara dla odbiornika

xclk xclo fosc

wejcie z XCK (wewntrzny sygna) Wykorzystywany w synchronicznych podrzdnych operacjach. Wyjcie zegara dla XCK (wewntrzny sygna). Wykorzystywany w synchronicznych nadrzdnych operacjach. czstotliwo wejcia XTAL (zegar systemowy) o Wewntrzna generacja zegarw generator szybkoci transmisji

Wewntrzny generator zegara jest wykorzystywany w asynchronicznych i asynchronicznych trybach nadrzdnych operacji. Opis w tej sekcji odnosi si do rysunku 79. Rejestr szybkoci transferu (UBRR) i przyczony do niego licznik(zliczajcy w d) funkcjonuj jako programowalny prescaler lub generator szybkoci transmisji. Licznik, napdzany systemowym zegarem (fosc), jest adowany wartoci z UBRR za kadym razem, kiedy doliczy do zera lub kiedy dokonano zapisu do rejestru UBRRL. Zegar jest wywoywany(generated) za kadym razem kiedy licznik dojdzie do zera. Ten zegar jest generatorem szybkoci transferu dla wyjcia zegara (=fosc/(UBRR+1)). Nadajnik dzieli wartoci pojawiajce si na wyjciu zegara szybkoci transmisji przez 2, 4, 8, 16 zalenie od trybu, w ktrym si znajduje. Wyjcie to jest podczane bezporednio do zegara odbiornika i moduw odwieania danych. Jednake, moduy odwieania korzystaj z statycznej maszyny, ktra wykorzystuje 2, 8 lub 16 stanw w zalenoci od trybu ustawionego przez bity UMSEL, U2X i DDR_XCK. Tabela 74 zawiera rwnania suce obliczeniu szybkoci transferu (bity na sekund) oraz obliczeniu wartoci UBRR dla kadego trybu operacji wykorzystujcej wewntrzne rdo generujce zegar. Tryb operacji Normalny, asynchroniczny tryb (U2X = 0) Szybko transferu(1) f OSC BAUD = 16(UBRR + 1) Asynchroniczny tryb o podwjnej prdkoci f OSC BAUD = (U2X =1) 8(UBRR + 1) Synchroniczny tryb nadrzdny f OSC BAUD = 2(UBRR + 1) Uwaga: 1.szybko transferu jest definiowana w bitach na sekund fOSC czstotliwo systemowego zegara Warto UBRR f OSC 1 UBRR = 16 BAUD f OSC 1 UBRR = 8 BAUD f OSC 1 UBRR = 2 BAUD

Przykady wartoci UBBR dla niektrych czstotliwoci zegarowych podane sa w tabeli 82 na stronie 189.
o Operacje o podwjnej szybkoci U2X

Szybko transferu moe zosta zdwojona poprzez ustawienie bitu U2X w UCSRA. Ustawienie tego bitu daje efekt tylko dla asynchronicznych operacji. W przypadku operacji synchronicznych naley ustawi ten bit na zero.

Ustawienie tego bitu spowoduje zmniejszenie dzielnika czstotliwoci z 16 na 8, efektywnie podwajajc szybko transferu dla asynchronicznej komunikacji. Naley zauway, e odbiornik w tym przypadku bdzie uywa poowy prbek w celu prbkowania danych i odwieania zegara i dlatego bardziej odpowiednie ustawienia szybkoci transferu i zegara systemowego jest wymagane w tym trybie pracy. Dla nadajnika nie ma dolnych ogranicze.
o Zewntrzny zegar

Zewntrzny zegar jest wykorzystywany w przypadku trybu synchronicznego podrzdnego operacji. Opis odnosi si do rysunku 79. Wejcie zewntrznego zegara jest prbkowane z wyjcia XCK poprzez rejestr synchronizacji w celu zmniejszenia szansy na stan stabilny (meta-stability). Wyjcie z rejestru synchronizacji musi przej przez detektor zboczy nim moe zosta wykorzystany przez nadajnik i odbiornik. Proces ten wprowadza dwa okresy opnienia w CPU i dlatego maksymalna zewntrzna czstotliwo zegara XCK jest limitowana przez ponisze rwnania: f f XCK < OSC 4 Naley zauway, e fOSC zaley od stabilnoci rda systemowego zegara. Dlatego radzi si aby doda jaki margines waha, aby unikn straty danych w wyniku waha czstotliwoci.
o Synchroniczne operacje na zegarze

Pracujc w trybie synchronicznym (UMSEL = 1), nka XCK bdzie wykorzystywana jako wejcie zegara (podrzdny ukad) lub wyjcie zegara (nadrzdny ukad). Zaleno pomidzy zboczami zegara i prbkowaniem danych lub zmian danych jest takie samo. Podstawow zasad jest by wejcie danych (on RxD) byo prbkowane na przeciwnym zboczu zegara XCK do zbocza testujcego wyjcie z danymi (TxD) zmienianymi.

Bit UCPOL z UCRSC wybiera ktre ze zboczy zegara XCK jest wykorzystywane do prbkowania danych i ktre jest wykorzystywane do zmiany danych. Jak pokazuje rysunek 80, kiedy UCPOL jest zerem dane bd zmieniane na rosncym zboczu XCK a prbkowane na

opadajcym zboczu. Jeeli UCPOL jest ustawiony dane bd zmieniane na opadajcym zboczu XCK i prbkowane na rosncym.
Formaty ramek

Szeregowa ramka ma jeden znak bd cy bitem danych oraz bit asynchronizacji (bit startu lub stopu) i opcjonalnie bit parzystoci sucy sprawdzeniu bdw. USART akceptuje wszystkie 30 nastpujcy kombinacji jako poprawne formaty ramek: 1 bit startowy 5, 6, 7, 8 lub 9 bitw danych brak, bit parzystoci lub nieparzystoci 1 lub 2 bity stopu Ramka rozpoczyna si bitem startu, po ktrym nastpuje najmniej znaczcy bit danych. Nastpne przychodz bity danych, do 9, zakoczone bitem najbardziej znaczcym. Jeeli jest odblokowany bit parzystoci jest on doczany po bitach danych a przed bitem stopu. Po kompletnie przesanej ramce mona bezporednio wysya nastpn lub linia komunikacyjna moe zosta ustawiona w trzeci stan (IDLE).

St bit startowy zawsze 0 (n) bity danych(od 0 do 8) P bit parzystoci Sp bit stopu zawsze 1 IDLE brak transferu na liniach komunikacyjnych (RxD lub TxD) .Linia IDLE musi by w trzecim stanie. Format ramek uywany przez USART jest ustawiany poprzez bity UCSZ2..0 i UMP1..0 oraz USBS w rejestrach UCSRB i UCSRC. Nadajnik i odbiornik wykorzystuj te same ustawienia. Naley zauway, e zmiana ustawie powoduje znieksztacenie trwajcej komunikacji zarwno dla odbiornika jak i nadajnika. Bity znaku USART (UCSZ2..0) wybieraj liczb bitw danych w ramce. Bity UPM1..0 ustawiaj tryb parzystoci. Wybr pomidzy jednym lub dwoma bitami stopu jest dokonywany przez bit USBS (bit wyboru stopu). Odbiornik ignoruje drugi bit stopu. Bd ramki (FE) bdzie wic wykryty tylko w przypadku kiedy pierwszy bit stopu jest zerem.
o Obliczanie bitu parzystoci

Bit parzystoci jest obliczany poprzez wykonanie operacji xor na wszystkich bitach danych. Jeeli ten bit jest wykorzystywany jako bit nieparzystoci wynik jest negowany binarnie. Relacja midzy bitem parzystoci i bitami danych jest nastpujca:

Peven Podd dn

bit parzystoci wykorzystywany jako bit parzystoci bit parzystoci wykorzystywany jako bit nieparzystoci n-ty bit znaku danych

Jeeli jest ten bit wykorzystywany, jest on umieszczony midzy ostatnim bitem danych , a bitem stopu.
Inicjalizacja USART

USART musi zosta zainicjalizowany przed rozpoczciem komunikacji. Proces inicjalizacji normalnie skada si z ustawienia szybkoci transferu, formatu ramki i odblokowaniu nadajnika lub odbiornika w zalenoci czego chcemy uywa. W celu wykrycia przerwania wywoanego przez operacje USART, globalna flaga przerwa powinna by wyzerowana podczas inicjalizacji. Przed dokonywaniem zmian szybkoci transferu lub formatu ramki naley si upewni czy nie jest wykonywany wanie jaka transmisja. Flaga TxC moe by wykorzystana do sprawdzenia czy nadajnik ukoczy transmisj, a flaga RxC do sprawdzenia czy nie pozostay jeszcze jakie dane w buforze nadajnika. Naley pamita o wyzerowaniu flagi TxC przed kad transmisj (nim UDR jest zapisany) jeeli jest on wykorzystywany w tym celu. Nastpujce kody pokazuj funkcje inicjalizujce w Asemblerze i C. Przykady te zakadaj asynchroniczne operacje wykorzystujce odpytywanie (wszystkie przerwania powinny by zablokowane) i stay format ramek. Szybko transferu jest zwracana jako parametr funkcji. W przypadku asemblera zakada si, e parametr szybkoci transmisji jest dany rejestrami r17 i r16.

Uwaga: 1. Przykady kodu zakadaj, e specyficzne nagwki zostay doczone. Dla rejestrw I/O umiejscowionych w rozszerzonej mapie rozkaz I/O, IN, OUT, SBIS, SBIC, CBI i SBI musz by zamienione przez rozkazy umoliwiajce dostp do rozszerzonej mapy pamici. Zazwyczaj s to rozkazy LDS i STS poczone z SBRC, SBRS, SBR i CBR. Dodatkowe zaawansowane metody inicjalizacji mog zawiera formaty ramek jako parametry, blokowanie przerwa itp. Jednake, wiele programw wykorzystuje stae ustawienia rejestrw bodw i kontroli i dla tych typw oprogramowania kody inicjalizacji mog by umieszczone bezporednio w gwnej procedurze lub by poczone z kodami inicjalizujcymi inne moduy I/O.
Transmisja danych nadajnik USART

Nadajnik USART jest odblokowywany poprzez ustawienie bitu umoliwiajcego nadawanie (TXEN) w rejestrze UCSRB. Kiedy nadajnik jest odblokowany, normalne operacje na nkach TxD s przecione poprzez USART i funkcjonuj jako wyjcie szeregowe USARTa. Szybko transmisji , tryb operacji i rodzaj ramki musz zosta ustawione przed rozpoczciem transmisji. W przypadku wykorzystywania operacji synchronicznych zegar na wyjciach XCK bdzie przeciony i wykorzystywany jako zegar transmisji.
o Wysyanie ramek z 5 do 8 bitami danych

Transmisja danych jest inicjowana przez zaadowanie bufora transmisji danymi, ktre maja by wysane. CPU moe zaadowa bufor zapisujc do lokacji UDR I/O. Zbuforowane dane w buforze nadajnika bd przeniesione do rejestru przesuwnego kiedy rejestr ten bdzie gotowy do

wysania nowej ramki. Rejestr przesuwny jest zaadowany nowymi danymi jeeli jest w stanie IDYL (nie ma adnej trwajcej transmisji) lub natychmiastowo po wysaniu ostatniego bitu poprzedniej transmisji. Kiedy rejestr przesuwny jest zaadowany nowymi danymi , wyle dane z szybkoci okrelon przez rejestr szybkoci, bit U2X lub przez XCK co zaley od trybu operacji. Ponisze przykady kodu pokazuj proste funkcje transmisji bazujce na sprawdzaniu flagi rejestru danych (UDRE). Uywajc ramek z mniejsz iloci bitw danych ni 5, bity najbardziej znaczce s ignorowane. USART musi by inicjalizowany przed wykorzystywaniem tych funkcji. Dla kodu w asemblerze zakada si, e dane, ktre maj zosta wysane s w rejestrze r16.

Uwaga: 1. Przykady kodu zakadaj, e specyficzne nagwki zostay doczone. Dla rejestrw I/O umiejscowionych w rozszerzonej mapie rozkaz I/O, IN, OUT, SBIS, SBIC, CBI i SBI musz by zamienione przez rozkazy umoliwiajce dostp do rozszerzonej mapy pamici. Zazwyczaj s to rozkazy LDS i STS poczone z SBRC, SBRS, SBR i CBR. Funkcja ta oczekuje na oprnienie bufora nadajnika poprzez proste sprawdzanie flagi UDRE, przed zaadowaniem bufora nowymi danymi. Jeeli przerwanie oznaczajce pusty rejestr danych jest wykorzystywane, procedura obsugi przerwania zapisuje dane do bufora.
o Wysyanie ramek z 9 bitami danych

Jeeli s wykorzystywane 9-bitowe znaki (UCSZ = 7) dziewity bit musi by zapisany do bitu TXB8 w rejestrze UCSRB nim modszy bajt tego znaku zostanie zapisany do UDR. Nastpujce przykady kodu przedstawiaj funkcje suce do transmisji 9 bitowychznakw. Dla kodu w asemblerze zakada si, e dane skadowane s w rejestrach r16 i r17.

Uwaga: 1.Te funkcje przesyu powinny suy jako gwne funkcje do przesyania danych. Mog zosta zoptymalizowane jeeli zawarto UCSRB bdzie statyczna, np.: tyko bit TXB8 rejestru UCSRB jest wykorzystywany po inicjalizacji. Dla rejestrw I/O umiejscowionych w rozszerzonej mapie rozkaz I/O, IN, OUT, SBIS, SBIC, CBI i SBI musz by zamienione przez rozkazy umoliwiajce dostp do rozszerzonej mapy pamici. Zazwyczaj s to rozkazy LDS i STS poczone z SBRC, SBRS, SBR i CBR. Dziewity bit moe by wykorzystywany jako wskazanie na adres ramki kiedy korzystamy z trybu wieloprocesorowej komunikacji lub dla obsugi innych protokow jak dla przykadowej synchronizacji.
o Flaga transmisji i przerwania

Nadajnik USART na dwie flagi, ktre wskazuj stan: Pusty rejestr danych (UDRE) i ukoczona transmisja (TXC). Obydwie flagi mog by wykorzystywane do generowania przerwa. Flaga pusty rejestr danych wskazuje, czy bufor nadajnika jest gotowy do otrzymania nowych danych. Bit ten jest ustawiany kiedy bufor nadajnika jest pusty i zerowany kiedy bufor nadajnika zawiera dane, ktre jeszcze nie zostay przekazane do rejestru przesuwnego. W celu zapewnienia kompatybilnoci z przyszymi urzdzeniami naley zerowa ten bit przy kadym zapisie do rejestru UCSRA.

Kiedy bit odblokowujcy przerwania ze wzgldu na pusty rejestr danych (UDRIE) w rejestrze UCSRB jest zapisany jedynk, przerwanie to bdzie wywoywane tak dugo, a bit UDRE nie zostanie ustawiony (oczywicie, przy globalnej fladze przerwa umoliwiajcej obsug przerwania). UDRE jest zerowane przez zapisanie UDR. Kiedy wykorzystywana jest transmisja danych przez przerwania procedura obsugi przerwania oznaczajcego pusty bufor nadajnika musi albo zapisywa nowe dane do UDR w celu wyzerowania UDRE lub blokowa przerwanie pustego bufora nadajnika, w przeciwnym wypadku nowe przerwanie zostanie zgoszone zaraz po wykonaniu procedury obsugi poprzedniego. Flaga ukoczona transmisja (TXC) jest ustawiana kiedy cae dane zostay przesunite poza rejestr przesuwny i nic nie oczekuje w buforze nadajnika. Flaga ta jest automatycznie zerowana kiedy przerwanie zgaszajce ukoczenie transmisji jest generowane i pniej obsugiwane lub moe zosta wyzerowane poprzez wpisanie jedynki do odpowiednich bitw. Flaga ta jest uyteczna w interfejsie komunikacji half-duplex (np. standard RS485) gdzie oprogramowanie przesyajce dane musi wej w tryb odbioru danych i zwolni magistral komunikacyjn zaraz po ukoczeniu transmisji. Kiedy bit umoliwiajcy przerwanie informujce o zakoczeniu transmisji (TXCIE) w UCSRB jest ustawiony, przerwanie informujce o tym zdarzeniu zostanie zgoszone kiedy flaga TXC zostanie ustawiona (jeeli globalna flaga przerwa nie blokuje ich). Kiedy wykorzystuje si przerwania, procedura obsugi nie musi zerowa flagi TXC,jest to robione automatycznie podczas wykonywania przerwania.
o Generator parzystoci

Generator parzystoci oblicza bit parzystoci dla szeregowych ramek danych. Kiedy bit ten jest odblokowany (UPM1 = 1) nadajnik kontroli logicznej umiejscawia bit parzystoci midzy ostatnim bitem danych a pierwszym bitem stopu w wysyanej ramce.
o Blokowanie nadajnika

Blokowanie nadajnika (ustawienie TXEN na zero) nie bdzie miao skutku dopki trwajca i nie zakoczona transmisja jest ukoczona, np.: kiedy rejestr przesuwny nadajnika i rejestr buforu nadajnika nie zawieraj danych do transmisji. Kiedy nadajnik jest zablokowany, nadajnik nie bdzie duej przecia wyjcia TxD.
Odbieranie danych odbiornik USART

Odbiornik USART jest odblokowywany poprzez ustawienie bitu umoliwiajcego odbir (RXEN) w rejestrze UCSRB. Kiedy odbiornik jest odblokowany, normalne operacje na nkach RxD s przecione przez USART i funkcjonuj jako wejcie szeregowe USARTa. Szybko transmisji, tryb operacji i rodzaj ramki musz zosta ustawione przed rozpoczciem transmisji. W przypadku wykorzystywania operacji synchronicznych zegar na wyjciach XCK bdzie przeciony i wykorzystywany jako zegar transmisji.
o Odbieranie ramek z 5 do 8 bitami danych

Odbiornik zaczyna odbiera kiedy wykryje poprawny bit startu. Kady bit nastpujcy po nim bdzie prbkowany przez szybko transferu i zegar XCK i przesuwany w przesuwnym rejestrze odbiornika dopki nie nadejdzie pierwszy bit stopu. Drugi bit stpu bdzie zignorowany przez odbiornik. Kiedy zostanie odebrany pierwszy bit stopu np.: kompletna szeregowa ramka znajduje si w przesuwnym rejestrze odbiornika, zawarto tego rejestru zostanie przeniesiona do bufora odbiornika. Bufor odbiornika moe nastpnie by przeczytany poprzez odczytanie lokacji UDR I/O. Nastpujcy przykadowy kod pokazuje prost funkcj odbierajca dane bazujc na odpytywaniu flagi ukoczenia odbioru(RXC). Wykorzystujc mniej ni 8 bitw danych najstarsze bity odczytu danych s maskowane zerem przez UDR. USART musi by zainicjalizowany nim rozpocznie si wykonywanie tej funkcji.

Uwaga: 1. Przykady kodu zakadaj, e specyficzne nagwki zostay doczone. Dla rejestrw I/O umiejscowionych w rozszerzonej mapie rozkaz I/O, IN, OUT, SBIS, SBIC, CBI i SBI musz by zamienione przez rozkazy umoliwiajce dostp do rozszerzonej mapy pamici. Zazwyczaj s to rozkazy LDS i STS poczone z SBRC, SBRS, SBR i CBR. Funkcja ta oczekuje na dane, a bd w buforze odbiornika poprzez sprawdzanie flagi RXC przed odczytem bufora i zwrceniem wartoci.
o Odbieranie ramek z 9 bitami danych

Jeeli znaki dziewicio-bitowe s uywane (USCZ = 7) dziewity bit musi by odczytany z bitu RXB8 w UCSRB przed odczytem najmodszych bitw z UDR. Zasada ta odnosi si rwnie do statusu flag FE, DOR i UPE. Najpierw naley odczyta status z UCSRA, potem dane z UDR, Odczytujc lokacje UDR I/O zmieni stan buforu odbiornika FIFO i konsekwentnie bity TXB8, FE, DOR i UPE, ktre s tam przechowywane.

Nastpujce przykady kodu pokazuj proste funkcje odbierajce dane obsugujce zarwno 9 bit jak i bity statusu.

Uwaga: 1. Przykady kodu zakadaj, e specyficzne nagwki zostay doczone. Dla rejestrw I/O umiejscowionych w rozszerzonej mapie rozkaz I/O, IN, OUT, SBIS, SBIC, CBI i SBI musz by zamienione przez rozkazy umoliwiajce dostp do rozszerzonej mapy pamici. Zazwyczaj s to rozkazy LDS i STS poczone z SBRC, SBRS, SBR i CBR. Przykad funkcji odbierajcej dane odczytuje wszystkie rejestry I/O do zestawu rejestrw nim jakiekolwiek obliczenia zostan wykonane. Daje to optymalne wykorzystanie bufora odbiornika odkd odczyt lokacji bufora bdzie wolny, aby przyj nowe dane jak najszybciej.
o Odbieranie konkurujcych flag i przerwa

Odbiornik USART ma jedn flag, ktra wskazuje stan odbiornika. Flaga ukoczenia odbioru (RXC) wskazuje nie przeczytane dane w buforze odbiornika. Jest ona wtedy jedynk i zerem kiedy bufor jest pusty. Kiedy odbiornik jest zablokowany (RXEN = 0) bufor odbiornika bdzie oprniony i bit RXC stanie si zerem. Kiedy flaga odblokowujca przerwanie ukoczenia odbioru (RXCIE( w UCSRB jest ustawiona, przerwanie ukoczenia odbioru USART bdzie wykonywane tak dugo jak flaga RXC jest ustawiona (przy odblokowanym globalnym bicie przerwa). Kiedy receptor przerwa jest wykorzystywany, obsuga przerwania musi odczytywa dane odebrane z UDR w celu wyzerowania flagi RXC w przeciwnym wypadku nowe przerwanie zostanie wygenerowane po skoczeni obsugi poprzedniego.
o Odbieranie flag bdw

Odbiornik USART na trzy flagi bdw: bd ramki (FE), przekroczenie danych (DOR) i bd parzystoci (UPE). Wszystkie mona odczyta z rejestru UCSRA. Flagi bdw s umieszczane w buforze odbiornika wraz z ramk, dla ktrej wskazuj status bdu. Ze wzgldu na buforowanie flag bdu, USCRA musi zosta odczytane przed buforem odbiornika, poniewa odczyt lokacji UDR I/O zmienia lokacje buforu odczytywanego. Innym rwnaniem dla flag bdu jest to, e nie mog one zosta zmienione poprzez oprogramowanie zapisujce pod te adresy. Jednake, wszystkie flagi musz by ustawione na zero kiedy UCSRA jest zapisywany dla zapewnienia kompatybilnoci z przyszymi implementacjami USARTa. adna z flag bdw nie moe generowa przerwa. Bd ramki (FE) wskazuje stan pierwszego bitu stopu w nastpnej do odczytu ramce przechowywanej w buforze odbiornika. Jest ona zerem jeeli bit stopu zosta poprawnie odczytany (1) lub jest jedynk kiedy bit ren nie by odczytany poprawnie (0). Flaga ta moe zosta wykorzystana do detekcji braku synchronizacji, warunku przerwania i obsugi protokou. Na flag FE nie maj wpywu ustawienia bitu USBS e UCSRC odkd odbiornik ignoruje wszystkie, poza pierwszym, bity stopu. W celu zapewnienia kompatybilnoci z przyszymi urzdzeniami, naley ten bit zawsze zerowa przy zapisie do UCSRA. Bd przekroczenia danych wskazuje na utrat danych na skutek zapchania bufora odbiornika. Zachodzi to kiedy bufor odbiornika jest peny, jest zapisywany nowy znak w rejestrze przesuwnym odbiornika i zosta wykryty nowy bit startu. Jeeli bit ten jest ustawiony oznacza to, e zostao zgubionych jedna lub wicej ramek midzy ramk ostatnio odczytan z UDR i nastpn do odczytu. W celu zapewnienia kompatybilnoci z przyszymi urzdzeniami naley zawsze zerowa ten bit podczas zapisu do UCSRA. Flaga DOR jest zerowana kiedy otrzymana ramka zosta bez problemw przeniesiona z rejestru przesuwnego do bufora odbiornika. Flaga bdu parzystoci wskazuje, e nastpna odebrana ramka ma bd parzystoci przy odbiorze. Jeeli sprawdzanie parzystoci nie jest odblokowane bit UPE bdzie zawsze wyzerowany. W celu zapewnienia kompatybilnoci z przyszymi urzdzeniami zawsze naley zerowa ten bit przy zapisie do UCSRA. Wicej szczegw w Obliczanie bitu parzystoci na stronie 171 i Kontroler parzystoci na stronie 178.

o Sprawdzanie parzystoci

Kontroler parzystoci jest aktywny kiedy bit wysokiego trybu Parzystoci USART (UPM1) jest ustawiony). Typ kontrolera parzystoci jest ustawiany przez bit UPM0. Kiedy odblokowany, kontroler parzystoci oblicza parzysto przychodzcych bitw danych i porwnuje rezultat z bitem parzystoci w szeregowej ramce. Rezultat porwnania jest przechowywany w buforze odbiornika wraz z otrzymanymi bitami danych i bitami stopu. Flaga bdu parzystoci (UPE) moe wtedy zosta odczytana przez oprogramowanie w celu sprawdzenia czy wystpi bd parzystoci. UPE jest ustawiane jeeli nastpny znak, ktry moe zosta odczytany z bufora odbiornika ma bd parzystoci przy odbiorze i sprawdzanie parzystoci zostao odblokowane (UMP1 = 1). Bit ten jest poprawny do czasu odczytu z bufora odbiornika.
o Blokowanie odbiornika

W przeciwiestwie do nadajnika, zablokowanie odbiornika nastpuje natychmiast. Dane przychodzce bd dlatego stracone. Kiedy jest on zablokowany (RXEN = 0) odbiornik nie bdzie duej przecia wyj portu RxD. Bufor FIFO odbiornika bdzie oprniony kiedy odbiornik zostanie zablokowany. Pozostajce dane w buforze zostan utracone.
o oprnianie bufora odbiornika

Bufor odbiornika FIFO zostanie oprniony kiedy odbiornik zostanie odczony, np.: bufor zostanie oprniony z zawartoci. Nie przeczytane dane zostan stracone. Jeeli bufor musi zosta oprniony podczas normalnej operacji, np..: po zaistnieniu warunkw bdu, naley odczytywa lokacje UDR I/O dopki flaga RXC jest wyzerowana. Nastpujce przykady kodu pokazuj jak naley oprnia bufor:

Uwaga: 1. Przykady kodu zakadaj, e specyficzne nagwki zostay doczone. Dla rejestrw I/O umiejscowionych w rozszerzonej mapie rozkaz I/O, IN, OUT, SBIS, SBIC, CBI i SBI musz by zamienione przez rozkazy umoliwiajce dostp do rozszerzonej mapy pamici. Zazwyczaj s to rozkazy LDS i STS poczone z SBRC, SBRS, SBR i CBR.

Asynchroniczne odbieranie danych

USART zawiera odzyskiwanie zegara i modu odzyskiwania danych dla obsugi asynchronicznego odbioru danych. Odzyskiwanie logiki zegara jest wykorzystywany dla synchronizacji zewntrznie generowanej szybkoci transmisji dla przychodzcych asynchronicznie szeregowych ramek na wejcia RxD. Odzyskiwanie logiczne danych prbkuje i przepuszcza przez filtr dolnoprzepustowy kady przychodzcy bit, co ulepsza odporno na zakcenia odbiornika. Zakres asynchronicznych operacji odbiornika zaley od dokadnoci wewntrznego zegara szybkoci transferu, szybkoci przychodzenia nowych ramek, rozmiaru ramki w bitach.
o Odzyskiwanie asynchronicznego zegara

Logiczny zegar odzyskiwania synchronizuje wewntrzny zegar do przychodzcych szeregowo ramek. Rysunek 82 przedstawia proces prbkowania bitu startowego przychodzcej ramki. Szybko prbkowania jest 16 krotna dla szybkoci transferu dla normalnego trybu. I 8 krotna w trybie o podwjnej prdkoci. Poziome strzaki ilustruj wahania synchronizacji wynikajce z procesu prbkowania. Naley zauway, e podczas korzystania z trybu podwjnej prdkoci wahania te s wiksze. Prbki wskazujce zero sa prbkowane kiedy linia RxD jest IDYL (nie ma aktywnej komunikacji).

Kiedy zegar logicznego odzyskiwania wykryje przejcie z wysokiego (IDYL) do niskiego (START) stanu na linii RxD jest inicjalizowana sekwencja wykrywajca bit startowy. Niech prbka 1 oznacza pierwszy zerowy przykad jak pokazuje to rysunek. Logika zegara odzyskiwania wykorzystuje wtedy prbki 8, 9 i 10 dla normalnego trybu i prbki 4, 5, 6 dla trybu o podwjnej prdkoci, w celu sprawdzenia czy poprawny bit startu zosta otrzymany. Jeeli 2 lub wicej z tych prbek ma stan wysoki (wikszo wygrywa), bit startowy jest odrzucany jako wynik zakce i odbiornik zaczyna szuka nastpnego przejcia ze stanu wysokiego na niski. Jeeli poprawny bit startu zosta wykryty, zegar logiczny odzyskiwania jest synchronizowany i odzyskiwanie danych moe si rozpocz. Proces synchronizacji jest powtarzany dla kadego bitu startu.
o Asynchroniczny odzyskiwanie danych

Kiedy zegar odbiornika jest zsynchronizowany do bitu startowego, odzyskiwanie danych moe si rozpocz. Modu odzyskiwania danych wykorzystuje stan urzdzenia, ktry moe mie 16

stanw na kady bit w normalnym trybie pracy i 8 stanw dla trybu o podwjnej prdkoci. Rysunek 83 pokazuje prbkowanie bitw danych i bitu parzystoci. Kada z prbek ma nadawany numer rwny temu ze statusu moduu odzyskiwania.

Decyzja o logicznym poziomie odebranych bitw jest podejmowana poprzez gosowanie wartoci logicznych trzech prbek w rodku odebranych bitw. rodkowe prbki s wyrnione poprzez wpisanie ich wartoci do ramek. Wikszo procesu gosowania jest realizowana nastpujco: Jeeli dwa lub wszystkie prbki maj wysoki poziom logiczny, otrzymany bit jest jedynk. Jeeli dwa lub trzy prbki maj niski poziom , otrzymany bit jest zerem. Taki sposb odzyskiwania danych mona traktowa jako dolno przepustowy filtr na liniach przychodzcych sygnaw RxD. Proces odzyskiwania jest pniej powtarzany dopki kompletna ramka nie zostanie odebrana. Zawierajc pierwszy bit stopu. Naley zauway, e odbiornik wykorzystuje tylko pierwszy bit stopu ramki. Rysunek 84 przedstawia prbkowanie bitu stopu i wczeniejszych moliwoci wykrycia bitu startu dla wczeniej rozpoczynajcych si nowych ramek.

Takie samo rozpoznawanie bitw jest robione w odniesieniu do bitu stopu jak i do wszystkich pozostaych bitw. Jeeli jest zarejestrowane, e bit stopu ma mie logiczn warto zero, bd ramki bdzie ustawiony. Nowe przejcie ze stanu wysokiego do niskiego oznacza, e bit startu nowej ramki moe przyj po ostatnim bicie wykorzystywanym do wikszociowego gosowania. Dla normalnego trybu pracy, pierwsza prbka niskiego stanu moe by nad punktem oznaczonym A. Dla trybu o podwjnej prdkoci pierwszy niski poziom musi zosta usunity, a do punktu B. C zaznacza bit stopu penej dugoci. Wczesne wykrycie bitu startu wpywa na zakres operacyjny odbiornika.
o Zakres operacji asynchronicznych

Zakres operacji odbiornika zaley od niedopasowania midzy szybkoci transmisji bitw i wewntrznie generowanej szybkoci transmisji. Jeeli nadajnik wysya ramki za szybko lub za

wolno lub wewntrzny generator szybkoci transmisji odbiornika nie ma podobnej bazowej frekwencji, odbiornik nie bdzie w stanie zsynchronizowa ramki z bitem startu. Nastpujce rwnania su obliczeniu stosunku szybkoci przychodzcych danych i wewntrznej szybkoci transmisji.

D
S SF

suma rozmiaru znakw i rozmiaru parzystoci (D = 5 10 bit)

prbka na bit. S = 16 dla normalnej prdkoci i S =8 dla podwojonej prdkoci Pierwszy numer prbki uywanej do wikszociowego glosowania. SF = 8 dla normalnej prdkoci i SF =4 dla podwojonej prdkoci SM rodkowy numer prbki uywanej do wikszociowego glosowania. SM = 9 dla normalnej prdkoci i SM =5 dla podwojonej prdkoci Rslow jest stosunkiem najwolniej przychodzcych danych, ktre mog zosta odebrane do szybkoci transmisji odbiornika. Rfast jest stosunkiem najszybciej przychodzcych danych, ktre mog zosta odebrane do szybkoci transmisji odbiornika Tabele 75 i 76 opisuj bdy maksymalnej szybkoci transmisji odbiornika, ktre mog by jeszcze tolerowane. Naley zauway, e tryb normalnej szybkoci ma wiksz tolerancje na wahania szybkoci transmisji. Tabela 75 Normalny tryb pracy Rslow % 5 93,20 6 94,12 7 94,81 8 95,36 9 95,81 10 96,17 D Rfast % 106,67 105,79 105,11 104,58 104,14 103,78 Maksymalny cakowity bd % +6,67/-6,8 +5,79/-5,88 +5,11/-5,19 +4,58/-4,54 +4,14/-4,19 +3,78/-3,83 Zalecana najwikszy bd odbioru % 3,0 2,5 2,0 2,0 1,5 1,5

Tabele 76 tryb podwojonej szybkoci Rslow % 5 94,12 6 94392 7 95,52 8 96,00 9 96,39 10 96,70 D Rfast % 105,66 104,92 104,35 103,90 103,53 103,23 Maksymalny cakowity bd % +5,66/-5,88 +4,92/-5,08 +4,35/-4,48 +3,90/-4,00 +3,53/-3,61 +3,23/-3,30 Zalecana najwikszy bd odbioru % 2,5 2,0 1,5 1,5 1,5 1,0

Zalecenia maksymalnego bdu szybkoci transferu odbiornika zostay zrobione przy Zaoeniu, e nadajnik i odbiornik rwno dziel maksymalny bd. S dwa moliwe rda bdu szybkoci transmisji dla odbiornika. Zegar systemowy odbiornika (XTAL) bdzie zawsze mia jak niestabilno jeeli zasilanie przekroczy grny poziom jak i temperatura. Korzystajc z kwarcowego zegara do generowania systemowego zegara, sprawia to wtedy mniejszy problem, ale dla rezonatora system zegara moe rni si wicej ni 2% w zalenoci od tolerancji rezonatora. Drugie rdo mona bardziej kontrolowa. Generator szybkoci transmisji nie moe zawsze dokadnie dzieli czstotliwoci systemowej w celu otrzymania szybkoci transferu. W tym przypadku warto UBRR dajca najniszy do zaakceptowania bd moe zosta wykorzystana.
Tryb komunikacji wieloprocesorowej

Ustawiajc bit tryb komunikacji wieloprocesorowej (MPCM) w UCSRA odblokowuje funkcje filtrujce przychodzcych ramek odbieranych przez odbiornik USART. Ramki nie zawierajce informacji o adresie bd ignorowane i nie przekazywane od bufora odbiornika. To efektywnie redukuje liczb przychodzcych bramek, ktre musz zosta obsuone przez CPU, w systemie z wieloma MCU, ktre komunikuj si przez t sam magistral. Na nadajnik nie wywieraj wpywu ustawienia MCU, ale musi by wykorzystywany w inny sposb kiedy jeeli jest czci systemu wykorzystujcego tryb komunikacji wieloprocesorowej. Jeeli odbiornik jest przygotowany do odbioru ramek zawierajcych od 5 do 8 bitw danych , wtedy pierwszy bit stopu wskazuje czy s to dane czy adresy .Jeeli odbiornik jest ustawiony na odbieranie ramek z 9 bitami danych, to dziewity bit (RXB8) jest wykorzystywany do identyfikacji ramek z adresami i danymi. Kiedy bit typu ramki jest jedynk, ramka zawiera adres. Jeeli jest to zero w ramce znajduj si dane. Tryb komunikacji wieloprocesorowej uaktywnia serwer podrzdny do MCU w celu odbioru danych od nadrzdnego MCU. Najpierw jest dekodowana ramka z adresem, aby wiedzie, do ktrego MCU maj zosta przekazane dane. Jeeli konkretny MCU zosta zaadresowany bdzie on dostawa ramki z danymi, podczas gdy pozostae MCU bd ignoroway nadchodzce ramki dopki nie przyjdzie nowa ramka z adresem.
o Korzystanie z MPCM

Aby MCU pracowao jako nadrzdne MCU, moe ono uywa formatu ramki z 9-bitami danych (UCSZ = 7). Dziewity bit (TXB8) musi by ustawiony w ramkach zawierajcych adres (TXB8 = 1) lub wyzerowany w ramkach z danymi (TXB8 = 0). MCU podrzdne musz w tym przypadku by przystosowane do odbioru ramek z 9 bitami danych. Nastpujca procedura powinna by przestrzegana w celu wymiany danych w wieloprocesorowym trybie komunikacji: 1. Wszystkie podrzdne MCU musz pracowa w trybie wieloprocesorowej komunikacji. (MPCM w UCSRA musi by ustawiony).

2. Nadrzdny MCU przesya ramk z adresem i wszystkie podrzdne MCU j otrzymuj i czytaj. W podrzdnych MCU flaga RXC w UCSRA bdzie ustawiona jak normalnie. 3. Kady z podrzdnych MCU odczytuje rejestr UDR i decyduje czy zosta wybrany. Jeeli tak, to zeruje bit MPCM, w przeciwnym wypadku oczekuje na nastpn ramk z adresem. 4. Zaadresowane MCU otrzyma wszystkie ramki z dany mi a do nastpnej ramki z adresem. Pozostae podrzdne MCU, ktre nadal maj ustawiony bit MPCM, bd ignoroway ramki z danymi. 5. Kiedy ostatnia ramka z danymi zostaa odebrana przez wybrane MCU, to wybrane MCU ustawia bit MPCM i oczekuje na now ramk z adresem od urzdzenia nadrzdnego. Proces pniej przebiega od punktu 2. Wykorzystywanie kadego z formatu ramek 5 8 bitowych jest moliwe , ale niepraktyczne odkd odbiornik musi zmienia ustawienia midzy odbiorem formatu o n i n+1 znakach. To sprawia e operacje full-duplex s trudno wykonalne odkd nadajnik i odbiornik uywaj tych samych ustawie znakw. Jeeli s wykorzystywane ramki o znakach od 5 8 to nadajnik musi by ustawiony na wysyanie dwch bitw stopu (USBS = 1) odkd pierwszy bit stopu wskazuje rodzaj ramki. Nie naley uywa instrukcji read-modify-write (SBI i CBI) do ustawiania lub zerowania bitu MPCM. Bit MPCM dzieli te same lokacje I/O co flaga TXC i moe przez przypadek zosta wyzerowana przy wykorzystaniu rozkazw SBI i CBI.
Opis rejestrw USART o Rejestr danych I/O USATR UDR

Rejestr buforowy nadajnika danych USART i rejestr buforowy odbiornika danych USART dziel te same adresy I/O odnoszce si do rejestru danych USART lub UDR. Rejestr buforowy nadajnika danych (TXB) bdzie rejestrem, do ktrego bd zapisywane dane przeznaczone do lokacji rejestrw UDR. Czytajc z lokacji rejestrw UDR zostanie zwrcona zawarto rejestru bufora danych (RXB). Dla 5, 6 lub 7-mio bitowych znakw danych starsze bity bd ignorowane przez nadajnik i ustawiane na zero w odbiorniku. Bufor nadajnika moe by tylko zapisany kiedy flaga UDRE w rejestrze UCSRA jest ustawiona. Dane zapisane do tego rejestru, kiedy ta flaga nie jest ustawiona bd ignorowane przez nadajnik USART. Kiedy dane s zapisane do bufora nadajnika i nadajnik jest odblokowany zaaduje on te dane do rejestru przesuwnego kiedy ten bdzie pusty. Nastpnie dane bd transmitowane poprzez wyjcia TxD.

Bufor odbiornika skada si z dwch poziomw FIFO. FIFO zmieni swj stan zawsze kiedy zostaa z niego pobrana dana. W zwizku z tym zachowaniem bufor nadajnika nie wykorzystuje instrukcji SBI i CBI na tych lokacjach. Naley by ostronym korzystajc z rozkazw testujcych bit SBIC i SBIS, poniewa te rozkazy rwnie zmieniaj stan FIFO.
o Rejestr statusu i kontroli A USART UCSRA

a: bit 7 RXC: zakoczona transmisja USART Ten bit jest ustawiony kiedy w buforze odbiornika s nie przeczytane dane i jest wyzerowany kiedy bufor jest pusty. Jeeli odbiornik jest zablokowany, bufor odbiornika zostanie oprniony i w konsekwencji bit bdzie wyzerowany. Flaga RXC moe by wykorzystywana do generacji przerwania ukoczenia odbioru (przejrzyj opis bitu RXCIE) b: bit 6 TXC: zakoczone nadawanie USART Ten bit jest ustawiony kiedy caa ramka zosta wysana z rejestru przesuwnego w nadajniku i nie ma nowych danych oczekujcych w buforze (UDR). Flaga ta jest automatycznie zerowana przy generacji przerwania zakoczenia transmisji lub moe zosta rczenie ustawiona na 1. Flaga ta moe generowa przerwanie ukoczenia transmisji. c: bit 5 UDRE: pusty rejestr danych Flaga UDRE wskazuje czy bufor nadajnika jest gotowy, aby otrzyma nowe dane. Jeeli UDRE jest jedynk, bufor jest pusty i gotowy na przyjcie nowych danych. Flaga ta moe generowa przerwanie pustego rejestru danych(przejrzyj opis bitu UDRIE). d: bit 4 - FE: bd ramki Ten bit jest ustawiony jeli nastpny znak w buforze odbiornika mia bd ramki przy odbiorze. Bit ten jest poprawny dopki bufor odbiornika nie zostanie odczytany. Bit FE jest zerem jeeli bit stopu odebranej danej jest jedynk. Naley zawsze ustawia ten bit na zero przy zapisie do UCSRA. e: bit 3 DOR: przekroczenie danych Bit ten jest ustawiony kiedy warunek przekroczenia danych zosta wykryty. Zachodzi to kiedy bufor odbiornika jest peny (dwa znaki), do rejestru przesuwnego zostaje wpisywany nowy znak i zostaje wykryty nastpny bit startu. Bit ten jest poprawny dopki bufor odbiornika (UDR) jest odczytywany. Naley zawsze ustawi ten bit na zero przy zapisywaniu UCSRA.

f: bit 2 UPE bd parzystoci Bit ten jest ustawiony, kiedy nastpny znak w buforze odbiornika mia bd parzystoci wykryty podczas odbioru. Bit ten jest poprawny dopki bufor odbiornika jest odczytywany. Naley zawsze ustawi ten bit na zero przy zapisywaniu UCSRA. g: bit 1 U2X: podwjna prdko transmisji danych Bit ten wpywa tylko na asynchroniczne operacje. Powinien by zapisany zerem synchronicznych operacji. dla

Ustawienie tego bitu na jeden zmniejszy dzielnik podzielnika czstotliwoci transmisji z 16 na 8 efektywnie przyspieszajc szybko transmisji dla asynchronicznej komunikacji. h: bit 0 MPCM: tryb komunikacji wieloprocesorowej Bit ten uaktywnia tryb komunikacji wieloprocesorowej. Kiedy ma warto 1 wszystkie odbierane ramki w odbiorniku, ktre nie zawieraj adresw bd ignorowane. Bit ten nie ma wpywu na nadajnik. Wicej informacji w opisie trybu komunikacji wieloprocesorowej na stronie 182.
o Rejestr kontroli i statusu B USART UCSRB

a: bit 7 RXCIE: odblokowanie przerwania zakoczenia RX Zapisujc jeden do tego bitu odblokowujemy flag przerwa RXC. Przerwanie to bdzie generowane tylko jeli bit RXCIE jest ustawiony na jeden, globalna flaga przerwa SREG jest ustawiona na jeden i bit RXC w UCSRA jest ustawiony. b: bit 6 - TXCIE: odblokowanie przerwania zakoczenia TX Zapisanie tego bitu jedynk odblokowuje przerwania generowane przez flag TXC. Przerwanie to bdzie generowane tylko jeli bit TXCIE jest ustawiony na jeden, globalna flaga przerwa SREG jest ustawiona na jeden i bit TXC w UCSRA jest ustawiony. c: bit 5 UDRIEL odblokowanie przerwania zgaszajcego pusty rejestr danych Zapisujc ten bit jedynk odblokowujemy flag przerwania UDRE. Przerwanie to bdzie generowane tylko jeli bit UDRIE jest ustawiony na jeden, globalna flaga przerwa SREG jest ustawiona na jeden i bit UDRE w UCSRA jest ustawiony. d: bit 4 RXENL odblokowanie odbiornika

Zapisujc ten bit jedynk odblokowujemy odbiornik USART. Odbiornik przeciy normalne wyjcia portw dla RxD. Blokujc odbiornik bufor odbiornika zostanie oprniony uniewaniajc flagi FE, DOR, UPE. e: bit 3 TXEN: odblokowanie nadajnika Zapisujc ten bit jedynk odblokowujemy nadajnik USART. Nadajnik przeciy normalne wyjcia portw dla TxD. Blokowanie nadajnika nie bdzie efektywne, a do czasu zakoczenia trwajcej transmisji. Po zablokowaniu porty TxD nie bd duej przecione. f: bit 2 UCSZ2: Rozmiar znaku Bit ten w poczeni z bitami UCSZ!0 w rejestrze UCSRC ustala liczb bitw danych w ramce odbiornika i odbiornika. g: bit 1 - RXB8: 8 bitw danych odbiornika Jest to dziewity bit danych odebranego znaku kiedy operujemy na szeregowych ramkach z 9bitami danych. Musi zosta przeczytany przed odczytem najmodszego bitu z UDR. h: bit 0 TXB8: 8 bit danych nadajnika Jest to dziewity bit danych nadawanego znaku kiedy operujemy na szeregowych ramkach z 9bitami danych. Musi zosta zapisany przed zapisem najmodszego bitu z UDR.
o Rejestr kontroli i statusu C USART UCSRC

Uwaga: rejestr ten nie jest dostpny w trybie wsppracy z Atmego103 a: bit 7 bit zarezerwowany Bit ten jest zarezerwowany do uytku w przyszoci. W celu zapewnienia kompatybilnoci z przyszymi urzdzeniami ten bit musi mie warto zero. b: bit 6 UMSEL: wybr trybu USART Bite ten wybiera pomidzy trybem synchronicznym i asynchronicznym operacji..0 operacje asynchroniczne, 1 synchroniczne. c: bity 5, 4 UPM1..0: bity parzystoci Bity te odblokowuj i ustawiaj tryb generacji i sprawdzania parzystoci. Jeli nadajnik jest odblokowany automatycznie generuje i wysya bity parzystoci z kada ramk. Odbiornik bdzie

wtedy generowa bit parzystoci dla odebranych bitw danych i porwnywa go z ustawieniami UPM0. Jeeli zostanie wykryty bd flaga UPE w UCSRA zostanie ustawiony. UPM1 UPM0 Tryb parzystoci 0 0 Zablokowany 0 1 Zarezerwowany 1 0 Parzysto 1 1 Nieparzysto bitowa negacja parzystoci d: bit 3 USBS: bit wyboru stopu Bit ten wybiera liczb bitw stopu, ktra ma zosta dodana przez nadajnik. Odbiornik ignoruje te ustawienia. 0 jeden bit stopu , 1 2bity stopu. e: bity 2..1 UCSZ!..0: rozmiar znaku Bity te w poczeniu z UCSZ2 w UCSRB ustawiaj liczb bitw danych (rozmiar znaku) w ramce odbiornika i nadajnika. USCZ2 USCZ1 USCZ0 Rozmiar znaku 0 0 0 5 bitw 0 0 1 6 bitw 0 1 0 7 bitw 0 1 1 8 bitw 1 0 0 Zarezerwowane 1 0 1 Zarezerwowane 1 1 0 Zarezerwowane 1 1 1 9 bitw f: bit 0 UCPOL: polaryzacja zegara Ten tryb jest wykorzystywany tylko w trybie synchronicznym. W trybie asynchronicznym powinien zosta zapisany zerem. Ustawia on zaleno pomidzy zmian wyjcia danych i prbk wejciowa danych oraz synchronicznym zegarem. UCPOL Zmiana danych w nadajniku Zmiana prbek w odbiorniku Wyjcie TxD Wejcie RxD 0 Opadajce zbocze XCK Narastajce zbocze XCK 1 Narastajce zbocze XCK Opadajce zbocze XCK
o Rejestry szybkoci transmisji USART UBRRL i UBRRH

UBRRH nie jest dostpne w trybie kompatybilnoci z ATmega103 a: bity 15..12 bity zarezerwowane Bity te s zarezerwowane do przyszego wykorzystania. W celu zapewnienia kompatybilnoci z przyszymi urzdzeniami bity te powinny by ustawione zero przy zapisie UBRRH. b: bity 11..0 UBRR11..0: rejestr szybkoci transmisji USART Jest to 12 bitowy rejestr, ktry zawiera dane o szybkoci transferu USART. UBRRH zawiera cztery najstarsze bity a UBRRL 8 modszych bitw. Trwajca transmisja zostanie przerwana w przypadku zmian w tym rejestrze. Zapisanie UBRRL spowoduje natychmiastow aktualizacj szybkoci transferu prescalera.
Przykady ustawie szybkoci transmisji

Dla standardowego kwarcu i rezonatora czstotliwoci tabela 82 przedstawia szybko transferu w trybie asynchronicznym. Warto UBRR, ktra dostarcza aktualnego podzielnika szybkoci transferu nie rni si bardziej ni o 0.5% od zamierzonej szybkoci wytuszczone w tabeli. Wiksze oszacowanie bdu jest moliwe ale wtedy odbiornik bdzie mia mniejsz odporno na zakcenia kiedy to oszacowanie jest wysokie, szczeglnie dla duych szeregowych ramek (Zakres operacji asynchronicznych str 181). Wartoci bdw mona obliczy korzystajc z nastpujcych rwna:
szybkosc _ transferu najblizsz _ wartosc blad [%] = 1 * 100% szybkosc _ transferu

1. UBRR = 0, bd = 0.0%

SZEREGOWY INTERFEJS DWUPRZEDWODOWY


WACIWOCI
Wspieranie operacji Master i Slave Dziaanie urzdzenia zarwno w trybie nadajnika jak i odbiornika 7-bitowa przestrze adresowa umoliwiajca zaadresowanie 128 rnych urzdze w trybie Slave Prdko transferu danych do 400kHz W peni programowalne adresy urzdze Slave z wsparciem wywoa oglnych

SZEREGOWY INTERFEJS DWUPRZEWODOWY, DEFINICJA MAGISTRALI


Szeregowy interfejs dwuprzewodowy (TWI) idealnie pasuje do aplikacji mikrosterownikw. Protok TWI pozwala projektantowi systemu na poczenie do 128 rnych urzdze uywajc tylko dwch dwukierunkowych magistral, jednej dla zegara (SCL) i drugiej dla danych (SDA). Jedynym zewntrznym sprztem potrzebnym do implementacji magistrali jest pojedynczy rezystor podcigajcy dla kadej z magistral TWI. Wszystkie urzdzenia podpite do magistrali maj odrbne adresy. Mechanizmy rozwizujce problem konfliktw na magistrali s zawarte w protokole TWI. Rys. 85 Magistrala TWI

TERMINOLOGIA TWI Nastpujce definicje s czsto spotykane w tej czci dokumentacji: MASTER urzdzenie ktre inicjuje oraz przerywa transmisj, master generuje rwnie impulsy zegara SCL. SLAVE urzdzenie zaadresowane przez mastera TRANSMITTER urzdzenie umieszczajce dane na magistrali

RECEIVER urzdzenie czytajce dane z magistrali POCZENIE ELEKTRYCZNE Jak przedstawiono na rys. 1, obydwie magistrale s podczone do dodatniego bieguna zasilania poprzez rezystory podcigajce. Sterowniki magistral wszystkich urzdze s typu otwarty dren lub otwarty kolektor. Umoliwia to realizacj funkcji AND na drucie co jest niezbdne dla operacji wykonywanych przez interfejs. Stan niski na magistrali TWI pojawia si jeeli jedno lub wicej urzdze TWI ma na wyjciu zero. Stan wysoki pojawia si gdy wyjcia wszystkich urzdze TWI s w stanie wysokiej impedancji, pozwalajc w ten sposb rezystorom podcigajcym podwyszy napicie. Naley zauway e wszystkie urzdzenia AVR podczone do magistrali TWI musz by zasilane w kolejnoci pozwalajcej na jakiekolwiek operacje na magistrali. Liczba urzdze, ktre mog by podczone do magistrali jest ograniczona przez limit pojemnociowy wynoszcy 400 pF oraz przez 7-bitow przestrze adresow przeznaczon dla urzdze slave.

TRANSFER DANYCH I FORMAT RAMKI


PRZESYANIE BITW Kademu bitowi danych przesyanemu przez magistral TWI towarzyszy impuls na linii zegara. Sygna danych musi by stabilny w momencie kiedy na linii zegara jest stan wysoki. Jedynym wyjtkiem od tej reguy jest generowanie warunkw startu i stopu. Rys. 86 Wano danych

WARUNKI START I STOP


Master inicjuje oraz przerywa transmisj. Transmisja jest inicjowana kiedy master wyda warunek START na magistral, przerywana gdy pojawi si warunek STOP. Pomidzy warunkami START i STOP magistrala jest uwaana za zajt i aden inny master nie powinien prbowa przejcia nad ni kontroli. Z przypadkiem specjalnym mamy do czynienia gdy nowy warunek START pojawi si pomidzy warunkami

START i STOP. Tego typu warunek nosi nazw REPEATED START i jest wykorzystywany gdy master yczy sobie zainicjowa nowy transfer bez porzucania sterowania nad magistral. Po REPEATED START magistral uwaa si za zajt dopki nie pojawi si nastpny STOP. Takie zachowanie jest identyczne z tym ktre miao miejsce w przypadku START dlatego przyjo si e START opisuje zarwno START jak i REPEATED START. Jak przedstawiono na poniszym rysunku warunki START i STOP s sygnalizowane przez zmian poziomu na linii SDA podczas gdy na linii SCL jest stan wysoki. Rys. 87 Warunki START, REPEATED START oraz STOP

FORMAT PAKIETU ZAWIERAJCEGO DANE Wszystkie pakiety adresw przesyane na magistrali TWI maj dugo 9 bitw i zawieraj 7 bitw adresowych, bit sterujcy odczyt/zapis oraz bit potwierdzenia. Jeeli bit odczytu/zapisu jest ustawiony, rozpoczyna si operacja odczytu, w przeciwnym wypadku powinna si rozpocz operacja zapisu. Kiedy urzdzenia slave rozpoznao swj adres na magistrali powinno to potwierdzi przez ustawienie stanu niskiego na linii SDA w dziewitym cyklu SCL(ACK). Jeeli urzdzenie ktrego adres pojawi si na magistrali jest zajte lub z innych przyczyn nie moe wiadczy usug na danie urzdzenia master, linia SDA powinna by pozostawiona w stanie wysokim w takcie ACK. Master moe wtedy wysa warunek STOP lub REPEATED START aby zainicjowa now transmisj. Cze pakietu zawierajca adres urzdzenia oraz bit READ lub WRITE jest nazywana odpowiednio SLA+R lub SLA+W. MSB bajtu adresu jest przesyane najpierw. Adres urzdzenia slave moe by przydzielony dowolnie przez projektanta, ale adres 0000 000 jest zarezerwowany dla wywoa oglnych. Jeeli wydane zostao wywoanie oglne wszystkie urzdzenia slave powinny odpowiedzie przez ustawienie stanu niskiego na linii SDA w cyklu ACK. Wywoanie oglne jest uywane gdy master yczy sobie przesa t sam wiadomo to kilku urzdze slave w systemie. Kiedy adres wywoania oglnego za ktrym znajdzie si bit zapisu zostanie przesany na magistral, wszystkie urzdzenia slave ustawione na potwierdzenie wywoania oglnego wymusz stan niski na linii SDA w cyklu ACK. Wysane nastpnie dane otrzymaj wszystkie urzdzenia slave, ktre potwierdziy wywoanie oglne. Naley zauway e transmisja adresu wywoania oglnego za ktr poda bit odczytu jest bezsensowna, tak jak w przypadku transmisji rnych danych przez rne urzdzenia slave jednoczenie.

Wszystkie adresy w formacie 1111 xxx powinny by zarezerwowane dal przyszych zastosowa. Rys. 88 Format pakietu z adresem

FORMAT PAKIETU DANYCH Wszystkie pakiety danych przesane na magistral TWI maj dugo 9 bitw, wrd ktrych znajduje si bajt danych oraz bit potwierdzenia. Podczas transferu danych master generuje impulsy zegara oraz warunki START i STOP, podczas gdy odbiornik jest odpowiedzialny za potwierdzenie przyjcia. Potwierdzenie (ACK) jest sygnalizowane przez odbiornik poprzez wymuszenie stanu niskiego na linii SDA podczas dziewitego cyklu SCL. Jeeli odbiornik pozostawi lini SDA w stanie wysokim sygnalizowany jest NACK. Kiedy odbiornik odebra ostatni bajt czy te z innych przyczyn nie moe odebra ju wicej bajtw powinien poinformowa nadajnik wysyajc NACK po kocowym bajcie. Pocztkowo odbierany jest MSB bajtu danych. Rys. 89 Format pakietu danych

TRANSMISJA PAKIETW CZONYCH Transmisja zwykle zawiera warunek START, SLA+R/W, jeden lub wicej pakietw danych oraz warunek STOP. Puste wiadomoci skadajce si z warunku START po ktrym nastpuje warunek STOP s niedozwolone. Naley zauway e funkcja AND na drucie na linii SCL moe by wykorzystana do implementacji uzgodnienia pomidzy urzdzeniem master i slave. Urzdzenie slave moe rozszerzy okres w ktrym na linii SCL jest stan niski poprzez jego wymuszenie. Jest to uyteczne w przypadku gdy szybko zegara ustawiona przez mastera jest zbyt dua dla urzdzenia slave, lub gdy slave potrzebuje

dodatkowego czasu na obliczenia pomidzy transmisjami danych. Slave rozszerzajcy okres stanu niskiego na linii SCL nie bdzie wpywa na okres stanu wysokiego ktry zaley od mastera. W konsekwencji slave moe redukowa prdko transferu danych TWI przez wyduanie cyklu roboczego. Rys. 6 pokazuje typowa transmisj danych. Naley zauway, e kilka bajtw danych moe by przesyanych pomidzy SLA+R/W a warunkiem STOP, w zalenoci od protokou programowego zaimplementowanego w aplikacji. Rys. 90 Typowa transmisja danych

SYSTEMY MAGISTRAL MULTI-MASTER, ARBITRA, SYNCHRONIZACJA


Protok TWI pozwala na tworzenie systemw magistral z kilkoma urzdzeniami typu master. W tym celu podjto specjalne rodki eby zapewni normaln kontynuacj transmisji nawet wtedy gdy dwa lub wicej urzdze master zainicjuj transmisj w tym samym czasie. W systemach multi-master pojawiy si dwa problemy: Naley zaimplementowa algorytm pozwalajcy tylko jednemu urzdzeniu master zakoczy transmisj. Inne urzdzenia tego typu powinny zaprzesta transmisji kiedy odkryj e przegapiy proces wyboru zwany arbitraem. Kiedy wspzawodniczce urzdzenie master odkryje e przegapio proces arbitrau powinno natychmiast przeczy si w tryb slave aby sprawdzi czy zwyciski master nie wysa jego adresu na magistral. Fakt e wiele urzdze master zaczyna transmisj w tym samym czasie nie powinien by wykrywalny przez urzdzenia slave, tzn. dane przesane na magistral nie mog by faszywe. Rne urzdzenia master mog uywa rnych czstotliwoci SCL. Trzeba wymyli schemat synchronizacji szeregowych zegarw wszystkich urzdze typu master, aby pozwoli na kontynuacj transmisji. Uatwi to proces arbitrau. AND na drucie na magistralach jest wykorzystywany w celu rozwizania obu tych problemw. Szeregowe zegary wszystkich urzdze master zostan wymnoone na drucie tworzc zegar zoony z okresem wystpowania stanu wysokiego rwnym okresowi wystpowania stanu wysokiego urzdzenia master z najkrtszym okresem stanu wysokiego. Okres stanu niskiego zoonego zegara jest rwny okresowi niskiemu urzdzenia master z najduszym okresem niskim. Naley zauway e wszystkie

urzdzenia master nasuchujce na linii SCL, zaczynaj efektywnie zlicza swoje wysokie i niskie okresy kiedy zoona linia SCL przechodzi odpowiednio w stan wysoki lub niski. Rys. 91 Synchronizacja pomidzy wieloma urzdzeniami master

Arbitra jest wykonywany stale przez wszystkie urzdzenia master monitorujce lini SDA po wyprowadzeniu danych. Jeeli warto odczytana z linii SDA nie pasuje do wartoci wyprowadzonej przez mastera, straci on arbitra. Urzdzenie master moe straci arbitra jedynie w przypadku gdy wyprowadzi wysok warto SDA podczas gdy inne urzdzenie master wyprowadzi warto nisk. Pokonany master powinien natychmiast przej w tryb slave, sprawdzajc czy nie zosta zaadresowany przez zwyciskie urzdzenie master. Linia SDA powinna pozosta w stanie wysokim, ale przegranym urzdzeniom master pozwala si generowa sygna zegarowy do koca biecych danych lub adresu. Arbitra bdzie kontynuowany tak dugo dopki nie pozostanie tylko jedno urzdzenie master, co moe zabra wiele bitw. Jeeli kilka urzdze master chce zaadresowa to samo urzdzenie slave arbitra jest kontynuowany w czasie przesyania pakietu danych.

Rys. 92 Arbitra pomidzy dwoma urzdzeniami master

Naley zauway e arbitra nie jest moliwy pomidzy: Warunkiem REPEATED START a bitem danych Warunkiem STOP a bitem danych Warunkami REPEATED START i STOP

Odpowiedzialno, aby te zabronione sytuacje nigdy nie miay miejsca spoczywa na oprogramowaniu uytkownika. Oznacza to e w systemach multi-master wszystkie transfery danych musz wykorzystywa te sam kompozycj SLA+R/W i pakietu danych. Innymi sowy: Wszystkie transmisje danych musz zawiera t sam ilo pakietw danych, w przeciwnym wypadku nie da si przewidzie rezultatw arbitrau.

PRZEGLD MODUU TWI


Modu TWI zawiera kilka podjednostek jak pokazano na rys. 93. Wszystkie rejestry narysowane pogrubion lini s dostpne przez magistral danych AVR.

Rys. 93 Modu TWI

PINY SCL I SDA Te piny peni rol interfejsu pomidzy AVR TWI a reszt systemu jednostki centralnej mikrosterownika (MCU). Sterowniki wyjciowe zawieraj ogranicznik slew-rate, aby pozosta w zgodzie ze specyfikacj TWI. Czci wejciowe zawieraj jednostk tumic impulsy o duej amplitudzie i krtkim czasie trwania (krtszym ni 50 ns). Naley zauway e wewntrzne zatrzymywanie si w blokach AVR moe zosta aktywowane przez ustawienie bitw PORT odpowiadajcych pinom SCL i SDA. Wewntrzne zatrzymania mog w niektrych systemach eliminowa potrzeb uycia zatrzyma zewntrznych.

MODU GENERATORA BIT RATE


Ta jednostka steruje okresem SCL kiedy dziaamy w trybie master. Okres SCL jest uzaleniony od ustawie rejestru TWBR oraz bitw prescalera w rejestrze stanu TWI (TWSR). Operacje wykonywane w trybie slave nie zale od ustawie TWBR oraz TWSR, ale czstotliwo zegara jednostki centralnej w urzdzeniu slave musi by przynajmniej 16 razy wiksza od czstotliwoci SCL. Naley zauway e urzdzenia slave mog przedua okres niski na linii SCL redukujc przez to redni okres zegara magistrali TWI. Czstotliwo SCL jest generowana zgodnie z nastpujcym rwnaniem:

f SCL =

f zegara CPU 16 + 2(TWBR) * 4 TWPS

TWBR = warto rejestru TWBR TWPS = warto bitw prescalera w rejestrze stanu TWSR

Uwaga: TWBR powinien by rwny 10 lub wicej jeeli dziaamy w trybie master. Jeeli TWBR jest niszy ni 10, master moe generowa nieprawidowe sygnay na wyjciu SDA i SCL dla przypomnienia bajtu. Problem moe pojawi si gdy dziaamy w trybie master, wysyamy START + SLA+R/W do urzdzenia slave (slave nie musi by podczony do magistrali aby ten warunek zaszed). MODU INTERFEJSU MAGISTRALI Ta jednostka zawiera rejestr przesuwny danych i adresu (TWDR), sterownik STAR/STOP oraz sprztowe wykrywanie arbitrau. TWDR zawiera adres lub dane ktre maj zosta wysane lub odebrany adres lub dane. Oprcz 8-bitowego TWDR modu interfejsu magistrali zawiera rejestr z bitem (N)ACK. Rejestr (N)ACK nie jest bezporednio dostpny dla oprogramowania. Jednake podczas odbierania moe zosta ustawiony lub skasowany przez manipulacj rejestrem sterujcym (TWCR). W trybie nadajnika warto otrzymanego bitu (N)ACK moe by okrelona przez warto w TWSR. Sterownik START/STOP jest odpowiedzialny za generowanie i wykrywanie warunkw START, REPEATED START i STOP. Sterownik START/STOP jest w stanie wykry warunki START i STOP nawet wtedy gdy AVR MCU jest w jednym z trybw upienia, poprzez aktywacj trybu wzbudzenia MCU jeeli jest adresowana przez urzdzenie master. Jeeli TWI zainicjowa transmisj jako master, sprztowe wykrywanie arbitrau stale monitoruje transmisj prbujc decydowa jeeli trwa arbitra. Jeeli TWI przegra w procesie arbitrau jednostka sterujca jest o tym informowana. Mona wtedy zareagowa prawidowo i stosowne kody stanu zostan wygenerowane. MODU DOPASOWANIA ADRESU Jednostka dopasowania adresu sprawdza czy otrzymany adres pasuje do 7-bitowego adresu w rejestrze adresowym (TWAR). Jeeli bit rozpoznawania wywoa oglnych (TWGCE) w TWAR jest ustawiony na jeden, wszystkie przychodzce bity adresw bd rwnie porwnywane z adresami wywoa oglnych. Po dopasowaniu adresu modu sterujcy jest informowany, zezwalajc na podjecie stosownego dziaania. TWI moe potwierdzi swj adres lub nie, zalenie od ustawie w TWCR. Jednostka dopasowania adresu jest w stanie porwnywa adresy nawet wtedy gdy AVR MCU jest w stanie upienia, poprzez aktywacj trybu wzbudzenia MCU jeeli jest adresowana przez urzdzenie master. Jeeli pojawi si kolejne przerwanie dopasowania adresu podczas wyczania TWI i wzbudzania jednostki centralnej, TWI przerwie dziaanie i powrci do stanu bezczynnoci. Jeeli powoduje to jakie problemy zapewniamy e dopasowanie adresu TWI jest jedynym aktywnym przerwaniem podczas wyczania.

JEDNOSTKA STERUJCA Jednostka sterujca monitoruje magistral TWI i generuje odpowiedzi odpowiadajce ustawieniom w rejestrze sterujcym (TWCR). Jeeli pojawi si zdarzenie na magistrali TWI wymagajce uwagi aplikacji, znacznik przerwania (TWINT) jest potwierdzany. W nastpnym cyklu zegarowym, TWSR jest aktualizowany z kodem stanu identyfikujcym zdarzenie. TWSR zawiera jedynie istotne informacje o stanie kiedy TWINT jest potwierdzany. W kadym innym razie, TWSR zawiera specjalny kod stanu wskazujcy e adne istotne informacje nie s dostpne. Tak dugo jak znacznik TWINT jest ustawiony, linia SCL jest utrzymywana w stanie niskim. Pozwala to oprogramowaniu zakoczy swoje zadania zanim zezwoli si na kontynuacj transmisji TWI. Znacznik TWINT jest ustawiany w nastpujcych sytuacjach: Po przesaniu przez TWI warunku START/REPEATED START Po przesaniu przez TWI SLA+R/W Po przesaniu przez TWI bajtu adresu Po utracie przez TWI arbitrau Po zaadresowaniu TWI jego adresem slave lub wywoaniem oglnym Po odebraniu przez TWI bajtu danych Po odebraniu STOP lub REPEATED START gdy urzdzenie cigle jest adresowane jako slave Kiedy pojawi si bd magistrali spowodowany niedozwolonym warunkiem START/STOP

OPIS REJESTRW TWI


REJESTR TWI BIT RATE TWBR

Bity 7..0 Rejestr TWI Bit Rate

TWBR suy do wyboru dzielnika generatora bit rate. Generator bit rate jest dzielnikiem czstotliwoci , ktry generuje czstotliwo zegara SCL w trybie master. REJESTR STERUJCY TWI TWCR

TWCR jest wykorzystywany do sterowania operacjami TWI. Uywa si go do aktywacji TWI, inicjacji dostpu do urzdzenia master przez wydanie warunku START na magistral, generacji potwierdzenia odbiornika, generacji warunku STOP, sterowania zawieszaniem magistrali kiedy dane do zapisu s

zapisywane do TWDR. Rejestr TWCR wskazuje rwnie kolizj zapisu, kiedy prbuje si zapisa dane do TWDR podczas gdy jest on niedostpny. Bit 7 TWINT: znacznik przerwa TWI Ten bit jest ustawiany sprztowo kiedy TWI zakoczy biece zadanie i oczekuje odpowiedzi ze strony oprogramowania. Jeeli I-ty bit w SREG i TWIE w TWCR s ustawione, MCU skoczy pod wektor przerwa TWI. Kiedy TWINT jest ustawiony, niski okres SCL jest rozcigany. Flaga TWINT musi by kasowana sprztowo poprzez wpisanie logicznej jedynki. Naley zauway e ta flaga nie jest automatycznie kasowana sprztowo gdy wykonuje si procedura obsugi przerwania. Trzeba te zwrci uwag e kasowanie tego znacznika rozpoczyna dziaanie TWI, tak wic kady dostp do TWAR, TWSR i TWDR musi si zakoczy zanim ta flaga zostanie skasowana. Bit 6 TWEA: bit aktywacji potwierdzenia TWI Bit TWEA steruje generacj impulsu potwierdzenia. Jeeli na ten bit wpiszemy jeden, impuls ACK jest generowany na magistrali TWI jeeli s spenione nastpujce warunki: 1. Otrzymany zosta wasny adres urzdzenia slave 2. Otrzymane zostao oglne wywoanie, podczas gdy TWGCE w TWAR zosta ustawiony. 3. Otrzymany zosta bajt danych w trybie odbiornik master lub odbiornik slave Przez wpisanie TWEA na zero urzdzenie moe by czasowo wirtualnie odczone od szeregowej dwuprzewodowej magistrali. Rozpoznawanie adresu moe by wznowione przez ponowne wpisanie bitu TWEA na jeden. Bit 5 TWSTA: bit TWI warunku START Aplikacja zapisuje jeden na bit TWSTA kiedy chce sta si urzdzeniem master na dwuprzewodowej szeregowej magistrali. Ukad TWI sprawdza czy magistrala jest dostpna i generuje warunek STRAT jeeli magistrala jest wolna. Jednake jeeli magistrala jest zajta, TWI czeka a warunek STOP zostanie wykryty, i wwczas generuje nowy warunek START, przyznajc magistrali status Master. TWSTA jest kasowany przez ukad TWI kiedy warunek START zosta przesany. Bit 4 TWSTO: bit TWI warunku STOP Wpisanie jedynki na bit TWSTO w trybie master wygeneruje warunek STOP na magistrali. Kiedy warunek STOP jest wykonywany, bit TWSTO jest kasowany automatycznie. W trybie slave ustawienie bitu TWSTO moe zosta uyte do powrotu z warunku bdu. Wtedy nie zostanie wygenerowany warunek STOP, ale TWI powrci do nieadresowanego trybu slave i wprowadzi linie SCL i SDA w stan wysokiej impedancji. Bit 3 TWWC: znacznik kolizji zapisu TWI Bit TWWC jest ustawiany gdy nastpuje prba zapisu do TWDR kiedy TWINT jest w stanie niskim. Ta flaga jest kasowana przez zapis rejestru TWDR, kiedy TWINT jest w stanie wysokim. Bit 2 TWEN: bit aktywacji TWI Bit TWEN aktywuje dziaanie interfejsu TWI. Kiedy do TWEN wpisana jest jedynka, TWI przejmuje sterowanie nad pinami wejcia/wyjcia podczonymi do pinw SCL i SDA, aktywuje ograniczenia slew-rate i filtry krtkich impulsw o duej amplitudzie. Jeeli w tym bicie wpiszemy zero, TWI jest wyczone i wszystkie transmisje TWI s przerywane, cznie z aktualnie wykonywanymi. Bit 1 Res: bit zarezerwowany Ten bit jest zarezerwowany i zawsze odczytuje si go jako 0. Bit 0 TWIE: aktywacja przerwa TWI

Kiedy ten bit jest ustawiony na jeden i I-ty bit w SREG jest ustawiony, danie przyjcia przerwania bdzie aktywne tak dugo jak TWINT jest w stanie wysokim. REJESTR STANU TWI TWSR

Bity 7..3 TWS: stan TWI

Tych 5 bitw odzwierciedla stan ukadu TWI i magistrali. Rne kody statusw zostan opisane pniej. Naley zauway, e warto przeczytana z TWSR zawiera zarwno 5-bitow warto stanu oraz 2-bitowa warto prescalera. Projektant aplikacji powinien zamaskowa bity prescalera na zero podczas sprawdzania bitw stanu. Sprawia to e sprawdzanie stanu jest niezalene od ustawie prescalera. Bit 2 Res: bit zarezerwowany Ten bit jest zarezerwowany i zawsze odczytuje si go jako 0. Bity 1..0 TWPS: bity TWI prescalera Te bity mog by zapisywane i odczytywane, steruj prescalerem bit rate. REJESTR DANYCH TWI TWDR

W trybie transmisji TWDR zawiera nastpny bajt przeznaczony do wysania. W trybie odbiornika, TWDR zawiera ostatnio odebrany bajt. Jest zapisywalny gdy TWI nie jest w stanie przesuwania bajtu. Zdarza si to wtedy gdy TWINT jest ustawiona przez sprzt. Naley zauway e rejestr danych nie moe by zainicjowany przez uytkownika zanim pojawi si pierwsze przerwanie. Dane w TWDR pozostan stabilne tak dugo jak TWINT bdzie ustawione. Kiedy dane s przesuwane na zewntrz, dane na magistrali s przesuwane do wewntrz. TWDR zawsze zawiera ostatni bajt obecny na magistrali, wyjtkiem jest sytuacja po wzbudzeniu z trybu upienia przez przerwanie TWI. W tym przypadku zawarto TWDR jest niezdefiniowana. W przypadku przegrania arbitrau, adne dane nie s tracone w transmisji z urzdzenia master do slave. Bit ACK jest sterowany automatycznie przez ukad TWI, CPU nie ma do niego bezporedniego dostpu. Bity 7..0 TWD: rejestr danych TWI Tych 8 bitw tworzy nastpny bajt danych do przesania lub ostatni bajt danych ktre zostay odebrane.

TWI (SLAVE) REJESTR ADRESU TWAR

TWAR powinien by zaadowany 7-bitowym adresem urzdzenia slave (na 7 najbardziej znaczcych bitach) do ktrego TWI bdzie si odwoywa gdy zostanie zaprogramowane jako nadajnik lub odbiornik. W systemach multimaster, TWAR musi by ustawiony w urzdzeniach master ktre mog by adresowane jako urzdzenia slave przez inne urzdzenia master. LSB rejestru TWAR jest wykorzystywane do aktywacji rozpoznania adresu wywoania oglnego. Z rejestrem zwizany jest komparator adresw ktry szuka adresw urzdze slave (lub adresu wywoania oglnego jeeli jest aktywne) w odebranym szeregowym adresie. Jeeli porwnanie wypadnie pomylnie generowane jest danie przyjcia przerwania. Bity 7..1 TWA: rejestr adresowy TWI (Slave) Bit 0 TWGCE: Bit TWI aktywacji rozpoznania wywoania oglnego Tych 7 bitw tworzy adres slave jednostki TWI Jeeli ten bit jest ustawiony aktywuje rozpoznanie wywoania oglnego danego na magistral.

UYWANIE TWI
AVR TWI jest zorientowane bajtowo i bazuje na przerwaniach. Przerwania s wydawane po wszystkich zdarzeniach na magistrali takich jak przyjcie bajtu transmisji lub warunek START. Poniewa TWI bazuje na przerwaniach, oprogramowanie jest wolne od ciaru wykonywania innych operacji podczas transferu danych. Naley zauway e bit TWIE w TWCR razem z bitem globalnej aktywacji przerwania w SREG pozwalaj aplikacji zdecydowa czy asercja flagi TWINT powinna generowa danie przyjcia przerwania czy nie. Jeeli bit TWIE jest kasowany, aplikacja musi odda TWINT eby wykry akcj na magistrali TWI. Kiedy znacznik TWINT jest potwierdzony oznacza to e TWI zakoczy operacj i oczekuje na odpowied aplikacji. W tym przypadku TWSR zawiera warto wskazujc biecy stan magistrali TWI. Oprogramowanie moe wtedy zdecydowa jak TWI powinno si zachowa w nastpnym cyklu magistrali TWI przez manipulacj rejestrami TWCR i TWDR. Rys. 94 jest prostym przykadem interfejsu pomidzy aplikacj a sprztem TWI. W tym przykadzie master yczy sobie przesa pojedynczy bajt danych do urzdzenia slave. Ten opis jest raczej abstrakcyjny, wicej szczegowych wyjanie zostanie przedstawionych pniej. Prosty przykadowy kod implementacji danego zachowania rwnie zosta przedstawiony. Rys. 94 Interfejs pomidzy aplikacj a TWI podczas typowej transmisji

1. Pierwszym krokiem w transmisji TWI jest przesanie warunku START. Robi si to poprzez wpisanie okrelonej wartoci do TWCR, informujcej sprzt TWI, e naley przesa warunek START. To jak warto wpisa zostanie wyjanione pniej. Jednak wane jest e bit TWINT jest ustawiony we wpisanej wartoci. Wpisanie jedynki do TWINT kasuje flag. TWI nie rozpocznie jakichkolwiek operacji tak dugo jak bit TWINT w TWCR bdzie ustawiony. Natychmiast po tym jak aplikacja wykasuje TWINT, TWI zainicjuje transmisj warunkiem START. 2. Kiedy warunek START zosta przesany , znacznik TWINT w TWCR jest ustawiony i TWSR jest aktualizowany kodem stanu wskazujcym e warunek START zosta pomylnie wysany. 3. Oprogramowanie moe teraz testowa warto TWSR, aby upewni si e warunek START zosta pomylnie wysany. Jeeli TWSR wskae co odmiennego, oprogramowanie moe podj pewne specjalne dziaania takie jak obsuga bdu. Przyjmujc e kod stanu jest taki jak oczekujemy, aplikacja musi zaadowa SLA+W do TWDR. Naley pamita e TWDR jest uywany zarwno przez adresy jak i dane. Po tym jak TWDR zosta zaadowany danym SLA+W, okrelona warto musi by wpisana do TWCR, informujca sprzt TWI eby przesa SLA+W obecne w TWDR. To jak warto naley zostanie wpisa opisane pniej. Jednak wane jest e bit TWINT jest ustawiony we wpisanej wartoci. Wpisanie jedynki do TWINT kasuje flag. TWI nie rozpocznie jakichkolwiek operacji tak dugo jak bit TWINT w TWCR bdzie ustawiony. Natychmiast po tym jak aplikacja wykasuje TWINT, TWI zainicjuje transmisj pakietu z adresem. 4. Kiedy pakiet z adresem zostanie przesany flaga TWINT w TWCR zostanie ustawiona i TWSR jest aktualizowany kodem stanu wskazujcym, e pakiet z adresem zosta pomylnie wysany. Kod stanu odzwierciedla rwnie czy urzdzenie slave potwierdzio odbir przesyki.

5. Oprogramowanie powinno teraz testowa warto TWSR, aby upewni si e pakiet z adresem zosta pomylnie wysany i e warto bitu ACK bya taka jak oczekiwano. Jeeli TWSR wskae co odmiennego, oprogramowanie moe podj pewne specjalne dziaania takie jak obsuga bdu. Przyjmujc e kod stanu jest taki jak oczekujemy, aplikacja musi zaadowa pakiet danych do TWDR. Nastpnie okrelona warto musi by wpisana do TWCR, informujca sprzt TWI eby przesa pakiet danych obecny w TWDR. To jak warto naley zostanie wpisa opisane pniej. Jednak wane jest e bit TWINT jest ustawiony we wpisanej wartoci. Wpisanie jedynki do TWINT kasuje flag. TWI nie rozpocznie jakichkolwiek operacji tak dugo jak bit TWINT w TWCR bdzie ustawiony. Natychmiast po tym jak aplikacja wykasuje TWINT, TWI zainicjuje transmisj pakietu danych. 6. Kiedy pakiet danych zostanie przesany flaga TWINT w TWCR zostanie ustawiona i TWSR jest aktualizowany kodem stanu wskazujcym, e pakiet danych zosta pomylnie wysany. Kod stanu odzwierciedla rwnie czy urzdzenie slave potwierdzio odbir przesyki. 7. Oprogramowanie powinno teraz testowa warto TWSR, aby upewni si e pakiet danych zosta pomylnie wysany i e warto bitu ACK bya taka jak oczekiwano. Jeeli TWSR wskae co odmiennego, oprogramowanie moe podj pewne specjalne dziaania takie jak obsuga bdu. Przyjmujc e kod stanu jest taki jak oczekujemy, aplikacja musi wpisa okrelon warto do TWCR, informujca sprzt TWI eby przesa warunek STOP. To jak warto naley zostanie wpisa opisane pniej. Jednak wane jest e bit TWINT jest ustawiony we wpisanej wartoci. Wpisanie jedynki do TWINT kasuje flag. TWI nie rozpocznie jakichkolwiek operacji tak dugo jak bit TWINT w TWCR bdzie ustawiony. Natychmiast po tym jak aplikacja wykasuje TWINT, TWI zainicjuje transmisj warunku STOP. Naley zauway e TWINT NIE jest ustawiana po tym jak wysano warunek STOP. Chocia ten przykad jest prosty, pokazuje stopie skomplikowania we wszystkich transmisjach. Podsumowujc: Kiedy TWI zakoczy operacj i oczekuje odpowiedzi aplikacji, znacznik TWINT jest ustawiany. Linia SCL jest w stanie niskim dopki TWINT nie zostanie skasowane. Kiedy znacznik TWINT jest ustawiony uytkownik musi zaktualizowa wszystkie rejestry TWI wartoci zwizan z nastpnym cyklem magistrali TWI. W przykadzie TWDR musia by zaadowany wartoci przeznaczon do transmisji w nastpnym cyklu magistrali. Po aktualizacji wszystkich rejestrw TWI i zakoczeniu zada aplikacji TWCR jest zapisywany. Podczas zapisu TWCR bit TWINT powinien by ustawiony. Wpisanie jedynki do

TWINT kasuje flag. TWI zacznie wtedy wykonywanie jakiejkolwiek operacji okrelonej przez ustawienie TWCR. Poniej podano implementacj w asemblerze i C.

TRYBY TRANSMISJI
TWI moe dziaa w jednym z czterech trybw: Master Transmitter (MT), Master Receiver (MR), Slave Transmitter (ST) i Slave Receiver (SR). Kady z tych trybw moe zosta uyty w tej samej aplikacji. Na przykad TWI moe wykorzystywa tryb MT do zapisu danych do EEPROM TWI, tryb MR do odczytu danych z EEPROM. Jeeli inne urzdzenia master s obecne w systemie, niektre z nich mog przesya dane to TWI a potem tryb SR mgby by uyty. Decyzja o tym ktre tryby s dozwolone naley do oprogramowania.

Kolejne rozdziay opisuj kady z tych trybw. Moliwe kody stanw s opisane poniej razem ze schematami opisujcymi szczegy transmisji danych w kadym z trybw. Schematy zawieraj nastpujce skrty: S: warunek START Rs: warunek REPEATED START R: czytaj bit (wysoki poziom na SDA) W: zapisz bit (niski poziom na SDA) A: potwierd bit (niski poziom na SDA) /A: nie potwierdzaj bitu (wysoki poziom na SDA) Data: bajt danych P: warunek STOP SLA: adres urzdzenia slave Na schematach 96 i 102 okrgi s wykorzystane aby wskaza e flaga TWINT jest ustawiona. Liczby w okrgach pokazuj kod stanu zatrzymany w TWSR, z bitami prescalera zamaskowanymi zerami. W tym punkcie aplikacja musi podj dziaania aby kontynuowa lub zakoczy transfer TWI. Transfer TWI jest zawieszony dopki flaga TWINT nie zostanie skasowana przez oprogramowanie. Kiedy flaga TWINT jest ustawiona, kod stanu w TWSR jest wykorzystany do okrelenia stosownych dziaa aplikacji. Dla kadego kodu stanu, wymagana akcja ze strony oprogramowania oraz szczegy kolejnego szeregowego transferu s podane w tabelach od 87 do 90. Naley zwrci uwag e bity prescalera s zamaskowane zerami w tych tabelach. TRYB MASTER TRANSMITTER W trybie MT liczba bajtw danych jest przesyana do odbiornika slave (zobacz rys. 95). eby wej w tryb master, warunek START musi zosta przesany. Format kolejnego pakietu z adresem okrela w ktry z trybw (MT czy MR) wejdziemy. Jeeli SLA+W jest przesyane, wchodzimy w tryb MT. Wysyajc SLA+R wchodzimy w tryb MR. Wszystkie wspomniane kody stanu zakadaj e bity prescalera s rwne zero lub s zamaskowane zerami.

Rys. 95 Przesy danych w trybie MT

Warunek START jest wysany przez wpisanie nastpujce wartoci do TWCR:

TWEN musi zosta ustawione aby aktywowa TWI, TWSTA musi zosta przypisana jedynka aby przesa warunek START oraz TWINT musi by rwny jeden aby wykasowa flag TWINT. Wwczas TWI bdzie testowa magistral i wygeneruje warunek START tak szybko jak tylko magistrala zostanie zwolniona. Po przesaniu warunku START, flaga TWINT jest ustawiana sprztowo i kod stanu w TWSR bdzie wynosi $80 (zobacz tabela 87). eby wej w tryb MT, SLA+W musi zosta przesane. Odbywa si to przez wpisanie SLA+W do TWDR. Od tego czasu bit TWINT powinien by skasowany (przez przypisanie mu jedynki) aby mc kontynuowa transfer. Dokonuje si tego przez wpisanie nastpujcej wartoci do TWCR:

Kiedy SLA+W zostanie przesane i otrzymany zostanie bit potwierdzenia, TWINT jest ustawiane ponownie i kod stanu w trybie master moe wynosi $18, $20 lub $38. Dla kadej z tych wartoci jest przewidziana stosowne dziaanie. Szczegy s podane w tabeli 87. Kiedy SLA+W zostanie pomylnie przesane powinien zosta wysany pakiet danych. Odbywa si to przez wpisanie bajtu danych do TWDR. TWDR musi tylko by zapisane kiedy TWINT jest w stanie wysokim. Jeeli nie dostp zostanie zawieszony, a bit TWWC w TWCR zostanie ustawiony. Po aktualizacji TWDR, bit TWINT powinien zosta skasowany (przez przypisanie mu wartoci jeden) aby kontynuacja transferu by moliwa. Dokona tego wpisanie nastpujcej wartoci do TWCR:

Ten schemat jest powtarzany dopki ostatni bajt nie zostanie wysany i nie zostanie zakoczona transmisja przez generacje warunku STOP lub REPEATED START. Warunek STOP jest generowany przez wpisanie poniszej wartoci do TWCR.

Warunek REPEATED START jest generowany przez wpisanie poniszej wartoci do TWCR.

Po warunku REPEATED START (stan $10) TWI moe uzyska dostp do tego samego urzdzenia slave lub do nowego urzdzenia slave bez generacji warunku STOP. REPEATED START aktywuje urzdzenie master aby przecza midzy urzdzeniami slave, tryb MT i MR bez utraty sterowania na magistrali. Tabela 87 Kody stanw dla trybw MT

Rys. 96 Formaty i stany w trybie MT

Tryb Master Receiver


W trybie Master Receiver bajty danych s otrzymywane od nadajnika slave (zobacz rys. 97). by wej w tryb MR musi zosta wysany warunek START. Format kolejnego pakietu z adresem okrela w ktry z trybw (MT czy MR) wejdziemy. Jeeli SLA+W jest przesyane, wchodzimy w tryb MT. Wysyajc SLA+R wchodzimy w tryb MR. Wszystkie wspomniane kody stanu zakadaj e bity prescalera s rwne zero lub s zamaskowane zerami.

Rys. 97 Przesy danych w trybie MR

Warunek START jest wysany przez wpisanie nastpujce wartoci do TWCR:

TWEN musi zosta ustawione aby aktywowa TWI, TWSTA musi zosta przypisana jedynka aby przesa warunek START oraz TWINT musi by rwny jeden aby wykasowa flag TWINT. Wwczas TWI bdzie testowa magistral i wygeneruje warunek START tak szybko jak tylko magistrala zostanie zwolniona. Po przesaniu warunku START, flaga TWINT jest ustawiana sprztowo i kod stanu w TWSR bdzie wynosi $80 (zobacz tabela 87). eby wej w tryb MR, SLA+R musi zosta przesane. Odbywa si to przez wpisanie SLA+R do TWDR. Od tego czasu bit TWINT powinien by skasowany (przez przypisanie mu jedynki) aby mc kontynuowa transfer. Dokonuje si tego przez wpisanie nastpujcej wartoci do TWCR:

Kiedy SLA+R zostanie przesane i otrzymany zostanie bit potwierdzenia, TWINT jest ustawiane ponownie i kod stanu w trybie master moe wynosi $38, $40 lub $48. Dla kadej z tych wartoci jest przewidziana stosowne dziaanie. Szczegy s podane w tabeli 96. Odebrane dane mog zosta odczytane z rejestru TWDR kiedy znacznik TWINT jest ustawiony sprztowo na jeden. Ten schemat jest powtarzany dopki ostatni bajt nie zostanie odebrany. Po tym jak ostatni bajt zosta otrzymany MR powinien poinformowa ST poprzez wysanie NACK po ostatnim otrzymanym bajcie danych. Transfer zostaje zakoczony po wysaniu warunku STOP lub REPEATED START. Warunek STOP jest generowany przez wpisanie poniszej wartoci do TWCR.

Warunek REPEATED START jest generowany przez wpisanie poniszej wartoci do TWCR.

Po warunku REPEATED START (stan $10) TWI moe uzyska dostp do tego samego urzdzenia slave lub do nowego urzdzenia slave bez generacji warunku STOP. REPEATED START aktywuje urzdzenie master aby przecza midzy urzdzeniami slave, tryb MT i MR bez utraty sterowania na magistrali. Rys. 98 Formaty i stany w trybie MR

Tabela 88 Kody stanu dla trybu MR

TRYB SLAVE RECEIVER W trybie Slave Receiver bajty danych s otrzymywane od nadajnika master (zobacz rys. 99). Wszystkie wspomniane kody stanu zakadaj e bity prescalera s rwne zero lub s zamaskowane zerami. Rys. 99 Przesy danych w trybie SR

Aby zainicjowa tryb Slave Receiver, TWAR i TWCR musz zosta zainicjowane w nastpujcy sposb:

Starsze 7-bitw jest adresem urzdzenia slave, ktry jeeli zostanie wygenerowany przez urzdzenie master spowoduje e TWI odpowie. Jeeli LSB jest ustawiony TWI bdzie odpowiada na adres wywoania oglnego ($00), w przeciwnym wypadku wywoania oglne bd ignorowane.

Na bit TWEN musi zosta wpisana jedynka aby aktywowa TWI. Bit TWEA rwnie musi by ustawiony na jeden aby aktywowa potwierdzenie wasnoci adresu lub wywoania oglnego. Na bity TWSTA i TWSTO naley wpisa zero. Jeeli TWAR i TWCR zostay zainicjowane, TWI czeka a na magistrali pojawi si jego adres (lub adres wywoania oglnego jeeli jest aktywne) po ktrym przesany zostanie bit kierunku przepywu danych. Jeeli bit kierunku jest rwny 0 (zapis) TWI bdzie dziaa w trybie SR, w przeciwnym razie przejdziemy w tryb ST. Po otrzymaniu adresu i bitu kierunku znacznik TWINT zostanie ustawiony i wany stan kodu bdzie mg by odczytany z TWSR. Kod stanu jest uywany do okrelenia stosownej akcji ze strony oprogramowania. Szczegy dziaa podjtych przez aplikacj s zawarte w tabeli 89. Urzdzenie moe take wej w tryb SR jeeli przegra proces arbitrau podczas gdy TWI jest w trybie master (zobacz stany $68 i $78). Jeeli bit TWEA zostanie zresetowany w czasie trwania transferu TWI zwrci Not Acknowledge (1) na SDA po nastpnym otrzymanym bajcie danych. Moe to zosta wykorzystane do wskazania e slave nie jest w stanie odebra ju wicej bajtw. Gdy TWEA jest rwne 0 TWI nie potwierdzi swojego wasnego adresu. Jednake magistrala jest cigle monitorowana i rozpoznawanie adresu moe zosta w kadej chwili wznowione przez ustawienie TWEA. Oznacza to e bit TWEA moe by uyty do tymczasowej izolacji TWI od magistrali. We wszystkich trybach upienia i w trybie bezczynnoci zegar systemowy do TWI jest wyczony. Jeeli bit TWEA jest ustawiony interfejs cigle moe potwierdza swj wasny adres lub wywoanie oglne uywajc magistrali zegara jako rda zegarowego. Cz bdzie wzbudzona ze stanu upienia i TWI utrzyma zegar SCL w stanie niskim podczas budzenia do momentu w ktrym flaga TWINT zostanie skasowana. Przyjmowanie przyszych danych bdzie wykonywane normalnie z normalnie uruchomionym zegarem AVR. Naley zwrci uwag e jeeli AVR jest ustawione na dugi czas uruchomienia, linia SCL moe by utrzymana w stanie niskim przez dugi czas blokujc tym samym transmisj danych. TWDR nie odzwierciedla ostatniego bajtu obecnego na magistrali podczas wzbudzania z trybw upienia.

Tabela 89 Kody stanw dla trybu SR

Rys. 100 Formaty i stany w trybie SR

TRYB SLAVE TRANSMITTER W trybie Slave Transmitter bajty danych s wysyane do odbiornika master (zobacz rys. 101). Wszystkie wspomniane kody stanu zakadaj e bity prescalera s rwne zero lub s zamaskowane zerami.

Rys. 101 Przesy danych w trybie ST

Aby zainicjowa tryb Slave Transmitter, TWAR i TWCR musz zosta zainicjowane w nastpujcy sposb:

Starsze 7-bitw jest adresem urzdzenia slave, ktry jeeli zostanie wygenerowany przez urzdzenie master spowoduje e TWI odpowie. Jeeli LSB jest ustawiony TWI bdzie odpowiada na adres wywoania oglnego ($00), w przeciwnym wypadku wywoania oglne bd ignorowane.

Na bit TWEN musi zosta wpisana jedynka aby aktywowa TWI. Bit TWEA rwnie musi by ustawiony na jeden aby aktywowa potwierdzenie wasnoci adresu lub wywoania oglnego. Na bity TWSTA i TWSTO naley wpisa zero. Jeeli TWAR i TWCR zostay zainicjowane, TWI czeka a na magistrali pojawi si jego adres (lub adres wywoania oglnego jeeli jest aktywne) po ktrym przesany zostanie bit kierunku przepywu danych. Jeeli bit kierunku jest rwny 1 (odczyt) TWI bdzie dziaa w trybie ST, w przeciwnym razie przejdziemy w tryb SR. Po otrzymaniu adresu i bitu kierunku znacznik TWINT zostanie ustawiony i wany stan kodu bdzie mg by odczytany z TWSR. Kod stanu jest uywany do okrelenia stosownej akcji ze strony oprogramowania. Szczegy dziaa podjtych przez aplikacj s zawarte w tabeli 90. Urzdzenie moe take wej w tryb ST jeeli przegra proces arbitrau podczas gdy TWI jest w trybie master (zobacz stan $B0). Jeeli na bit TWEA zostanie wpisane 0 podczas transferu, TWI przele ostatni bajt transferu. Wejdziemy w stan $C0 lub $C8 zalenie od tego czy odbiornik master przele NACK czy ACK po kocowym bajcie. TWI zostaje przeczone do nieadresowalnego trybu slave i bdzie ignorowa urzdzenie master podczas kontynuowania przez nie transmisji. Z tego powodu MR bdzie otrzymywa jedynki. W stan $C8

wejdziemy gdy master wymaga dodatkowych bajtw danych (przez przesanie ACK), nawet wtedy gdy slave przesa wszystkie bajty (TWEA na zero i oczekiwanie na NACK od urzdzenia master). Gdy TWEA jest ustawione na 0 podczas transferu TWI nie odpowie na swj wasny adres. Jednake magistrala jest cigle monitorowana i rozpoznawanie adresu moe zosta w kadej chwili wznowione przez ustawienie TWEA. Oznacza to e bit TWEA moe by uyty do tymczasowej izolacji TWI od magistrali. We wszystkich trybach upienia i w trybie bezczynnoci zegar systemowy do TWI jest wyczony. Jeeli bit TWEA jest ustawiony interfejs cigle moe potwierdza swj wasny adres lub wywoanie oglne uywajc magistrali zegara jako rda zegarowego. Cz bdzie wzbudzona ze stanu upienia i TWI utrzyma zegar SCL w stanie niskim podczas budzenia do momentu w ktrym flaga TWINT zostanie skasowana. Przyjmowanie przyszych danych bdzie wykonywane normalnie z normalnie uruchomionym zegarem AVR. Naley zwrci uwag e jeeli AVR jest ustawione na dugi czas uruchomienia, linia SCL moe by utrzymana w stanie niskim przez dugi czas blokujc tym samym transmisj danych. TWDR nie odzwierciedla ostatniego bajtu obecnego na magistrali podczas wzbudzania z trybw upienia. Tabela 90 Kody stanw dla trybu ST

Rys. 102 Formaty i stany dla trybu ST

RNE STANY S dwa kody stanw nie odpowiadajce zdefiniowanym stanom TWI (zobacz tabela 91). Stan $F8 wskazuje e adne istotne informacje nie s dostpne poniewa znacznik TWINT nie jest ustawiony. Takie zdarzenie ma miejsce pomidzy innymi stanami oraz gdy TWI nie jest uwikany w szeregowy transfer. Stan $00 wskazuje e pojawi si bd magistrali podczas transferu. Tego typu bad zdarza si gdy warunki START i STOP pojawi si na niedozwolonej pozycji w formacie ramki. Przykady takich niedozwolonych pozycji zdarzaj si podczas szeregowego transferu bajtu adresu, bajtu danych czy bitu potwierdzenia. Kiedy ma miejsce bd TWINT zostaje ustawione. Aby powrci ze stanu bdnego, naley ustawi flag TWSTO i skasowa TWINT. Spowoduje to e TWI wejdzie w tryb nieadresowanego slavea i skasuje znacznik TWSTO (inne bity w TWCR nie ulegn zmianie). Linie SDA i SCL zostan zwolnione i zostanie wygenerowany warunek STOP. Tabela 91 Rne stany

TRYBY ZOONE Z KILKU TRYBW TWI Istniej sytuacje, w ktrych tryby TWI musz zosta poczone eby zakoczy pewne dziaanie. Rozwamy na przykad odczyt danych z szeregowego EEPROM-u. Zwykle tego typu transfer przebiega w nastpujcy sposb: 1. Przesy musi zosta zainicjowany 2. EEPROM musi zosta poinstruowany, ktre miejsce powinno by odczytane 3. Odczyt musi by przygotowany 4. Transfer musi si zakoczy Naley zauway e dane s przesyane zarwno od urzdzenia master do urzdzenia slave jak i odwrotnie. Master musi poinstruowa slavea ktra lokacj chce odczyta, co wymaga uycia trybu MT. Nastpnie dane musza zosta odczytane ze slavea co oznacza uycie trybu MR. Dlatego kierunek przesyu musi zosta zmieniony. Master musi utrzyma sterowanie nad magistral podczas tych wszystkich krokw, ktre naley uwaa za operacje niepodzielne. Gdy ta zasada nie jest przestrzegana w systemach multimaster inne urzdzenie master moe zmieni wskanik danych w EEPROM-ie pomidzy krokami 2 i 3, wwczas master odczyta dane ze zego miejsca. Taka zmiana kierunku przesyu jest dokonana poprzez przesanie REPEATED START pomidzy transmisj bajtu adresu a przyjciem danych. Po REPEATED START utrzymuje magistral w swoim posiadaniu. Poniszy rysunek pokazuje przepyw w tym przesyle. Rys. 103 Tryby zoone z kilku trybw TWI uzyskujce dostp do EEPROM-u

SYSTEMY MULTI-MASTER I ARBITRA


Jeeli wiele urzdze master jest podpitych do tej samej magistrali, transmisja moe zosta zainicjowana rwnoczenie przez jedno lub kilka z nich. Standard TWI radzi sobie z tego typu sytuacj i zapewnia e tylko jednemu urzdzeniu master pozwoli si kontynuowa transfer oraz e adne dane nie zostan utracone w tym procesie. Przykad sytuacji arbitrau jest narysowany poniej, gdzie dwa urzdzenia master prbuj przesya dane do odbiornika slave.

Rys. 104 Przykad arbitrau

Jak opisano poniej, kilka rnych sytuacji moe si pojawi podczas arbitrau: Dwa lub wicej urzdze master rozpoczo identyczn komunikacj z tym samym urzdzeniem slave. W tym przypadku ani slave ani adne z urzdze master nie bd wiedziay o konflikcie na magistrali. Dwa lub wicej urzdze master chce uzyska dostp do tego samego slavea z rnymi danymi i rnymi bitami kierunku. W tym przypadku pojawi si arbitra. Urzdzenia master staraj si wyprowadzi jedynk na SDA podczas gdy inne urzdzenie master wyprowadzi zero i utraci arbitra. Przegrywajce urzdzenia master przecz si w tryb nieadresowanych urzdze slave lub bd czeka na zwolnienie magistrali i przel nowy warunek START co zaley od rozwizania przyjtego w oprogramowaniu. Dwa lub wicej urzdze master chce uzyska dostp do rnych slavew. W tym przypadku arbitra bdzie dotyczy bitw SLA. Urzdzenia master prbuj wyprowadzi jedynk na SDA podczas gdy inne urzdzenie masterwyprowadza zero i przegrywa arbitra. Przegrywajce urzdzenia master przecz si w tryb slave aby sprawdzi czy s adresowane przez zwyciskie urzdzenie master. Jeeli tak przecz si w tryb SR do ST zalenie od wartoci bitu READ/WRITE. Jeeli te urzdzenia nie zostay zaadresowane przecz si w tryb nieadresowanych urzdze slave lub bd czeka na zwolnienie magistrali i przel nowy warunek START co zaley od rozwizania przyjtego w oprogramowaniu. Rys. 105 zawiera podsumowanie wszystkich powyszych sytuacji. Moliwe wartoci stanw s podane w okrgach.

Rys. 105 Moliwe kody stanu spowodowane przez arbitra

KOMPARATOR ANALOGOWY
Komparator analogowy porwnuje wartoci wejciowe na pinie dodatnim AIN0 oraz ujemnym AIN1. Kiedy napicie na pinie AIN0 jest wiksze ni na ujemnym pinie AIN1, wyjcie analogowego komparatora ACO zostanie ustawione. Wyjcie komparatora moe zosta uyte do wyzwolenia wejcia ukadu czasowo-licznikowego 1. Dodatkowo komparator moe wyzwala poszczeglne przerwania. Uytkownik moe wybra wyzwalanie przerwa na wyjciu komparatora zboczem narastajcym, opadajcym lub poziomem. Schemat blokowy komparatora i otaczajcych go ukadw zosta przedstawiony na rys. 106.

Rys. 106 Schemat blokowy komparatora analogowego

REJESTR WEJCIA/WYJCIA SPECJALNEGO PRZEZNACZENIA - SFIOR

Bit 3 ACME: Aktywacja multipleksera komparatora analogowego

Kiedy temu bitowi jest przypisana logiczna jedynka i ADC jest wyczone (ADEN w ADCSRA jest rwne zero) multiplekser ADC wybiera ujemne wejcie komparatora analogowego. Kiedy ten bit jest ustawiony na zero, AIN1 jest przyoony do ujemnego wejcia komparatora analogowego. Aby uzyska dodatkowe informacje na temat tego bitu naley zapozna si z tabel 93.

REJESTR STERUJCY I STANU KOMPARATORA ANALOGOWEGO ACSR

Bit 7 ACD Analog Comparator Disable Jeli ten bit ma warto jeden zasilanie komparatota jest wyczone. Jedynka moe zosta wpisana w kadej chwili, co pozwala na zmniejszenie poboru mocy. Przy zmianie tego bitu przerwanie komparatora analogowego musi by wyczone (w rejestrze ACSR bit ACIE = 0 ) Bit 6 ACBG Analog Comparator Bandgap Select Jeli ACBG = 1 napicie odniesienia zastpuje dodatnie wejcie komparatora analogowego.

Bit 5 ACO Analog Comparator Output

Wyjcie komparatora jest synchronizowane a nastpnie poczone wprost z ACO. Synchronizacja zajmuje 1-2 cykle zegarowe.
Bit 4 ACI Analog Comparator Interrupt Flag

Ten bit jest ustawiany sprztowo jeli wystpi przerwanie zdefiniowane przez bity ACIS1 i ACIS0. Procedura obsugi przerwania jest wykonana jeli zawartoci bitw ACIE i I (w rej. SREG) s rwne jeden. ACI jest zerowany sprztowo lub przez wpisanie logicznej jedynki do flagi.
Bit 3 ACIE Analog Comparator Interrupt Enable Jeli ACIE = 1 i bit I w rejestrze stanu jest rwny 1 przerwanie komparatora analogowego jest aktywne. Jeli ACIE = 0 przerwanie jest wyczone. Bit 2 ACIC Analog Comparator Input Capture Enable Jeli ten bit jest rwny jeden wyjcie komparatora analogowego jest wprost poczone z wejciem licznika 1. Po wpisaniu w ten bit zera nie ma poczenia midzy licznikien1 a komparatorem analogowym Bity 1 i 0 ACIS1, ACIS0: Analog Comparator Interrupt Mode Select Tabela 92. Ustawienia bitw ACIS1 i ACIS0. ACIS1 0 0 1 1 ACIS0 0 1 0 1 Tryb przerwania Przerwanie komparatora ZAREZERWOWANE Przerwanie komparatora na opadajcym zboczu wyjcia Przerwanie komparatora na narastajcym zboczu wyjcia

Kiedy zmieniamy bity ACIS1/ACIS0 przerwanie komparatora analogowego musi by wyczone przez skasowanie bitu aktywacji przerwa w rejestrze ACSR. W przeciwnym wypadku przerwanie moe si pojawi kiedy bity s zmieniane.

WEJCIE MULTIPLEKSOWE KOMPARATORA ANALOGOWEGO Istnieje moliwo wyboru ktregokolwiek z pinw ADC7..0 w celu zastpienia ujemnego wejcia komparatora analogowego. Multiplekser ADC jest wykorzystywany do wyboru tego wejcia i w konsekwencji ADC musi by wyczone aby wykorzysta t cech. Jeeli bit aktywacji multipleksera komparatora analogowego (ACME w rejestrze SFOR) jest ustawiony i

ADC jest wyczone (ADEN w ADCSRA jest rwne zero), MUX2..0 w ADMUX wybieraj pin wejcia zastpujcy ujemne wejcie komparatora analogowego jak pokazano w tabeli 93. Jeeli ACME jest skasowane lub ADEN jest ustawione, AIN1 jest podczone do ujemnego wejcia komparatora analogowego.
TABELA 93. Multipleksowane wejcie komparatora analogowego

KONWERTER ANALOGOWO CYFROWY (ADC- Analog to Digital Converter)

Konwerter analogowo cyfrowy jest poczony z 8 kanaowym multiplekserem analogowym, na ktrego 8 niesymetrycznych wej s podawane sygnay napiciowe z wyprowadze portu F. Napicia wej niesymetrycznych s podawane wzgldem masy. ADS wspiera take 16 kombinacji napiciowych wej rnicowych. Dwa z wej rnicowych (ADC1, ADC0 i ADC3, ADC2) s wyposaone w programowalny stopie wzmacniajcy pozwalajcy na wzmocnienie sygnau z wejcia rnicowego : 0 dB (1x) , 20 dB (10x) lub 46 dB (200x). Wzmocnienie jest dokonywane przed konwersj. Siedem analogowych rnicowych wej uywa wsplnej ujemnej kocwki (ADC1),, natomiast wyprowadzenie dodatnie moe by wybrane z pozostaych wej ADC Jeli sygna wejciowy jest wzmacniany 1x lub 10x naley spodziewa si 8 bitowej rozdzielczoci, jeli wzmocnienie wynosi 200x rozdzielczo jest 7 bitowa. Napicie wejciowe jest utrzymywane na staym poziomie podczas konwersji. Konwerter analogowo cyfrowy posiada oddzielne wyprowadzenie zasilania AVCC. Napicie AVCC nie moe rni si wicej ni 0.3V od VCC

Rys. 107. Schemat blokowy konwertera analogowo cyfrowego

OBSUGA
ADC konwertuje analogowy sygna wejciowy do 10 bitowej wartoci wyjciowej. Minimalna warto wejcia odpowiada masie, warto maksymalna warto jest rwna napiciu na wyprowadzeniu AREF minus 1 LSB. Opcjonalnie AVCC lub wewntrzne napicie odniesienia moe by poczone z wyprowadzeniem AREF. Aby tak byo naley wpisa 1 do bitw REFSn w rejestrze ADMUX. Analogowe wejcie i wzmocnienie rnicowe s wybierane przez wpisanie odpowiednich wartoci do rejestru ADMUX. Wszystkie wyprowadzenia wejciowe ADC (w tym masa) mog by wybrane jako niesymetryczne wejcia konwertera. Wyprowadzenie wejciowe moe by wybrane jako dodatnie lub ujemne wejcie wzmacniacza rnicowego.

Jeli s wybrane kanay rnicowe, napicie midzy t wybran par wej zostaje wzmocniona i przekazana na analogowe wejcie ADC. Jeli wybrane s wejcia niesymetryczne wzmacniacz rnicowy jest pomijany. Przetwornik analogowo cyfrowy jest wczany przez ustawienie bitu ADEN = 1 w rejestrze ADCSRA. Przetwornik nie pobiera energii jeli ADEN = 0 dlatego zalecane jest wyczenie ADC przed przejciem do trybu upienia. ADC generuje 10-bitowy wynik, ktry zostaje umieszczony w rejestrach danych ADC: ADCH i ADCL. Domylnie wynik jest wyrwnany do prawej jednak moe by wyrwnany do lewej przez ustawienie na 1 bitu ADLAR w ADMUX. Jeli wynik jest wyrwnany do lewej i nie jest wymagana precyzja wiksza od 8 bitowej wystarczajcy jest odczyt rejestru ADCH. W przeciwnym wypadku najpierw naley odczyta rejestr ADCL a nastpnie ADCH aby upewni si czy zawarto obu rejestrw pochodzi z tej samej konwersji. Zaraz po odczycie ADCL dostp konwertera do rejestrw danych jest blokowany. Oznacza to, e jeli zawarto ADCL zostaa odczytana i konwersja zostaa ukoczona przed odczytem ADCH zawarto adnego z rejestrw si zostanie zaktualizowana i wyniki konwersji zostan utracone. Po odczycie ADCH konwerter odzyskuje dostp do rejestrw danych(ADCH i ADCL)

ADC posiada wasne przerwanie, ktre moe by wywoane po ukoczeniu konwersji. W czasie kiedy ADC nie ma dostpu do rejestrw danych(midzy odczytem ADCH i ADCL) przerwanie zostanie wywoane nawet jeli wynik konwersji zostanie utracony ROZPOCZCIE KONWERSJI
Pojedyncz konwersj rozpoczyna si przez wpisanie 1 do bitu ADC Start Conversion w rejestrze ADSC. Warto tego bitu pozostaje = 1 tak dugo, jak dugo trwa proces konwersji, i zostaje zmieniona na 0 po ukoczeniu konwersji. Jeli kana danych jest wybrany podczas konwersji, ADC ukoczy biec konwersj przed zmian kanau. W trybie Free Running Mode ADC stale prbkuje i uaktualnia rejestry danych. Ten tryb jest wybierany przez wpisanie jedynki do bitu ADFR w rejestrze ADCSRA. Pierwsza konwersja musi si rozpocz od wpisania jedynki do bitu ADSC w rejestrze ADCSRA.

Rys. 108. Prescaler przetwornika ADC

Domylnie, w celu uzyskania najwikszej rozdzielczoci ADC wymaga wejciowego impulsu zegarowego o czstotliwoci 50 kHz 200 kHz. Dla rozdzielczoci niszej od 10 bitowej czstotliwo zegara moe by wysza do 200 kHz w celu uzyskania wyszej czstotliwoci prbkowania. Mona rwnie, przez ustawienie na 1 bitu ADHSM w rej. SFIOR, zwikszy czstotliwo zegarow, co powoduje jednak zwikszony pobr mocy. Modu ADC zawiera prescaler, ktry generuje odpowiedni dla ADC czstotliwo zegarow z dowolnego przebiegu zegarowego procesora powyej 100 kHz. Prescaler jest uaktywniany przez wpisanie jedynki do bitu ADPS w rejestrze ACDSRA. Prescaler rozpoczyna zliczanie po wczeniu konwertera (wpisanie do bitu ADEN jedynki), koczy po wpisaniu do ADEN zera. Po wpisaniu wartoci 1 do bitu ADSC w rejestrze ADCSRA konwersja rozpoczyna si po narastajcym zboczu sygnau zegarowego ADC Konwersja zajmuje 13 cykli zegara konwertera, wyjtkiem jest pierwsza konwersja po wczeniu przetwornika, ktra trwa 25 cykli zegara. Rzeczywiste prbkowanie ma miejsce po 1,5 cyklu zegara ADC od rozpoczcia konwersji (13,5 cykli od rozpoczcia pierwszej konwersji po wczeniu przetwornika analogowo cyfrowego). Po zakoczeniu konwersji wynik jest wpisywany do rejestrw danych konwertera a bit ADIF jest ustawiany na jeden; w trybie pojedynczej konwersji rwnoczenie jest zerowany bit ADSC. Moliwe jest ponowne programowe ustawienie bitu ADSC w wyniku czego po pierwszym narastajcym zboczu sygnau zegarowego ADC rozpocznie si nastpna konwersja. W trybie Free Running Mode nastpna konwersja rozpoczyna si bezporednio po ukoczeniu poprzedniej konwersji.

Rys. 109. Przebieg czasowy pierwszej konwersji ( tryb pojedynczej konwersji)

Rys. 110. Przebieg czasowy pojedynczej konwersji.

Rys 111. Tryb Free Running Mode przebieg czasowy

Tabela 94. Czasy konwersji Prbkowanie (ilo cykli od rozpoczcia konwersji) 14,5 1,5 1,5/2,5 Czas konwersji (cykle zegara ADC) 25 13 13/14

Pierwsza konwersja Normalna konwersja, wejcie niesymetryczne Normalna konwersja, wejcie rnicowe

Konwersje rnicowe s synchronizowane przez wewntrzny zegar CKADC2 o czstotliwoci rwnej poowie czstotliwoci zegara ADC. Synchronizacja jest automatyczna. Stopie wzmacniajcy jest optymalizowany dla czstotliwoci 4 kHz, wysza czstotliwo moe spowodowa nieliniowo wzmocnienia. Zewntrzny filtr dolnoprzepustowy powinien by uywany jeli sygna wejciowy zawiera skadowe o czstotliwoci wikszej od czstotliwoci optymalnej stopnia wzmacniajcego. Uwaga: czstotliwo zegara ADC nie zaley od czstotliwoci stopnia wzmacniajcego.

ZMIANA WYBORU KANAU LUB ODNIESIENIA


Bity MUXn i REFS1:0 w rejestrze ADMUX s buforowane przez tymczasowy rejestr do ktrego procesor ma swobodny dostp. Zapewnia to, e zmiany kanaw i odniesienia bd wykonane w bezpiecznym momencie podczas konwersji. Wybr kanau oraz odniesienia jest stale aktualizowany a do rozpoczcia konwersji. Od momentu rozpoczcia konwersji wybr kanau oraz odniesienia jest zablokowany w celu zapewnienia wystarczajcego czasu prbkowania dla ADC. Stae aktualizowanie jest odblokowywane w ostatnim cyklu zegara przetwornika przed ukoczeniem konwersji (ADIF i ADCSRA s ustawiane na 1)

Ostrono naley zachowa przy zmianie kanaw rnicowych. Po wyborze kanau rnicowego stopie wzmacniajcy potrzebuje 125 s na stabilizacj nowej wartoci. Konwersja nie powinna by rozpoczynana w czasie tych 125 s. Wyniki uzyskane w tym przedziale czasu powinny zosta odrzucone.
Ta sama sytuacja ma miejsce w przypadku pierwszej konwersji rnicowej po zmianie odniesienia ADC Przy zmianie kanau naley postpowa wedug nastpujcych wskazwek: W trybie konwersji niesymetrycznej wybr kanau musi zawsze zosta dokonany przed rozpoczciem konwersji. Wybr kanau moe by zmieniony jeden cykl zegara ADC po wpisaniu jedynki do bitu ADSC, jednak prostsz metod jest poczeka na zakoczenie konwersji przed zmian kanau. W trybie Free Running Mode wybr kanau naley wykona przed rozpoczciem pierwszej konwersji. Podobnie jak w trybie konwersji niesymetrycznej wybr kanau moe by zmieniony jeden cykl zegara ADC po wpisaniu jedynki do bitu ADSC, jednak prostsz metod jest poczeka na zakoczenie pierwszej konwersji przed zmian kanau. Przy przeczaniu kanau rnicowego przy aktywnym wzmacniaczu rezultaty pierwszej konwersji mog mie du niedokadno z powodu czasu stabilizacji wzmacniacza.
.

NAPICIE ODNIESIENIA
Napicie odniesienia dla przetwornika analogowo cyfrowego (VREF) wskazuje skal konwersji dla przetwornika. W przypadku kanau niesymetrycznego napicie przekraczajce VREF prowadzi do otrzymania kodu zblionego do 0x3FF. VREF moe by wybrane z: AVCC, wewntrznego napicia odniesienia 2,56V lub z zewntrznego wyprowadzenia AREF. AVCC jest poczone zADC przez przecznik. Wewntrzne napicie odniesienia 2,56V jest generowane przez wewntrzny wzmacniacz z napicia VBG . W innym przypadku zewntrzne wyprowadzenie AREF jest wprost poczone z ADC w wyniku czego napicie odniesienia jest bardziej odporne na zakcenia (poczenie wyprowadzenia AREF przez kondensator z mas)
VREF moe by mierzony na wyprowadzeniu AREF za pomoc woltomierza o wysokiej impedancji. Wynik pierwszej konwersji po zmianie napicia odniesienia moe by bdny i powinien zosta odrzucony.

REDUKTOR ZAKCE
Konwerter analogowo cyfrowy posiada reduktor zakce umoliwiajcy konwersj w trybie upienia w celu zmniejszenia zakce pochodzcych z rdzenia procesora oraz z urzdze peryferyjnych. Reduktor zakce moe by uyty w trybie redukcji zakce i w trybie bezczynnoci. W celu uycia reduktora naley wykona nastpujce czynnoci: Upewni si, czy ADC jest wczony i nie jest zajty konwersj. Przetwornik analogowo cyfrowy musi znajdowa si w trybie pojedynczej konwersji, przerwanie ukoczenia konwersji musi by wczone. Wczy tryb redukcji zakce ( lub tryb bezczynnoci). ADC rozpocznie konwersj kiedy procesor zostanie zatrzymany. Jeli nie wystpi adne przerwania przed ukoczeniem konwersji, przerwanie ukoczenia konwersji obudzi procesor i zostanie wykonana procedura obsugi przerwania ukoczenia konwersji. Jeli wystpio jakie przerwanie podczas konwersji zostanie ono wykonane, po czym konwersja zostanie dokoczona. Po ukoczeniu konwersji zostanie wygenerowane przerwanie ukoczenia konwersji. ADC nie jest automatycznie wyczany po wejciu do trybu upienia lub bezczynnoci. Uytkownik powinien wpisa zero do bitu ADEN przed wejciem do tych trybw w celu uniknicia nadmiernego poboru mocy. Jeli ADC jest wczony w trybach upienia i uytkownik chc przeprowadzi konwersj rnicow zalecane jest wyczenie a nastpnie wczenie i wyjcie z trybu upienia co pozwala na uzyskanie poprawnych wynikw.

OBWD WEJCIA ANALOGOWEGO Obwd wejcia analogowego dla kanau niesymetrycznego jest przedstawiony na rysunku 112. rdo sygnau analogowego Przetwornik analogowo cyfrowy jest optymalizowany dla rde sygnaw analogowych o impedancji wyjciowej 10 k lub mniejszej. Jeli takie rdo jest uywane czas prbkowania jest nieistotny. Jeli rdo ma wiksz impedancj wyjciow czas prbkowania zaley od czasu jaki rdo potrzebuje do naadowania kondensatora S/H. Zalecane jest uywanie rde o wysokiej impedancji jedynie w przypadku sygnaw wolnozmiennych poniewa minimalizuje to przepyw adunku do kondensatora S/H.
Jeli s uywane kanay rnicowe obwd wejciowy wyglda nieco inaczej mino, e zalecana impedancja wyjciowa rda wynosi kilkaset k lub mniej. Nie powinny wystpowa skadowe sygnau o czstotliwoci wikszej od fADC/2 z powodu moliwoci wystpienia znieksztace. Zalecane jest usuniecie skadowych o zbyt wysokich czstotliwociach za pomoc filtru dolnoprzepustowego.

Rys. 112.Obwd wejcia analogowego.

SPOSOBY REDUKCJI ZAKCE SYGNAW ANALOGOWYCH

Cyfrowe obwody wewntrz I na zewntrz urzdzenia generuj zakcenia, ktre mog wpyn na dokadno konwersji. Poziom zakce moe zosta zmniejszony za pomoc nastpujcych sposobw.:

cieki sygnaw analogowych powinny by jak najkrtsze, powinny ba jak najdalej pooone od szybko przeczanych cieek cyfrowych. Wyprowadzenie AVCC powinien by poczony z zasilaniem VCC za pomoc obwodu LC przedstawionego na rysunku 113 Uycie reduktora zakce Jeli ktrekolwiek z wyprowadze portu ADC s uywane jako wyjcia cyfrowe jest niezwykle istotne, by nie byy przeczane podczas konwersji.

Rys. 113.

Konwersja n-bitowa polega na przeksztaceniu napicia o wartoci miedzy 0 (mas) a VREF w 2n krokach. Najniszy kod wynosi 0, najwyszy 2n-1. Nastpujce parametry okrelaj odchylenie od konwersji idealnej: Offset: bd pierwszego przejcia(0x000 do 0x001) w porwnaniu z idealnym przejciem. Idealna warto: 0 LSB Rys. 114. Bd offset

Bd Gain Error odchylenie miedzy ostatnim przejciem (0x3FE to 0x3FF) a idealnym przejciem( 1,5 LSB poniej maksimum). Warto idealna: 0 LSB.

Rys .115.

Bd nieliniowoci cakowej: po wyrwnaniu bdw offset i gain error bd nieliniowoci jest to maksymalne odchylenie midzy wartoci rzeczywistej konwersji a konwersj idealn. Idealna warto 0 LSB. Rys. 116.

Bd nieliniowoci rniczkowej: maksymalne odchylenie midzy rzeczywist szerokoci kodu (odstp midzy dwoma ssiednimi przejciami) a idealn szerokoci kodu (1 LSB) Idealna warto 0 LSB Rys .117.

Bd kwantyzacji : przy przeksztacaniu napicia wejciowego do kodu wyjciowego pewien zakres napicia wejciowego (zawsze 0,5 LSB) jest kodowany sam wartoci. Bezwzgldna dokadno: maksymalne odchylenie rzeczywistego i idealnego przejcia. Na to odchylenie skadaj si: offset error, gain error, nieliniowo oraz bd kwantyzacji. Warto idealna 0.5 LSB.

WYNIK KONWERSJI Po zakoczeniu konwersji wynik znajduje si w rejestrach ADCL I ADCH. Dla konwersji niesymetrycznej wynik wynosi: VIN 1024 VREF

ADC =

gdzie: VIN - napicie na wybranym wyprowadzeniu wejciowym VREF - napicie odniesienia Wynik 0x000 odpowiada analogowej masie, 0x3FF reprezentuje napicie odniesienia minus jeden LSB. Dla konwersji rnicowej wyniki jest rwny

ADC =

(VPOS VNEG ) WZM 512 VREF

gdzie:
VPOS napicie na dodatnim wejciu rnicowym VNEG napicie na ujemnym wejciu rnicowym VREF - napicie odniesienia WZM wzmocnienie stopnia wzmacniajcego

Tabela 95. Zwizek midzy napiciem wejciowym a kodem wyjciowym

REJESTR ADMUX

Bity 7 I 6 REFS1 I REFS0 (Reference Selection Bits)

Te bity okrelaj napicie odniesienia ADC. Jeli warto tych bitw zostanie zmieniona podczas konwersji nie przyniesie to efektu do zakoczenia biecej konwersji.
Bit 5 ADLAR (ADC Left Adjust Result)

Wpisanie jedynki do tego bitu powoduje wyrwnanie wyniku do lewej, w przeciwnym przypadku wynik jest wyrwnany do prawej. Zmiana wartoci tego bitu przynosi efekt natychmiast, niezalenie od biecej konwersji.
Bity 4 do 0 MUX4 do0: (Analog Channel and Gain Selection Bits)

Wartoci tych bitw okrelaj jaka kombinacja wyprowadze wejciowych jest poczona z przetwornikiem analogowo cyfrowym; okrela rwnie wzmocnienie dla kanaw rnicowych. Zmiana wartoci tych bitw nie przynosi efektu do czasu ukoczenia biecej konwersji

Tabela 97. Wybr wej ADC i wzmocnienia

REJESTR ADCSRA

Bit 7 ADEN (ADC Enable) Jeli ADEN = 1 przetwornik analogowe cyfrowy jest wczony, jeli ADEN = 0 ADC jest wyczony. Jeli ADC zostanie wyczony podczas konwersji konwersja zostanie przerwana.

Bit 6 ADSC (ADC Start Conversion)


W trybie pojedynczej konwersji wpisanie jeden powoduje rozpoczcie konwersji, w trybie Free Running Mode powoduje to rozpoczcie pierwszej konwersji

Bit 5 ADFR (ADC Free Running Select)


Jeli ten bit = 1 ADC pracuje w trybie Free Running Mode, w tym trybie ADC stale wykonuje prbkowanie i wpis do rejestrw danych. Wpisanie zera powoduje zakoczenie pracy w trybie Free Running Mode. Bit jest rwny jeden po Bit 4 ADIF (ADC Interrupt Flag) zakoczeniu konwersji i po zaktualizowaniu rejestrw danych. Jeli ADIF = 1 i bit I w rejestrze SREG =1 wystpuje przerwanie zakoczenia konwersji.

Jeli ten bit jest rwny ukoczenia konwersji

Bit 3 ADIE (ADC Interrupt Enable) jeden przerwanie


jest aktywne

Bity 2, 1, 0 ADPS2, ADPS1, ADPS0: ADC Prescaler Select Bits

Bity ustalaj czynnik dzielenia midzy czstotliwoci XTAL a zegarem przetwornika analogowo cyfrowego
ADPS2 0 0 0 0 1 1 1 1 ADPS1 0 0 1 1 0 0 1 1 ADPS0 0 1 0 1 0 1 0 1 Czynnik dzielenia 2 2 4 8 16 32 64 128

REJESTRY DANYCH ADCL i ADCH


ADLAR=0

ADLAR=1

REJESTR SFIOR

INTERFEJS JTAG I WYBUDOWANY SYSTEM DEBUGOWANIA


CECHY
o Interfejs JTAG (IEEE standart 1149.1) o Moliwoci skanowania urzdze peryferyjnych zgodnie ze standartem IEE 1149.1 o Dostp debugera do: Wszystkich peryferyjnych jednostek Wewntrznego i zewntrznego RAM Wewntrznego zestawu rejestrw Licznika programu Pamici EEPROM i Flash o Obszerne wbudowane wsparcie debugera dla amania warunkw, zawierajce Przerywanie instrukcji AVR Przerwanie przy zmianie przepywu pamici programu Pojedynczy krok przerywajcy Breakpointy w pamici programu na poszczeglnych adresach lub zakresie adresw Breakpoint na pamici danych na pojedynczym adresie lub zakresie adresw o Programowanie Flash, EEPROM, bezpiecznikw i bitw blokujcych przez interfejs JTAG o Wbudowany debuger wspierany przez AVR studio

Krtki opis
AVR standard IEEE 1149.1 podatny interfejsowi JTAG moe by wykorzystywany do: Testowania PCB przy uyciu zdolnoci JTAG do skanowania urzdze peryferyjnych Programowania staych pamici, bezpiecznikw i bitw blokujcych Debugowania wewntrznego Krtki opis jest przedstawiony w nastpujcych sekcjach. Szczegowy opis programowania przez interfejs JTAG i wykorzystanie acucha skanowania urzdze zewntrznych znajduje si w sekcji Programowanie przez interfejs JTAG na stronie 301 i IEEE 1149.1 (JTAG) skanowanie urzdze peryferyjnych na stronie 248. Wbudowane wsparcie debugera jest oparte na prywatnych instrukcjami JTAG i rozprowadzany przez ATMEL i wybranych sprzedawcw. Rysunek 119 przestawia diagram blokowy interfejsu JTAG z systemem degugera. Kontroler TAP jest urzdzeniem kontrolowanym przez sygnay TCK i TMS. Kontroler TAP wybiera albo rejestr instrukcji JTAG albo jeden z wielu rejestrw danych jako acuch skanowania (rejestr przesuwny) pomidzy wejciem TDI i wyjciem TDO.

Rejestr instrukcji przetrzymuje rozkaz JTAG kontrolujcy zachowanie rejestru danych. Rejestr ID, rejestr bocznikujcy i acuch skanowania urzdze peryferyjnych s rejestrami danych wykorzystywanymi do poziomowego testowania. Interfejs programowania JTAG (skadajcy si z wielu fizycznych i wirtualnych rejestrw danych) jest wykorzystywany do szeregowego programowania poprzez interfejs JTAG. Wewntrzny acuch skanujcy i acuch skanujcy breakpoint s wykorzystywane tylko przez wbudowany debuger.

Dostp do portu testujcego TAP


Interfejs JTAG jest dostpny przez cztery nki AVR. W terminologii JTAG, nki te s czci skadow portu testowego dostpu TAP i s to: o TMS: wybr trybu testowania. Suy do nawigacji po stanach pracy maszyny kontrolera TAP o TCK: test zegara. Operacje JTAG s synchroniczne do TCK. o TDI: testowanie danych wejciowych. Szeregowe wejcie danych przesuwane jest do rejestru instrukcji lub rejestru danych (acuch skanowania) o TDO: test danych wychodzcych. Szeregowe wyjcie z rejestru instrukcji lub rejestru danych/ IEEE standard 1149.1 rwnie specyfikuje opcjonalne sygnay TAP; TRST reset testu, ktry nie jest przewidziany. Kiedy bezpiecznik JTAGEN nie jest zaprogramowany, te cztery nki s normalnymi wyjciami portu i TAP kontroler jest zresetowany. Kiedy bezpiecznik ten jest zaprogramowany, sygnay wejciowe TAP s wewntrznie ustawiane w stan wysoki i JTAG jest odblokowany dla skanowanie urzdze zewntrznych i programowania. Urzdzenie jest adowane zaprogramowanymi bezpiecznikami. Dla wbudowanego systemu debugowania, w dodatku do nek interfejsu JTAG, nka RESET jest monitorowana przez debuger w celu wykrycia zewntrznego resetu rde. Debuger moe rwnie ustawi reset w stan niski w celu zresetowania caego systemu, zakadajc tylko, e linia resetu jest OC (open collector).

Kontroler TAP Kontroler TAP jest 16 stanow skoczon maszyn, ktra kontroluje operacje obwodu skanowania urzdze peryferyjnych, obwodu programowania JTAG lub wbudowanego systemu debugera. Przemiana stanw opisanych na rysunku 120 zaley od sygnaw obecnych na TMS (pokazanych przy kadej przemianie stanu) w czasie narastajcego zbocza TCK. Pocztkowy stan po resecie przy wczonej mocy jest reset testu logicznego.
Jako definicja w tym dokumencie LSB jest przesuwany do i z pierwszego z wszystkich rejestrw przesuwnych. Biorc pod uwag, e tryb dziaania-testowania/idyl jest biecym stanem, typowym sposobem postpowania z interfejsem JTAG jest by: o Na wejcie TMS naley poda sekwencj 1, 1, 0, 0 na narastajcym zboczu TCK aby wej w tryb przesuwania rejestru instrukcji Shift-IR. W tym stanie przesu 4 bity instrukcji JTAG do rejestru instrukcji JTAG z wejcia TDI na narastajcym zboczu TCK. Wejcie TMS naley utrzymywa w stanie niskim podczas wejcia trzech najmodszych bitw w celu pozostania w stanie Shift-IR. Najbardziej znaczcy bit instrukcji jest przesuwany kiedy ten stan zostaje opuszczony poprzez ustawienie TMS na stan wysoki. Kiedy instrukcja jest wsuwana z wejcia TDI, zapany stan IR 0x01 jest wysuwany na wyjciu TDO.

Rozkaz JTAG wybiera konkretny rejestr danych jako ciek midzy TDI i TDO i kontroluje obwody otaczajce w wybranych rejestrach danych. o Zastosuj sekwencje 1, 1, 0 na TMS aby powtrnie wej w tryb dziaaniatestowania/idyl. Rozkaz jest zapany na rwnolegym wyjciu ze cieki rejestru przesuwnego w stanie Update-IR. Stany Exit-IR, Pause-IR, Exit2-IR s wykorzystywane tylko dla nawigacji maszyny statycznej. o Na wejcie TMS podaj sekwencje 1, 0, 0 na narastajcym zboczu TCK aby wej w stan przesuwnego rejestru danych Shift-DR. W tym stanie zaaduj wybrany rejestr danych(wybrany przez obecn instrukcje w rejestrze instrukcji) z wejcia TDI przy narastajcym zboczu TCK. W celu pozostania w tym stanie, wejcie TMS musi by w stanie niskim podczas wsuwania wszystkich bitw z wyjtkiem MSB. MSB danych jest wsunite kiedy ten stan jest opuszczony przez ustawienie wysokiego stanu na wejciu TMS. Podczas gdy rejestr danych jest wsuwany z wejcia TDI, rwnolege wejcia do rejestrw danych apane s w stanie Capture-DR i przesuwane na wyjcie TDO. o Podaj sekwencje 1, 1, 0 na TMS aby wej powtrnie do stanu dziaaniatestownia/idyl. Jeli wybrany rejestr danych bdzie mia zatrzanite rwnolege wyjcia, zatrzaskiwanie ma miejsce w stanie Update-DR. Stany Exit-DR, PauseDR, Exit2-DR s wykorzystywane tylko dla nawigacji maszyny statycznej. Jak pokazano w diagramie stanw, do stanu dziania-testowania/idyl nie trzeba przechodzi midzy wyborem rozkazu JTAG i wykorzystaniem rejestru danych, niektre rozkazy mog wybra konkretne funkcje, ktre zostan wykonane w trybie dziania-testowania/idyl, powodujc, e jest to niewygodny stan jako idyl. Uwaga: Niezalenie od stanu pocztkowego do kontrolera TAP, mona zawsze wej poprzez utrzymanie stanu wysokiego na TMS przez 5 cykli TCK. Szczegowe informacje w specyfikacji JTAG Bibliografia na stronie 247.

Wykorzystanie acucha skanujcego peryferyjne urzdzenia


Peny opis moliwoci acucha skanujcego urzdzenia zewntrzne jest dany w sekcji IEEE 1149.1 (JTAG) skanowanie urzdze peryferyjnych na stronie 248.

Wykorzystanie wewntrznego systemu debugera


Jak przedstawia rysunek 119 sprztowe wsparcie dla wbudowanego debugera skada si z: o acucha skanujcego na interfejsie pomidzy wewnrznym AVR CPU i wewntrznymi obrzenymi jednostkami. o Jednostki break point o Interfejs komunikacyjny midzy CPU i systemem JTAG. Wszystkie operacje odczytu lub zapisu/ modyfikowania potrzebne do zaimplementowania debugera s zapewnione poprzez odwoywanie si do instrukcji AVR poprzez wewntrzny acuch skanowania AVR CPU. CPU wysya rezultaty do

odwzorowanych lokacji pamici I/O , ktre s czci interfejsu komunikacyjnego pomidzy CPU i systemem JTAG. Jednostka break point implementuje przerwanie dziaania programu przy zmianie, pojedynczy krok, dwa programowe breakpointy pamici, i dwa czone breakpointy. Razem, te cztery break pointy mog zosta skonfigurowane nastpujco: o 4 pojedyncze break pointy pamici programu o 3 pojedyncze break pointy pamici programu i 1 pojedynczy break point pamici danych o 2 pojedyncze break pointy pamici programu i 2 pojedynczy break point pamici danych o 2 pojedyncze break pointy pamici programu i 1 break point pamici programu z mask (break point zakresu) o 2 pojedyncze break pointy pamici programu i 1 break point pamici danych z mask (break point zakresu) Debuger tak jak i AVR studio mog uywa jedno lub wicej z tych rde dla wewntrznych potrzeb, pozostawiajc mniej moliwoci kocowemu uytkownikowi. Lista specyficznyhc rozkazw JTAG jest podana w Specyficzne rozkazy JTAG ... na stronie 246. Bezpiecznik JTAGEN musi by zaprogramowany aby odblokowa port dostpu do testowania JTAG. W dodatku, bezpiecznik OCDEN musi by zaprogramowany i nie mog by ustawione adne bity blokujce aby system wbudowanego debugera mg dziaa. Jako cech bezpieczestwa, system wbudowanego debugera jest zablokowany kiedy jakikolwiek bit bezpieczestwa jest ustawiony. W przeciwnym wypadku, system wbudowanego debugera byby tylnymi drzzwiami umoliwiajcymi obejcie zabezpiecze. Studio AVR pozwala uytkownikowi w peni kontrolowa wykonanie programw na urzdzeniu AVR ze wszystkimi moliwociami wbudowanego debugera, Emulatora wejciowego obwodu AVR lub wbudowany symulator zestawu rozkazw AVR. Studio AVR wspiera poziom rda wykonania programw asemblerowych. Studio AVR dziaa w systemie Mictosoft Windows 95/98/2000 i Windows NT. Peany opis studia AVR znajduje si w przewodniku po studiu AVR. Wszystkie potrzebne do wykonania rozkazy s dostpne w AVR studio, zarwno na poziomie rde jak i poziomie zdeasemblowanym. Uytkownik moe wykona program pojedynczymi krokami lub wykonujc oddzielnie poszczeglne funkcje i inne moliwo dostpne w pospolitym debugerze. W dodatku uytkownik moe mie nielimitowan liczb break pointw i do dwch break pointw pamici, alternatywnie poczoneych jako maskowalny break point.

Wewntrzne specyficzne instrukcje debugera JTAG

Wsparcie systemu debugera ma prywatne instrukcji JTAG sprzedawane przez ATMELa i wybranych sprzedawcw. Rozkazy s nastpujce:

PRIVATE0; $8 PRIVATE1; $9 PRIVATE2; $A PRIVATE3; $B

prywatny rozkaz JTAG dla dostpu do systemu debugowania. prywatny rozkaz JTAG dla dostpu do systemu debugowania. prywatny rozkaz JTAG dla dostpu do systemu debugowania. prywatny rozkaz JTAG dla dostpu do systemu debugowania.

Wewntrzny zwizany rejestr debugera w pamici I/O


o Wbudowany rejestr debugera OCDR

Rejestr OCDR zapewnia kana komunikacyjny z dziaajcego programu w mikrokontrolerze z debugerem. CPU moe wysa bajt do debugera poprzez wpisanie do tej lokacji. W tym samym czasie wewntrzna flaga; I/O rejestr debugera IDRD jest ustawiony tak, e wskazuje debugerowi, e rejestr zosta zapisany. Kiedy CPU odczytuje rejestr OCDR 7 LBS bdzie pochodzi z tego rejestru, podczas gdy MSB jest bitem IDRD. Debuger zeruje bit IDRD po przeczytaniu informacji. W niektrych urzdzeniach AVR rejestr ten jest dzielony ze standardow lokacj I/O. W tym przypadku, rejestr OCDR jest dostpny tylko jeli bezpiecznik OCDEN jest zaprogramowany i debuger odblokuje dostp do rejestru OCDR. We wszystkich innych przypadkach standardowe lokacje I/O s dostpne. W celu dokadniejszych informacji naley przejrze dokumentacje debugera.

Wykorzystanie zdolnoci do programowania JTAG


Programowanie czci AVR poprzez JTAG jest wykonywane przy wykorzystaniu czterech nek portu JTAG: TCK, TMS, TDI i TDO. To s jedyne nki, ktre musz by kontrolowane przy programowaniu JTAG. Nie jest wymagane by poda 12V z zewntrz. Bezpiecznik JTAGEN musi by zaprogramowany i bit JTD w rejestrze MCUSR musi by wyzerowany aby odblokowa port dostpu do testowania JTAG. Programowanie JTAG wspiera: o Programowanie i weryfikacje Flash. o Programowanie i weryfikacje EEPROM o Programowanie i weryfikacje bezpiecznikw o Programowanie i weryfikacje bitw blokujcych Zabezpieczenie bitw blokujcych jest takie samo jak w trybie programowania rwnolegego. Jeeli bity blokujce LB1 lub LB2 s zaprogramowane bezpiecznik

OCDEN nie moe by zaprogramowany, chyba e najpierw wykona si wymazanie moduu. Jest to cech majca na celu zabezpieczenie przed umoliwieniem tylnego wejcia dla odczytu danych. Szczegy opisane s w sekcji Programowanie przez interfejs JTAG na stronie 301.

Bibliografia
W celu uzyskania wikszej iloci informacji na temat acuch skanowania urzdze peryferyjnych polecamy:

IEEE 1149.1 (JTAG) skanowanie urzdze peryferyjnych


o Cechy Interfejs JTAG (IEE 1149.1) Moliwo skanowania acucha urzdze peryferyjnych zgodnie ze standartami JTAG Pene skanowanie wszystkich funkcji portw jak rwnie obiektu analogowego Wsparcie opcjonalnych rozkazw IDCODE Dodatkowe publiczne rozkazy AVR_RESET suce resetowaniu AVR.

Krtki opis systemu


acuch skanowania urzdze zewntrznych ma zdolnoci sterowania i obserwowania logicznych poziomw na binarnych wejciach I/O jak rwnie granice pomidzy binarnym i analogowym poziomem logicznym dla obwodw majcych poczenie odlege z moduem. Na poziomie systemu wszystkie ICs, ktre maj moliwoci JTAG s podczone szeregowo poprzez sygnay TDO/TDI w celu stworzenia dugiego rejestru przesuwnego. Zewntrzny kontroler ustawia urzdzenia aby wyprowadzay wartoci na nki wyjciowe i obserwuje wartoci wejciowe otrzymane z innych urzdze. Kontroler porwnuje otrzymane dane z oczekiwanymi wynikami. W ten sposb acuch skanowania urzdze peryferyjnych zapewnia mechanizm dla testowania pocze i integralnoci skadnikw na drukowanych pytkach poprzez wykorzystanie tylko czterech sygnaw TAP. Cztery zdefiniowane instrukcje obowizujce w JTAG: IDCODE, BYPASS< SAMPLE/PRELOAD i EXTEST jak rwnie specyficzne publiczne rozkazy JTAG AVR_RESET mog by wykorzystane do testowania pytek drukowanych. Pocztkowe skanowanie cieek rejestrw danych pokae kod identyfikacyjny urzdzenia, odkd IDCODE jest domyln instrukcj JTAG. Jeeli urzdzenie jest zresetowane podczas

trybu testowego moe da to podane skutki. Jeeli nie jest zresetowane wejcia do urzdzenia mog by zdeterminowane przez operacje skanowania i wewntrzne oprogramowania moe znale si w nie zamierzonym stanie przy wykonywaniu trybu testowania. Wchodzc w reset, na wyjcia portu nek zostan natychmiastowo podane wysokie stany napi sprawiajc, e rozkaz HIGHZ bdzie zbdny. Jeeli potrzeba instrukcja BYPASS moe spowodowa stworzenie najkrtszego moliwego acucha skanujcego cae urzdzenie. Urzdzenie moe zosta ustawione w stan resetu albo poprzez podanie stanu niskiego na wejcie RESET albo przez wykonanie rozkazu AVR_RESET z odpowiednim ustawieniem danych w rejestrze resetu danych. Rozkaz EXTEST jest wykorzystywany do prbkowania zewntrznych nek i adowania wyj danymi. Dane zatrzanite na wyjciu zostan wyprowadzone na wyjcia jak tylko rozkaz EXTEST zostanie wprowadzona do rejestru-IR. Dlatego SAMLPLE/PRELOAD rwnie powinny by wykorzystywane do pocztkowego ustawiania wartoci w piercieniu skanowania w celu uniknicia szkodliwego wpywu na pytk przy pierwszym wykonywaniu instrukcji EXTEST. SAMPLE/PRELOAD moe by rwnie wykorzystywana do robienia migawek wyj zewntrznych podczas normalnych operacji na tej czci urzdzenia. Bezpiecznik JTAGEN musi by zaprogramowany i bity JTD w rejestrze I/O MCUCSR musz by wyzerowane, aby odblokowa port dostpu do testowania JTAG. Korzystajc z interfejsu JTAG przy skanowaniu urzdze peryferyjnych wykorzystywanie zegara TCK o wikszej czstotliwoci ni wewntrzna czstotliwo ukadu jest moliwe. Zegar wewntrzny nie musi pracowa.

Rejestry danych
Rejestry danych odpowiadajce odpowiednim operacjom skanowania urzdze zewntrznych: o Rejestr bocznikujcy o Rejestr identyfikacji urzdzenia o Rejestr resetu o acuch skanowania urzdze peryferyjnych o Rejestr bocznikujcy Rejestr bocznikujcy skada si z pojedynczego poziomu rejestru przesuwnego. Kiedy rejestr ten jest wybrany jako cieka midzy TDI i TDO jest on resetowany na 0 przy opuszczaniu stanu kontroli Capture-DR. Rejestr bocznikujcy moe by wykorzystywany do skracania acucha skanowania kiedy maj by testowane inne urzdzenia. o Rejestr identyfikacji urzdzenia

o Wersja Wersja jest to cztero bitowy numer identyfikujcy weryfikujcy cz skadow. Odpowiadajce numery s podane w tabeli 99. Tabele 99 Wersja ATmega128 nowelizacja C ATmega128 nowelizacja F ATmega128 nowelizacja G o Numer czci Numer czci jest szesnastobitowym kodem identyfikujcym cz skadow. Numery JTAG dla czci skadowych s zamieszczone w tabeli 100. Numer czci ATmega128 o ID wykonawcy Id wykonawcy jest 11-bitowym kodem identyfikujcym producenta. Tabela 101. Producent Atmel o Rejestr resetu Rejestr resetu jest rejestrem testowania danych wykorzystywanym do resetowania czci . Odkd AVR okrela nki portu przy resecie rejestr resetu moe rwnie podmienia funkcje nie zaimplementowanych opcjonalnych rozkazw HIHGZ JTAG. Wysoka warto w rejestrze resetu odpowiada ustawieniu zewntrznego resetu na stan niski. Cz jest resetowana tak dugo jak w rejestrze resteu znajduje si wysoka warto. W zalenoci od ustawie bezpiecznikw dla funkcji zegara, cze ta pozostanie zresetowana dla resetu okresu czasu przerwy (rda zegara na stronie 34) po zwolnieniu rejestru resetu. Wyjcie z rejestru danych nie jest zatrzaskiem, wic reset nastpi natychmiast co pokazuje rysunek 122. Producent JTAG 0x01F Numer czci JTAG 0x9702 Numer seryjny JTAG (heksadecymalnie) 0x3 0x5 0x6

o acuch skanowania urzdze peryferyjnych acuch skanowania urzdze peryferyjnych ma moliwo wprowadzania i obserwowania poziomw logicznych na binarnych wejciach I/O, jak rwnie granic midzy binarnymi i analogowymi locznymi poziomami dla analogowego obiegu majcego zewntrzne poczenia. Przejrzyj opsi acuch skanowania urzdze peryferyjnych na stronie 252.

Specyficzne instrukcje JTAG skanujce urzdzenia peryferyjne


Rejestr instrukcji jest czterobitowy dlatego wspiera 16 rozkazw Poniej zostay wypisane rozkazy JTAG przydatne przy operacjach skanowania. Warto zauway, e opcjonalny rozkaz HIGHZ nie jest zaimplementowany, ale wszystkie wyjcia trzystanowe mog by ustawiane w stan wysokiej impedancji poprzez wykorzystanie rozkazu AVR_RESET, odkd pocztkowym stanem dla wszystkich portw jest trzeci stan. Jako definicje w tym arkuszu danych przyjmuje si, e LSB jest wsuwany i wysuwany jako pierwszy we wszystkich rejestrach przesuwnych. Kod rozkazu jest pokazany za kad nazw rozkazu w formacie szesnastkowym. Tekst opisuje, ktry rejestr danych jest wybrany jako cieka midzy TDI i TDO dla kadej instrukcji. o EXTEST; $0 Obowizkowe instrukcje dla wyboru acucha skanowania urzdze peryferyjnych jako rejestru danych dla testowania zewntrznych obwodw dla pakietw AVR. Dla

nek portw, Pull-up Disable, Output Control, Output Data i Input Date wszystkie s dostpne w acuchu skanowania. Dla analogowych obwodw majcych zewntrzne poczenia interfejs midzy analogow a binarn logik jest w acuchu skanowania. Zawarto zatrzanitych wyj acuch skanowania urzdze peryferyjnych jest wyprowadzana jak tylko rejestr IR jest zaadowany rozkazem EXTEST.

Aktywne stany to: Capture-DR: dane na zewntrznych nkach s prbkowane przez acuch skanowania urzdze peryferyjnych Shift-DR: wewntrzny acuch skanowania jest przesuwany przez wejcie TCK Update-DR: dane z acucha skanowania jest podana na wyjcia o IDCODE ; $1 Opcjonalne rozkazy JTAG wybierajce 32 bitowy rejestr ID jako rejestr danych. Rejestr ID skada si z numeru wersji, numeru urzdzenia i kodu producenta, ktry jest wybrany przez JEDEC. Jest to domylna instrukcja po wczeniu zasilania.

Aktywne stany to: Capture-DR: dane w rejestrze IDCODE s prbkowane w acuchu skanowania Shift-DR: acuch skanowania jest przesuwany przez wejcie TCK o SAMPLE_PRELOAD; $2 Obowizujcym rozkazem JTAG sucym do przeadowania zatrzaskw na wyjciach I pobrania migawek nek I/O bez wpywania na dziaanie systemu. Jednake, zatrzanite wyjcia nie s podczone do nek. acuch skanowania jest wybierany jako rejestr danych.

Aktywne stany to: Capture-DR: dane na zewntrznych nkach s prbkowane przez acuch skanowania Shift-DR: wewntrzny acuch skanowania jest przesuwany przez wejcie TCK Update-DR: dane z acucha skanowania jest podana na wyjcia. Chocia zatrzaski wyj nie s pocznoe z nkami. o AVR_RESET; $C Rozkaz JTAG dla wprowadzania urzdzenia AVR w tryb resetu lub zwalniajcy rda resetu JTAG. Kontroler TAP nie jest resetowany przez ten rozkaz. Jeden bit w rejestrze resetu jest wybierany jako rejestr danych. Zauwa, e reset bdzie aktywny tak dugo jak jest logiczna jedynka w acuchu resetu.

Aktywne stany: Shift-DR: rejestr resetu jest wsuwany przez wejcie TCK. o BYPASS; $F

Obowizujcy rozkaz JTAG wybierajcy rejestr bocznikujcy dla rejestru danych.

Aktywne stany to: Capture-DR: aduje logiczne 0 do rejestru bocznikujcego Shift-DR: komrka rejestru bocznikujcego znajdujce si midzy TDI i TDO jest przesuwana.

Rejestr spokrewniony ze skanowaniem urzdze peryferyjnych w pamici I/O o Rejestr kontroli i stanu MCU MCUCSR
Rejestr kontroli i stanu MCU zawiera bity kontrolne dla powszechnych funkcji MCU i zapewnia informacje, ktre rdo resetu spowodowao reset MCU.

a: bit 7- JDT: zablokowanie interfejsu JTAG kiedy bit ten jest zerem, interfejs JTAG jest odblokowany przy zaprogramowanym bezpieczniku JTAGEN. Jeeli bit ten jest jedynk interfejs JTAG jest zablokowany. W celu uniknicia nie zamierzonego blokowania lub odblokowywania interfejsu JTAG sekwencja czasowa musi by wykonana przy zmianie tego bitu. Oprogramowanie musi wpisa do tego bitu zamierzon warto dwa razy w przecigu czterech cykli maszynowych, aby zmieni warto tego bitu. b: bit 4 JTRF: flaga resetu JTAG Flaga ta jest ustawiana jeli reset zosta spowodowany poprzez logiczn jedynk w rejestrze resetu wybran poprze instrukcj AVR_RESET. Bit ten jest reseetowany przy resecie uruchamiania mocy lub poprzez wpisanie zera do tej flagi.

acuch skanowania urzdze zewntrznych


acuch skanowania urzdze peryferyjnych ma moliwo wprowadzania i obserwowania poziomw logicznych na binarnych nkach I/O, jak rwnie granic midzy binarnymi i analogowymi stanami logicznymi obwodw majcych zewntrzne poczenia. o Skanowanie cyfrowych nek portw Rysunek 123 przedstawia acuch skanowania urzdze peryferyjnych dla dwukierunkowych nek portw z funkcjami podcigajcymi. Komrka taka skada si ze standartowej komrki skanowania dla odblokowanej funkcji podcigania PUExn i dwukierunkow komrk nek, ktre wytwarzaj trzy sygnay: Output Control

Ocnx, Output Data Odxn i Input Data Idxn tylko w dwupoziomowym rejestrze przesuwnym. Port i indeksy nek nie s wykorzystywane w poniszym opisie. acuch skanowania poziomw logicznych nie jest zamieszczony na rysunku. Rysunek 124 pokazuje przykadowy binarny port nek co opisano w sekcji porty I/O na stronie 60. Szczegy acucha skanowania z rysunku 123 podmienia rysowany przerywan lini prostokt z rysunku 124. Jeli adna alternatywna funkcja portu nie jest obecna, wejciowe dane ID odpowiadaj wartociom rejestru PINxn (ale ID nie ma adnego synchronizatora), wyjciowe dane odpowiadaj rejestrowi PORT, wyjcie kontrolne odpowiada rejestrowi kierunku danych DD i odblokowanie podcigania PUExn odpowiada logficznym wyraeniom PUD DDxn PORTxn . Binarne alternatywne funkcje portw s poczone na zewntrz prostokta rysowanego przerywan lini na rysunku 124 w celu odczytania przez acuch skanowania aktualnych wartoci nek. Dla funkcji analogowych jest bezporednie poczenie z zewntrznych nek do analogowego obiegu i acuch skanowania jest wczony w interfejs midzy binarn logik a analogowym obwodem.

o Skanowanie urzdze zewntrznych i dwu przewodowy interfejs Nki interfejsu dwu przewodowego SCL i SDA maj dodatkowy sygna kontrolny w acuchu skanowania odblokowanie dwu przewodowego interfejsu TWIEN. Jak pokazuje rysunek 125 sygna TWIEN odblokowuje bufor trzy stanowy z szybkoci reakcji kontrolowan rwnolegle ze zwykymi binarnymi nkami portw. Gwna komrka skanowania jest przedstawiona na rysunku 129 ma doczony sygna TWIEN. Uwagi: 1. Oddzielny acuch skanowania dla 50 ns filtru krtkiego impulsu nie jest zapewniony. Zwyke wsparcie dla binarnych nek portw wystarcza do TRESTW POCZE. Jedynym powodem posiadania TWIEN w ciece skanowania jest moliwo rozczenia buforu kontroli filtru krtkiego impulsu przy skanowaniu urzdze peryferyjnych. 2. Upewnij si, czy sygnay OC i TWIEN nie s zapewnione jednoczenie bo spowoduje to spr wyprowadze.

o Skanowanie nki resetu Nzki resetu przyjmuj 5V aktywnych niskim poziomem dla standartowych operacji resetu i 12V aktywne wysokim poziomem dla wysoko napiciowego rwnolegego programowania. Komrka obserwujce jest przedstawiona na rysunku 126 i jest do niej pryoone napicie 5V RSTT i 12 V RSTHV.

o Skanowanie nek zegara Urzdzenie AVR ma wiele rnych rde zegara wybieranych przez odpowiednie ustawienia bezpiecznikw. S to: wewntrzny oscylator RC, zewntrzne RC, zewntrzny

zegar, (wysoko czstotliwociowy) kwarcowy oscylator, niskoczstotliwociowy oscylator krzemowy, i ceramiczny rezonator. Rysunek 127pokazuje jak kady z oscylatorw z zewntrznymi poczeniami jest wspierany w acuchu skanowania. Sygna odblokowujcy jest wspierany przez gwn komrk acucha skanowania podczas, gdy wyjciowy oscylator/zegar jest podczony do komrki obserwacji. W dodatku do gwnego zegara, oscylator licznika jest skanowany w ten sam sposb. Wyjcie z wewntrznego oscylatora RC nie jest skanowane, bo ten oscylator nie ma zewntrznych pocze.

Tabela 102 streszcza rejestry skanujce dla zewntrznego zegara XTAL1, oscylatory poczone z XTAL1 i XTAL2 jak rwnie z 32kHz oscylatorem licznika. Sygna odblokowujc y EXTCLKEN OSCON Linia skanowanego zegara EXTCLK (XTAL1) OSCCK Tabela102 Opcja zegara Zewntrzny zegar Skanowana linia zegara gdy nie jest on uywany 0

Zewntrzny kwarc i 1 ceramiczny rezonator RCOSCEN RCCK Zewntrzne RC 1 OSC32EN OSC32CK Niskoczstotliwociowy 1 zewntrzny kwarc TOSKON TOSCK 32 kHz oscylator licznika 1 Uwagi: 1. nie naley odblokowywa wicej ni jednego zegara jako gwnego rda zegara.

2. Skanowanie wyj oscylatora daje nie przewidywalne rezultaty poniewa jest tam przesunicie czstotliwoci pomidzy wewntrznym oscylatorem i zegarem TCK JTAG. Jeeli jest taka moliwo skanowanie zewntrznego zegara jest preferowane. 3. Konfiguracja zegara jest programowana przez bezpieczniki. Poniewa bezpiecznik nie mona zmienia podczas dziaania zegara ustawienia zegara s stae dla danej aplikacji. Zaleca si skanowanie opcji zegara, ktra ma by wykorzystana w wersji kocowej. Sygnay odblokowujce s wspierane w acuchu skanowania poniewa logika systemu moe zablokowa opcje zegara w trybie snu, w wyniku czego nastpuje rozczenie nek oscylatora ze cieki skanowania. Bezpieczniki INITCAP nie s wspierane przez acuch skanowania, wic acuch skanowania urzdze zewntrznych nie moe uruchomi oscylatora XTAL, ktry wymaga wewntrznych kondensatorw jeli bezpieczniki te nie s poprawnie zaprogramowane. o Skanowanie analogowego komparatora Odpowiadajcy sygna komparatora majcy na wzgldzie skanowanie urzdze zewntrznych jest przedstawione na rysunku 128. Komrka skanowania urzdze z rysunku 129 jest podczona do tych sygnaw. Sygnay opisuje tabela 103. Komparator nie musi by uywany do czystego porwnywania testowania odkd wszystkie analogowe wejcia s dzielone z binarnymi nkami portw.

Tabela103 Nazwa sygnau

Kierunek widziany z komparato ra Wejcie

Opis

AC_IDYL

ACO

Wyjcie

Wycza analogowy komparator jeli jest ustawiony na true Wyjcie analogowego komparatora Wykorzystuje sygnay wyjcia ADC multipleksowany gdy jest true Odblokowanie odwoania do przerwy(bandgap)

Zalecane wejcie, jeeli nie jest uywane 1

Wyjcia, kiedy rekomendowan e wejcia s wykorzystane Zaley od kodu mikroC, ktry by wykonany 0

ACME

Wejcie

Bdzie wejciem jeli kod mikroC by wykonany 0

Zaley od kodu mikroC, ktry by wykonany Zaley od kodu mikroC, ktry by wykonany

ACBG

Wejcie

o Skanowanie ADC Rysunek 130 przedstawia schemat blokowy ADC z odpowiednimi sygnaami kontroli i obserwacji. Komrka skanowania urzdze z rysunku 126 jest doczona do kadego z

tych sygnaw. ADC nie jest potrzebne do testw podczenia odkd wszystkie analogowe wejcia dziel binarne nki portw.

Sygnay te s opisane w tabeli 104. Tabela 104. Nazwa sygnau Kierunek widziany od ADC Opis Zalecane wejcie kiedy nie jest uywany Wartoci wyjcia kiedy s wykorzystywa ne zalecane wejcia i CPU nie korzysta z ADC 0 0

COMP ACLK

Wyjcie Wejcie

ACTEN

Wejcie

Wyjcie komparatora Sygna zegara dla stopnia wzmocnienia zaimplementowanego jako przeczniki filtrw Odblokowanie cieki dla stopnia wzmocnienia dla komparatora

0 0

ADHMS

Wejcie

ADCBGEN

Wejcie

ADCEN AMPEN DAC_9 DAC_8 DAC_7 DAC_6 DAC_5 DAC_4 DAC_3 DAC_2 DAC_1 DAC_0 EXTCH

Wejcie Wejcie Wejcie Wejcie Wejcie Wejcie Wejcie Wejcie Wejcie Wejcie Wejcie Wejcie Wejcie

G10 G20 GNDEN HOLD

Wejcie Wejcie Wejcie Wejcie

Zwikszenie szybkoci komparatora przy zwikszonym poborze mocy Odblokowanie odnonika band-gap jako ujemnego wejia do komparatora Sygna wczenia mocy dla ADC Sygna wczenia mocy dla szybkoci generatora 9 bit wartoci do DAC 8 bit wartoci do DAC 7 bit wartoci do DAC 6 bit wartoci do DAC 5 bit wartoci do DAC 4 bit wartoci do DAC 3 bit wartoci do DAC 2 bit wartoci do DAC 1 bit wartoci do DAC 0 bit wartoci do DAC Podczenie kanaw 0..3 ADC do cieki bocznikujcej szybko generacji Odblokowuje 10x przyspieszenie Odblokowuje 20x przyspieszenie Masa ujemne wejcie kiedy jest ustawione true Sygnay prbkowania i wstrzymania, Prbkuj analogowy sygna kiey jest stan niski. Wstrzymaj sygna dla stanu wysokiego. Jeli wzmocnienie na stopie jest wykorzystywane te sygnay musz by aktywne jeli ACLK

0 0 1 0 0 0 0 0 0 0 0 0 1

0 0 1 0 0 0 0 0 0 0 0 0 1

0 0 0 1

0 0 0 1

IREFEN

Wejcie

MUXEN_7 MUXEN_6 MUXEN_5 MUXEN_4 MUXEN_3 MUXEN_2 MUXEN_1 MUXEN_0 NEGSEL_2

Wejcie Wejcie Wejcie Wejcie Wejcie Wejcie Wejcie Wejcie Wejcie

NEGSEL_1

Wejcie

NEGSEL_0

Wejcie

PASSEN

Wejcie

PRECH

Wejcie

SCTEST

Wejcie

jest w stanie wysokim Odblokowuje odniesienie do Bandgap jako sygna AREF do DAC Wejcie multipleksera 7 Wejcie multipleksera 6 Wejcie multipleksera 5 Wejcie multipleksera 4 Wejcie multipleksera 3 Wejcie multipleksera 2 Wejcie multipleksera 1 Wejcie multipleksera 0 Wejcie multipleksera dla ujemnego wejscia dla rnicy sygnaw, bit 2 Wejcie multipleksera dla ujemnego wejscia dla rnicy sygnaw, bit 1 Wejcie multipleksera dla ujemnego wejscia dla rnicy sygnaw, bit 0 Odblokowanie bramy pasmowej dla wzmocnienia na stopie Wczeniejsza zmiana zatrzasku wyjcia dla komparatora (aktywny niskim stanem) Odblokowanie przecznika TEST. Wyjcie z 10x przyspieszenia

0 0 0 0 0 0 0 1 0

0 0 0 0 0 0 0 1 0

wzmocnienia na stopie wysane od portu majcego ADC_4 0 0 ST Wejcie Wyjcie wzmocnienia na stopie ustawi szybsze jeli ten sygna jest wysoki przez pierwsze dwa cykle ACLK po ustawieniu stanu wysokiego na AMPEN 0 0 VCCREN Wejcie Wybiera Vcc jako odniesienie ACC do napicia Uwagi: Niepoprawne ustawienie przecznikw na rysunku 130 spowoduje spr i moe uszkodzi cz. Jest tu wiele wyborw wej do obwodu S&H na ujemnym wejciu wyjcia komparatora na rysunku 130. Upewnij si, tylko jedna cz jest wybrana przez kad nk ADC, rdo odniesienia Band-gap, lub mas. Jeli ADC nie ma by wykorzystywane podczas skanowania , zalecane wartoci wej z tabeli 104 powinny by zastosowane. Zaleca si, aby uytkownik nie korzysta ze zmiennych stanw wzmocnie na stopie podczas skanowania. Wzmocnienie na stopie oparta na przeczniku wymaga szybkich operacji i odpowiedniego taktowania, co jest trudno utrzyma przy wykorzystaniu w acuchu skanowania. Z tych samych powodw bit trybu wysokiej szybkoci ADC (ADHSM) nie ma sensu podczas skanowania. ACD w AVR jest oparte o obieg analogowy pokazany na rysunku 130 w sukcesywn aproksymacj zaimplementowanych algorytmw w logice binarnej. Kiedy skanowania urzdze zewntrznych jest wykorzystywane, problem zazwyczaj zapewnia, e podawane analogowe napicie jest mierzone w pewnych ograniczeniach. Co moe by prosto zrobione bez wykorzystania algorytmu sukcesywnej aproksymacji: podaj dolny limit napicia na linie binarne DAC[0..9], upewnij si, e wyjcie z komparatora jest w stanie niskim nastpnie podaj wyszy limit napicia na linie DAC[0..9] i sprawd czy wyjcie z komparatora jest w stanie wysokim. Komparator ADC nie musi by wykorzystywany do testowania pocze odk dzieli nki wejciowe z portem binarnym.

Przy korzystaniu z ADC naley pamita o nastpujcych rzeczach: Nki portw wykorzystywane dla kanaw ADC musz by skonfigurowane jako wejcie z zablokowanym podciganiem w celu uniknicia najcia na siebie dwch sygnaw. W trybie normalnym, sztuczna konwersja (skadajca si z 10 porwna) jest wykonywana przy odblokowywaniu ADC. Zaleca si by uytkownik czeka

przynajmniej 200 ns po odblokowaniu ADC przed kontrol/obserwowaniem sygnaw ADC lub wykonaniem sztucznej konwersji przed wykorzystaniem pierwszego rezultatu. Wartoci DAC musz by stabilne dla wartoci rodkowej 0x200 kiedy sygna HOLD jest w stanie niskim (tryb prbkowania). Jak o przykad wemy pod uwag zadanie sprawdzenia 1.5V z tolerancj 5% na wejciu sygnau na kana 3 ADC kiedy moc podaje 5V i AREF jest zewntrznie podczony do Vcc. Dolny limit : [1024*1.5V*0.95/5V] = 291 = 0x123 Grny limit : [1024*1.5V*1.05/5V] = 323 = 0x143 Zalecane wartoci z tabeli 104 s wykorzystywane jeli inne wartoci nie s podane w algorytmie z tabeli 5. Tylko wartoci DAC, nek portw i acucha skanowania s podane. Kolumna akcja opisuje jaki rozkaz JTAG powinien zosta wykorzystany przed wypenieniem skanowania urzdze peryferyjnych w nastpujcych kolumnach. Sprawdzenia powinno zosta zrobione poprzez skanowanie wychodzcych danych przy skanowaniu danych w tym samym wierszu tabeli. Tabela 105.

Korzystajc z tego algorytmu, ograniczenia taktowania dla sygnau HOLD ograniczaj czstotliwo zegara TCK. Poniewa algorytm utrzymuje HOLD w wysokim stanie przez pi krokw, czstotliwo zegara TCK musi by przynajmniej pi razy podzielona prze maksymalny czas hold thold,max.

o Kolejno skanowania urzdze zewntrznych w ATmega128 Tabela 106 przedstawia kolejno skanowania midzy TDI i TDO kiedy acuch skanowania jest wybrany jako cieka danych. Bit 0 jest LSB pierwszy bit wsuwany i wysuwany. Kolejno skanowania przebiega zgodnie z kolejnoci wyjcia nek w takim stopniu jak byo ot moliwe. Dlatego bity portu A s skanowane w odwrotnej kolejnoci ni bity pozostaych portw. Wyjtki z tej reguy stanowi acuch skanowania dla analogowego obiegu, ktry skanuje zgodnie ze starszoci bitw nie zalenie od ich fizycznego uoenia. Na rysunku 123, PXn. Dane odpowiadaj FF0, PXn. Kontrola odpowiada FF1 i PXn. Pullup_enable odpowiada FF2. Bity 2, 3, 4 i 5 portu C nie nale do acucha skanowania odkd s one czci wej TAP dla odblokowanego JTAG. Tabela 106 Numer bitu 204 203 202 201 200 199 198 197 196 195 194 193 192 191 190 189 188 187 186 185 184 183 182 181 180 179 178 177 176 Nazwa sygnau AC_IDLE ACO ACME AINBG COMP PRIVATE_SIGNAL1(1) ACLK ACTEN ADHSM ADCBGEN ADCEN AMPEN DAC_9 DAC_8 DAC_7 DAC_6 DAC_5 DAC_4 DAC_3 DAC_2 DAC_1 DAC_0 EXTCH G10 G20 GNDEN HOLD IREFEN MUXEN_7 Modu Komparator

ADC

175 174 173 172 171 170 169 168 167 166 165 164 163 162 161 160 159 158 157 156 155 154 153 152 151 150 149 148 147 146 145 144 143 142 141 140 139 138 137 136 135 134 133 132

MUXEN_6 MUXEN_5 MUXEN_4 MUXEN_3 MUXEN_2 MUXEN_1 MUXEN_0 NEGSEL_2 NEGSEL_1 NEGSEL_0 PASSEN PRECH SCTEST ST VCCREN PEN PE0.Data PE0.Control PE0.Pullup_Enable PE1.Data PE1.Control PE1.Pullup_Enable PE2.Data PE2.Control PE2.Pullup_Enable PE3.Data PE3.Control PE3.Pullup_Enable PE4.Data PE4.Control PE4.Pullup_Enable PE5.Data PE5.Control PE5.Pullup_Enable PE6.Data PE6.Control PE6.Pullup_Enable PE7.Data PE7.Control PE7.Pullup_Enable PB0.Data PB0.Control PB0.Pullup_Enable PB1.Data

Odblokowanie programowania (tylko obserwowany) PORT E

PORT B

131 130 129 128 127 126 125 124 123 122 121 120 119 118 117 116 115 114 113 112 111 110 109 108 107 106 105 104 103 102 101 100 99 98 97 96 95 94 93 92 91 90 89 88 87

PB1.Control PB1.Pullup_Enable PB2.Data PB2.Control PB2.Pullup_Enable PB3.Data PB3.Control PB3.Pullup_Enable PB4.Data PB4.Control PB4.Pullup_Enable PB5.Data PB5.Control PB5.Pullup_Enable PB6.Data PB6.Control PB6.Pullup_Enable PB7.Data PB7.Control PB7.Pullup_Enable PG3.Data PG3.Control PG3.Pullup_Enable PG4.Data PG4.Control PG4.Pullup_Enable TOSC TOSCON RSTT RSTHV EXTLKEN OSCON RCOSCEN OSC32EN EXTCLK (XTAL1) OSCCK RCCK OSC32CK TWIEN PD0.Data PD0.Control PD0.Pullup_Enable PD1.Data PD1.Control PD1.Pullup_Enable

PORT G

32 kHz oscylator licznika Logiczny poziom resetu (tyko obserwowany) Odblokowanie sygnaw dla gwnego zegara/oscylatora

Wejcia zegara i oscylatora dla gwnego zegara (tylko obserwowane)

TWI PORT D

86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42

PD2.Data PD2.Control PD2.Pullup_Enable PD3.Data PD3.Control PD3.Pullup_Enable PD4.Data PD4.Control PD4.Pullup_Enable PD5.Data PD5.Control PD5.Pullup_Enable PD6.Data PD6.Control PD6.Pullup_Enable PD7.Data PD7.Control PD7.Pullup_Enable PG0.Data PG0.Control PG0.Pullup_Enable PG1.Data PG1.Control PG1.Pullup_Enable PC0.Data PC0.Control PC0.Pullup_Enable PC1.Data PC1.Control PC1.Pullup_Enable PC2.Data PC2.Control PC2.Pullup_Enable PC3.Data PC3.Control PC3.Pullup_Enable PC4.Data PC4.Control PC4.Pullup_Enable PC5.Data PC5.Control PC5.Pullup_Enable PC6.Data PC6.Control PC6.Pullup_Enable

PORT G

PORT C

41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

PC7.Data PC7.Control PC7.Pullup_Enable PG2.Data PG2.Control PG2.Pullup_Enable PA7.Data PA7.Control PA7.Pullup_Enable PA6.Data PA6.Control PA6.Pullup_Enable PA5.Data PA5.Control PA5.Pullup_Enable PA4.Data PA4.Control PA4.Pullup_Enable PA3.Data PA3.Control PA3.Pullup_Enable PA2.Data PA2.Control PA2.Pullup_Enable PA1.Data PA1.Control PA1.Pullup_Enable PA0.Data PA0.Control PA0.Pullup_Enable PF3.Data PF3.Control PF3.Pullup_Enable PF2.Data PF2.Control PF2.Pullup_Enable PF1.Data PF1.Control PF1.Pullup_Enable PF0.Data PF0.Control PF0.Pullup_Enable

PORT G PORT A

PORT F

Uwaga: 1. PRIVATE_SIGNAL1 powinien by skanowany na wejciu jako 1.

o Jzyka opisujcy w plikach skanowania urzdze zewntrznych Jzyk opisujcy skanowanie urzdze peryferyjnych (BSDL) opisuje zdolno skanowania urzdze w standardowym formacie wykorzystujcym przez zautomatyzowane generacje oprogramowania testujcego. Kolejno i funkcje bitw rejestru danych skanowania urzdze peryferyjnych jest zawarty w opisie.

26. Wsparcie programu adujcego - odczyt podczas zapisu, samoprogramowanie


Wsparcie programu adujcego zapewnia rzeczywisty mechanizm zapisu podczas odczytu samo zaprogramowywania si dla adowania i zaadowywania kodw programw przez MCU. Ta cech umoliwia dogodne aktualizowanie oprogramowania kontrolowane przez MCU wykorzystujce program adujcy znajdujcy si w pamici Flash. Program adujcy moe wykorzystywa jakiekolwiek dostpne interfejsy danych i zwizane z nimi protokoy odczytu i zapisu kodu do pamici Flash lub odczytu tego kodu z pamici Flash. Kod programu znajdujcy si w sekcji programu adujcego pamici ma moliwo do zapisu po caym Flash wczajc w to zapis w sekcji programu adujcego. W zwizku z tym program adujcy moe sam siebie modyfikowa i wymaza z pamici urzdzenia jeli nie bdzie wicej potrzebny. Rozmiar pamici z programem adujcym jest konfigurowana przez bezpieczniki i Program adujcy ma dwa zestawy bitw blokujcych program adujcy, ktre mog by ustawiane niezalenie. Daje to uytkownikowi unikalne dopasowanie do wyboru rnych poziomw ochrony.
Cech programu adujcego 1. zapis podczas odczytu samo programujcy si 2. zmienny rozmiar pamici przeznaczonej na program adujcy 3. wysokie bezpieczestwo (gwarantowane poprzez oddzielne bity blokujce program adujcy) 4. oddzielny bezpiecznik wybierajcy wektor resetu 5. zoptymalizowany rozmiar strony 6. efektywny algorytm 7. wsparcie odczytu podczas zapisu Sekcje programw i programu adujcego w pamici Flash

Pami Flash jest podzielona na dwie sekcje sekcj programw i sekcj programu adujcego (rysunek 132). Rozmiar poszczeglnych sekcji jest ustawiany za pomoc bezpiecznika BOOTSZ co przedstawia tabela 280 i rysunek 132. Sekcje te maj rny poziom ochrony poniewa maj oddzielne zestawy bitw blokujcych dostp.
o Sekcja programw

Sekcja ta jest wykorzystywana do przechowywania kodu programw. Poziom zabezpieczenia moe zosta wybrany za pomoc bitw blokujcych adowanie (bit 0), tabela 271. W trej czci pamici nie moe znajdowa si program adujcy poniewa instrukcje SPM s zablokowane przy wykonywaniu programu z tej sekcji.

o Sekcja programu adujcego BLS

Podczas gdy sekcja programw suy do skadowania ich kodu, to program adujcy musi by skadowany w sekcji BLS poniewa tylko instrukcje SPM (wykonane z tej czci pamici) mog inicjalizowa programowanie. Rozkazy SPM mog operowa na caej pamici, take cz BLS. Poziom ochrony dla tej sekcji moe zosta wybrany za pomoc bitw blokujcych adowanie (bit 1), tabela 109 na stronie 272.
Sekcje odczytu podczas zapisu i oddzielnego zapisu i odczytu

Czy CPU wspiera odczyt podczas zapisu lub jest wstrzymane przy aktualizacji oprogramowania adujcego zaley od zaprogramowanego adresu. W dodatku do dwch sekcji konfigurowanych przez bezpiecznik BOOTSZ, jak opisano powyej, Flash jest podzielony na dwie stae sekcje: odczyt podczas zapisu RWW i oddzielny odczyt i zapis NRWW. Granica pomidzy tymi sekcjami jest podana w uwadze do tabeli na stronie 280 i rysunku 132 na stronie 271. Gwnymi rnicami pomidzy tymi sekcjami s: o wymazujc lub zapisujc stron w czci RWW, cz NRWW moe by jednoczenie odczytywana o wymazujc lub zapisujc stron w czci NRWW, CPU jest zatrzymane na ca t operacj. Warto zauway, e program uytkownika nie moe czyta z sekcji RWW podczas operacji programu adujcego. Skadnia sekcja odczyt podczas zapisu odnosi si do sekcji programowanej, ktra nie jest aktualnie odczytywana podczas aktualizacji oprogramowania adujcego.
o Sekcja odczyt podczas zapisu RWW

Jewli aktualizacja oprogramowania programuje stron w sekcji RWW mona odczytywa kod z Flash, ale tylko taki, ktry jest umieszczony w NRWW. Podczas programowania oprogramowanie musi zapewni, e sekcja RWW nigdy nie zostanie odczytana. Jeli program uytkowy prbuje odczyta kod znajdujcy si w tej czci pamici (call/jmp/lpm lub przerwanie) podczas programowania, program moe zakoczy si w nieprzewidywalnym stanie. Aby temu zapobiec przerwania powinny by albo zablokowane albo przeniesione do sekcji programu adujcego. Sekcja programu adujcego jest zawsze umieszczona w czci NRWW pamici. Bit zajcia sekcji RWW (RWWSB) w rejestrze kontroli skadowania programu (SPMCR) bdzie odczytywany jako logiczna jedynka tak dugo jak sekcja RWW jest zablokowana do odczytu. PO zakoczeniu programowania, bit RWWSB musi zosta wyzerowany przez oprogramowanie przed odczytem kodu umieszczonego w RWW. Szczegy w Rejestr kontroli skadowania programu SPMCR na stronie 273.
o Sekcja oddzielnego odczytu i zapisu NRWW

Kod znajdujcy si w sekcji NRWW moe by odczytywany kiedy program adujcy aktualizuje oprogramowanie w sekcji RWW. Kiedy program adujcy aktualizuje sekcje NRWW, CPU jest wstrzymane na czas wymazania lub zapisania caej strony.

Tabela 107 Ktr sekcj wskazuje wskanik Z podczas programowania? Sekcja RWW Sekcja NRWW

Ktra sekcja moe by odczytywana podczas programowania? Sekcja NRWW Nic

Czy CPU jest wstrzymane? Nie Tak

Czy odczyt podczas zapisu jest wspierany? Tak Nie

Uwaga: parametry wykorzystane na rysunku s dane w tabeli 280


Bity blokujce program adujcy

Jeli nie jest potrzebna adna ze zdolnoci programu adujcego to caa pami Flash jest przeznaczona dla programw uytkowych. Program adujcy ma dwa zestawy bitw blokujcych adowanie, ktre mog by ustawiane niezalenie. To daje uytkownikowi unikalne moliwoci wyboru poziomu zabezpiecze. Uytkownik moe wybra: o Ochron caej pamici Flash przed aktualizacj oprogramowania przez MCU o Ochron tylko czci programu adujcego przed aktualizacj oprogramowania przez MCU o Ochron czci programowej przed aktualizacj oprogramowania przez MCU o Umoliwia aktualizacj caej pamici Szczegy zawarte s w tabelach 108 i 109. Bity blokujce program adujcy mog zosta ustawione w programie lub w szeregowym lub rwnolegym trybie programowania, ale mog by zerowane tylko przez sprztowy rozkaz. Gwna blokada zapisu (bit blokujcy tryb 2) nie kontroluje programowania pamici Flash przez rozkazy SPM. Tak jak i gwna blokada odczytu/zapisu (bit blokady, tryb 1) nie kontroluje odczytu lub zapisu prze LPM/SPM jeli jest to zamierzone. Tabela 108 Tryb BLB02 BLB01 BLB0 1 1 1 2 3 1 0 0 0 Ochrona Nie ma adnych ogranicze naoonych na SPM i LPM przy odwoywaniu si do pamici programw SPM nie moe zapisywa do pamici programw SPM nie moe zapisywa do pamici programw i LPM nie moe wykonywa rozkazw z sekcji programu adujcego i czyta z sekcji programw. Jeli wektory przerwa s umieszczone w czci pamici programu adujcego, przerwania s zablokowane podczas

wykonywania programu z pamici programw. 4 0 1 LPM nie moe wykonywa rozkazw z sekcji programu adujcego i czyta z sekcji programw. Jeli wektory przerwa s umieszczone w czci pamici programu adujcego, przerwania s zablokowane podczas wykonywania programu z pamici programw. Uwaga: 1 znaczy nie zaprogramowany 0 zaprogramowany Tabela 109 Tryb BLB12 BLB11 BLB1 1 1 1 2 3 1 0 0 0 Ochrona Nie ma adnych ogranicze naoonych na SPM i LPM przy odwoywaniu si do pamici programu adujcego SPM nie moe zapisywa do pamici programu adujcego SPM nie moe zapisywa do pamici programu adujcego i LPM nie moe wykonywa rozkazw z sekcji programw i czyta z sekcji programw. Jeli wektory przerwa s umieszczone w czci pamici programw, przerwania s zablokowane podczas wykonywania programu z pamici programu adujcego. LPM nie moe wykonywa rozkazw z sekcji programw i czyta z sekcji programu adujcego. Jeli wektory przerwa s umieszczone w czci pamici programw, przerwania s zablokowane podczas wykonywania programu z pamici programu adujcego.

Wejcie do programu adujcego

Wejcie do programu adujcego nastpuje po wywoaniu rozkazu jump lub call z oprogramowania. Moe to zosta zainicjalizowane poprzez komend dostarczon poprzez USART lub interfejs SPI. Alternatywnie, bezpiecznik resetu do programu adujcego moe zosta zaprogramowany w taki sposb, e wektor resetu wskazuje na program adujcy we Flash po resecie. W takim przypadku, program adujcy jest uruchamiany po resecie. Po zaadowaniu kodu oprogramowania, program moe rozpocz wykonywanie programu uytkowego. Bezpieczniki nie mog by zmieniane przez MCU. Oznacza to, e bezpiecznik resetu programu adujcego raz zaprogramowany bdzie wskazywa wektorem resetu na reset programu adujcego i bezpiecznik ten moe zosta zmieniony tyko przez szeregowy lub rwnolegy interfejs. Tabela 110 BOOTRST Adres resetu 1 Wektor resetu = reset oprogramowania ($0000) 0 Wektor resetu = reset programu adujcego(tabela 112 na stronie 280)
o Rejestr kontroli skadowania programu w pamici SPMCR

Rejestr kontroli przechowywania programw zawiera bity kontroli potrzebne do kontroli operacji programu adujcego.

a: bit 7 SPMIE: bit odblokowujcy przerwania SPM Kiedy bit ten ma ustawion jedynk i bit I w rejestrze statusu jest ustawiony (1) przerwanie gotowoci SPM bdzie odblokowane. Przerwanie to bdzie wykonywane tak dugo jak bit SPMEN w rejestrze SPMCR bdzie wyzerowany. b: bit 6 RWWSB: odczyt podczas zapisu przy zajciu sekcji Podczas operacji samo programowania (wymazanie lub zapis strony) sekcja RWW zostanie zainicjalizowana bit RWWSB zostanie ustawiony przez sprzt. Kiedy bit ten jest ustawiony, sekcja RWW nie mona wej do tej sekcji. Bit ten jest zerowany jeli bit RWWSRE jest zapisany jedynk po ukoczeniu operacji samo programowania. Lub bit ten jest automatycznie zerowany jeli zostaie zainicjalizowana operacja adowania strony. c: bit 5 Res: bit zarezerwowany Bit ten jest zarezerwowany i w ATmega128 zawsze bdzie mia warto zero. d: bit 4 RWWSRE: odblokowanie sekcji odczyt podczas zapisu do odczytu Podczas programowania sekcji RWW, sekcja ta jest zablokowana do odczytu (RWWSB zostaje ustawiony przez sprzt). Aby zmieni ustawienia sekcji RWW program uytkownika musi czeka, a programowanie si zakoczy (SPMEN zostanie wyzerowane). Potem, jeli bit RWWSRE jest ustawiony na jeden w tym samym czasie co SPMEN, nastpna instrukcja SPM w przecigu czterech cykli zegarowych odblokuje sekcj RWW. Sekcja ta nie moe zosta odblokowana kiedy Flash jest zajty zapisem lub wymazywaniem strony. Jeli bit RWWSRE jest ustawiony podczas adowania danych do pamici Flash, operacja adowania do pamici zostanie przerwana, a dane stracone. e: bit 3 BLBSET: bit ustawiajcy blokad programu adujcego Jeli bit ten jest ustawiany na jeden w tym samym czasie co SPMEN, nastpny rozkaz SPM w przecigu czterech cykli ustawi bity blokujce program adujcy zgodnie z zawartoci rejestru R0. Dane z R1 i adres wskanika Z s ignorowane. Bit ten automatycznie zostanie wyzerowany po ukoczeniu ustawienia bitu blokujcego lub jeli nie jest wykonywana adna instrukcja SPM w przecigu czterech cykli maszynowych. Instrukcja LPM wcigu trzech cykli maszynowych po ustawieniu BLBSET i SPMEN odczyta albo bity blokujce lub bity bezpiecznikw ( w zalenoci od Z0 we wskaniku Z) do rejestru

przeznaczenia. Dalsze informacje w Odczyt bezpiecznikw i bitw blokujcych z programu na stronie 277. f: bit 2 _ PGWRT: zapis strony Jeli bit ten jest ustawiony na jeden w tym samym czasie co SPMEN to nastpna instrukcja SPM zapisze stron do pamici zawierajc dane przechowywane w tymczasowym buforze. Adres strony jest wskazywany przez wysze bity wskanika Z. Dane w rejestrach R0 i R1 s ignorowane. Bit PGWRT bdzie automatycznie wyzerowany po ukoczeniu zapisu strony lub jeli adna instrukcja SPM nie zostanie wykonana w przecigu czterech cykli maszynowych. CPU jest wstrzymane na czas zapisu caej strony jeli jest zaadresowana sekcja NRWW. g: bit 1-PGERS: wymazanie strony Jeli bit ten jest ustawiony na jeden w tym samym czasie co SPMEN to nastpna instrukcja SPM wymae stron z pamici. Adres strony jest wskazywany przez wysze bity wskanika Z. Dane w rejestrach R0 i R1 s ignorowane. Bit PGERS bdzie automatycznie wyzerowany po ukoczeniu zapisu strony lub jeli adna instrukcja SPM nie zostanie wykonana w przecigu czterech cykli maszynowych. CPU jest wstrzymane na czas zapisu caej strony jeli jest zaadresowana sekcja NRWW. h: bit 0 SPMEN: odblokowanie skadowania programw do pamici Bit ten uaktywnia instrukcje SPM na nastpne cztery cykle maszynowe. Jeli jest zapisywany jedynk wraz z RWWSRE, BLBSET, PGWRT lub PGERS nastpne instrukcja bd miay specjalne znaczenie opisane powyej. Jeli tylko bit SPMEN jest zapisane jedynk nastpne instrukcje przenios dane z rejestrw R0 i R1 do tymczasowego bufora zaadresowanego przez wskanik Z. LBS wskanika Z jest ignorowane. Bit ten zostanie automatycznie wyzerowany po zakoczeniu instrukcji SPM lub po czterech cyklach maszynowych jeli nie zostaa wykonana adna instrukcja SPM. Podczas zapisu lub wymazywania strony bit SPMEN pozostaje w stanie wysokim a do ukoczenia oeracji. Wpisanie innych kombinacji w modsze bity ni: 10001, 01001, 00101, 00011, 00001 nie bdzie miaa adnego efektu.
o Adresowanie pamici Flash podczas samo zaprogramowywania.

Wskanik Z wraz z RAMPZ jest wykorzystywany do adresowania rozkazw SPM. Szczegowy opis w rejestr wyboru strony RAM RAMPZ na stronie 12.

Odkd Flash jest podzielony na strony (tabela 123 na stronie 287) licznik programu moe by traktowany jak by posiada dwie rne sekcje. Pierwsza sekcja, skadajca si z modszych bitw, adresuje poszczeglne sowa na stronie, podczas gdy starsze bity wybieraj stron. Przedstawia to rysunek 133. Warto zauway, e operacje zapisu i wymazywania strony s adresowane niezalenie. Dlatego wanym jest by program adujcy adresowa te same strony przy zapisie co przy wymazywaniu. Kiedy operacja zostaa rozpoczta warto wskanika Z jest zatrzanita i wskanik Z wraz z RAMPZ mog by wykorzystywane w innych operacjach. Jedyn operacj SPM, ktra nie korzysta ze wskanika Z i RAMPZ jest ustawienie bitw blokujcych program adujcy. Zawarto wskanika Z i RAMPZ jest ignorowana i nie ma wpywu na t operacj. Rozkazy (E)LPM rwnie wykorzystuj wskanik Z i RAMPZ do przechowywania adresu. Odkd instrukcja adresuj Flash bajt po bajcie rwnie LSB(bit Z0) wskanika Z jest wykorzystywany.

Uwaga: Zmienne wykorzystane na rysunku s zamieszczone w tabeli 114 na stronie 281.


Samo zaprogramowywanie si Flash.

Pami programw jest aktualizowana w trybie strona po stronie. Przed zaprogramowaniem strony, dane s przechowywanie w tymczasowym buforze, strona musi zosta wymazana. Tymczasowy bufor jest wypeniany sowo za sowem przy wykorzystaniu SPM i moe zosta zapeniony przed rozkazem wymazania sttrony lub midzy rozkazem wymazania a zapisania strony. Moliwo 1, napenienie bufora przed wymazaniem strony: - wypenij tymczasowy bufor strony - wymarz stron - zapisz stron

Moliwo 2, wypenienie bufora po wymazaniu strony - wyma stron - wypenij bufor - zapisz stron Jeli tylko cz strony ma ulec zmianie, reszta strony musi by skadowana (np. w tymczasowym buforze) przed wymazaniem i dopiero wtedy powtrnie zapisana. W przypadku Moliwoci 1 program adujcy zapewnia efektywny odczyt podczas zapisu co pozwala aby program uytkowy pierwszy odczytywa strony, robi odpowiednie zmiany i zapisywa z powrotem dane. Wykorzystujc Moliwo 2, nie ma moliwo odczytania starych danych podczas adowania poniewa strona ta zostaa wymazana. Dostp do tymczasowego bufora strony moe by realizowany w przypadkowej kolejnoci. Wane jest tylko by adres strony wymazywanej i na nowo zapisywanej by taki sam. Przejrzyj Proste przykady kody w asemblerze... na stronie 278.
o Wymazywanie stron przez SPM

Aby wymaza stron naley wpisa jej adres do wskanika Z i RAMPZ, zapisa X0000011 do SPMCR i wykona rozka SPM w przecigu czterech cykli maszynowych po zapisie do SPRCR. Dane w rejestrach R0 i R1 s ignorowane. Adres strony musi zosta wpisany do PCPAGE w rejestrze Z. Pozostae bity we wskaniku Z bd ignorowane. Wymazanie strony z sekcji RWW: sekcja NRWW moe by odczytywana w tym czasie. Wymazanie strony z sekcji NRWW: CPU jest wstrzymane podczas tej operacji
o Wypenianie tymczasowego bufora (adowanie stron)

Aby wpisa sowo sterujce naley ustawi adres we wskaniku Z i dane w rejestrach R0 i R1, zapisa 00000001 do SPMCR i wykona rozka SPM w przecigu czterech cykli po zapisie SPMCR. Zawarto PCWORD w rejestrze Z jest wykorzystywana do zaadresowania danych w tymczasowym buforze danych. Bufor tymczasowy zostanie wymazany automatycznie po zapisie strony lub przy zapisie RWWSRE w rejestrze SPMCR. Jest on rwnie kasowany po resecie systemu. Naley zauway, e niemoliwy jest wielokrotny zapis do tego samego adresu bez wymazania bufora.
o Zapis strony

Przy zapisie strony naley stawi adres we wskaniku Z i RAMPZ, zapisa X0000101 do SPMCR i wykona rozkaz SPM w przecigu czterech cykli maszynowych od zapisu do SPMCR. Dane w R0 i R1 s ignorowane. Adres strony musi zosta zapisany do PCPAGE. Pozostae bit we wskaniku Z bd ignorowane podczas tej operacji. Zapis strony z sekcji RWW: sekcja NRWW moe by odczytywana w tym czasie. Zapis strony z sekcji NRWW: CPU jest wstrzymane podczas tej operacji
o Wykorzystywanie przerwa SPM

Jeli przerwania SPM sa odblokowane , przerwanie SPM wygeneruje stae przerwanie przy zerowaniu bitu SPMEN w SPMCR. Oznacza to, e przerwania mog zosta wykorzystane zamiast odpytywania rejestru SPMCR przez oprogramowanie. Wykorzystujc przerwania SPM wektory przerwa powinny zosta przeniesione do sekcji BLS w celu ograniczenia dostpu przerwaniom do sekcji RWW kiedy jest tam blokada odczytu. Jak przenie wektory przerwa jest opisane w Przerwania na stronie 54.
o Rozwaga przy aktualizowaniu BLS

Specjalna ostrono musi zosta zachowana jeli uytkownik umoliwia aktualizowanie sekcji programu adujcego pozostawiajc bit11 blokujcy t sekcj nie zaprogramowany. Przypadkowy zapis do tej sekcji moe zniszczy cay program adujcy i uniemoliwi przysz aktualizacj oprogramowania. Jeli nie potrzebujemy zmienia programu adujcego zaleca si zaprogramowanie tego bitu w celu ochrony programu adujcego przed zmianami.
o Zabezpieczenie przed zaprogramowywania si odczytem sekcji RWW podczas samo

Podczas samo zaprogramowyania si sekcja RWW jest zawsze zablokowana do odczytu. Program uytkowy musi zapewni, e ta sekcja jest adresowana podczas programowania. Bit RWWSB w SPMCR bdzie ustawiony tak dug jak sekcja RWW bdzie zajta. Podczas samo programowania si tablica wektorw przerwa powinna zosta przeniesiona do sekcji BLS opisane na stronie 54. lub przerwania powinny zosta zablokowane. Przed zaadresowaniem RWW po ukoczeniu programowania program uytkowy musi wyzerowa RWWSB przez zapis do RWWSRE. Przejrzyj Proste przykady kody w asemblerze... na stronie 278.
o Ustawianie bitw blokujcych program adujcy przez SPM

Aby ustawi bity blokujce program adujcy naley wpisa dane do R0, wpisa X0001001 do SPMCR i wykona instrukcje SPM w przecigu czterech cykli po zapisie do SPMCR. Jedynymi dostpnymi bitami blokujcymi s bity programu adujcego, ktre mog powstrzyma oprogramowanie i sekcje programu adujcego przed jakimikolwiek aktualizacjami MCU.

Obejrzyj tabele 108 i 109 jak rne ustawienia bitw blokujcych wpywaj na dostp do Flash. Jeli bity 5..2 w R0 s wyzerowane, odpowiadajce im bity blokujce program adujcy zosttan zaprogramowane jeli instrukcja SPM zostanie wykonana w przecigu czterech cykli maszynowych po ustawieniu BLBSET i SPMEN w SPMCR. Wskanik Z nie wpywa na t operacj, ale w celu zapewnienia kompatybilnoci z przyszymi urzdzeniami zaleca si zapisanie go $0001. W celu zapewnienia kompatybilnoci z przyszymi urzdzeniami zaleca si rwnie ustawienie bitw 7, 6 , 1 i 0 w R0 na 1 przy zapisie bitw blokujcych. Przy programowaniu tych bitw mona odczytywa z caego Flash.

o Zapis EEPROM zapobiegajcy zapisowi SPMCR

Naley zauway, e operacja zapisu do EEPROM zablokuje cae oprogramowanie programujce Flash. Jak rwnie uniemoliwi odczyt bezpiecznikw i bitw blokujcych przez oprogramowanie. Zaleca si, aby uytkownik sprawdzi bit statusu (EEWE) w EECR i zapewni wyzerowanie go przed zapisem do rejestru SPMCR.
o Odczyt bezpiecznika i bitw blokujcych z programu

Jest moliwe rwnoczesne odczytywanie bezpiecznikw i bitw blokujcych przez oprogramowanie. W celu odczytania bitw blokujcych naley zaadowa wskanik Z $0001 i ustawi bit BLBSET w SPMCR. Kiedy rozkaz LPM jest wykonywany w przecigu trzech cykli CPU po ustawieniu bitu BLBSET i SPMEN warto bitw blokujcych zostanie zapisana w rejestrze przeznaczenia. Bity BLBSET i SPMEN zostan automatycznie wyzerowane po ukoczeniu odczytu lub jeli adna instrukcja LPM lub SPM nie zostaa wykonana w tym czasie. Kiedy bity BLBSET i SPMEN s wyzerowane rozkaz LPM bdzie pracowa jak opisano w instrukcji.

Algorytm odczytu niszych bitw bezpiecznikw jest identyczny do opisanego powyej. W celu odczytania niszych bitw bezpiecznikw naley zaadowa wskanik Z $0000 i ustawi bit BLBSET w SPMCR. Kiedy rozkaz LPM jest wykonywany w przecigu trzech cykli CPU po ustawieniu bitu BLBSET i SPMEN warto bitw bezpiecznikw (FLB) zostanie zapisana w rejestrze przeznaczenia jak pokazano poniej. Odnie si do tabeli 119 na stronie 284 .

Podobnie odczytujc wysze bity bezpiecznikw naley wpisa $0003 do wskanika Z. Kiedy rozkaz LPM jest wykonywany w przecigu trzech cykli po zapisie bitw BLBSET i SPMEN w SPMCR. Warto wysokich bitw FBH zostanie umieszczona w rejestrze przeznaczenia jak pokazano poniej. Odnie si do tablicy 118 na stronie 284.

Przy odczycie rozszerzonych bitw bezpiecznikw naley zaadowa $0002 do wskanika Z. Kiedy rozkaz LPM jest wykonywany w przecigu trzech cykli po zapisie bitw BLBSET i SPMEN w SPMCR. Warto rozszerzonych bitw EFB zostanie umieszczona w rejestrze przeznaczenia jak pokazano poniej. Odnie si do tablicy 117 na stronie 283.

Bity blokujce i bezpieczniki, ktre s zaprogramowane bd odczytywane jako zero. Bity blokujce i bezpieczniki, ktre nie s zaprogramowane bd odczytywane jako jeden.
o Zabezpieczenie przed uszkodzeniem Flash

Podczas okresw kiedy Vcc jest niskie program w pamici Flash moe ulec uszkodzeniu poniewa rdo napicia jest za sabe aby CPU przeprowadzao poprawne operacje. Rezultaty s takie same jak w przypadku pytki systemu wykorzystujcej pami Flash i takie same rozwizanie powinny zosta podjte. Uszkodzenie programu we Flash moe wystpi w dwch przypadkach kiedy napicie jest za niskie .Po pierwsze, rozkazy zapisu do Flash wymagaj minimalnego napicia by mc dziaa poprawnie. Po drugie, CPU moe wykonywa instrukcje niepoprawnie jeli zasb napicia jest za niski. Uszkodzenia Flash mog zosta atwo ominite poprzez przestrzeganie nastpujcych rozwiza ukadowych.: Jeli nie przewiduje si potrzeby aktualizacji programu adujcego naley zaprogramowa bity blokujce programowanie tej sekcji pamici. Naley utrzymywa wejcie AVR RESET aktywne podczas niewystarczajcego zasobu napicia.. Moe to zosta wykonane poprzez odblokowanie wewntrznego detektora obnionego napicia sieciowego (BOD) jeli napicie pasuje do poziomu detekcji. W przeciwnym wypadku obwd ochronnego napicia zewntrznego moe zosta wykorzystany. Kiedy zostanie wykonany reset podczas operacji zapisu , operacja ta zostanie ukoczona przy zapewnionym odpowiednim rdle zasilania. Naley utrzymywa rdze AVR w trybie obnionego poboru mocy w trakcie obnionego napicie Vcc. Zapobiegnie to przed dekodowaniem i wykonywaniem instrukcji przez CPU efektywnie chronic rejestr SPMCR i pami przed niezamierzonymi zapisami.
o Czasy programowania przy uyciu SPM

Wzorcowy oscylator RC jest wykorzystywany do czasowych dostpw do Flash. Tabela 111 przedstawia typowy czas programowania dostpw CPU do Flash. Tabela 111 Symbol Zapis Flash (wymazanie, zapis strony i zapis bitw blokujcych przez SPM) Minimalny czas programowania 3.7ms Maksymalny czas programowania 4.5ms

o Proste przykady kodw w asemblerze dla programu adujcego

; procedura ta zapisuje jedn stron danych z RAM do Flash

; pierwsza lokacja danych w RAM jest wskazywana przez wskanik Y ; pierwsza lokacja danych we Flash jest wskazywana przez wskanik Z ; nie zawiera obsugi bdw ; musi by umieszczone w przestrzeni programu adujcego ; wykorzystuje rejestry R0 i R1 R16 R17 R24 R25 i R20 ; skadowanie i odnawianie zawartoci rejestrw nie jest zawarte w procedurze ; ilo wykorzystywanych rejestrw moe zosta zmniejszona przy jednoczesnym ; zwikszeniu dugoci kodu ; zakada si e tablica wektorw przerwa albo jest w sekcji programu adujcego albo ; przerwania s zablokowane

o Parametry programu adujcego ATmega128

Tabele 112 do 114 zawieraj parametry wykorzystywane w opisie samo programowania si. Tabela 112 konfiguracja rozmiaru sekcji programu adujcego Adres resetu programu adujcego

(pocztek Koniec Sekcja Rozmiar Rozmiar sekcji sekcji programu sekcji strony czci BOOTSZ1 BOOTSZ0 programw adujcego programw programu programu adujcego) we Flash adujcego 1 1 512 sw 4 $0000 $FE00 $FDFF $FE00 &FDFF $FFFF 1 0 24 sw 8 $0000 $FC00 $FBFF $FC00 $FBFF $FFFF 0 1 2048 sw 16 $0000$F800 $F7FF $F800 $F7FF $FFFF 0 0 4096 sw 32 $0000 $F000 $EFFF $F000 $FFFF $EFFF Uwaga: rne konfiguracje BOOTSZ s pokazane na rysunku 132 Tabela 113. limit(1) odczytu podczas zapisu Sekcja adres Strony Sekcja RWW 480 $0000-$EFFF Sekcja NRWW 32 $F000-$FFFF Uwaga: szczegy dotyczce tych dwch sekcji znajduj si na stronie 270 Tabela 114 opis zmiennych z rysunku 133 Zmienna Odpowiadajca jej Opis (2) warto Z PCMSR 15 Najstarszy bit w liczniku programu PAGEMSB 6 Najstarszy bit wykorzystywany do adresowania sw na stronie (bity PC 6..0) ZPCMSB Z16(1) Bit w rejestrze Z, ktry odwzorowuje PBMSB poniewa Z0 jest nie uywany, ZPCMSB = PCMSB +1 ZPAGEMSB Z7 Bit w rejestrze Z, ktry odwzorowuje PBMSB poniewa Z0 jest nie uywany, ZPAGEMSB = PAGEMSB +1 PCPAGE PC[15:7] Z16(1):Z7 Adres strony w liczniku programw wybiera stron do wymazania i zapisu PCWORD PD[6:0] Z7:Z1 Adres sowa w liczniku programu wybiera sowo wypeniajce bufor tymczasowy(musi by zerem podczas operacji zapisu) Uwaga: 1: Rejestr Z ma tyko 16 bitw. 16 bit jest umieszczony w RAMPZ rejestrze w odwzorowaniu I/O 2. Z0 powinno by zerem dla wszystkich rozkazw SPM, wybiera bajt dla instrukcji (E)LPM 3. szczegy w Adresowaniu Flash w czasie samo programowania si na stronie 274.

27. Programowanie pamici

Bity blokujce programy i dane

ATmega128 zapewnia sze bitw blokujcych, ktre mog zosta nie zaprogramowane (1) lub mona je zaprogramowa (0) w celu uzyskania cech opisanych w tabeli 116. Bity blokujce mog zosta wymazane tylko przez rozkaz ChipErase Tabele 115 Bit blokujcy Numer bitu 7 6 BLB12 5 BLB11 4 BLB02 3 BLB01 2 LB2 1 LB1 0 . Tabela 116 Bity blokujce pami Tryb LB2 LB1 LB 1 1 1 2 1 0 3 0 0 Typ ochrony Nie s odblokowane adne cech pamici Pniejsze programowanie Flash i EEPROM jest zablokowane w trybie rwnolegym i szeregowym SPI i JTAG. Bezpieczniki s zablokowane zarwno w trybie szeregowym jak i rwnolegym.(1) Pniejsze programowanie i weryfikacja Flash i EEPROM jest zablokowana w trybie rwnolegym i szeregowym SPI i JTAG. Bezpieczniki s zablokowane zarwno w trybie szeregowym jak i rwnolegym.(1) Nie ma adnych ogranicze dla SPM i (E)LPM na wchodzenie do sekcji programw SPM nie moe zapisywa do sekcji programw SPM nie moe zapisywa do sekcji programw, (E)LPM wykonywane z sekcji programu adujcego nie moe czyta w sekcji programw. Jeli przerwania s umieszczone w sekcji programu adujcego, s one zablokowane przy wykonywaniu programu z sekcji programw (E)LPM wykonywane z sekcji programu adujcego nie moe czyta z sekcji programw. Jeli przerwania s umieszczone w sekcji programu adujcego, s one zablokowane przy wykonywaniu programu z sekcji programw Nie ma adnych ogranicze przy dostpnie SPM i (E)LPM do sekcji programu adujcego SPM nie moe zapisywa do sekcji programu adujcego Opis Bit blokujcy Bit blokujcy Bit blokujcy Bit blokujcy Bit blokujcy Bit blokujcy Domylna warto 1(nie zaprogramowany) 1(nie zaprogramowany) 1(nie zaprogramowany) 1(nie zaprogramowany) 1(nie zaprogramowany) 1(nie zaprogramowany) 1(nie zaprogramowany) 1(nie zaprogramowany)

Tryb BLB02 BLB01 BLB0 1 1 1 2 3 1 0 0 0

Tryb BLB12 BLB11 BLB1 1 1 1 2 1 0

SPM nie moe zapisywa do sekcji programu adujcego, (E)LPM wykonane z sekcji programw nie moe czyta z sekcji programu adujcego. Jeli wektory przerwa s w sekcji programw, s zablokowane dla programw wykonywanych z sekcji programu adujcego.. 4 0 1 (E)LPM wykonane z sekcji programw nie moe czyta z sekcji programu adujcego. Jeli wektory przerwa s w sekcji programw, s zablokowane dla programw wykonywanych z sekcji programu adujcego.. Uwagi: 1. naley zaprogramowa bity blokujce przed bezpiecznikami 2. 1 nie zaprogramowany, 0 zaprogramowany
Bezpieczniki

ATmega128 ma trzy bezpieczniki . Tabele 117 119 opisuj ich funkcjonalno i jak s odzwierciedlane w bajtach bezpiecznikw. Jeli s zaprogramowane s odczytywane jako 0. Rozszerzone bezpieczniki M103C(1) Numer bitu 7 6 5 4 3 2 1 Tabela 117 opis Domylna warto 1 1 1 1 1 1 0 (zaprogramowany) 1 (nie zaprogramowany)

Tryb kompatybilnoci z ATmega103 WDTON(2) 0 Licznik Watchdoga zawsze wczony Uwaga: 1.tryb kompatybilnoci z ATmega103 na stronie 4 2. rejestr kontroli licznika Watchdoga na stronie 51. Starszy bajt bezpiecznika OCDEN(4) JTAGEN SPIEN(1) CKOPT(2) EESAVE Numer bitu 7 6 5 4 3 Tabela 118 Opis Odblokowanie OCD Odblokowanie JTAG odblokowanie szeregowego programowania i adowania danych Opcje oscylatora Pami EEPROM jest chroniony poprzez chipErase

Warto domylna 1 (nie zaprogramowany, zablokowane OCD) 0 (zaprogramowany, odblokowany JTAG) 0 (zaprogramowany, odblokowany SPI) 1 (nie zaprogramowany) 1( nie zaprogramowany, EEPROM nie chroniony)

Rozmiar sekcji programu 0 (zaprogramowany) (3) adujcego BOOTSZ0 1 Rozmiar sekcji programu 0 (zaprogramowany) (3) adujcego BOOTRST 0 Wybr wektora resetu 1 (nie zaprogramowany) Uwagi: 1. bezpiecznik SPIEN nie jest dostpny w trybie programowania szeregowego SPI 2.Funkcjonalno bezpiecznika CKOPT zaley od ustawienia bitu CKSEL. rda zegara na stronie 34. 3. Domylne wartoci bezpiecznikw BOOTSZ1..0 s maksymalnymi wartociami sekcji programu adujcego. Tabela 112 na stronie 280 4. Nigdy nie wysya produktu z zaprogramowanym bezpiecznikiem OCDEN bez wzgldu na ustawienia bitw blokujcych i bezpiecznika JTAGEN. Zaprogramowany OCDEN odblokowuje niektre czci systemu zegarowego dziaajcego w trybach snu co moe spowodowa zwikszenie poboru mocy. BOOTSZ1 2 Tabela 119 Modszy bajt bezpiecznika BODLEVEL Numer bitu 7 Opis Warto domylna

Poziom wyzwalajcy detektor 1 (nie zaprogramowany) obnionego napicia sieciowego BODEN 6 Bit odblokowujcy det4ektor 1 (nie zaprogramowany, BOD obnionego napicia sieciowego zablokowany) SUT1 5 Wybieralny czas uruchamiania 1 (nie zaprogramowany)(1) SUT0 4 Wybieralny czas uruchamiania 0 (Zaprogramowany)(1) CKSEL3 3 Wybieralne rdo zegara 0 (Zaprogramowany)(2) CKSEL2 2 Wybieralne rdo zegara 0 (Zaprogramowany)(2) CKSEL1 1 Wybieralne rdo zegara 0 (Zaprogramowany)(2) CKSEL0 0 Wybieralne rdo zegara 1 (nie zaprogramowany)(2) Uwagi: 1. Wartoci domylne SUT1..0 ustawiaj maksymalny czas uruchamiania. Szczegy w tabeli 14 na stronie 38. 2. Wartoci domylne CKSEL3..0 ustawiaj oscylator RC na 1MHz. Tabela 6 na stronie 34.

Na status bezpiecznikw nie ma wpywu ChipErase. Warto zauway, e bezpieczniki s zablokowane jeli bit LB1 jest zaprogramowany. Naley zaprogramowa bezpieczniki przed programowaniem bitw blokujcych.
o Zatrzaskiwanie bezpiecznikw

Warto bezpiecznikw s zatrzaskiwane kiedy urzdzenie wchodzi w tryb programowania i zmiany tych wartoci nie bd miay adnego efektu do momentu wyjcia z trybu programowania.. Nie odnosi si to bezpiecznika EESAVE, ktry bdzie mia efekt odkd zosta zaprogramowany. Bezpieczniki s rwnie zatrzaskiwane w trybie normalnym i przy zwikszonej mocy(power up).
Bity charakterystyczne

Wszystkie mikrokontrolery Atmela maj trzybajtowy charakterystyczny kod, ktry charakteryzuje urzdzenie. Kod ten moe by odczytywany w trybie szeregowym i rwnolegym, take kiedy urzdzenie jest zablokowane. Te trzy bity umieszczone s w oddzielnych przestrzeniach adresowych. Dla ATmega128 bitami charakterystycznymi s: o $000:$1E (wskazuje, urzdzenie zostao wyprodukowane przez Atmela) o $001:$97 (wskazuje na 128KB pamici Flash) o $002:$02 (wskazuje, e jest to urzdzenie ATmega128 jeli zgodne s poprzednie bajty)
Bajt wzorcowe

ATmega128 ma bit ze wzorcow wartoci dla oscylatora RC. Bajt ten jest umieszczony w starszym bajcie adresu $000 w przestrzeni adresw charakterystycznych. Podczas resetu ten bajt jest automatycznie wpisywany do rejestru OSCCAL aby zapewni poprawn czstotliwo wzorcowego oscylatora.
Parametry programowania rwnolegego, odwzorowanie wej i rozkazy

Sekcja ta opisuje jak programowa rwnolegle pami Flash i sprawdza poprawno pamici programw, pami danych EEPROM, bity blokujce pami, bezpieczniki w ATmega128. Zakada si, e impulsy trwaj najkrcej 250 ns w przeciwnym wypadku jest to zaznaczone.
o Nazwy sygnaw

W tej sekcji niektre wyprowadzenia ATmega128 s opisywane poprzez nazwy sygnaw opisujce ich funkcjonalno podczas programowania rwnolegego, rysunek 134 i tabela 120. Wyjcia nie opisane w tej tabeli s nazywane normalnymi nazwami. XA1/XA0 ustalaj rodzaj wykonywanej akcji kiedy na wejciu XTAL1 pojawi si impuls. Tabela122. Po przyoeniu impulsu do wej WR lub OE, rodzaj wykonywanej akcji zaley od zaadowanego rozkazu. Tabela 123.

Tabela 120 Nazwa sygnau w trybie programowania RDY/not BSY Not OE Not WR BS1 XA0 XA1 PAGEL BS2 DATA Tabela 121 Wyjcie PAGEL XA1 XA0 BS1 Symbol Warto Odblokowanie programowania[3] 0 Odblokowanie programowania[2] 0 Odblokowanie programowania[1] 0 Odblokowanie programowania[0] 0 Nazwa wejcia PD1 PD2 PD3 PD4 PD5 PD6 PD8 PA0 PB7..0 I/O Funkcje O ): urzdzenie jest zajte programowaniem; 1: urzdzenie oczekuje na nowy rozkaz I Odblokowanie wyjcia (aktywny stanem niskim) I Impuls zapisu (aktywny stanem niskim) I Wybr bajtu 1(0 niszy bajt, 1 wyszy bajt) I XTAL akcja bitu 0 I XTAL akcja bitu 1 I Programowanie pamici i zaadowanie strony danych do EEPROM I Wybr bajtu 2 (0 niszy bajt, 1 drugi wyszy bajt) I/O Dwukierunkowa magistrala danych (wyjcie kiedy na OE jest stan niski)

Tabela 122 XA1 XA0 0 0 0 1 1 1 0 1

Akcja podta przy impulsie na XTAL Zaadowanie adresw Flash lub EEPROM (wysoki bd niski bajt adresu zalenie od BS1) Zaadowanie danych (wysoki lub niski bajt dla Flash zalenie od BS1) Zaadowanie rozkazu Nic nie robi Tabela 123 Sowo sterujce Wykonany rozkaz 1000 0000 Wymazanie moduu 0100 0000 Zapis bezpiecznikw 0010 0000 Zapisanie bitw blokujcych 0001 0000 Zapis Flash 0001 0001 Zapis EEPROM 0000 1000 Odczyt bajtw charakterystycznych i bitw wzorcowych 0000 0100 Odczyt bezpiecznikw i bitw blokujcych 0000 0010 Odczyt Flash 0000 0011 Odczyt EEPROM

Tabela 124 Rozmiar Flash Rozmiar strony PCWORD Liczba stron PCPAGE PCMSB 64K sw (128K bajtw) 128 sw PC[6:0] 512 PC[15:7] 15 Tabela 125 Rozmiar EEPROM Rozmiar strony PCWORD Liczba stron PCPAGE PCMSB 4K bajty 8 bajtw EEA[2:0] 512 EEA[11:3] 8
Rwnolege programowanie o Wejcie w tryb programowania

Nastpujcy algorytm wprowadza urzdzenie w tryb programowania: 1. Poda napicie 4.5 5.5 V midzy wejcia Vcc i GRD 2. ustawi wejcie RESET na zero (0) przeczy XTAL najmniej sze razy 3. ustawi wyjcia prog_enable opisane w tabeli 121 na stronie 287 na 0000 i odczeka najmniej 100ns. 4. poda 11.5 12.5V na wejcie RESET. Jakakolwiek aktywno na wyjciu prog_enable w przecigu 100ns po podaniu +12V na RESET spowoduje niepomylne przejcie do trybu programowania
o Rozpatrywanie efektywnoci programowania

adowane rozkazy i adresy pozostaj w urzdzeniu podczas programowania. W celu zwikszenia efektywnoci programowania, nastpujce uwagi powinny zosta uwzgldnione: Wystarczy tylko raz zaadowa rozkaz przy wielokrotnym zapisie lub odczycie pamici Omin zapis wartoci $FF danych, ktra wspzawodniczy z caym EEPROM( chyba e bezpiecznik EESAVE jest zaprogramowany) i Flash po wymazaniu moduu Wyszy bajt adresu musi by zaadowany tyko raz przy odczycie lub programowaniu nowych 256 sw we Flash i 256 bajtw w EEPROM, Odnosi si to rwnie do odczytu bitw charakterystycznych.
o Wymazanie moduu

Wymazanie moduu wymazuje pamici Flash, EEPROM i bity blokujce. Bity blokujce nie s kasowane dopki caa pami programu nie zostanie wymazana. Bezpieczniki nie s zmieniane. Wymazanie moduu musi zosta wykonane przed programowaniem Flash. Uwaga: Pami EEPROM jest chroniona przed wymazaniem moduu jeli bezpiecznik EESAVE jest zaprogramowany. adowanie rozkazu Wymazania moduu 1. ustawi XA1, XA0 na 10. To odblokowuje adowanie rozkazu. 2. ustawi BS1 na 0 3. ustawi DATA na 1000 0000. To jest rozkaz wymazania moduu 4. poda na XTAL dodatni impuls. To aduje rozkaz. 5. Poda na WR ujemny impuls 0. To rozpoczyna wymazywanie moduu. RDY/BSY ma wtedy niski poziom 6. Czeka, a na RDY/BSY pojawi si wysoki poziom przed zaadowaniem nowego rozkazu.
o Programowanie Flash

Pami Flash jest podzielona na strony, Tabela 123 na stronie 287. Podczas programowania Flash dane s zatrzaskiwane w buforze strony. To pozwala na symultaniczne programowanie caej strony danych. Ponisza procedura opisuje jak programowa ca pami Flash.
o o o o o o o o

A. adowanie rozkazu Zapis do Flash Ustaw XA1, XA0 na 10. Odblokowanie adowanie rozkazu. Ustaw BS1 na 0 Ustaw DATA na 0001 0000. To jest rozkaz zapisu Flash. Podaj na XTAL dodatni impuls, co zaaduje rozkaz. B. adowanie niszego bajtu adresu Ustaw XA1, XA0 na 00. Odblokowanie adowanie adresu. Ustaw BS1 na 0. Wybiera niszy adres Ustaw DATA = adres niszego bajtu ($00, $FF) Podaj na XTAL dodatni impuls, co zaaduje adres. C. adowanie niszego bajtu danych

o Ustaw XA1, XA0 na 01. Odblokowanie adowanie danych. o Ustaw DATA na niszy adres danych ($00 - $FF) o Podaj na XTAL dodatni impuls, co zaaduje dane.

D. adowanie wyszego bajtu danych o Ustaw BS1 na 1, co wybiera wyszy bajt o Ustaw XA1, XA0 na 01. Odblokowanie adowanie rozkazu. o Ustaw DATA na wyszy bajt ($00 - $FF) o Podaj na XTAL dodatni impuls, co zaaduje bajt E. Zatrzanicie danych o Ustawi BS1 na 1 wybiera wyszy bajt danych o Poda dodatni impuls na PAGEL. To zatrzaskuje dane. (rysunek 136) F. Powtarza kroki od B do E dopki cay bufor nie jest wypeniony lub zostay zaadowane wszystkie dane tej strony Podczas gdy nisze bity adresw s odwzorowywane do sw na stronie, wysze bity adresuj stron we Flash. Jest to przedstawione na rysunku 135 na stronie 290. Warto zauway, e jeli jest potrzebne mniej ni 8 bitw adresw (strony < 256) najstarsze bity w modszym bajcie adresu s wykorzystywane do adresowania strony przy zapisie. G. adowanie wyszego bajtu adresu o Ustaw XA1, XA0 na 00. Odblokowanie adowanie adresu. o Ustaw BS1 na 1, co wybiera wyszy bajt o Ustaw DATA na wyszy bajt ($00 - $FF) o Podaj na XTAL dodatni impuls, co zaaduje bajt H. Programowanie strony o Ustawi BS1 na 0 o Poda ujemny impuls na WR. To rozpoczyna programowanie caej strony danych. RDY/BSY jest w stanie niskim o Czeka, a RDY/BSY bdzie w stanie wysokim (rysunek 136) I. Powtarza od B do H dopki caa pami Flash nie zostanie zaprogramowana. J. Zakoczenie programowania strony o Ustawi XA1 i XA0 na 10 o Ustawi DATA na 0000 0000. To jest rozkaz -= nie ma adnej operacji o Poda dodatniimpuls na XTAL. To zaaduje rozkaz jeli wewntrzny sygna zapisu jest zresetowany.

Uwaga: PCPAGE i PCWORD s opisane w tabeli 124 na stronie 287.

Uwaga: XX nie jest wane. Litery te odnosz si do opisu programowania powyej.


o Programowanie EEPROM

EEPROM jest podzielony na strony, tabela 1254 na stronie 287.Podczas programowania EEPROM dane s zatrzaskiwane w buforach strony. To pozwala na symultaniczne programowanie caej strony danych. Ponisza procedura opisuje jak programowa ca pami EEPROM. (patrz programowanie Flash). 1. A: aduj rozkaz 0001 0001 2. G: aduj wyszy bajt adresu ($00 - $FF)

3. B: aduj niszy bajt adresu ($00-$FF) 4. C: aduj dane ($00-$FF) 5. E: Zatrzanij dane (podaj na PAGEL dodatni impuls) K. Powtarzaj od 3 do 5 dopki cay bufor nie jest wypeniony. L. Programowanie strony EEPROM o Ustaw BS1 na 0 o Podaj ujemny impuls na WR. To rozpoczyna programowanie strony. RDY/BSY poziom niski o Czekaj na wysoki poziom wyjcia RDY/BSY przed rozpoczciem programowania nastpnej strony (rysunek 137)

o Odczyt Flash

Algorytm odczytu pamici Flash : A: aduj rozkaz 0000 0010 G: aduj wyszy bajt adresu ($00-$FF) B: aduj niszy bajt adresu ($00-$FF) ustaw OE na 0, BS1 na 0. Niszy bajt sowa danych jest do odczytu na DATA. 5. ustaw BS1 na 1. Na wyjciach DATA jest teraz wyszy bajt danych do odczytu 6. ustaw OE na 1
o Odczyt EEPROM

1. 2. 3. 4.

Algorytm odczytu pamici EEPROM : A: aduj rozkaz 0000 0011 G: aduj wyszy bajt adresu ($00-$FF) B: aduj niszy bajt adresu ($00-$FF) ustaw OE na 0, BS1 na 0. Niszy bajt sowa danych jest do odczytu na DATA. 5. ustaw OE na 1
o Programowanie modszych bitw bezpiecznikw

1. 2. 3. 4.

Algorytm programowania bezpiecznikw jest nastpujcy 1. A: aduj rozkaz 0100 0000 2. C: aduj niszy bit danych . Bit n = 0 zaprogramowany, n = 1 nie zaprogramowany 3. ustaw BS1 na 0 i BS2 na 0 4. podaj ujemny impuls na WR i odczekaj a wyjcia RDY/BSY bd w stanie wysokim
o Programowanie starszych bitw bezpiecznikw

Algorytm programowania bezpiecznikw jest nastpujcy 1. A: aduj rozkaz 0100 0000 2. C: aduj niszy bit danych . Bit n = 0 zaprogramowany, n = 1 nie zaprogramowany 3. ustaw BS1 na 1 i BS2 na 0 4. podaj ujemny impuls na WR i odczekaj a wyjcia RDY/BSY bd w stanie wysokim 5. ustaw BS1 na 0 aby wybra niszy bit danych
o Programowanie bitw rozszerzonych bezpiecznikw

Algorytm programowania bitw rozszerzonych bezpiecznikw jest nastpujcy: 1. 2. 3. 4. 5. A: aduj rozkaz 0100 0000 C: aduj niszy bit danych . Bit n = 0 zaprogramowany, n = 1 nie zaprogramowany ustaw BS1 na 0 i BS2 na 1 podaj ujemny impuls na WR i odczekaj a wyjcia RDY/BSY bd w stanie wysokim ustaw BS2 na 0 aby wybra niszy bit danych

o Programowanie bitw blokujcych

Algorytm programowania bitw blokujcych jest nastpujcy: 1. A: aduj rozkaz 0010 0000 2. C: aduj niszy bit danych . Bit n = 0 programuje bit blokujcy 3. podaj ujemny impuls na WR i odczekaj a wyjcia RDY/BSY bd w stanie wysokim Bity blokujce mog zosta wyczyszczone tylko przez wymazanie moduu.
o Odczyt bezpiecznikw i bitw blokujcych

Algorytm odczytu bitw blokujcych i bezpiecznikw jest nastpujcy: 1. A: aduj rozkaz 0000 0100 2. ustaw OE na 0, BS2 na 0 BS1 na 0. Stan niszego bajtu bezpiecznikw moe zosta odczytany z DATA 3. ustaw OE na 0, BS2 na 1 BS1 na 1. Stan wyszego bajtu bezpiecznikw moe zosta odczytany z DATA 4. ustaw OE na 0, BS2 na 1 BS1 na 0. Stan rozszerzonego bajtu bezpiecznikw moe zosta odczytany z DATA 5. ustaw OE na 0, BS2 na 0 BS1 na 1. Stan bitw blokujcych moe zosta odczytany z DATA 6. ustaw OE na 1

o Odczyt bitw charakterystycznych

Algorytm odczytu bitw charakterystycznych jest nastpujcy: 1. 2. 3. 4. A: aduj rozkaz 0000 1000 B: aduj modszy bajt adresu ($00 - $02) ustaw OE na 0, BS1 na 0. Teraz mona odczyta wybrane bajty charakterystyczne ustaw OE na 1
o Odczyt bajtu wzorcowego

Algorytm odczytu bajtu wzorcowego jest nastpujcy: 1. 2. 3. 4. A: aduj rozkaz 0000 1000 B: aduj niszy bajt adresu ustaw OE na 0, i BS1 na 1. Teraz mona odczyta bajty wzorcowe ustaw OE na 1
o Charakterystyka programowania rwnolegego

Uwaga: Wymagania czasowe przedstawiona na rysunku 140odnosz si rwnie do operacji adowania.

Uwaga: Wymagania czasowe przedstawiona na rysunku 140odnosz si rwnie do operacji adowania Symbol VPP IPP tDVHX tXLXH tXHXL tXLDH Tabela 126 Parametr Minimum Typ Maksimum jednostka Odblokowanie programowania napicia 11.5 12.5 V Odblokowanie programowania natenia 250 Mikro A Poprawno danych przed podaniem 1 na 67 ns XTAL1 Przejcie z niskiego XTAL1 do wysokiego 200 ns Szeroko impulsu wysokiego XTAL1 150 ns Wstrzymanie danych i kontroli po ustawieniu 67 ns XTAl1 na stan niski

XTAL1 niski dla WR niskiego 0 ns XTAL1 niski PAGEL wysoki 0 ns PAGEN niski do XTAL1 wysoki 150 ns BS1 wstrzymane po PAGEN wysokie 67 ns Szeroko wysokiego impulsu PAGEN 150 ns BS1 wstrzymane po PAGEN niskie 67 ns BS2/1 wstrzymane po WR niskie 67 ns PAGEL niskie dla WR niskiego 67 ns BS1 poprawne do WR niskiego 67 ns Szeroko impulsu WR w stanie niskim 150 ns WR niskie dla RDY/BSY niskiego 0 1 mikros WR niskie dla RDY/BSY wysokiego(1) 3,7 4,5 ms tWLRH_CE WR niskie dla RDY/BSY wysokiego dla 7,5 9 ms wymazania strony (2) tXLOL XTAL1 niskie dla OE niskiego 0 ns tBVDV BS1 poprawne dla poprawnej DATA 0 250 ns tOLDV OE niskie dla poprawnej DATA 250 ns tOHDZ OE wysokie dla DATA w trzecim stanie 250 Ns Uwaga: 1. warto poprawna dla zapisu do Flash, EEPROM , zapisu bitw blokujcych i bezpiecznikw. 2. poprawne dla rozkazu wymazania moduu
Szeregowe adowanie

tXLWL tXLPH tPLXH tBVPH tPHPL tPLBX tWLBX tPLWL tBVWL tWLWH tWLRL tWLRH

Zarwno tablice pamici Flash jak i EEPROM mog by programowane przy wykorzystaniu szeregowej magistrali SPI podczas gdy RESET jest uziemione. Szeregowy interfejs skada si z nek SCK, MOSI(wejcie) i MISO(wyjcie). Po ustawieniu RESET na stan niski instrukcja odblokowujca programowanie musi zosta wykonana przed instrukcjami programowania lub wymazywania. Naley zauway, e w tabeli 127 na stronie 296, odwzorowanie wej dla programowania SPI jest opisane. Nie wszystkie czci wykorzystuj nki przeznaczone dla wewntrznego interfejsu SPI. Zauwa, e poprzez opis adowania szeregowego , MOSI i MOSO s wykorzystywane do opisu szeregowych danych wejciowych lub wyjciowych. Dla Atmega128 nki te odzwierciedlaj PDI i PDO.
SPI szeregowe programowanie odwzorowania wej

Tabela 127. Symbol MOSI(PDI) MOSO(PDO) SCK Nki I/O Opis PE0 I Szeregowe wejcie danych PE1 O Szeregowe wyjcie danych PB1 I Szeregowy zegar

Uwagi: 1. Jeli urzdzenie jest taktowane przez wewntrzny oscylator, nie trzeba docza rda zegara do wej XTAL1 2. VCC 0.3V < AVCC + 0.3V chocia AVCC powinno by z przedziau 2.7-5.5V Podczas programowania EEPROM, automatyczny cykl wymazywania jest wbudowany w operacj samo programowania (tylko w trybie szeregowym) i nie ma potrzeby wczeniejszego wykonywania wymazania moduu. Instrukcja wymazania moduu wpisuje zarwno we Flash jak i EEPROM warto $FF do tablic programw. Zalenie od bezpiecznika CKSEL, poprawny zegar musi by obecny. Minimalne niskie i wysokie okresy dla wejciowego zegara szeregowego (SCK) s zdefiniowane nastpujco: Niski > 2 CPU cykle maszynowe dla fck < 12 MHz, 3 CPU cykle maszynowe dla fck >=12MHz Wysoki: >2 CPU cykle maszynowe dla fck < 12 MHz, 3 CPU cykle maszynowe dla fck >=12MHz
o Algorytm programowania szeregowego SPI

Wpisujc szeregowo dane do ATmega128, dane s taktowane na narastajcym zboczu impulsw zegara SCK. Przy odczycie danych z ATmega128, dane s taktowane na opadajcym zboczu impulsw zegara SCK. Obejrzyj rysunek 144 i 145 oraz tabele 145 . Aby programowa i sprawdza w ATmega128 w trybie programowania szeregowego SPI nastpujca sekwencja jest zalecana (opis bajtw w tabeli 144): 1. sekwencja zwikszenia mocy Przy napicie midzy Vcc i GND podczas gdy RESET i SCK s ustawione na 0. W niektrych systemach programista nie moe zagwarantowa utrzymywania SCK w stanie niskim podczas

zwikszania mocy. W tym przypadku, na RESET musi zosta podany dodatni impuls o dugoci minimalnej dwch cykli maszynowych CPU po tym jak SCK zostao ustawione na 0. Alternatyw do uywania sygnau RESET jest PEN, ktry powinien by utrzymywany w stanie niskim podczas resetu wczania zasilania kiedy SCK jest ustawiany na 0. W tym przypadku tylko warto PEN s istotne przy resecie. Jeli programista nie moe zapewni utrzymania stanu niskiego na SCK, metoda z PEN nie moe by wykorzystywana, Urzdzenie musi zosta wyczone w celu rozpoznania normalnych operacji przy uyciu tej metody. 2. Czekaj minimalnie 20 ms i odblokuj SPI szeregowe programowanie przez przesanie szeregowego rozkazu odblokowujcego na wejcie MOSI. 3. Rozkaz szeregowego programowania SPI nie bdzie dziaa jeli komunikacja nie jest zsynchronizowana. Jeli jest zsynchronizowana drugi bajt ($53) potwierdzi kiedy zostanie sprawdzi trzeci bajt instrukcji odblokowujcej programowanie. Czy potwierdzenie jest poprawne czy nie, wszystkie cztery bajty instrukcji musz zosta przesane. Jeli $53 nie jest potwierdzony nale poda na RESET dodatni impuls i rozpocz now instrukcj odblokowania programowania. 4. Flash jest programowany strona po stronie. Strona pamici jest adowana bajt po bajcie wspierajc 7 LSB adresu przez dane warz z rozkazami adowania programu do pamici strony. Aby zapewni poprawne adowania strony, niszy bajt danych musi by zaadowany przed wyszym bajtem pod dany adres. Strona pamici programu jest skadowana poprzez instrukcja zapisu strony pamici z 9MBS adresu. Jeeli odpytywanie nie jest wykorzystywane, uytkownik musi odczeka minimum tWD_FLASH przed wydaniem nastpnej strony. (tabela 128). Wejcie do interfejsu szeregowego programowania przed ukoczeniem zapisu do Flash moe spowodowa bd przy programowaniu. 5. Tablica EEPROM jest programowana bajt po bajcie przez podawanie danych z adresem w odpowiedniej instrukcji zapisu. Pami EEPROM jest automatycznie wymazywania nim do danej lokacji zostanie wpisana nowa dana. Jeli odpytywanie nie jest wykorzystywane, uytkownik musi odczeka minimum tWD_EEPROM przed wydaniem nastpnego bajtu (tabela 128). W urzdzeniu o wymazywalnych moduach, nie trzeba programowa adnych $FF w plikach danych. 6. Kada lokacja pamici moe zosta zweryfikowana poprzez wykorzystanie instrukcji odczytujcej, ktra zwraca zawarto wybranego adresu na wyjciu MISO. 7. Na kocu sesji programowania , RESET moe zosta ustawiony w stan wysoki w celu umoliwienia normalnych operacji. 8. Sekwencja wyczania (jeli jest potrzebna): a. Ustaw RESET na jeden b. Wycz Vcc
o Odpytywanie danych z Flash

Kiedy strona we Flash jest programowana, odczytanie adresu z tej strony zwrci warto $FF. Kiedy urzdzenie jest gotowe do zapisu nowej strony, wartoci zaprogramowane bd odczytywane poprawnie. Jest to wykorzystywane w celu sprawdzenia kiedy mona rozpocz zapisywanie nastpnej strony. Zauwa, e caa strona jest zapisywana symultanicznie i jakikolwiek adres z tej strony moe zosta wykorzystany w celu odpytania. Odpytywanie danych nie dziaa przy programowaniu danych na wartoci $FF i wtedy uytkownik musi czeka minimalnie tWD_FLASH przed rozpoczciem programowania nastpnej strony. Jeli urzdzenie

zawiera we wszystkich lokacjach warto $FF, programowanie adresw, ktra maj zawiera $FF moe by ominite. Przejrzyj tabele 128.
o Odpytywanie danych z EEPROM

Kiedy nowy bajt jest wpisany i ma zosta zaprogramowany w EEPROM, odczytanie adresu, ktry jest programowany zwrci warto $FF. W czasie, kiedy urzdzenie jest gotowe do programowania warto ta zostanie odczytania poprawnie. Wykorzystuje si to do stwierdzenia kiedy mona rozpocz zapis nastpnego bajtu. Nie bdzie to dziaao dla zapisu warto $FF, ale uytkownik powinien pamita o nastpujcych fakcie: jeli urzdzenie zawiera we wszystkich lokacjach warto $FF, programowanie adresw, ktra maj zawiera $FF moe zosta ominite. Nie mona tego stosowa powtrnym programowania EEPROMU bez wczeniejszego wymazywania moduu. W tym przypadku naley czeka minimum tWD_EEPROM przed rozpoczciem programowania nastpnego bajtu. Przejrzyj tabele 128. Symbol tWD_FLASH tWD_EEPROM tWD_ERASE Tabela 128 Minimalny czas opnienia 4,5 ms 9,0 ms 9,0 ms

Tabela 129

Uwagi: a = adres starszych bitw b = adres modszych bitw H = 0 niski bajt = 1 wysoki bajt O = wyjcie danych I = wejcie danych X = nie naley si tym przejmowa
o Szeregowe programowanie charakterystyk SPI

Tabela 130 Symbol Parametr 1/tCLCL Czstotliwo oscylatora (Vcc 2.7 5.5V) tCLCL Okres oscylatora(Vcc 2.7 5.5V) 1/ tCLCL Czstotliwo oscylatora (Vcc 4,5 5.5V) tCLCL Okres oscylatora(Vcc 4,5 5.5V) tSHSL SCK szeroko impulsu w stanie wysokim tSLSH SCK szeroko impulsu w stanie niskim tOVSH MOSI uruchamianie dla SCK w stanie wysokim tSHOX MOSI zatrzymanie po przejciu SCK na stan niski tSLIV SCK w stanie niskim dla MISO poprawnego Uwagi: 1. 2tCLCL dla fck < 12 MHz, 3tCLCL fck >= 12MHz
Programowanie przez interfejs JTAG

Minimum Typ Maksimum Jednostka 0 8 MHz 125 ns 0 16 MHz 62,5 ns 2tCLCL(1) ns 2tCLCL(1) ns tCLCL ns 2tCLCL 15 ns Ns

Programowanie poprzez interfejs JTAG wymaga kontroli czterech specyficznych wyj: TCK, TMS, TDI i TDO. Kontrola resetu i zegara nie jest wymagana. Aby mc wykorzystywa interfejs JTAG, bezpiecznik JTAGEN musi by zaprogramowany. Urzdzenie jest domylnie adowane z zaprogramowanym tym bezpiecznikiem. Lub, jeli bit JDT jest ustawiony, na zewntrzny reset mona poda impuls o stanie niskim. Wtedy, JDT zostanie wyzerowane po dwch taktach (chip clock) i nki JTAG s dostpne dla programowania. Umoliwia to wykorzystanie tych nek jako normalnych nek portw w trybie normalnym i jako nek do programowania przez interfejs JTAG. Technika ta nie moe by wykorzystywana kiedy nki JTAG s wykorzystywane do skanowania granicy przy debugowniu moduu. W tym przypadku nki JTAG musz wykonywa zamierzon funkcj. Zgodnie z definicj w tym arkuszu danych, LBS jest przesuwane do i z pierwsze z wszystkich rejestrw przesuwnych.
o Programowanie specyficznych instrukcji JTAG

Rejestr instrukcji zajmuje cztery bajty wspierajc do 16 instrukcji. Instrukcje JTAG uyteczne przy programowaniu s zamieszczone poniej.

OPCODE kadej instrukcji jest pokazane za kad nazw instrukcji w formacie szesnastkowym. Tekst opisuje, ktry rejestr danych jest wybrany jako cieka midzy TDI i TDO dla kadej instrukcji. Stan dziaania/Idyl kontrolera TAP jest wykorzystywany do generowania wewntrznego zegara. Moe by on rwnie wykorzystywany jako stan idyl midzy dwoma sekwencjami JTAG. Sekwencja stanw maszyny dla zmiany sowa sterujcego jest pokazana na rysunku 146.

o AVR_RESET($C)

AVR specyfikuje publiczny rozkaz JTAG dla ustawienia urzdzenia AVR w tryb resetu lub wyjcia tego urzdzenia z trybu resetu. Kontroler TAP nie jest resetowany przez t instrukcj. Jedno bitowy rejestr resetu jest wybierany jako rejestr danych. Zauwa, e reset bdzie aktywny tak dugo jak w acuch resetu bdzie wpisana 1. Wyjcie z tego acucha nie jest zatrzaskiwane. Aktywne stany to: - Shift-DR: Rejestr resetu jest przesuwany przez wejcie TCK
o PROG_ENABLE ($4)

AVR specyfikuje publiczny rozkaz JTAG odblokowujcy programowanie poprzez port JTAG. Szesnastobitowy rejestr odblokowujcy programowanie jest wybierany jako rejestr danych. Aktywne stany s nastpujce:

Shift-DR: charakterystyka odblokowujca programowanie jest przenoszona do rejestru danych Upadte-DR: charakterystyka odblokowujca programowanie jest porwnywana z poprawn wartoci, i jeli jest poprawna urzdzenie przechodzi do trybu programowania.

o PROG_COMMANDS($5)

AVR specyfikuje publiczny rozkaz JTAG sucy do wejcia rozkazw programujcych przez port JTAG. Pitnastobitowy rejestr rozkazw jest wybrany jako rejestr danych. Aktywne stany s nastpujce: Capture-DR: rezultat poprzedniej instrukcji jest adowany do rejestru danych Shift-DR: rejestr danych jest przesuwany przez wejcie TCK, przesuwajc na zewntrz rezultat poprzedniego rozkazu i wsuwajc nastpny rozkaz Update-DR: rozkaz programujcy jest podany na wejcia Flash Dziaanie/idyl: generowany jest jeden takt zegara wykonujcy podany rozkaz (nie jest zawsze wymagany patrz tabela 131)
o PROG_PAGELOAD($6)

AVR specyfikuje publiczny rozkaz JTAG do bezporedniego adowania stron Flash poprzez port JTAG. Rejestr 2048 bitowej wirtualnej strony Flash jest wybrany jako rejestr danych. Jest to wirtualny acuch przeszukiwa o dugoci rwnej liczbie bitw na stronie Flash. Wewntrznie rejestr przesuwny jest 8 bitowy. W przeciwiestwie do wikszoci rozkazw JTAG, Update-DR nie jest wykorzystywany do przesyania danych z rejestru przesuwnego. Dane s automatycznie transmitowane do bufora strony Flash bajt po bajcie w stanie Shift-DR poprzez wewntrzny stan maszyny. Jedyny aktywny stan: Shift-DR: dane strony Flash s przenoszone z TDI przez wejcie TCK i automatycznie adowane w stronie Flash bajt po bajcie.
o PROG_PAGEREAD($7)

AVR specyfikuje publiczny rozkaz JTAG odczytujcy pen stron danyc z Flash poprzez port JTAG. Rejestr 2048 bitowej wirtualnej strony Flash jest wybrany jako rejestr danych. Jest to wirtualny acuch przeszukiwa o dugoci rwnej liczbie bitw na stronie Flash plus 8. Wewntrznie rejestr przesuwny jest 8 bitowy. W przeciwiestwie do wikszoci rozkazw JTAG, Update-DR nie jest wykorzystywany do przesyania danych z rejestru przesuwnego. Dane s automatycznie transmitowane do bufora strony Flash bajt po bajcie w stanie Shift-DR poprzez wewntrzny stan maszyny. Jedyny aktywny stan: Shift-DR: dane strony Flash s automatycznie odczytywane bajt po bajcie i przesuwane na TDO przez TCK. Wejcie TDI jest ignorowane. Uwaga: Instrukcje PROG_PAGELOAD i PROG_PAGEREAD mog by tylko wykonywane na urzdzeniach bdcych pierwszymi elementami w acuch skanowania JTAG. W przeciwnym razie algorytm bajtowy programowania musi zosta wykonany.

o Rejestr danych

Rejestr danych jest wybierany przez rozkaz JTAG opisany w sekcji programowanie specyficznych instrukcji JTAG na stronie 301. Rejestry danych odpowiadajce za operacje programowania to: Rejestr resetu Rejestr odblokowujcy programowanie Rejestr rozkazw programowania Rejestr adownia strony Flash Rejestr odczytu strony Flash
o Rejestr resetu

Rejestr resetu jest rejestrem testujcym dane wykorzystywanym do resetowania czciowego podczas programowania. Naley zresetowa cz przed wejciem w tryb programowania. Wysoka warto w tym resecie odpowiada ustawieniu resetu zewntrznego nisk wartoci. Cz ta jest resetowana tak dugo jak w rejestrze znajduje si wysoka warto. W zalenoci od ustawie bezpiecznika dla opcji zegara, cz ta zostanie zretowana poprzez okres resetu (reset timeout period) ( rda zegarw na stronie 34)po zwolnieniu rejestru reseetu. Wyjie rejestru danych jest zatrzaskiwane, wic reset bdzie nastpowa natychmiastowo, co pokzuje rysunek 122 na stronie 250.
o Rejestr odblokowujcy programowanie

Rejestr odblokowujcy programowanie jest szesnastobitowy. Zawarto tego rejestru jest porwnywana z charakterystyk programowania, binarny kod 1010 0011 0111 0000. Kiedy zawarto tego rejestru jest taka sama jak charakterystyka odblokowujca programowanie, programowanie poprzez JTAG jest odblokowane. Rejestr ten jest ustawiany na zero przy resecie uruchamiajcym i powinien zawsze by zresetowany przy wyjciu z trybu programowania.

o Rejestru programowania polece

Rejestr programowania polece jest 15 bitowy. Jest on wykorzystywany do szeregowego przesuwania rozkazw i szeregowego wyprowadzania wynikw ich wykonania. Zestaw instrukcji JTAG jest przedstawiony w tabeli 131. Sekwencja stanw przy przesuwaniu polece programowania jest przedstawiona na rysunku 149.

Tabela 131

Uwagi: 1. Ta sekwencja rozkazw nie jest wymagana jeli MSB jest ustawione poprawnie przez poprzedni sekwencj rozkazw 2.powtarzaj, a o = 1 3. Ustaw bity na 0 aby zaprogramowa odpowiadajce im bezpieczniki 4.Ustaw bity na 0 aby zaprogramowa odpowiadajce im bity blokujce 5.0 zaprogramowany 1 nie zaprogramowany 6. bit odwzorowujcy rozszerzony bezpiecznik jest opisany w tabeli 117 na stronie 283 7.bit odwzorowujcy wyszy bajt bezpiecznika jest opisany w tabeli 118 na stronie 284 8. bit odwzorowujcy niszy bajt bezpiecznika jest opisany w tabeli 118 na stronie 284 9. bit odwzorowujcy bajt bitw blokujcych jest opisany w tabeli 115 na stronie 282 10. . adresy przekraczajce PSMSB i EEA<SB(tabela 123 i 124) nie s wane
o Rejestr adowania stron wirtualnego Flash

Rejestr adowania stron wirtualnego Flash jest wirtualnym acuchem o dugoci odpowiadajcej ilo bitw na stronie. Wewntrznie rejestr przesuwny ma 8 bitw a dane s automatycznie transportowane do bufora stron Flash bajt po bajcie. Przesu we wszystkich rozkazach na stronie , zaczynajc od LSB pierwszej instrukcji i koczc na MSB. To zapewnia efektywny sposb adowania caych stron bufora Flash przed zapisaniem strony.

o Rejestr odczytu wirtualnych stron Flash

Rejestr wirtualnego odczytu stron jest wirtualnym acuchem o dugoci odpowiadajcej ilo bitw na stronie zwikszonym o 8. Wewntrznie rejestr przesuwny ma 8 bitw a dane s automatycznie transportowane do bufora stron Flash bajt po bajcie. Pierwszych osiem cykli jest wykorzystywanych do przetransportowania pierwszego bajtu do rejestru przesuwnego i bity, ktre pojawi si na wyjciu w tym czasie powinny by ignorowane.Po inicjalizacji dane s przesuwane na zewntrz zaczynajc od LSB pierwszej instrukcji i koczc na MSB. To zapewnia efektywny sposb odczytu caych stron Flash i sprawdzania poprawnoci zapisu.

o Algorytm programowania

Wszystkie odnoniki typw 1a i 1b, i tym podobne, odnosz si do tabeli 131.

o Wejcie do trybu programowania

1. Wejd w instrukcje JTAG VAR_RESET i przesu 1 w rejestrze resetu 2. Wejd w rozkaz PROG_ENABLE i przesu 1010 0011 0111 0000 w rejestrze odblokowujcym programowanie
o Opuszczenie trybu programowania

1. Wejd w rozkaz PROG_COMMANDS 2. zablokuj wszystkie instrukcje programujce poprzez wykorzystanie operacji nie ma adnej instrukcji 11a. 3. Wejd w instrukcje PROG_ENABLE i przesu 0000 0000 0000 0000 w rejestrze odblokowujcym programowanie 4. wejd w instrukcje AVR_RESET i przesu 0 w rejestrze resetu
o Wymazywanie moduw

1. Wejd w instrukcje PROG_COMMANDS 2. rozpocznij wymazywanie moduw instrukcj 1a. 3. Sprawd czy wymazywanie zostao ukoczone wykorzystujc rozkaz 1b, lub odczekaj tWLRH_CE (tabela na stronie 295)
o Programowanie Flash

1. 2. 3. 4. 5. 6. 7. 8. 9.

Wejd w instrukcj PROG_COMMANDS odblokuj zapis Flash wykorzystujc rozkaz 2a. Zaaduj starszy bajt adresu wykorzystujc instrukcj 2b. Zaaduj modszy bajt adresu wykorzystujc rozkaz 2c. Zaaduj dane przy wykorzystaniu rozkazw 2d, 23 i 2f Powtarzaj kroki 4 i 5 a zostan zaprogramowane wszystkie sowa na stronie Zapisz stron wykorzystujc instrukcj 2g. Sprawd czy zapis zosta zakoczony wykorzystujc instrukcj 1h lub odczekaj tWLRH Powtrz kroki 3 do 7 w celu zaprogramowania caej pamici

Bardziej efektywny transfer danych moe by osignity przy wykorzystaniu rozkazu PROG_PAGELOAD: 1. Wejd w rozka JTAG PROG_COMMANDS 2. Odblokuj zapis do Flash wykorzystujc instrukcje 2a. 3. Zaaduj adres strony wykorzystujc instrukcje 2b i 2c. PCWORD (tabela 123 na stronie 287) jest wykorzystywane do adresowania jednej strony i musi zosta zapisane 0. 4. Wejd q instrukcje JTAG PROG_PAGELOAD 5. Zaaduj ca stron poprzez przesuwanie wszystkich sw instrukcji zaczynajc od LSB instrukcji a koczc na MSB ostatnie instrukcji dla strony. 6. wejd w rozkaz PROG_COMMANDS 7. zapisz stron wykorzystujc instrukcje zapisu strony 2g 8. Sprawd czy zapis zosta zakoczony wykorzystujc instrukcj 1h lub odczekaj tWLRH

9. Powtrz kroki 3 do 8 w celu zaprogramowania caej pamici


o Odczyt Flash

1. 2. 3. 4. 5.

Wejd w rozkaz PROG_COMMANDS Odblokuj odczyt Flash wykorzystujc rozkaz 3a Zaaduj adres wykorzystujc instrukcje 3b i 3c Odczytaj dane instrukcja 3d Powtarzaj kroki 3 i 4 a zostanie odczytana caa pami

Bardziej efektywny transfer danych moe by osignity przy wykorzystaniu rozkazu PROG_PAGEREAD 1. Wejd w rozkaz PROG_COMMANDS 2. Odblokuj odczyt Flash wykorzystujc rozkaz 3a 3. Zaaduj adres wykorzystujc instrukcje 3b i 3c PCWORD adresuje stron i musi by zapisane na zero (tabela 123 na stronie 285) 4. Wejd w rozkaz PROG_PAGEREAD 5. Odczytaj ca stron przesuwajc sowa w stronie zaczynajc od LSB a koczc na instrukcji MSB w stronie. Pamitaj e 8 pierwszych bitw powinno by zignorowanych. 6. Wejd do instrukcji PROG_COMMANDS 7. Powtarzaj kroki 3 i 6 a zostanie odczytana caa pami
o Programowanie EEPROM

1. 2. 3. 4. 5. 6. 7. 8. 9.

Wejd w instrukcj PROG_COMMANDS odblokuj zapis EEPROM wykorzystujc rozkaz 4a. Zaaduj starszy bajt adresu wykorzystujc instrukcj 4b. Zaaduj modszy bajt adresu wykorzystujc rozkaz 4c. Zaaduj dane przy wykorzystaniu rozkazw 4d, 4e Powtarzaj kroki 4 i 5 a zostan zaprogramowane wszystkie bajty na stronie Zapisz stron wykorzystujc instrukcj 2f. Sprawd czy zapis zosta zakoczony wykorzystujc instrukcj 4g lub odczekaj tWLRH Powtrz kroki 3 do 8 w celu zaprogramowania caej pamici

Zauwa, e instrukcja PROG_PAGELOAD nie moe zosta wykorzystana przy programowaniu EEPROM
o Odczyt EEPROM

1. 2. 3. 4. 5.

Wejd w rozkaz PROG_COMMANDS Odblokuj odczyt EEPROM wykorzystujc rozkaz 5a Zaaduj adres wykorzystujc instrukcje 5b i 5c Odczytaj dane instrukcja 5d Powtarzaj kroki 3 i 4 a zostanie odczytana caa pami

Zauwa, e instrukcja PROG_PAGEREAD nie moe zosta wykorzystana przy programowaniu EEPROM
o Programowanie bezpiecznikw

1. Wejd w instrukcj PROG_COMMANDS 2. odblokuj zapis bezpiecznikw wykorzystujc rozkaz 6a. 3. Zaaduj bajt danych wykorzystujc instrukcj 6b. Warto bitu 0 odpowiada zaprogramowaniu bezpiecznika. 4. Zapisz rozszerzone bezpieczniki wykorzystujc instrukcje 6c 5. Sprawd czy zapis zosta zakoczony wykorzystujc instrukcj 6d lub odczekaj tWLRH 6. Zaaduj bajt danych wykorzystujc instrukcj 6e. Warto bitu 0 odpowiada zaprogramowaniu bezpiecznika. 7. Zapisz wyszy bajt bezpiecznika wykorzystujc rozkaz 6f 8. Sprawd czy zapis zosta zakoczony wykorzystujc instrukcj 6g lub odczekaj tWLRH 9. Zaaduj bajt danych wykorzystujc instrukcj 6h. Warto bitu 0 odpowiada zaprogramowaniu bezpiecznika. 10. Zapisz niszy bajt bezpiecznika wykorzystujc rozkaz 6i 11. Sprawd czy zapis zosta zakoczony wykorzystujc instrukcj 6g lub odczekaj tWLRH
o Programowanie bitw blokujcych

1. Wejd w instrukcj PROG_COMMANDS 2. odblokuj zapis bitw blokujcych wykorzystujc rozkaz 7a. 3. Zaaduj dane wykorzystujc instrukcj 7b. Warto bitu 0 odpowiada zaprogramowaniu bezpiecznika. 4. Zapisz bit blokujcy wykorzystujc rozkaz 7c. 5. Sprawd czy zapis zosta zakoczony wykorzystujc instrukcj 7d lub odczekaj tWLRH
o Odczyt bezpiecznikw i bitw blokujcych

1. Wejd w instrukcj PROG_COMMANDS 2. odblokuj odczyt bitw blokujcych lub bezpiecznikw wykorzystujc rozkaz 8a. 3. Aby odczyta wszystkie bezpieczniki i bity blokujce wykorzystaj instrukcj 8f. a. 8b rozszerzone bezpieczniki b. 8c wysoki bajt bezpiecznikw c. 8d niski bajt bezpiecznikw d. 8e bity blokujce
o Odczyt bajtw charakterystycznych

1. 2. 3. 4. 5.

Wejd w instrukcj PROG_COMMANDS odblokuj odczyt bajtw charakterystycznych wykorzystujc rozkaz 9a. Zaaduj adres $00 wykorzystujc instrukcje 9b Odczytaj pierwszy bajt charakterystyczny rozkazem 9c Powtarzaj 3 i 4 z adresami $01 i $02 aby odczyta nastpne bajty charakterystyczne

o Odczyt bitu wzorcowego

1. 2. 3. 4.

Wejd w instrukcj PROG_COMMANDS odblokuj odczyt bajtw wzorcowych wykorzystujc rozkaz 10a. Zaaduj adres $00 wykorzystujc instrukcje 10b Odczytaj bajt wzorcowy rozkazem 10c

CHARAKTERYSTYKA ELEKTRYCZNA
Parametry gwarantowane
Temperatura Pracy ........................................................ -55C do +125C Temperatura Skadowania...............................................-65C do +150C

Napicie na kadej z nek z wyjtkiem ~RESET


z uwzgldnieniem masy................................................... od -1.0V do VCC + 0.5V Maksymalne Napicie Pracy............................................ 6.0V Prd stay we/wy na styku................................................ 40.0 mA Styki masy i napicia zasilania......................................... 200.0 mA

PARAMETRY STAOPRDOWE
TA = -40C do 85C, VCC = 2.7V do 5.5V (jeli nie jest podana konkretna warto)

Symbol
VIL VIL1 VIL2 VIH VIH1 VIH2 VOL

Nazwa
Napicie wejciowe w stanie niskim Napicie wejciowe w stanie niskim Napicie wejciowe w stanie niskim Napicie wejciowe w stanie wysokim Napicie wejciowe w stanie wysokim Napicie wejciowe w stanie wysokim Napicie wyjciowe w stanie niskim (Porty A,B,C,D, E, F, G) Napicie wyjciowe w stanie wysokim (Porty A,B,C,D)

Warunki
z wyjtkiem stykw XTAL1 i ~RESET styk XTAL1, wybrany ukad taktujcy ~RESET z wyjtkiem stykw XTAL1 i ~RESET styk XTAL1, wybrany ukad taktujcy ~RESET

Wart. min -0.5 -0.5 -0.5 0.6 VCC 0.7 VCC 0.85 VCC

Wart. typ

Wart. max 0.3 VCC 0.1 VCC

Jednostka V V V

VCC + 0.5 VCC + 0.5 VCC + 0.5 0.7 0.5 4.0 2.2

V V V V

IOL=20 mA, VCC = 5V IOL = 10 mA, VCC = 3V IOH= -20 mA, VCC = 5V IOH = -10 mA, VCC = 3V

VOH

V V

IIL IIH RRST RPEN RPU

Prd wejciowy w stanie niskim Prd wejciowy w stanie wysokim Reset rezystor podcigajcy PEN rezystor podcigajcy I/O rezystor podcigajcy

Vcc = 5.5V, styk low (warto bezwzgldna) Vcc = 5.5V, styk high (warto bezwzgldna) 30 25 33

8.0 8.0 100 100 122

A A k k k

TA = -40C do 85C, VCC = 2.7V do 5.5V (jeli nie jest podana konkretna warto) (cig dalszy)

Symbol
ICC

Nazwa
Prd zasilania

Warunki
Czynny 4 MHz, VCC = 3V (ATmega128L) Czynny 8 MHz, VCC = 5V (ATmega128) Jaowy 4 MHz, VCC = 3V (ATmega128L) Jaowy 8 MHz, VCC = 5V (ATmega128) WDT w., VCC = 3V WDT wy., VCC = 3V VCC = 5V Vin = 0.5VCC VCC = 5V Vin = 0.5VCC VCC = 2.7 V VCC = 5.0 V VCC = 2.7 V VCC = 5.0 V

Wart. min

Wart. typ

Wart. max 5 20 2 12

Jednostka mA mA mA mA A A mV

<25 <10

40 25 40

Stan wyczenia (Power-down) VACIO

Wejciowe napicie niezrwnowaenia


komparatora analogowego Wejciowy upyw prdu komparatora analogowego Opnienie inicjalizacji komparatora analogowego Opnienie propagacji komparatora analogowego

IACLK tACID tACID

-50 750 500 750 500

50

nA ns ns

UKAD TAKTUJCY
Rys. 152. Czasy propagacji sygnau zegarowego

Tabela 132. Ukad taktujcy

Symbol
1/tCLCL tCLCL tCHCX tCLCX tCLCH tCHCL

Nazwa Czstotliwo oscylatora Czas trwania sygnau Czas trwania Stanu wysokiego Czas trwania stanu niskiego Czas narastania Czas opadania

VCC = 2.7V do 5.5V Min Max 0 125 50 50 1.6 1.6 8

VCC = 4.5V do 5.5V Min Max 0 62.5 25 25 0.5 0.5 16

Jednostka MHz ns ns ns s s

Tabela 133. Typowe wartoci czstotliwoci oscylatora RC


R [k] C [pF] f 100 70 TBD 31.5 20 TBD 6.5 20 TBD Uwaga: R powinien by z zakresu 3 k- 100 k, C powinna wynosi przynajmniej 20 pF.

CHARAKTERYSTYKA DWUPRZEWODOWEGO INTERFEJSU SZEREGOWEGO


Tabela 134 opisuje wymagania dla ukadw podczonych do dwuprzewodowej magistrali szeregowej. ATmega128 dwuprzewodowy interfejs szeregowy spenia lub przekracza te wymagania. Oznaczenia czasowe odnosz si do rys. 153. Tabela 134. Wymagania dwuprzewodowej magistrali szeregowej
Symbol VIL VIH Vhys VOL tr tof tSP Ii Ci fSCL Rp Warto rezystora podcigajcego tHD;STA Czas przetrzymywania fSCL > 100 kHz tLOW Czas trwania stanu niskiego dla zegara SCL tHIGH Czas trwania stanu wysokiego dla zegara SCL tSU;STA Czas ustalania fSCL > 100 kHz tHD;DAT tSU;DAT Czas przetrzymywania Czas ustalania danych fSCL <= 100 kHz fSCL > 100 kHz fSCL <= 100 kHz 0.6 0 0 250 3.45 0.9 s s s ns fSCL > 100 kHz fSCL <= 100 kHz fSCL <= 100 kHz fSCL > 100 kHz fSCL <= 100 kHz 0.6 4.7 1.3 4.0 0.6 4.7 s s s s s s fSCL > 100 kHz fSCL <= 100 kHz Nazwa Napicie wejciowe w stanie niskim Napicie wejciowe w stanie wysokim Histereza Smitt`a Trigger Inputs Napicie wyjciowe w stanie niskim Czas narastania dla SDA i SCL Czas opadania na wyjciu od VIHmin do VILmax Spikes Suppressed by Input Filter Prd we. Na kadym z we/wy stykw Pojemno kadego styku Czstotliwo zegara SCL fCK >max(16fSCL, 250kHz) fSCL <= 100 kHz 10 pF < Cb < 400 pF 3 mA prd wsteczny Warunki Min -0.5 0.7 VCC 0.05 VCC 0 20 + 0.1Cb 20 + 0.1Cb 0 0.1 VCC < Vi < 0.9 VCC -10 0 (VCC 0.4V) /3mA (VCC 0.4V) /3mA 4.0 300 250 50 10 10 400 1000 ns *1/Cb 300 ns *1/Cb Max 0.33 VCC VCC + 0.5 Jednostka V V V V ns ns ns A pF kHz s

tSU;STO tBUF

Czas ustalania dla STOP Czas zwolnienia magistrali pomidzy START i STOP

fSCL > 100 kHz fSCL <= 100 kHz fSCL > 100 kHz fSCL <= 100 kHz

100 4.0 0.6 4.7

ns s s s

Rys. 153. Synchronizacja dwuliniowej szeregowej magistrali

Wicej szczegw na rysunkach 154 i 155

Tabela 135. SPI parametry synchronizacji

OPIS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 SCK okres SCK wysoki/niski Czas narastania/opadania ustalanie wstrzymanie Wyjcie do SCK SCK do wyjcia SCK do wyjcia wysoki SS niski do wyjcia SCK okres SCK wysoki/niski Czas narastania/opadania ustalanie wstrzymanie SCK do wyjcia SCK do ~SS wysoki ~SS wysoki do trjstanowy SS niski do SCK

Tryb Master Master Master Master Master Master Master Master Slave Slave Slave Slave Slave Slave Slave Slave Slave Slave

Min

Typ patrz tab. 72 50% cyklu obowizkowego TBD 10 10 0.5 * tsck 10 10 15

Max

ns

4*tck 2*tck TBD 10 10 15 20 10 20

Rys. 154. SPI Interfejs - wymagania synchronizacji (tryb master)

Rys. 155. SPI Interfejs - wymagania synchronizacji (tryb slave)

CHARAKTERYSTYKA KONWERTERA ANALOGOWO-CYFROWEGO(ADC) WSTPNE DANE


Symbol Opis Warunki Konwersja niesymetryczna Konwersja rnicowa przyrost = 1x lub 20x Konwersja rnicowa przyrost = 200x Niesymetryczna konwersja VREF = 4V ADC zegar = 200 kHz ADHSM = 0 Konwersja niesymetryczna VREF = 4V ADC zegar = 1 MHz ADHSM = 1 Integralna nieliniowo Rnicowa nieliniowo Bd Zero (Offset) VREF = 4V VREF = 4V VREF = 4V Konwersja wasna ADHSM = 0 Czas konwersji Konwersja wasna ADHSM = 1 65 TBD 65 Min (1) Typ (1) 10 8 Max (1) Jednostka

rozdzielczo

Bity
7

TBD

Bezwzgldna dokadno

TBD

TBD

LSB
0.5 0.5 1 260 s

Czstotliwo zegara
AVCC Analogowe napicie zasilania

ADHSM=0 ADHSM=1

50 50 VCC - 0.3 (2)

200 TBD VCC + 0.3 (3) AVCC

kHz

VREF

Napicie odniesienia

Konwersja niesymetryczna
Konwersja rnicowa

2.0

2.0

AVCC-0.2

Kanay niesymetryczne Napicie wejciowe

GND

VREF

VIN Kanay Rnicowe Kanay niesymetryczne Szeroko pasma na wejciu VINT RREF RAIN Wew. napicie odniesienia Rezystancja wejcia odniesienia Rezystancja analogowego wejcia Zwikszony pobr prdu w trybie szybkiej pracy (ADHSM=1) TBD TBD 4 2.3 TBD 2.56 TBD TBD 2.7 TBD V k M TBD

kHz

Kanay Rnicowe

IHSM

TBD

Uwagi: 1. Rzeczywistymi wartociami s TBD. 2. Minimum dla AVCC to 2.7 V.

3. Maximum dla AVCC to 5.5 V.

Synchronizacja pamici zewntrznej


Tabela 137. Charakterystyka pamici zewntrznej, 4.5 - 5.5 V, brak czasu oczekiwania
Symbol 0 1 2 3a 3b 4 5 6 7 8 9 10 11 12 1/tCLCL tLHLL tAVLL tLLAX_ST tLLAX_LD tAVLLC tAVRL tAVWL tLLWL tLLRL tDVRH tRLDV tRHDX tRLRH 115 57.5 5 5 57.5 115 115 47.5 47.5 40 0 115 67.5 67.5 75 0 1.0tCLCL-10 Nazwa 8MHZ Oscylator Min Max Min 0.0 1.0tCLCL-10 0.5tCLCL-5 5 5 0.5tCLCL-5 1.0tCLCL-10 1.0tCLCL-10 0.5tCLCL-15 0.5tCLCL-15 40 0.5tCLCL+5 0.5tCLCL+5 1.0tCLCL-50 Max

Jednostka
MHz ns ns ns ns ns ns ns ns ns ns ns ns ns

13 14 15 16

tDVWL tWHDX tDVWH tWLWH

42.5

0.5tCLCL-20 1.0tCLCL-10 1.0tCLCL 1.0tCLCL-10

ns ns ns ns

115
125 115

Tabela 138. Charakterystyka pamici zewntrznej, 4.5 - 5.5 V, 1 cykl czasu oczekiwania
Symbol 0 10 12 15 16 1/tCLCL tRLDV tRLRH tDVWH tWLWH Nazwa Czstotliwo oscylatora Read Low do Data Valid Szeroko impulsu RD Data Valid do WR High Szeroko impulsu WR 240 240 240 8MHZ Oscylator Min Max 200 2.0tCLCL-10 2.0tCLCL 2.0tCLCL-10 Min 0.0 Max 16 2.0tCLCL-50

Jednostka
MHz ns ns ns ns

Tabela 139. Charakterystyka pamici zewntrznej, 4.5 - 5.5 V, SRWn1 = 1, SRWn0 = 0


Symbol 0 10 12 15 16 1/tCLCL tRLDV tRLRH tDVWH tWLWH Nazwa Czstotliwo oscylatora Read Low do Data Valid Szeroko 365 impulsu RD Data Valid to 375 WR High Szeroko 365 impulsu WR 8MHZ Oscylator Min Max 325 3.0tCLCL-10 3.0tCLCL 3.0tCLCL-10 Min 0.0 Max 16 3.0tCLCL-50

Jednostka
MHz ns ns ns ns

Tabela 140. Charakterystyka pamici zewntrznej, 4.5 - 5.5 V, SRWn1 = 1, SRWn0 = 1


Symbol 0 10 1/tCLCL tRLDV Nazwa Czstotliwo oscylatora Read Low to Data Valid 8MHZ Oscylator Min Max 325 Min 0.0 Max 16 3.0tCLCL-50

Jednostka
MHz ns

12 14 15 16

tRLRH tWHDX tDVWH tWLWH

Szeroko 365 impulsu RD Data Hold po 240 WR High Data Valid to 375 WR High Szeroko 365 impulsu WR

3.0tCLCL-10 2.0tCLCL-10 3.0tCLCL 3.0tCLCL-10

ns ns ns ns

Tabela 141. Charakterystyka pamici zewntrznej, 2.7 - 5.5 V, brak czasu oczekiwania
Symbol 0 1 2 3a 1/tCLCL tLHLL tAVLL tLLAX_ Nazwa Czstotliwo oscylatora Szeroko impulsu ALE Address Valid A do ALE low Address Hold po ALE Low, dostp do zapisu Address Hold po ALE Low, Dostp do odczytu Address Valid C do ALE Low Address Valid do RD Low Address Valid do WR Low ALE Low do WR Low ALE Low do RD Low Data Setup do RD High Read Low do Data Valid Data Hold po RD Hi h 8MHZ Oscylator Min Max 0.0 235 115 5 tCLCL-15 0.5tCLCL-10 5 Min Max

Jednostka
MHz ns ns ns

3b

tLLAX_

ns

4 5 6 7 8 9 10 11

tAVLLC tAVRL tAVWL tLLWL tLLRL tDVRH tRLDV tRHDX

115 235 235 115 115 45 190 130 130

0.5tCLCL-10 1.0tCLCL-15 1.0tCLCL-15 0.5tCLCL-10 0.5tCLCL-10 45 1.0tCLCL-60 0.5tCLCL+ 0.5tCLCL+

ns ns ns s ns ns ns ns

12 13 14 15 16

tRLRH tDVWL tWHDX tDVWH tWLWH

RD High Szeroko impulsu RD Data Setup do WR Low Data Hold do WR High Data Valid do WR High Szeroko impulsu WR

235 105 235 250 235

1.0tCLCL-15 0.5tCLCL-20 1.0tCLCL-15 1.0tCLCL 1.0tCLCL-15

ns ns ns ns ns

Tabela 142. Charakterystyka pamici zewntrznej, 2.7 - 5.5 Volts, SRWn1 = 0, SRWn0 = 1
Symbol Nazwa 8MHZ Oscylator

ZMIENNY OSCYLATOR
Min 0.0 8 2.0tCLCL-60 2.0tCLCL-15 2.0tCLCL 2.0tCLCL-15 Max

Jednostka
MHz ns ns ns ns

Min 0 10 12 15 16 1/tCLCL tRLDV tRLRH tDVWH tWLWH Czstotliwo oscylatora Read Low do Data Valid Szeroko 485 impulsu RD Data Valid do 500 WR High Szeroko impulsu WR 485 440

Max

Tabela 143. Charakterystyka pamici zewntrznej, 2.7 - 5.5 V, SRWn1 = 1, SRWn0 = 0


Symbol 0 10 12 1/tCLCL tRLDV tRLRH Nazwa Czstotliwo oscylatora Read Low do Data Valid Szeroko 735 8MHZ Oscylator Min Max 0.0 690 3.0tCLCL-15 Zmienny oscylator Min Max 8 3.0tCLCL-60

Jednostka
MHz ns ns

15 16

tDVWH tWLWH

impulsu RD Data Valid do 750 WR High Szeroko impulsu WR 735

3.0tCLCL 3.0tCLCL-15

ns ns

Tabela 144. Charakterystyka pamici zewntrznej, 2.7 - 5.5 Volts, SRWn1 = 1, SRWn0 = 1
Symbol 0 10 12 14 15 16 1/tCLCL tRLDV tRLRH tWHDX tDVWH tWLWH Nazwa Czstotliwo oscylatora Read Low do Data Valid Szeroko 735 impulsu RD Data Hold po 485 WR High Valid do WR High Szeroko impulsu WR 750 735 8MHZ Oscylator Min Max 0.0 690 3.0tCLCL-15 2.0tCLCL-15 3.0tCLCL 3.0tCLCL-15 Zmienny oscylator Min Max 8 3.0tCLCL-60

Jednostka
MHz ns ns ns ns ns

Rys. 156. Synchronizacja pamici zewntrznej(SRWn1 = 0, SRWn0 = 0

Rys. 157. Synchronizacja pamici zewntrznej (SRWn1 = 0, SRWn0 = 1)

Rys. 158. Synchronizacja pamici zewntrznej (SRWn1 = 1, SRWn0 = 0)

Rys. 159. Synchronizacja pamici zewntrznej (SRWn1 = 1, SRWn0 = 1)(1)

Uwaga: 1. Impuls ALE w ostatnim okresie(T4-T7) istnieje tylko jeli nastpna instrukcja ma dostp do pamici RAM (wewntrznej lub zewntrznej).

WACIWOCI ATMEGA128 T DANE WSTPNE


Ponisze wykresy ilustruj typowe zachowanie. Wszystkie pomiary poboru prdu zostay wykonane dla wszystkich stykw we/wy skonfigurowanych jako wejcia z wczonym wewntrznym rezystorem podcigajcym. Jako zegar zosta uyty generator przebiegw sinusoidalnych z wyjciem rail-to-rail. Pobr prdu w stanie wyczenia nie zaley wyboru zegara. Pobr prdu jest funkcj kilku czynnikw: napicia roboczego, czstotliwoci roboczej, obcienia stykw we/wy, tempa przeczania stykw we/wy oraz temperatury otoczenia. Przewaajcymi czynnikami s robocze napicie oraz czstotliwo. Prd pobrany z naadowanych pojemnoci stykw moe by obliczony (dla jednego styku) jako CL*VCC*f gdzie CL = naadowana pojemno, VCC = napicie robocze oraz f = rednia czstotliwo przeczania dla stykw we/wy.

Rys. 160. Prd zasilania w stanie wyczenia, napicie zasilaniaVCC (sygnalizator Watchdog wyczony)

Rys. 161. Prd zasilania w stanie wyczenia, napicie zasilania VCC (sygnalizator Watchdog wczony)

Rys. 162. Aktywny prd zasilania, napicie zasilania VCC, wewntrzny RC 1 MHz

Rys. 163 Aktywny prd zasilania, napicie zasilania VCC, wewntrzny RC 2 MHz

Rys. 164. Aktywny prd zasilania, napicie zasilania VCC, wewntrzny RC 4 MHz

Rys. 165. Aktywny prd zasilania, napicie zasilania VCC, wewntrzny RC 8 MHz

Rys. 166. Bierny prd zasilania , napicia zasilania VCC, wewntrzny RC 8 MHz

Rys. 167. Bierny prd zasilania , napicia zasilania VCC, wewntrzny RC 4 MHz

Rys. 168. Bierny prd zasilania , napicia zasilania VCC, wewntrzny RC 2 MHz

Rys. 169. Bierny prd zasilania , napicia zasilania VCC, wewntrzny RC 1 MHz

Rys. 170. Bierny prd zasilania , czstotliwo

Rys. 171. Aktywny prd zasilania, czstotliwo

Rys. 172. Czstotliwo oscylatora RC, temperatura(urzdzenia s wyskalowane do 1 MHz przy Vcc = 5V, T=25c)

Rys. 173. Czstotliwo oscylatora RC , napicie robocze(urzdzenia s wyskalowane do 1 MHz przy Vcc = 5V, T=25c)

Rys. 174. Czstotliwo oscylatora RC, temperatura(urzdzenia s wyskalowane do 2 MHz przy Vcc = 5V, T=25c)

Rys. 175. Czstotliwo oscylatora RC , napicie robocze(urzdzenia s wyskalowane do 2 MHz przy Vcc = 5V, T=25c)

Rys. 176. Czstotliwo oscylatora RC, temperatura(urzdzenia s wyskalowane do 4 MHz przy Vcc = 5V, T=25c)

Rys. 177. Czstotliwo oscylatora RC , napicie robocze(urzdzenia s wyskalowane do 4 MHz przy Vcc = 5V, T=25c)

Rys. 178. Czstotliwo oscylatora RC, temperatura(urzdzenia s wyskalowane do

8 MHz przy Vcc = 5V, T=25c)

Rys. 179. Czstotliwo oscylatora RC , napicie robocze(urzdzenia s wyskalowane do 8 MHz przy Vcc = 5V, T=25c)

Rys. 180. Czstotliwo oscylatora RC, temperatura(urzdzenia s wyskalowane do 1 MHz przy Vcc = 5V, T=25c)

Rys. 181. Czstotliwo oscylatora RC , napicie robocze(urzdzenia s wyskalowane do 1 MHz przy Vcc = 5V, T=25c)

Rys. 182. Czstotliwo oscylatora RC, temperatura(urzdzenia s wyskalowane do 2 MHz przy Vcc = 5V, T=25c)

Rys. 183. Czstotliwo oscylatora RC , napicie robocze(urzdzenia s wyskalowane do 2 MHz przy Vcc = 5V, T=25c)

Rys. 184. Czstotliwo oscylatora RC, temperatura(urzdzenia s wyskalowane do 4 MHz przy Vcc = 5V, T=25c)

Rys. 185. Czstotliwo oscylatora RC , napicie robocze(urzdzenia s wyskalowane do 4 MHz przy Vcc = 5V, T=25c)

Rys. 186. Czstotliwo oscylatora RC, temperatura(urzdzenia s wyskalowane do 8 MHz przy Vcc = 5V, T=25c)

Rys. 187. Czstotliwo oscylatora RC , napicie robocze(urzdzenia s wyskalowane do 8 MHz przy Vcc = 5V, T=25c)

SPIS REJESTRW

Uwagi: 1. W celu zapewnienia kompatybilnoci z przyszymi urzdzeniami, bity zarezerwowane powinny by ustawione na zero jeeli jest do nich dostp. Zarezerwowane adresy pamici I/O nigdy nie powinny by zarezerwowane. 2. Niektre flagi stanu mog by wyzerowane poprzez wpisanie logicznej jedynki do nich.. Warto zauway, e rozkazy CBI i SBI bd operowa na wszystkich bitach rejestrw I/O zapisujc jedynk z powrotem do ktrejkolwiek z odczytanych flag, w zwizku z tym czyszczc flag. Rozkazy SBI i CBI pracuj tylko z rejestrami $00-$1F.
LISTA ROZKAZW MIKROKONTROLERA ATMEGA128. Rozkazy przesa.
Mnemonik MOV Rd, Rs MOVW Rd, Rs LDI Rd, n LD Rd, ri LD Rd, ri+ LD Rd, ri LDD Rd, ri+q LDS Rd, k ST ri, Rs ST ri+, Rs ST ri, Rs STD ri+q, Rs STS k, Rs LPM LPM Rd, Z LPM Rd, Z+ ELPM ELPM Rd, Z ELPM Rd, Z+ SPM Opis przesanie bajtu midzy rejestrami przesanie sowa midzy parami rejestrw przesanie wartoci natychmiastowej do rejestru przesanie do rejestru z adresowaniem porednim przesanie porednie z postinkrementacj przesanie porednie z predekrementacj przesanie porednie z przemieszczeniem przesanie porednie z pamici SRAM przesanie porednie z rejestru przesanie porednie z rejestru z postinkrementacj przesanie porednie z rejestru z predekrementacj przesanie porednie z rejestru z przemieszczeniem przesanie porednie z rejestru do pamici SRAM przesanie z pamici programu przesanie z pamici programu przesanie z pamici programu z postinkrementacj rozszerzone przesanie z pamici programu rozszerzone przesanie z pamici programu rozszerzone przesanie z pamici programu z postinkrementacj przesanie do pamici programu Rd Rs Rd+1:Rd Rs+1:Rs Rd n Rd (ri) Rd (X), X X + 1 X X 1, Rd (ri) Rd (ri + q), przy czym ri nie moe by X Rd (k) (ri) Rs (ri) Rs, ri ri + 1 ri ri 1, (ri) Rs (ri + q) Rs, przy czym ri nie moe by X (k) Rs R0 (Z) Rd (Z) Rd (Z), Z Z + 1 R0 (RAMPZ0:Z) Rd (RAMPZ0:Z) Rd (RAMPZ0:Z), RAMPZ0:Z RAMPZ0:Z + 1 (Z) R1:R0 Dziaanie Znaczniki Liczba cykli 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3

IN Rd, p OUT p, Rs PUSH Rs POP Rd

przesanie z portu do rejestru przesanie z rejestru do portu pooenie zawartoci rejestru na stos zdjcie wartoci ze stosu do rejestru

Rd p p Rs SP SP 1, (SP) Rr Rd (SP), SP SP + 1

1 1 2 2

Rozkazy arytmetyczne i logiczne.


Mnemonik ADD Rd, Rs ADC Rd, Rs ADIW Rd, w SUB Rd, Rs SUBI Rd, n SBC Rd, Rs Opis dodanie zawartoci dwch rejestrw dodanie zawartoci dwch rejestrw z uwzgldnieniem przeniesienia dodanie wartoci natychmiastowej do zawartoci pary rejestrw odjcie zawartoci dwch rejestrw odjcie wartoci natychmiastowej od zawartoci rejestru odjcie zawartoci dwch rejestrw z uwzgldnieniem przeniesienia (poyczki) odjcie wartoci natychmiastowej od zawartoci rejestru z uwzgldnieniem przeniesienia (poyczki) odjcie wartoci natychmiastowej od zawartoci pary rejestrw iloczyn logiczny zawartoci dwch rejestrw iloczyn logiczny zawartoci rejestru i wartoci natychmiastowej suma logiczna zawartoci dwch rejestrw suma logiczna zawartoci rejestru i wartoci natychmiastowej suma modulo 2 zawartoci dwch rejestrw uzupenienie jedynkowe zawartoci rejestru uzupenienie dwjkowe (negacja) zawartoci rejestru ustawienie bitu(w) w rejestrze wyzerowanie bitu(w) w rejestrze inkrementacja zawartoci rejestru dekrementacja zawartoci rejestru testowanie zera lub ujemnej zawartoci rejestru wyzerowanie zawartoci rejestru Dziaanie Rd Rd + Rs Rd Rd + Rs + C Rd+1:Rd Rd+1:Rd + w Rd Rd Rs Rd Rd n Rd Rd Rs C Znaczniki Z, C, N, V, H Z, C, N, V, H Z, C, N, V, S Z, C, N, V, H Z, C, N, V, H Z, C, N, V, H Liczba cykli 1 1 2 1 1 1

SBCI Rd, n

Rd Rd n C

Z, C, N, V, H

SBIW Rd, w AND Rd, Rs ANDI Rd, n OR Rd, Rs ORI Rd, n EOR Rd, Rs COM Rd NEG Rd SBR Rd, n CBR Rd, n INC Rd DEC Rd TST Rd CLR Rd

Rd+1:Rd Rd+1:Rd w Rd Rd Rs Rd Rd n Rd Rd Rs Rd Rd n Rd Rd Rs Rd $FF Rd Rd Rd Rd Rd n Rd Rd ($FF n) Rd Rd + 1 Rd Rd 1 Rd Rd Rd Rd Rd Rd

Z, C, N, V, S Z, N, V Z, N, V Z, N, V Z, N, V Z, N, V Z, C, N, V Z, C, N, V, H Z, N, V Z, N, V Z, N, V Z, N, V Z, N, V Z, N, V

2 1 1 1 1 1 1 1 1 1 1 1 1 1

Mnemonik SER Rd MUL Rd, Rs MULS Rd, Rs MULSU Rd, Rs FMUL Rd, Rs FMULS Rd, Rs

Opis ustawienie wszystkich bitw w rejestrze na 1 mnoenie zawartoci rejestrw bez znaku mnoenie zawartoci rejestrw ze znakiem mnoenie zawartoci rejestru ze znakiem przez zawarto rejestru bez znaku uamkowe mnoenie zawartoci rejestrw bez znaku uamkowe mnoenie zawartoci rejestrw ze znakiem uamkowe mnoenie zawartoci rejestru ze znakiem przez zawarto rejestru bez znaku Rd $FF

Dziaanie

Znaczniki Z, C Z, C Z, C Z, C Z, C

Liczba cykli 1 2 2 2 2 2

R1:R0 Rd Rs R1:R0 Rd Rs R1:R0 Rd Rs R1:R0 (Rd Rs) << 1 R1:R0 (Rd Rs) << 1

FMULSU Rd, Rs

R1:R0 (Rd Rs) << 1

Z, C

Rozkazy skokw i rozgazie.


Mnemonik RJMP k IJMP JMP k RCALL k ICALL CALL k RET RETI Opis skok wzgldny skok poredni przez rejestr Z skok bezporedni wzgldny skok do podprogramu poredni skok do podprogramu przez rejestr Z bezporedni skok do podprogramu powrt z podprogramu powrt z podprogramu obsugi przerwania porwnanie zawartoci rejestrw i pominicie nastpnego rozkazu, gdy rwne porwnanie zawartoci rejestrw porwnanie zawartoci rejestrw z uwzgldnieniem przeniesienia porwnanie Dziaanie PC PC + k + 1 PC Z PC k SP SP 2, (SP) PC, PC PC + k + 1 SP SP 2, (SP) PC, PC Z SP SP 2, (SP) PC, PC k PC (SP), SP SP + 2 PC (SP), SP SP + 2 Znaczniki I Liczba cykli 2 2 3 3 3 4 4 4

CPSE Rd, Rs

if (Rd = Rs) PC PC + 2 lub 3

1/2/3

CP Rd, Rs CPC Rd, Rs CPI Rd, n

Rd Rs Rd Rs C Rd n

Z, N, V, C, H Z, N, V, C, H Z, N, V, C, H

1 1 1

Mnemonik

Opis zawartoci rejestru z wartoci natychmiastow pominicie nastpnego rozkazu, gdy bit w rejestrze wyczyszczony pominicie nastpnego rozkazu, gdy bit w rejestrze ustawiony pominicie nastpnego rozkazu, gdy bit w porcie wyczyszczony pominicie nastpnego rozkazu, gdy bit w porcie ustawiony skok, gdy bit w rejestrze stanu ustawiony skok, gdy bit w rejestrze stanu wyczyszczony skok, gdy rwne skok, gdy nierwne skok, gdy jest przeniesienie skok, gdy brak przeniesienia skok, gdy rwne lub wyej skok, gdy niej skok, gdy minus skok, gdy plus skok, gdy wiksze lub rwne skok, gdy mniejsze od zera skok, gdy jest przeniesienie powkowe skok, gdy brak przeniesienia powkowego skok, gdy ustawiona flaga T skok, gdy wyczyszczona flaga T skok, gdy jest nadmiar

Dziaanie

Znaczniki

Liczba cykli

SBRC Rd, b

if (Rd[b] = 0) PC PC + 2 lub 3

1/2/3

SBRS Rd, b

if (Rd[b] = 1) PC PC + 2 lub 3

1/2/3

SBIC p, b

if (p[b] = 0) PC PC + 2 lub 3

1/2/3

SBIS p, b

if (p[b] = 1) PC PC + 2 lub 3

1/2/3

BRBS s, k BRBC s, k BREQ k BRNE k BRCS k BRCC k BRSH k BRLO k BRMI k BRPL k BRGE k BRLT k BRHS k BRHC k BRTS k BRTC k BRVS k

if (SREG[s] = 1) PC PC + k + 1 if (SREG[s] = 0) PC PC + k + 1 if (Z = 1) PC PC + k + 1 if (Z = 0) PC PC + k + 1 if (C = 1) PC PC + k + 1 if (C = 0) PC PC + k + 1 if (C = 0) PC PC + k + 1 if (C = 1) PC PC + k + 1 if (N = 1) PC PC + k + 1 if (N = 0) PC PC + k + 1 if (N V = 0) PC PC + k + 1 if (N V = 1) PC PC + k + 1 if (H = 1) PC PC + k + 1 if (H = 0) PC PC + k + 1 if (T = 1) PC PC + k + 1 if (T = 0) PC PC + k + 1 if (V = 1) PC PC + k + 1

1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2

Mnemonik BRVC k BRIE k BRID k

Opis

Dziaanie

Znaczniki

Liczba cykli 1/2 1/2 1/2

skok, gdy nie ma if (V = 0) PC PC + k + 1 nadmiaru skok, gdy if (I = 1) PC PC + k + 1 przerwania wczone skok, gdy if (I = 0) PC PC + k + 1 przerwania wyczone

Rozkazy bitowe.
Mnemonik SBI p, b CBI p, b LSL Rd LSR Rd ROL Rd ROR Rd ASR Rd SWAP Rd BSET s BCLR s BST Rd, b BLD Rd, b SEC CLC SEN CLN SEZ CLZ SI CLI SES CLS SEV CLV SET CLT Opis ustawienie bitu w porcie we/wy wyczyszczenie bitu w porcie we/wy przesunicie logiczne w lewo przesunicie logiczne w prawo obrt w lewo przez bit przeniesienia obrt w prawo przez bit przeniesienia przesunicie arytmetyczne w prawo zamiana tetrad w rejestrze ustawienie flagi w rejestrze stanu wyczyszczenie flagi w rejestrze stanu przesanie bitu z rejestru do flagi T przesanie wartoci flagi T do bitu rejestru ustawienie flagi przeniesienia wyzerowanie flagi przeniesienia ustawienie flagi N wyzerowanie flagi N ustawienie flagi zera wyczyszczenie flagi zera wczenie przerwa wyczenie przerwa ustawienie flagi znaku wyczyszczenie flagi znaku ustawienie flagi nadmiaru wyczyszczenie flagi nadmiaru ustawienie flagi T wyczyszczenie flagi T p[b] 1 p[b] 0 Rd[n + 1] Rd[n], Rd[0] 0, n = 0..6 Rd[n] Rd[n + 1], Rd[7] 0, n = 0..6 Rd[0] C, Rd[n + 1] Rd[n], C Rd[7], n = 0..6 Rd[7] C, Rd[n] Rd[n + 1], C Rd[0], n = 0..6 Rd[n] Rd[n + 1], n = 0..6 Rd[3..0] Rd[7..4] SREG[s] 1 SREG[s] 0 T Rd[b] Rd[b] T C1 C0 N1 N0 Z1 Z0 I1 I0 S1 S0 V1 V0 T1 T0 Dziaanie Znaczniki Z, C, N, V Z, C, N, V Z, C, N, V Z, C, N, V Z, C, N, V SREG[s] SREG[s] T C C N N Z Z I I S S V V T T Liczba cykli 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Mnemonik SEH CLH

Opis ustawienie flagi przeniesienia powkowego wyczyszczenie flagi przeniesienia powkowego H1 H0

Dziaanie

Znaczniki H H

Liczba cykli 1 1

Rozkazy sterujce MCU.


Mnemonik NOP SLEEP WDR BREAK Opis Dziaanie Znaczniki Liczba Cykli 1 1 1

brak operacji przejcie w tryb patrz opis funkcji Sleep upienia wyzerowanie zegara patrz opis ukadu WDR ukadu watchdog tylko w trybie debugowania (On-Chip puapka Debug)

UPORZDKOWANIE INFORMACJI

PAKIETY INFORMACJI
64 wyjcia, wskie (1.0 mm) plastykowe poczwrne paskie pakunki (TQFP) wymiary caoci 14*14mm, 2.0 mm odciski wizek, 0.8mm podziaka Wymiary w milimetrach i (calach)* Standard JEDEC MS-026 AEB

ZMIANA ARKUSZA DANYCH DLA ATMEGA128


Prosz zauway, e numery stron, do ktrych odnosi si ta sekcja nale do tego dokumentu. 1. Poprawiony opis alternatywnych funkcji portu G Opis TOSC1 i TOSC2 na stronie 79 w Opis alternatywnych funkcji portu G 2. dodane numery wersji JTAG dla rev F i G tabela 99na stronie 249 3. dodane niektre limity testw i danych wzorcowych usunite niektre z TBD w tabelach na stronach: tabela 19 na stronie 46, tabela 20 na stronie 50, tabela 130 na stronie 301, charakterystyki DC na stronie 314, tabela 132 na stronie 316, tabela 135 na stronie 318, tabela 136 na stronie 320 4. poprawione porzdkowanie informacji na stronie 347 5. dodane niektre dane wzorcowe w sekcji ATmega128 typowe wzorce... na stronie 326 6. usunity algorytm zostawienia JTAG w trybie programowania.

Zobacz pozostanie w trybie programowania na stronie 311. 7. dodany opis o tym jak wchodzi do rozszerzonych bezpiecznikw przez tryb programowania JTAG przejrzyj Programowanie bezpiecznikw na stronie 312 i Odczyt bezpiecznikw i bitw blokujcych na stronie 313.

You might also like