Atmel

Atmel 8-bitni AVR mikrokontroler sa 2/4/8K bajtova u sistemu koji se može programiratičip

 

Karakteristike

  • AVR® 8-bitni mikrokontroler visokih performansi male snage
  • Napredna RISC arhitektura
  • 120 snažnih uputa - Izvođenje većine ciklusa takta
  • 32 x 8 radna registra opšte namjene
  • Potpuno statična operacija
  • Nestalne memorije programa i podataka
  • 2/4/8K bajtova programske memorije programa unutar sistema Flash
  • Izdržljivost: 10,000 ciklusa pisanja/brisanja
  • 128/256/512 bajtova Programabilni EEPROM u sistemu
  • Izdržljivost: 100,000 ciklusa pisanja/brisanja
  • 128/256/512 bajtova Interni SRAM
  • Zaključavanje programiranja za samoprogramirajući Flash program i sigurnost podataka EEPROM-a

Periferne karakteristike

  • 8-bitni tajmer/brojač sa predskalerom i dva PWM kanala
  • 8-bitni tajmer/brojač velike brzine sa zasebnim predskalerom
  • 2 visokofrekventna PWM izlaza sa odvojenim registrima za poređenje izlaza
  • Programabilni generator mrtvog vremena
  • USI – Univerzalni serijski interfejs sa detektorom startnog stanja
  • 10-bitni ADC

4 jednostruka kanala

2 diferencijalna para ADC kanala sa programabilnim pojačanjem (1x, 20x)

Merenje temperature

Programabilni Watchdog tajmer sa zasebnim oscilatorom na čipu

Ugrađeni analogni komparator na čipu

Posebne karakteristike mikrokontrolera

debugWIRE Sistem za otklanjanje grešaka na čipu

Programabilno u sistemu preko SPI porta

Vanjski i interni izvori prekida

Režimi mirovanja male snage, smanjenje buke ADC-a i isključenje napajanja

Poboljšano kolo za resetovanje pri uključivanju

Programabilno kolo za otkrivanje prestanka

Interni kalibrirani oscilator

I/O i paketi

Šest programabilnih I/O linija

8-pinski PDIP, 8-pinski SOIC, 20-pinski QFN/MLF i 8-pinski TSSOP (samo ATtiny45/V)

Operating Voltage
– 1.8 – 5.5 V za ATtiny25V/45V/85V
– 2.7 – 5.5 V za ATtiny25/45/85

Speed ​​Grade
– ATtiny25V/45V/85V: 0 – 4 MHz pri 1.8 – 5.5 V, 0 – 10 MHz pri 2.7 – 5.5 V
– ATtiny25/45/85: 0 – 10 MHz pri 2.7 – 5.5 V, 0 – 20 MHz pri 4.5 – 5.5 V

Raspon industrijske temperature

Mala potrošnja energije

Aktivni način rada:

1 MHz, 1.8 V: 300 µA

Način isključivanja:

Konfiguracije pinova

Pinout ATtiny25/45/85 Konfiguracija

Opisi pinova

VCC: Supply voltage.
GND: Uzemljenje.
Port B (PB5:PB0): Port B je 6-bitni dvosmerni I/O port sa unutrašnjim pull-up otpornicima (odabranim za svaki bit). Izlazni baferi porta B imaju simetrične karakteristike pogona sa visokim kapacitetom ponora i izvora. Kao ulazi, pinovi porta B koji su eksterno povučeni nisko će izvor struje ako se aktiviraju pull-up otpornici. Pinovi porta B su trostruki kada stanje resetovanja postane aktivno, čak i ako sat ne radi.

Port B također služi funkcijama raznih posebnih karakteristika ATtiny25/45/85 kao što je navedeno
Na ATtiny25, programabilni I/O portovi PB3 i PB4 (pinovi 2 i 3) se razmjenjuju u ATtiny15 Compatibility Modu za podršku kompatibilnosti unatrag sa ATtiny15.

RESET: Resetujte ulaz. Nizak nivo na ovom pinu duže od minimalne dužine impulsa će generisati resetovanje, čak i ako sat ne radi i pod uslovom da pin za resetovanje nije onemogućen. Navedena je minimalna dužina impulsa Tabela 21-4 na strani 165. Ne garantuje se da će kraći impulsi generisati resetovanje.

Pin za resetovanje se takođe može koristiti kao (slab) I/O pin.

Gotovoview

ATtiny25/45/85 je CMOS 8-bitni mikrokontroler male snage baziran na AVR poboljšanoj RISC arhitekturi. Izvršavajući moćne instrukcije u jednom taktnom ciklusu, ATtiny25/45/85 postiže propusnost koja se približava 1 MIPS po MHz, što omogućava dizajneru sistema da optimizuje potrošnju energije u odnosu na brzinu obrade.

Blok dijagram Blok dijagram

AVR jezgro kombinuje bogat skup instrukcija sa 32 radna registra opšte namene. Sva 32 registra su direktno povezana sa aritmetičko-logičkom jedinicom (ALU), što omogućava pristup dva nezavisna registra u jednoj instrukciji koja se izvršava u jednom ciklusu takta. Rezultirajuća arhitektura je efikasnija u kodu dok postiže protok do deset puta brži od konvencionalnih CISC mikrokontrolera.

ATtiny25/45/85 pruža sljedeće karakteristike: 2/4/8K bajtova programiranog Flash-a unutar sistema, 128/256/512 bajtova EEPROM, 128/256/256 bajtova SRAM, 6 U/I linija opšte namjene, 32 općenite namjenski radni registri, jedan 8-bitni tajmer/brojač sa načinima poređenja, jedan 8-bitni tajmer/brojač velike brzine, univerzalni serijski interfejs, interni i eksterni prekidi, 4-kanalni, 10-bitni ADC, programabilni Watchdog tajmer sa internim Oscilator i tri softverski birana režima uštede energije. Idle mod zaustavlja CPU dok dozvoljava SRAM-u, Tajmeru/Braču, ADC-u, Analognom komparatoru i Interrupt sistemu da nastave funkcionisati. Režim isključenja napajanja čuva sadržaj registra, onemogućujući sve funkcije čipa do sljedećeg prekida ili resetiranja hardvera. Režim smanjenja šuma ADC-a zaustavlja CPU i sve I/O module osim ADC-a, kako bi se smanjio šum pri prebacivanju tokom ADC konverzije.

Uređaj je proizveden korištenjem Atmelove tehnologije nepromjenjive memorije visoke gustine. On-chip ISP Flash omogućava da se programska memorija reprogramira u sistemu preko SPI serijskog interfejsa, pomoću konvencionalnog programatora nepromenljive memorije ili koda za pokretanje na čipu koji radi na AVR jezgru.

ATtiny25/45/85 AVR je podržan sa punim paketom programskih i sistemskih razvojnih alata uključujući: C kompajlere, makro asemblere, programski debugger/simulatore i komplete za evaluaciju.

O resursima

Sveobuhvatan skup razvojnih alata, bilješki o aplikacijama i listovi podataka dostupni su za preuzimanje http://www.atmel.com/avr.

Kod Examples

Ova dokumentacija sadrži jednostavan kod nprampdatoteke koje ukratko pokazuju kako koristiti različite dijelove uređaja. Ovi kodovi examppretpostavljamo da je zaglavlje specifično za dio file je uključen prije kompilacije. Imajte na umu da svi dobavljači C kompajlera ne uključuju definicije bitova u zaglavlje files i rukovanje prekidima u C-u ovisi o kompajleru. Molimo potvrdite sa dokumentacijom C kompajlera za više detalja.

Za I/O registre koji se nalaze u proširenoj I/O mapi, instrukcije “IN”, “OUT”, “SBIS”, “SBIC”, “CBI” i “SBI” moraju biti zamijenjene instrukcijama koje dozvoljavaju pristup proširenom I /O. Obično to znači “LDS” i “STS” u kombinaciji sa “SBRS”, “SBRC”, “SBR” i “CBR”. Imajte na umu da svi AVR uređaji ne uključuju proširenu I/O mapu.

Kapacitivni senzor dodira

Atmel QTouch biblioteka pruža jednostavno rešenje za interfejs osetljiv na dodir na Atmel AVR mikrokontrolerima. QTouch biblioteka uključuje podršku za QTouch® i QMatrix® metode akvizicije.

Senzor dodira se lako dodaje u bilo koju aplikaciju povezivanjem QTouch biblioteke i korištenjem aplikacijskog programskog interfejsa (API) biblioteke za definiranje dodirnih kanala i senzora. Aplikacija zatim poziva API da dohvati informacije o kanalu i odredi stanje senzora dodira.

QTouch biblioteka je besplatna i može se preuzeti sa Atmel-a website. Za više informacija i detalja o implementaciji pogledajte Uputstvo za upotrebu QTouch biblioteke – takođe dostupno na Atmel-u website.

Zadržavanje podataka

Rezultati kvalifikacije pouzdanosti pokazuju da je projektovana stopa neuspjeha zadržavanja podataka mnogo manja od 1 PPM tokom 20 godina na 85°C ili 100 godina na 25°C.

AVR CPU Core

Uvod

Ovaj odjeljak govori o arhitekturi AVR jezgre općenito. Glavna funkcija CPU jezgra je da osigura ispravno izvršavanje programa. CPU stoga mora biti u mogućnosti pristupiti memoriji, izvoditi proračune, kontrolirati periferne uređaje i upravljati prekidima.

Architectural Overview Arhitektura

Da bi se maksimizirale performanse i paralelizam, AVR koristi arhitekturu Harvarda – sa odvojenim memorijama i magistralama za programe i podatke. Instrukcije u programskoj memoriji se izvode sa cevovodom na jednom nivou. Dok se jedna instrukcija izvršava, sljedeća instrukcija se unaprijed preuzima iz programske memorije. Ovaj koncept omogućava izvršavanje instrukcija u svakom ciklusu takta. Programska memorija je fleš memorija koja se može reprogramirati unutar sistema.

Registar brzog pristupa File sadrži 32 x 8-bitna radna registra opšte namene sa jednim vremenom pristupa taktu. Ovo omogućava rad aritmetičke logičke jedinice (ALU) u jednom ciklusu. U tipičnoj ALU operaciji, dva operanda izlaze iz registra File, operacija se izvršava, a rezultat se pohranjuje natrag u registar File– u jednom taktu.

Šest od 32 registra se mogu koristiti kao tri 16-bitna indirektna adresna registra za adresiranje prostora podataka – omogućavajući efikasne proračune adresa. Jedan od ovih adresnih pokazivača može se koristiti i kao pokazivač adrese za traženje tabela u memoriji Flash programa. Ovi dodatni registri funkcija su 16-bitni X-, Y- i Z-registri, opisani kasnije u ovom odjeljku.

ALU podržava aritmetičke i logičke operacije između registara ili između konstante i registra. Operacije sa jednim registrom se takođe mogu izvršiti u ALU. Nakon aritmetičke operacije, statusni registar se ažurira kako bi odražavao informacije o rezultatu operacije.

Tok programa je obezbeđen uslovnim i bezuslovnim instrukcijama za skok i pozivanje, koje mogu direktno da adresiraju čitav adresni prostor. Većina AVR instrukcija ima jedan 16-bitni format riječi, ali postoje i 32-bitne instrukcije.

Tokom prekida i poziva potprograma, povratna adresa Programskog brojača (PC) je pohranjena na steku. Stack je efektivno dodijeljen u SRAM općih podataka, te je stoga veličina steka ograničena samo ukupnom veličinom SRAM-a i korištenjem SRAM-a. Svi korisnički programi moraju inicijalizirati SP u rutini Reset (prije nego što se podrutine ili prekidi izvrše). Stack Pointer (SP) je dostupan za čitanje/pisanje u I/O prostoru. SRAM-u podataka može se lako pristupiti kroz pet različitih načina adresiranja podržanih u AVR arhitekturi.

Svi memorijski prostori u AVR arhitekturi su linearne i regularne memorijske mape.

Fleksibilni modul prekida ima svoje kontrolne registre u I/O prostoru sa dodatnim bitom Global Interrupt Enable u statusnom registru. Svi prekidi imaju poseban Vektor prekida u tabeli Vektora prekida. Prekidi imaju prioritet u skladu sa svojom pozicijom vektora prekida. Što je niža adresa vektora prekida, to je veći prioritet.

I/O memorijski prostor sadrži 64 adrese za CPU periferne funkcije kao što su kontrolni registri, SPI i druge I/O funkcije. I/O memoriji se može pristupiti direktno, ili kao lokacijama podatkovnog prostora nakon onih u registru. File, 0x20 – 0x5F.

ALU – Aritmetičko-logička jedinica

AVR ALU visokih performansi radi u direktnoj vezi sa sva 32 radna registra opšte namene. Unutar jednog ciklusa takta, izvršavaju se aritmetičke operacije između registara opšte namene ili između registra i neposrednog. ALU operacije su podijeljene u tri glavne kategorije – aritmetičke, logičke i bit-funkcije. Neke implementacije arhitekture također pružaju moćan množitelj koji podržava i množenje s predznakom/neznakom i format razlomaka. Za detaljan opis pogledajte odjeljak „Set instrukcija“.

Status Register

Statusni registar sadrži informacije o rezultatu posljednje izvršene aritmetičke instrukcije. Ove informacije se mogu koristiti za promjenu toka programa kako bi se izvršile uvjetne operacije. Imajte na umu da se statusni registar ažurira nakon svih ALU operacija, kao što je navedeno u Uputama za skup instrukcija. Ovo će u mnogim slučajevima ukloniti potrebu za korištenjem namjenskih uputa za usporedbu, što će rezultirati bržim i kompaktnijim kodom.

Statusni registar se ne pohranjuje automatski pri ulasku u rutinu prekida i vraća se kada se vraća iz prekida. Ovo mora biti riješeno softverom.

SREG – AVR statusni registar

AVR statusni registar – SREG – je definisan kao:

Bit 7 6 5 4 3 2 1 0
0x3F I T H S V N Z C SREG
Read/Write R/W R/W R/W R/W R/W R/W R/W R/W
Početna vrijednost 0 0 0 0 0 0 0 0

Bit 7 – I: Omogućen globalni prekid

Bit Global Interrupt Enable mora biti postavljen da bi prekidi bili omogućeni. Pojedinačna kontrola omogućavanja prekida se tada izvodi u odvojenim kontrolnim registrima. Ako je Globalni registar za omogućavanje prekida obrisan, nijedan od prekida nije omogućen nezavisno od pojedinačnih postavki omogućavanja prekida. I-bit se briše od strane hardvera nakon što je došlo do prekida i postavlja ga RETI instrukcija da omogući naknadne prekide. I-bit također može biti postavljen i obrisan od strane aplikacije sa SEI i CLI instrukcijama, kao što je opisano u referenci skupa instrukcija.

Bit 6 – T: Bit Copy Storage

Instrukcije za kopiranje bita BLD (Bit LoaD) i BST (Bit STore) koriste T-bit kao izvor ili odredište za upravljani bit. Malo iz registra u Registru File može se kopirati u T pomoću BST instrukcije, a bit u T može se kopirati u bit u registru u registru File prema BLD uputstvu.

Bit 5 – H: Half Carry Flag

Oznaka Half Carry H označava Half Carry u nekim aritmetičkim operacijama. Half Carry je koristan u BCD aritmetici. Pogledajte “Opis skupa instrukcija” za detaljne informacije.

Bit 4 – S: Bit predznaka, S = N ⊕ V

S-bit je uvijek isključiv ili između negativne zastave N i zastavice prelivanja komplementa V. Pogledajte “Opis skupa instrukcija” za detaljne informacije.

Bit 3 – V: Zastava prelivanja komplementa dva

Zastava prelivanja komplementa dvojke V podržava aritmetiku komplementa dvojke. Pogledajte “Opis skupa instrukcija” za detaljne informacije.

Bit 2 – N: negativna oznaka

Negativna zastavica N označava negativan rezultat u aritmetičkoj ili logičkoj operaciji. Pogledajte “Opis skupa instrukcija” za detaljne informacije.

Bit 1 – Z: nula zastavica

Zero Flag Z označava nulti rezultat u aritmetičkoj ili logičkoj operaciji. Pogledajte “Opis skupa instrukcija” za detaljne informacije.

Bit 0 – C: Oznaka za nošenje

Oznaka za nošenje C označava prijenos u aritmetičkoj ili logičkoj operaciji. Pogledajte “Opis skupa instrukcija” za detaljne informacije.

Registar opšte namjene File

The Register File optimiziran je za AVR Enhanced RISC skup instrukcija. Kako bi se postigle potrebne performanse i fleksibilnost, Registar podržava sljedeće ulazno/izlazne šeme File:

Jedan 8-bitni izlazni operand i jedan 8-bitni rezultatski ulaz

Dva 8-bitna izlazna operanda i jedan 8-bitni rezultatski ulaz

Dva 8-bitna izlazna operanda i jedan 16-bitni rezultatski ulaz

Jedan 16-bitni izlazni operand i jedan 16-bitni rezultatski ulaz

Slika 4-2 prikazuje strukturu 32 radna registra opšte namene u CPU-u. Opće namjene

Kao što je prikazano u Slika 4-2, svakom registru je također dodijeljena adresa memorije podataka, mapirajući ih direktno u prve 32 lokacije korisničkog podatkovnog prostora. Iako nije fizički implementirana kao SRAM lokacije, ova organizacija memorije pruža veliku fleksibilnost u pristupu registrima, jer se registri X-, Y- i Z-pokazivača mogu postaviti da indeksiraju bilo koji registar u file.Većina uputstava koja rade na Registru File imaju direktan pristup svim registrima, a većina njih su instrukcije u jednom ciklusu.

X-registar, Y-registar i Z-registar

Registri R26..R31 imaju neke dodatne funkcije za njihovu upotrebu opće namjene. Ovi registri su 16-bitni adresni pokazivači za indirektno adresiranje prostora podataka. Tri indirektna adresna registra X, Y i Z definirana su kako je opisano u Slika 4-3.

Registrirajte se

U različitim načinima adresiranja, ovi adresni registri imaju funkcije fiksnog pomaka, automatskog povećanja i automatskog smanjenja (pogledajte referencu skupa instrukcija za detalje).

Stack Pointer

Stack se uglavnom koristi za pohranjivanje privremenih podataka, za pohranjivanje lokalnih varijabli i za pohranjivanje povratnih adresa nakon prekida i poziva potprograma. Registar pokazivača steka uvijek pokazuje na vrh steka. Imajte na umu da je Stack implementiran kao rast od viših memorijskih lokacija do nižih memorijskih lokacija. Ovo implicira da naredba Stack PUSH smanjuje pokazivač steka.

Pokazivač steka ukazuje na područje SRAM steka podataka gdje se nalaze potprogrami i stekovi prekida. Ovaj prostor steka u SRAM-u podataka mora biti definiran od strane programa prije nego što se bilo koji poziv potprograma izvrši ili omogući prekid. Pokazivač steka mora biti postavljen na iznad 0x60. Pokazivač steka se smanjuje za jedan kada se podaci guraju u stog pomoću PUSH instrukcije, a smanjuje se za dva kada se povratna adresa gurne u stog sa pozivom potprograma ili prekidom. Pokazivač steka se povećava za jedan kada se podaci iskaču iz steka sa POP instrukcijom, a povećava se za dva kada se podaci iskaču iz steka sa povratkom iz potprograma RET ili povratkom iz prekida RETI.

AVR Stack Pointer je implementiran kao dva 8-bitna registra u I/O prostoru. Broj bitova koji se stvarno koriste ovisi o implementaciji. Imajte na umu da je prostor podataka u nekim implementacijama AVR arhitekture toliko mali da je potreban samo SPL. U tom slučaju SPH registar neće biti prisutan.

SPH i SPL — Registar pokazivača steka

Bit 15 14 13 12 11 10 9 8
0x3E SP15 SP14 SP13 SP12 SP11 SP10 SP9 SP8 SPH
0x3D SP7 SP6 SP5 SP4 SP3 SP2 SP1 SP0 SPL
7 6 5 4 3 2 1 0
Read/Write R/W R/W R/W R/W R/W R/W R/W R/W
Read/Write R/W R/W R/W R/W R/W R/W R/W R/W
Početna vrijednost RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND
Početna vrijednost RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND

Vrijeme izvršenja instrukcija

Ovaj odjeljak opisuje opšte koncepte vremena pristupa za izvršenje instrukcija. AVR CPU pokreće CPU takt clkCPU, direktno generisan iz odabranog izvora takta za čip. Ne koristi se interna podjela sata.

Fig4.4

Slika 4-4 prikazuje paralelno dohvaćanje instrukcija i izvršavanje instrukcija koje omogućava Harvard arhitektura i registar brzog pristupa File koncept. Ovo je osnovni koncept cevovoda za dobijanje do 1 MIPS po MHz sa odgovarajućim jedinstvenim rezultatima za funkcije po ceni, funkcije po taktu i funkcije po jedinici napajanja.

Slika 4-5. Jednociklusni ALU rad

Fig4.5

Resetovanje i rukovanje prekidima

AVR pruža nekoliko različitih izvora prekida. Ovi prekidi i odvojeni vektor resetovanja svaki imaju poseban programski vektor u prostoru programske memorije. Svim prekidima se dodeljuju pojedinačni bitovi za omogućavanje koji moraju biti napisani kao logički jedan zajedno sa bitom za omogućavanje globalnog prekida u statusnom registru da bi se omogućio prekid.

Najniže adrese u prostoru programske memorije su podrazumevano definisane kao vektori resetovanja i prekida. Kompletna lista vektora je prikazana u “Prekidi” na strani 48. Lista također određuje nivoe prioriteta različitih prekida. Što je niža adresa to je viši nivo prioriteta. RESET ima najveći prioritet, a sljedeći je INT0 – zahtjev za eksternim prekidom 0.

Kada dođe do prekida, I-bit za omogućavanje globalnog prekida se briše i svi prekidi su onemogućeni. Korisnički softver može upisati logičku jedan u I-bit kako bi omogućio ugniježđene prekide. Svi omogućeni prekidi tada mogu prekinuti trenutnu rutinu prekida. I-bit se automatski postavlja kada se izvrši instrukcija Povratak iz prekida – RETI.

U osnovi postoje dvije vrste prekida. Prvi tip pokreće događaj koji postavlja oznaku prekida. Za ove prekide, programski brojač se vektorira na stvarni vektor prekida kako bi se izvršila rutina rukovanja prekidom, a hardver briše odgovarajuću zastavu prekida. Zastavice prekida se također mogu obrisati pisanjem logičke jedinice na poziciju(e) bita zastavice koja se briše. Ako dođe do stanja prekida dok je odgovarajući bit za omogućavanje prekida obrisan, zastavica prekida će se postaviti i pamtiti sve dok se prekid ne omogući ili dok se zastavica ne obriše softverom. Slično, ako dođe do jednog ili više uslova prekida dok je bit za omogućavanje globalnog prekida obrisan, odgovarajuća zastavica(e) prekida će biti postavljena i zapamćena sve dok se ne postavi bit za omogućavanje globalnog prekida, a zatim će se izvršiti po redosledu prioriteta.

Druga vrsta prekida će se aktivirati sve dok je prisutan uslov prekida. Ovi prekidi ne moraju nužno imati zastavice prekida. Ako uvjet prekida nestane prije nego što se prekid omogući, prekid se neće pokrenuti.

Kada AVR izađe iz prekida, uvijek će se vratiti u glavni program i izvršiti još jednu instrukciju prije nego što se servira bilo koji prekid na čekanju.

Imajte na umu da se statusni registar ne pohranjuje automatski pri ulasku u rutinu prekida, niti se vraća kada se vraća iz rutine prekida. Ovo mora biti riješeno softverom.

Kada koristite CLI instrukciju za onemogućavanje prekida, prekidi će biti odmah onemogućeni. Nijedan prekid neće biti izvršen nakon CLI instrukcije, čak i ako se dogodi istovremeno sa CLI instrukcijom. Sljedeći prample pokazuje kako se ovo može koristiti da se izbjegnu prekidi tokom tempirane sekvence upisivanja u EEPROM.

Montažni kod Example
u r16, SREG ; pohraniti SREG vrijednost

cli ; onemogućiti prekide tokom vremenske sekvence

sbi EECR, EEMPE ; pokrenite upisivanje u EEPROM

sbi EECR, EEPE

van SREG, r16 ; vrati SREG vrijednost (I-bit)

C kod Example
char cSREG;

cSREG = SREG; /* pohraniti SREG vrijednost */

/* onemogućava prekide tokom vremenske sekvence */

_CLI();

EECR |= (1<

EECR |= (1<

SREG = cSREG; /* vraćanje SREG vrijednosti (I-bit) */

Kada koristite SEI instrukciju za omogućavanje prekida, instrukcija koja slijedi nakon SEI će se izvršiti prije bilo kakvih prekida na čekanju, kao što je prikazano u ovom pr.ample.

Montažni kod Example
sei ; postavite Global Interrupt Enable

spavanje; ući u spavanje, čekajući prekid

; napomena: ući će u stanje mirovanja prije bilo kakvog čekanja

; prekid(i)

C kod Example
_SEI(); /* postavi Global Interrupt Enable */

_SLEEP(); /* ulazi u stanje mirovanja, čeka se prekid */

/* napomena: ući će u stanje mirovanja prije bilo kakvog prekida(a) na čekanju */

Vrijeme odziva prekida

Odgovor na izvršenje prekida za sve omogućene AVR prekide je najmanje četiri ciklusa takta. Nakon četiri ciklusa takta izvršava se adresa programskog vektora za stvarnu rutinu rukovanja prekidom. Tokom ovog perioda od četiri takta, programski brojač se gura na stek. Vektor je obično skok na rutinu prekida, a ovaj skok traje tri ciklusa takta. Ako dođe do prekida tokom izvršavanja instrukcije s više ciklusa, ova instrukcija se završava prije nego što se prekid servira. Ako dođe do prekida kada je MCU u stanju mirovanja, vrijeme odgovora izvršenja prekida se povećava za četiri ciklusa takta. Ovo povećanje dolazi kao dodatak vremenu pokretanja iz odabranog načina mirovanja.

Povratak iz rutine za rukovanje prekidima traje četiri ciklusa takta. Tokom ova četiri ciklusa takta, programski brojač (dva bajta) se vraća iz steka, pokazivač steka se povećava za dva, a I-bit u SREG-u je postavljen.

AVR Memories

Ovaj odjeljak opisuje različite memorije u ATtiny25/45/85. AVR arhitektura ima dva glavna memorijska prostora, memoriju podataka i prostor programske memorije. Pored toga, ATtiny25/45/85 ima EEPROM memoriju za skladištenje podataka. Sva tri memorijska prostora su linearna i regularna.

Reprogramabilna flash programska memorija unutar sistema

ATtiny25/45/85 sadrži 2/4/8K bajtova reprogramabilnu fleš memoriju na čipu u sistemu za skladištenje programa. Pošto su sve AVR instrukcije široke 16 ili 32 bita, Flash je organizovan kao 1024/2048/4096 x 16.

Flash memorija ima izdržljivost od najmanje 10,000 ciklusa pisanja/brisanja. Programski brojač ATtiny25/45/85 (PC) je širok 10/11/12 bita, tako da adresira memorijske lokacije programa 1024/2048/4096. “Program memorije- ming” na strani 147 sadrži detaljan opis serijskog preuzimanja Flash podataka pomoću SPI pinova.

Konstantne tabele se mogu dodijeliti unutar cijelog adresnog prostora programske memorije (pogledajte opis instrukcije LPM – Učitavanje programske memorije).

Slika 5-1. Mapa memorije programa Mapa memorije

SRAM memorija podataka

Slika 5-2 pokazuje kako je ATtiny25/45/85 SRAM memorija organizovana.

Donje memorijske lokacije 224/352/607 podataka adresiraju oba registra File, I/O memoriju i interni SRAM podataka. Prve 32 lokacije adresiraju Registar File, sljedećih 64 lokacije standardna I/O memorija, a posljednjih 128/256/512 lokacija adresiraju SRAM internih podataka.

Pet različitih načina adresiranja za poklopac memorije podataka: Direktno, Indirektno sa pomakom, Indirektno, Indirektno sa pre-dekrementom i Indirektno sa post-inkrementom. U registru File, registri R26 do R31 sadrže registre pokazivača indirektnog adresiranja.

Direktno adresiranje dopire do cijelog prostora podataka.

Indirect with Displacement mod dostiže 63 adresne lokacije od bazne adrese koju daje Y- ili Z- registar.

Kada se koriste načini indirektnog adresiranja registra sa automatskim prethodnim i post-inkrementom, adresni registri X, Y i Z se smanjuju ili povećavaju.

32 radna registra opšte namene, 64 I/O registra i 128/256/512 bajtova internog SRAM-a podataka u ATtiny25/45/85 su svi dostupni kroz sve ove načine adresiranja. The Register File je opisan u “Gen- eralni registar namjene File”Na stranici 10.

Slika 5-2. Mapa memorije podataka Mapa memorije 2

Pristup memoriji podataka Times

Ovaj odjeljak opisuje opšte koncepte vremena pristupa za pristup internoj memoriji. Pristup internim podacima SRAM-u se izvodi u dva clkCPU ciklusa kao što je opisano u Slika 5-3.

Slika 5-3. Ciklusi pristupa SRAM podacima na čipu Podaci o čipu EEPROM memorija podataka

ATtiny25/45/85 sadrži 128/256/512 bajtova EEPROM memorije podataka. Organizovan je kao poseban prostor podataka u koji se mogu čitati i pisati pojedinačni bajtovi. EEPROM ima izdržljivost od najmanje 100,000 ciklusa pisanja/brisanja. Pristup između EEPROM-a i CPU-a je opisan u nastavku, specificirajući EEPROM adresne registre, EEPROM registar podataka i EEPROM kontrolni registar. Za detalje pogledajte “Serijsko preuzimanje” na stranici 151.

EEPROM pristup za čitanje/pisanje

EEPROM pristupni registri su dostupni u I/O prostoru.

Navedena su vremena pristupa upisivanju za EEPROM Tabela 5-1 na stranici 21. Funkcija samookidanja, međutim, omogućava korisničkom softveru da otkrije kada se sljedeći bajt može upisati. Ako korisnički kod sadrži upute koje pišu EEPROM, moraju se poduzeti neke mjere opreza. U jako filtriranim izvorima napajanja, VCC će vjerovatno polako rasti ili pasti

Uključivanje/isključivanje. Ovo uzrokuje da uređaj neko vrijeme radi na voltage niže od specificiranog kao minimuma za korištenu frekvenciju takta. Vidi “Sprečavanje oštećenja EEPROM-a” na stranici 19 za detalje o tome kako izbjeći probleme u ovim situacijama.

Kako bi se spriječilo nenamjerno upisivanje u EEPROM, mora se slijediti specifična procedura upisivanja. Pogledajte “Atomski Programiranje bajtova” na stranici 17 “Programiranje podijeljenih bajtova” na stranici 17 za detalje o ovome.

Kada se EEPROM pročita, CPU se zaustavlja na četiri ciklusa takta prije nego što se izvrši sljedeća instrukcija. Kada je EEPROM upisan, CPU se zaustavlja na dva ciklusa takta prije nego što se izvrši sljedeća instrukcija.

Atomsko bajtsko programiranje

Korištenje Atomic Byte programiranja je najjednostavniji način rada. Prilikom upisivanja bajta u EEPROM, korisnik mora upisati adresu u EEAR registar, a podatke u EEDR registar. Ako su EEPMn bitovi nula, upisivanje EEPE (unutar četiri ciklusa nakon upisa EEMPE) će pokrenuti operaciju brisanja/pisanja. Ciklus brisanja i pisanja se obavljaju u jednoj operaciji i daje se ukupno vrijeme programiranja Tabela 5-1 na stranici 21. EEPE bit ostaje postavljen sve dok se operacije brisanja i pisanja ne završe. Dok je uređaj zauzet programiranjem, nije moguće izvršiti druge EEPROM operacije.

Programiranje podijeljenih bajtova

Moguće je podijeliti ciklus brisanja i pisanja u dvije različite operacije. Ovo može biti korisno ako sistem zahtijeva kratko vrijeme pristupa u određenom vremenskom periodu (obično ako je napajanje voltage pada). Da biste iskoristili prednost tage ove metode, potrebno je da se lokacije koje se upisuju budu obrisane prije operacije pisanja. Ali pošto su operacije brisanja i pisanja podijeljene, moguće je izvršiti operacije brisanja kada sistem dozvoljava obavljanje vremenski kritičnih operacija (obično nakon uključivanja).

Izbriši

Da biste izbrisali bajt, adresa se mora upisati u EEAR. Ako su EEPMn bitovi 0b01, pisanje EEPE (unutar četiri ciklusa nakon što je EEMPE upisan) će pokrenuti samo operaciju brisanja (vrijeme programiranja je dato u Tabela 5-1 na strana 21). EEPE bit ostaje postavljen sve dok se operacija brisanja ne završi. Dok je uređaj zauzet programiranjem, nije moguće izvršiti druge EEPROM operacije.

Pišite

Da bi napisao lokaciju, korisnik mora upisati adresu u EEAR, a podatke u EEDR. Ako su EEPMn bitovi 0b10, pisanje EEPE (unutar četiri ciklusa nakon što je EEMPE upisan) će pokrenuti samo operaciju pisanja (vrijeme programiranja je dato u Tabela 5-1 na stranici 21). EEPE bit ostaje postavljen sve dok se operacija pisanja ne završi. Ako lokacija koja se upisuje nije obrisana prije upisivanja, podaci koji se pohranjuju moraju se smatrati izgubljenima. Dok je uređaj zauzet programiranjem, nije moguće izvršiti druge EEPROM operacije.

Kalibrirani oscilator se koristi za mjerenje vremena pristupa EEPROM-u. Provjerite je li frekvencija oscilatora unutar zahtjeva opisanih u “OSCCAL – Registar kalibracije oscilatora” na stranici 31.

Sledeći kod npramplesovi pokazuju jedan sklop i jednu C funkciju za brisanje, pisanje ili atomsko upisivanje EEPROM-a. BivšiampPretpostavljamo da se prekidi kontrolišu (npr. globalno onemogućavanjem prekida) tako da neće doći do prekida tokom izvršavanja ovih funkcija.

Montažni kod Example
EEPROM_write:

; Sačekajte završetak prethodnog pisanja

sbic EECR,EEPE

rjmp EEPROM_write

; Podesite režim programiranja

ldi        r16, (0<<EEPM1)|(0<<EEPM0)

van EECR, r16

; Podesite adresu (r18:r17) u registru adresa

van EEARH, r18

out EEARL, r17

; Upišite podatke (r19) u registar podataka

van EEDR, r19

; Napišite logičku jedinicu u EEMPE

sbi EECR,EEMPE

; Pokrenite eeprom pisanje postavljanjem EEPE

sbi EECR,EEPE

ret

C kod Example
void EEPROM_write(unsigned char ucAddress, unsigned char ucData)

{

/* Sačekajte završetak prethodnog pisanja */ while(EECR & (1<

;

/* Postavite način programiranja */

EECR = (0<

/* Podesite registre adresa i podataka */ EEAR = ucAddress;

EEDR = ucData;

/* Upisati logičku jedinicu u EEMPE */

EECR |= (1<

/* Pokreni eeprom pisanje postavljanjem EEPE */

EECR |= (1<

}

Sljedeća šifra npramples pokazuju sklopove i C funkcije za čitanje EEPROM-a. BivšiampPretpostavljamo da su prekidi kontrolirani tako da se prekidi neće dogoditi tokom izvršavanja ovih funkcija.

Montažni kod Example
EEPROM_read:

; Sačekajte završetak prethodnog pisanja

sbic EECR,EEPE

rjmp EEPROM_read

; Podesite adresu (r18:r17) u registru adresa

van EEARH, r18

out EEARL, r17

; Započnite čitanje eeprom-a pisanjem EERE

sbi EECR,EERE

; Čitanje podataka iz registra podataka

u r16,EEDR

ret

C kod Example
unsigned char EEPROM_read(unsigned char ucAddress)

{

/* Sačekajte završetak prethodnog pisanja */

while(EECR & (1<

;

/* Podesite registar adresa */ EEAR = ucAddress;

/* Započni čitanje eeprom-a pisanjem EERE */

EECR |= (1<

/* Vrati podatke iz registra podataka */

povratni EEDR;

}

Sprečavanje oštećenja EEPROM-a

Tokom perioda niskog VCC, EEPROM podaci mogu biti oštećeni jer je napajanje voltage je prenizak da bi CPU i EEPROM ispravno radili. Ovi problemi su isti kao i za sisteme na nivou ploče koji koriste EEPROM, i treba primeniti ista dizajnerska rešenja.

Oštećenje EEPROM podataka može biti uzrokovano dvije situacije kada je voltage je prenisko. Prvo, redovna sekvenca pisanja u EEPROM zahtijeva minimalni volumentage za ispravan rad. Drugo, sam CPU može da izvrši instrukcije pogrešno, ako je napajanje voltage je prenisko.

Oštećenje EEPROM podataka može se lako izbjeći slijedeći ovu preporuku dizajna:

Održavajte AVR RESET aktivnim (niskim) tokom perioda nedovoljnog napajanja voltage. Ovo se može učiniti omogućavanjem unutrašnjeg detektora zatamnjenja (BOD). Ako nivo detekcije internog BOD-a ne odgovara

potreban nivo detekcije, može se koristiti eksterno nisko VCC zaštitno kolo za resetovanje. Ako dođe do resetovanja dok je operacija pisanja u toku, operacija pisanja će biti završena pod uslovom da je napajanje voltage je dovoljno.

I/O memorija

Definicija I/O prostora za ATtiny25/45/85 je prikazana u “Sažetak registracije” na stranici 200.

Svi ATtiny25/45/85 I/O i periferni uređaji su smješteni u I/O prostor. Svim I/O lokacijama može se pristupiti putem LD/LDS/LDD i ST/STS/STD instrukcija, prenoseći podatke između 32 radna registra opšte namene i I/O prostora. I/O registri u okviru adresnog opsega 0x00 – 0x1F su direktno pristupačni bitu koristeći SBI i CBI instrukcije. U ovim registrima, vrijednost pojedinačnih bitova se može provjeriti korištenjem SBIS i SBIC instrukcija. Za više detalja pogledajte odjeljak skupa instrukcija. Kada koristite I/O specifične naredbe IN i OUT, moraju se koristiti I/O adrese 0x00 – 0x3F. Kada adresirate I/O registre kao prostor podataka koristeći LD i ST instrukcije, 0x20 se mora dodati ovim adresama.

Radi kompatibilnosti s budućim uređajima, rezervirani bitovi trebaju biti zapisani na nulu ako im se pristupa. Rezervirane adrese I / O memorije nikada ne smiju biti napisane.

Neke od statusnih zastavica se brišu tako što im se upiše logična. Imajte na umu da će CBI i SBI instrukcije raditi samo na specificiranom bitu i stoga se mogu koristiti na registrima koji sadrže takve statusne zastavice. CBI i SBI instrukcije rade samo sa registrima 0x00 do 0x1F.

I/O i kontrolni registri periferije su objašnjeni u kasnijim odjeljcima.

Opis registra

EEARH – EEPROM adresni registar

Bit 7 6 5 4 3 2 1 0
0x1F EEAR8 EEARH
Read/Write R R R R R R R R/W
Početna vrijednost 0 0 0 0 0 0 0 X/0

Bitovi 7:1 – Res: Rezervisani bitovi

Ovi bitovi su rezervirani za buduću upotrebu i uvijek će se čitati kao nula.

Bitovi 0 – EEAR8: EEPROM adresa

Ovo je najvažniji bit EEPROM adrese ATtiny85. U uređajima sa manje EEPROM-a, tj. ATtiny25/ATtiny45, ovaj bit je rezerviran i uvijek će čitati nulu. Početna vrijednost EEPROM adresnog registra (EEAR) je nedefinirana i stoga mora biti upisana odgovarajuća vrijednost prije pristupa EEPROM-u.

EEARL – EEPROM adresar

Bit

0x1E EEAR7 EEAR6 EEAR5 EEAR4 EEAR3 EEAR2 EEAR1 EEAR0 EEARL
Rear/Write R/W R/W R/W R/W R/W R/W R/W R/W
Početna vrijednost X X X X X X X X

Bit 7 – EEAR7: EEPROM adresa

Ovo je najvažniji bit EEPROM adrese ATtiny45. U uređajima sa manje EEPROM-a, tj. ATtiny25, ovaj bit je rezerviran i uvijek će čitati nulu. Početna vrijednost EEPROM adresnog registra (EEAR) je nedefinirana i stoga mora biti upisana odgovarajuća vrijednost prije pristupa EEPROM-u.

Bitovi 6:0 – EEAR[6:0]: EEPROM adresa

Ovo su (niski) bitovi EEPROM adresnog registra. EEPROM bajtovi podataka se adresiraju linearno u opsegu 0…(128/256/512-1). Početna vrijednost EEAR-a je nedefinirana i stoga mora biti upisana odgovarajuća vrijednost prije nego što se može pristupiti EEPROM-u.

EEDR – EEPROM registar podataka

Bit 7 6 5 4 3 2 1 0
0x1D EEDR7 EEDR6 EEDR5 EEDR4 EEDR3 EEDR2 EEDR1 EEDR0 EEDR
Read/Write R/W R/W R/W R/W R/W R/W R/W R/W
Početna vrijednost 0 0 0 0 0 0 0 0

Za operaciju upisivanja u EEPROM, EEDR registar sadrži podatke koji se upisuju u EEPROM na adresi koju je dao EEAR registar. Za operaciju čitanja EEPROM-a, EEDR sadrži podatke očitane iz

EEPROM na adresi koju je dao EEAR.

 

5.5.4 EECR – EEPROM kontrolni registar

Bit 7 6 5 4 3 2 1 0
0x1C        – EEPM1 EEPM0 EERIE EEMPE EEPE EERE EECR
Čitanje/pisanje R R R/W R/W R/W R/W R/W R/W
Početna vrijednost 0 0 X X 0 0 X 0

Bit 7 – Res: Rezervirani bit

Ovaj bit je rezerviran za buduću upotrebu i uvijek će se čitati kao 0 u ATtiny25/45/85. Za kompatibilnost sa budućim AVR uređajima, uvijek zapišite ovaj bit na nulu. Nakon čitanja, maskirajte ovaj dio.

Bit 6 – Res: Rezervirani bit

Ovaj bit je rezerviran u ATtiny25/45/85 i uvijek će se čitati kao nula.

Bitovi 5:4 – EEPM[1:0]: Bitovi režima programiranja EEPROM-a

Postavka bitova u načinu programiranja EEPROM definira koja će se radnja programiranja pokrenuti prilikom pisanja EEPE. Moguće je programirati podatke u jednoj atomskoj operaciji (brisati staru vrijednost i programirati novu vrijednost) ili podijeliti operacije brisanja i pisanja u dvije različite operacije. Prikazana su vremena programiranja za različite načine rada Tabela 5-1. Dok je EEPE postavljen, svako upisivanje u EEPMn će biti zanemareno. Tokom resetovanja, bitovi EEPMn će se resetovati na 0b00 osim ako EEPROM nije zauzet programiranjem.

Tabela 5-1. Bitovi EEPROM moda

EEPM1 EEPM0 Vrijeme programiranja Operacija
0 0 3.4 ms Brisanje i pisanje u jednoj operaciji (Atomska operacija)
0 1 1.8 ms Samo brisanje
1 0 1.8 ms Samo piši
1 1 Rezervirano za buduću upotrebu

Bit 3 – EERIE: EEPROM Ready Interrupt Enable

Upisivanje EERIE u jedan omogućava prekid spreman za EEPROM ako je I-bit u SREG postavljen. Pisanje EERIE na nulu onemogućava prekid. EEPROM Ready Interrupt generira konstantan prekid kada je trajna memorija spremna za programiranje.

Bit 2 – EEMPE: EEPROM Master Program Enable

EEMPE bit određuje da li će pisanje EEPE u jedan imati efekta ili ne.

Kada je EEMPE podešen, postavljanje EEPE unutar četiri ciklusa takta će programirati EEPROM na odabranoj adresi. Ako je EEMPE nula, postavljanje EEPE neće imati efekta. Kada je EEMPE softver upisan u jedinicu, hardver briše bit na nulu nakon četiri ciklusa takta.

Bit 1 – EEPE: EEPROM program Omogućen

Signal za omogućavanje programa EEPROM EEPE je signal za omogućavanje programiranja za EEPROM. Kada je EEPE upisan, EEPROM će biti programiran prema postavci EEPMn bitova. EEMPE bit mora biti upisan u jedan prije nego što se logički upiše u EEPE, u suprotnom nema upisivanja u EEPROM. Kada istekne vrijeme pristupa pisanju, EEPE bit se briše od strane hardvera. Kada je EEPE postavljen, CPU se zaustavlja na dva ciklusa prije nego što se izvrši sljedeća instrukcija.

Bit 0 – EERE: Omogućeno čitanje EEPROM-a

Signal za omogućavanje čitanja EEPROM-a – EERE – je strob za čitanje EEPROM-a. Kada je ispravna adresa postavljena u EEAR registru, EERE bit mora biti upisan u jedan da bi se pokrenulo čitanje EEPROM-a. Pristup za čitanje EEPROM-a traje jednu instrukciju, a traženi podaci su odmah dostupni. Kada se EEPROM pročita, CPU se zaustavlja na četiri ciklusa prije nego što se izvrši sljedeća instrukcija. Korisnik treba da ispita EEPE bit prije početka operacije čitanja. Ako je operacija upisivanja u toku, nije moguće ni očitati EEPROM, niti promijeniti EEAR registar.

Sistemski sat i opcije sata

Satni sistemi i njihova distribucija

Distribucija sata

CPU Clock

CPU takt se usmjerava na dijelove sistema koji se bave radom AVR jezgra. PrampJedinice takvih modula su Registar opšte namjene File, statusni registar i memoriju podataka koja drži pokazivač steka. Zaustavljanje CPU takta onemogućava jezgru da obavlja opšte operacije i proračune.

I/O sat – clkI/O

I/O sat koristi većina I/O modula, kao što je Timer/Counter. I/O sat također koristi modul eksternog prekida, ali imajte na umu da su neki eksterni prekidi otkriveni asinhronom logikom, što omogućava da takvi prekidi budu otkriveni čak i ako je I/O sat zaustavljen.

Flash Clock – clkFLASH

Flash sat kontroliše rad Flash interfejsa. Flash takt je obično aktivan istovremeno sa taktom procesora.

ADC sat – clkADC

ADC ima namensku domenu takta. Ovo omogućava zaustavljanje CPU-a i I/O takta kako bi se smanjila buka koju stvaraju digitalna kola. Ovo daje preciznije rezultate ADC konverzije.

Interni PLL za brzo generiranje perifernog takta – clkPCK

Interni PLL u ATtiny25/45/85 generiše frekvenciju takta koja je 8x pomnožena sa izvornog ulaza. Podrazumevano, PLL koristi izlaz internog, 8.0 MHz RC oscilatora kao izvor. Alternativno, ako je bit LSM PLLCSR postavljen, PLL će koristiti izlaz RC oscilatora podijeljen sa dva. Tako je izlaz PLL-a, brzog perifernog takta 64 MHz. Brzi periferni sat, ili sat unaprijed skaliran od toga, može se odabrati kao izvor takta za Tajmer/Brač1 ili kao sistemski sat. Vidi Slika 6-2. Frekvencija brzog perifernog takta se deli sa dva kada je LSM PLLCSR podešen, što rezultira frekvencijom takta od 32 MHz. Imajte na umu da se LSM ne može postaviti ako se PLLCLK koristi kao sistemski sat.

Slika 6-2. PCK sistem taktiranja. PCK clocking

PLL je zaključan na RC oscilatoru i podešavanje RC oscilatora preko OSCCAL registra će istovremeno podesiti brzi periferni sat. Međutim, čak i ako se RC oscilator podigne na višu frekvenciju od 8 MHz, brza periferna frekvencija takta zasićuje se na 85 MHz (najgori slučaj) i ostaje da oscilira na maksimalnoj frekvenciji. Treba napomenuti da PLL u ovom slučaju više nije zaključan sa taktom RC oscilatora. Stoga se preporučuje da se OSCCAL podešavanja ne poduzimaju na višu frekvenciju od 8 MHz kako bi se PLL održao u ispravnom radnom opsegu.

Interni PLL je omogućen kada:

PLLE bit u registru PLLCSR je postavljen.

CKSEL osigurač je programiran na '0001'.

CKSEL osigurač je programiran na '0011'.

PLLCSR bit PLOCK je postavljen kada je PLL zaključan. I interni RC oscilator i PLL su isključeni u režimima isključenja napajanja i pripravnosti.

Interni PLL u ATtiny15 kompatibilnom modu

Budući da je ATtiny25/45/85 uređaj za migraciju za korisnike ATtiny15, postoji ATtiny15 način kompatibilnosti za kompatibilnost unatrag. Režim kompatibilnosti ATtiny15 se bira programiranjem CKSEL osigurača na '0011'.

U režimu kompatibilnosti ATtiny15 frekvencija internog RC oscilatora je kalibrirana na 6.4 MHz, a faktor množenja PLL-a je postavljen na 4x. Vidi Slika 6-3. Sa ovim podešavanjima, sistem takta je kompatibilan sa ATtiny15 i rezultirajući brzi periferni takt ima frekvenciju od 25.6 MHz (isto kao u ATtiny15).

Slika 6-3. PCK sistem taktiranja u ATtiny15 kompatibilnom modu. Sistem satova

Izvori sata

Uređaj ima sljedeće opcije izvora sata, koje se mogu odabrati pomoću Flash Fuse bitova kao što je prikazano ispod. Sat sa izabranog izvora ulazi u AVR generator takta i usmerava se na odgovarajuće module.

Tabela 6-1. Opcije sata uređaja Odaberite

Opcija takta uređaja CKSEL[3:0](1)
Eksterni sat (vidi strana 26) 0000
Visokofrekventni PLL sat (vidi strana 26) 0001
Kalibrirani interni oscilator (vidi strana 27) 0010(2)
Kalibrirani interni oscilator (vidi strana 27) 0011(3)
Interni 128 kHz oscilator (vidi strana 28) 0100
Niskofrekventni kristalni oscilator (vidi strana 29) 0110
Kristalni oscilator / keramički rezonator (vidi strana 29) 1000 – 1111
Rezervirano 0101, 0111

Za sve osigurače “1” znači neprogramiran dok “0” znači programiran.

Uređaj se isporučuje sa odabranom ovom opcijom.

Ovo će odabrati ATtiny15 način kompatibilnosti, gdje je sistemski sat podijeljen sa četiri, što rezultira frekvencijom takta od 1.6 MHz. Za više informacija, pogledajte “Kalibrirani interni oscilator” na stranici 27.

Različiti izbori za svaku opciju takta dati su u sljedećim odjeljcima. Kada se CPU probudi iz isključenja, odabrani izvor takta se koristi za mjerenje vremena pokretanja, osiguravajući stabilan rad oscilatora prije početka izvršavanja instrukcije. Kada CPU krene od resetovanja, postoji dodatno kašnjenje koje omogućava da snaga dostigne stabilan nivo prije početka normalnog rada. Watchdog oscilator se koristi za mjerenje vremena ovog dijela vremena pokretanja u realnom vremenu. Prikazan je broj ciklusa WDT oscilatora koji se koriste za svaki time-out Tabela 6-2.

Tabela 6-2. Broj ciklusa oscilatora Watchdog

Upišite Time-out Broj ciklusa
4 ms 512
64 ms 8K (8,192)

Eksterni sat

Za pogon uređaja iz vanjskog izvora takta, CLKI bi trebao biti pokrenut kao što je prikazano Slika 6-4. Za pokretanje uređaja na eksternom satu, CKSEL osigurači moraju biti programirani na “00”.

Slika 6-4. Konfiguracija eksternog pogona sata

Fig6.4

Kada je odabran ovaj izvor takta, vremena pokretanja određuju SUT osigurači kao što je prikazano Tabela 6-3.

Tabela 6-3. Vrijeme pokretanja za odabir vanjskog sata

SUT[1:0] Vrijeme pokretanja nakon gašenja Dodatno kašnjenje od resetovanja Preporučena upotreba
00 6 CK 14CK BOD omogućen
01 6 CK 14CK + 4 ms Brzo rastuća snaga
10 6 CK 14CK + 64 ms Polako rastuća snaga
11 Rezervirano

Prilikom primjene eksternog takta potrebno je izbjegavati nagle promjene primijenjene frekvencije takta kako bi se osigurao stabilan rad MCU-a. Varijacija u frekvenciji od više od 2% od jednog ciklusa takta do drugog može dovesti do nepredvidivog ponašanja. Potrebno je osigurati da se MCU drži u Resetu tokom takvih promjena frekvencije takta.

Imajte na umu da se pretprodaja sistemskog sata može koristiti za implementaciju promjena interne frekvencije takta u vremenu rada uz istovremeno osiguravanje stabilnog rada. Pogledajte “Preskaler sistemskog sata” na stranici 31 za detalje.

Visokofrekventni PLL sat

Postoji interni PLL koji obezbeđuje nominalni takt od 64 MHz zaključan na RC oscilator za upotrebu perifernog tajmera/brojala1 i za izvor sistemskog takta. Kada je odabran kao izvor sistemskog sata, programiranjem CKSEL osigurača na '0001', dijeli se na četiri kao što je prikazano na Tabela 6-4.

Tabela 6-4. Načini rada visokofrekventnog PLL sata

CKSEL[3:0] Nominalna frekvencija
0001 16 MHz

Kada je odabran ovaj izvor takta, vremena pokretanja određuju SUT osigurači kao što je prikazano Tabela 6-5.

Tabela 6-5. Vremena pokretanja za visokofrekventni PLL sat

SUT[1:0] Vrijeme pokretanja nakon isključivanja Dodatno kašnjenje od resetiranja po uključenju (VCC = 5.0 V) Preporučena upotreba
00 14CK + 1K (1024) CK + 4 ms 4 ms BOD omogućen

Tabela 6-5. Vremena pokretanja za visokofrekventni PLL sat

SUT[1:0] Vrijeme pokretanja nakon isključivanja Dodatno kašnjenje od resetiranja po uključenju (VCC = 5.0 V) Preporučena upotreba
01 14CK + 16K (16384) CK + 4 ms 4 ms Brzo rastuća snaga
10 14CK + 1K (1024) CK + 64 ms 4 ms Polako rastuća snaga
11 14CK + 16K (16384) CK + 64 ms 4 ms Polako rastuća snaga

Kalibrirani interni oscilator

Podrazumevano, interni RC oscilator obezbeđuje takt od približno 8.0 MHz. Iako voltagOvisno o temperaturi, ovaj sat korisnik može vrlo precizno kalibrirati. Vidi “Kalibrirani interni RC oscilator aku- racy” na strani 164 “Brzina internog oscilatora” na stranici 192 za više detalja. Uređaj se isporučuje sa programiranim osiguračem CKDIV8. Vidi “Preskaler sistemskog sata” na stranici 31 za više detalja.

Ovaj sat se može odabrati kao sistemski sat programiranjem CKSEL osigurača kao što je prikazano Tabela 6-6 na str

27. Ako je odabrano, radit će bez vanjskih komponenti. Tokom resetiranja, hardver učitava unaprijed programiranu vrijednost kalibracije u OSCCAL registar i na taj način automatski kalibrira RC oscilator. Tačnost ove kalibracije je prikazana kao Fabrička kalibracija u Tabela 21-2 na stranici 164.

Promjenom OSCCAL registra iz SW, vidi “OSCCAL – Registar kalibracije oscilatora” na stranici 31, moguće je postići veću tačnost kalibracije nego korištenjem tvorničke kalibracije. Preciznost ove kalibracije prikazana je kao Korisnička kalibracija u Tabela 21-2 na stranici 164.

Kada se ovaj oscilator koristi kao sat čipa, Watchdog oscilator će se i dalje koristiti za Watchdog tajmer i za Reset Time-out. Za više informacija o unaprijed programiranoj vrijednosti kalibracije, pogledajte odjeljak “Cali- bracioni bajtovi” na stranici 150.

Interni oscilator se takođe može podesiti da obezbedi takt od 6.4 MHz upisivanjem CKSEL osigurača na „0011“, kao što je prikazano na Tabela 6-6 ispod. Ova postavka se naziva ATtiny15 Compatibility Mode i namijenjena je da obezbijedi kalibrirani izvor takta na 6.4 MHz, kao u ATtiny15. U ATtiny15 kompatibilnom načinu rada PLL koristi interni oscilator koji radi na 6.4 MHz za generiranje perifernog takta od 25.6 MHz za tajmer/brojač1 (pogledajte “8-bitni tajmer/brojač 1 in ATtiny15 Mode” na stranici 95). Imajte na umu da je u ovom načinu rada signal takta od 6.4 MHz uvijek podijeljen sa četiri, što daje sistemski takt od 1.6 MHz.

Tabela 6-6. Načini rada internog kalibriranog RC oscilatora

CKSEL[3:0] Nominalna frekvencija
0010(1) 8.0 MHz
0011(2) 6.4 MHz

Uređaj se isporučuje sa odabranom ovom opcijom.

Ova postavka će odabrati ATtiny15 kompatibilni način, gdje je sistemski sat podijeljen sa četiri, što rezultira frekvencijom takta od 1.6 MHz.

Kada je kalibrirani interni oscilator od 8 MHz odabran kao izvor takta, vremena pokretanja određuju SUT osigurači kao što je prikazano na Tabela 6-7 ispod.

Tabela 6-7. Vrijeme pokretanja za interni kalibrirani RC oscilatorski sat

SUT[1:0] Vrijeme pokretanja nakon gašenja Dodatno kašnjenje od resetiranja (VCC = 5.0V) Preporučena upotreba
00 6 CK 14CK(1) BOD omogućen
01 6 CK 14CK + 4 ms Brzo rastuća snaga
10(2) 6 CK 14CK + 64 ms Polako rastuća snaga
11 Rezervirano

1. Ako je RSTDISBL osigurač programiran, ovo vrijeme pokretanja će se povećati na 14CK + 4 ms kako bi se osiguralo da se može ući u režim programiranja.
2. Uređaj se isporučuje sa odabranom ovom opcijom.

U ATtiny15 kompatibilnom načinu rada vremena pokretanja određuju SUT osigurači kao što je prikazano na Tabela 6-8 ispod.

Tabela 6-8. Vrijeme pokretanja za interni kalibrirani RC oscilatorski sat (u ATtiny15 modu)

SUT[1:0] Vrijeme pokretanja nakon gašenja Dodatno kašnjenje od resetiranja (VCC = 5.0V) Preporučena upotreba
00 6 CK 14CK + 64 ms
01 6 CK 14CK + 64 ms
10 6 CK 14CK + 4 ms
11 1 CK 14CK(1)

Napomena: Ako je RSTDISBL osigurač programiran, ovo vrijeme pokretanja će se povećati na 14CK + 4 ms kako bi se osiguralo da se može ući u režim programiranja.

Ukratko, više informacija o ATtiny15 načinu kompatibilnosti možete pronaći u odjeljcima “Port B (PB5:PB0)” uključen strana 2“Interni PLL u ATtiny15 kompatibilnom načinu rada” na stranici 24“8-bitni tajmer/brojač1 u ATtiny15 modu” uključen strana 95“Ograničenja debugWIRE-a” na stranici 140“Bajtovi kalibracije” na stranici 150 i u tabeli “Sat Prescaler Odaberite” na stranici 33.

Interni 128 kHz oscilator

Interni oscilator od 128 kHz je oscilator male snage koji daje takt od 128 kHz. Frekvencija je nominalna na 3V i 25°C. Ovaj sat se može odabrati kao sistemski sat programiranjem CKSEL osigurača na “0100”.

Kada je odabran ovaj izvor takta, vremena pokretanja određuju SUT osigurači kao što je prikazano Tabela 6-9.

Tabela 6-9. Vremena pokretanja za interni oscilator od 128 kHz

SUT[1:0] Vrijeme pokretanja nakon gašenja Dodatno kašnjenje od resetovanja Preporučena upotreba
00 6 CK 14CK(1) BOD omogućen
01 6 CK 14CK + 4 ms Brzo rastuća snaga
10 6 CK 14CK + 64 ms Polako rastuća snaga
11 Rezervirano

Napomena: Ako je RSTDISBL osigurač programiran, ovo vrijeme pokretanja će se povećati na 14CK + 4 ms kako bi se osiguralo da se može ući u režim programiranja.

Niskofrekventni kristalni oscilator

Da biste koristili kristal sata od 32.768 kHz kao izvor takta za uređaj, niskofrekventni kristalni oscilator mora biti odabran postavljanjem CKSEL osigurača na '0110'. Kristal treba spojiti kako je prikazano na Slika 6-5. Da biste pronašli odgovarajući kapacitet opterećenja za crysal od 32.768 kHz, molimo konsultujte specifikaciju proizvođača.

Kada se odabere ovaj oscilator, vremena pokretanja određuju SUT osigurači kao što je prikazano Tabela 6-10.

Tabela 6-10. Vremena pokretanja za izbor takta niskofrekventnog kristalnog oscilatora

SUT[1:0] Vrijeme pokretanja nakon isključivanja Dodatno kašnjenje od resetiranja (VCC = 5.0V) Preporučena upotreba
00 1K (1024) CK(1) 4 ms Brzo rastuća snaga ili BOD omogućen
01 1K (1024) CK(1) 64 ms Polako rastuća snaga
10 32K (32768) CK 64 ms Stabilna frekvencija pri startovanju
11 Rezervirano

Napomena: Ove opcije treba koristiti samo ako stabilnost frekvencije pri pokretanju nije važna.

Niskofrekventni kristalni oscilator pruža unutrašnji kapacitet opterećenja, vidi Tabela 6-11 na svakom TOSC pinu.

Tabela 6-11. Kapacitet niskofrekventnog kristalnog oscilatora

Uređaj 32 kHz Osc. Tip Kapa (Xtal1/Tosc1) Kapa (Xtal2/Tosc2)
ATtiny25/45/85 System Osc. 16 pF 6 pF

Kristalni oscilator / keramički rezonator

XTAL1 i XTAL2 su ulaz i izlaz, respektivno, za invertovanje ampLifier koji se može konfigurirati za korištenje kao On-chip oscilator, kao što je prikazano na Slika 6-5. Može se koristiti ili kristal kvarca ili keramički rezonator.

C1 i C2 bi uvijek trebali biti jednaki i za kristale i za rezonatore. Optimalna vrijednost kondenzatora ovisi o kristalu ili rezonatoru koji se koristi, količini lutajućeg kapaciteta i elektromagnetnom šumu okoline. Date su neke početne smjernice za odabir kondenzatora za korištenje s kristalima Tabela 6-12 ispod. Za keramičke rezonatore treba koristiti vrijednosti kondenzatora koje je dao proizvođač.

Tabela 6-12. Načini rada kristalnog oscilatora

CKSEL[3:1] Frekvencijski opseg (MHz) Preporučeni raspon za kondenzatore C1 i C2 za upotrebu s kristalima (pF)
100(1) 0.4 – 0.9
101 0.9 – 3.0 12 – 22
110 3.0 – 8.0 12 – 22
111 8.0 – 12 – 22

Napomene: Ovu opciju ne treba koristiti sa kristalima, već samo sa keramičkim rezonatorima.

Oscilator može raditi u tri različita načina rada, od kojih je svaki optimiziran za određeni frekventni opseg. Način rada biraju osigurači CKSEL[3:1] kao što je prikazano Tabela 6-12.

CKSEL0 osigurač zajedno sa SUT[1:0] osiguračima odabiru vremena pokretanja kao što je prikazano na Tabela 6-13.

Tabela 6-13. Vremena pokretanja za odabir sata kristalnog oscilatora

CKSEL0 SUT[1:0] Vrijeme pokretanja nakon gašenja Dodatno kašnjenje od resetovanja Preporučena upotreba
0 00 258 CK(1) 14CK + 4 ms Keramički rezonator, brzo rastuća snaga
0 01 258 CK(1) 14CK + 64 ms Keramički rezonator, polako rastuća snaga
0 10 1K (1024) CK(2) 14CK Keramički rezonator, BOD omogućen
0 11 1K (1024)CK(2) 14CK + 4 ms Keramički rezonator, brzo rastuća snaga
1 00 1K (1024)CK(2) 14CK + 64 ms Keramički rezonator, polako rastuća snaga
1 01 16K (16384) CK 14CK Kristalni oscilator, BOD omogućen
1 10 16K (16384) CK 14CK + 4 ms Kristalni oscilator, brzo rastuća snaga
1 11 16K (16384) CK 14CK + 64 ms Kristalni oscilator, polako rastuća snaga

Bilješke

Ove opcije treba koristiti samo kada ne rade blizu maksimalne frekvencije uređaja i samo ako stabilnost frekvencije pri pokretanju nije važna za aplikaciju. Ove opcije nisu prikladne za kristale.

Ove opcije su namenjene za upotrebu sa keramičkim rezonatorima i obezbediće stabilnost frekvencije pri pokretanju. Mogu se koristiti i s kristalima kada ne rade blizu maksimalne frekvencije uređaja i ako stabilnost frekvencije pri pokretanju nije važna za primjenu.

Zadani izvor sata

Uređaj se isporučuje sa programiranim CKSEL = “0010”, SUT = “10” i CKDIV8. Podrazumevana postavka izvora takta je stoga interni RC oscilator koji radi na 8 MHz sa najdužim vremenom pokretanja i početnim predskaliranjem sistemskog takta od 8, što rezultira 1.0 MHz sistemskim taktom. Ova zadana postavka osigurava da svi korisnici mogu postaviti željenu postavku izvora sata koristeći In-System ili High-voltage Programer.

Sistemski sat Prescaler

Sistemski sat ATtiny25/45/85 se može podijeliti postavljanjem “CLKPR – Registar predskala sata” na stranici 32. Ova funkcija se može koristiti za smanjenje potrošnje energije kada je zahtjev za procesorskom snagom nizak. Ovo se može koristiti sa svim opcijama izvora takta, i to će uticati na frekvenciju takta CPU-a i svih sinhronih perifernih uređaja. clkI/O, clkADC, clkCPU i clkFLASH su podijeljeni faktorom kao što je prikazano na Tabela 6-15 na stranici 33.

Vrijeme prebacivanja

Prilikom prebacivanja između postavki predskalera, predskaler sistemskog sata osigurava da se ne pojave kvarovi u sistemu takta i da nijedna međufrekvencija nije viša od ni od frekvencije takta koja odgovara prethodnoj postavci, niti od frekvencije takta koja odgovara novoj postavci.

Brojač talasa koji implementira predskaler radi na frekvenciji nepodijeljenog takta, koja može biti brža od frekvencije takta CPU-a. Dakle, nije moguće odrediti stanje predskalera – čak i kada bi bio čitljiv, a tačno vrijeme potrebno za prelazak s jedne podjele sata na drugu ne može se točno predvidjeti.

Od trenutka kada su CLKPS vrijednosti upisane, potrebno je između T1 + T2 i T1 + 2*T2 prije nego što je aktivna nova frekvencija sata. U ovom intervalu se proizvode 2 aktivna ivica sata. Ovdje je T1 prethodni period takta, a T2 je period koji odgovara novoj postavci predskalera.

Izlazni bafer sata

Uređaj može emitovati sistemski sat na CLKO pin (kada se ne koristi kao XTAL2 pin). Da bi se omogućio izlaz, CKOUT osigurač mora biti programiran. Ovaj način rada je prikladan kada se sat čipa koristi za pokretanje drugih kola u sistemu. Imajte na umu da se sat neće emitovati tokom resetovanja i da će normalan rad I/O pina biti poništen kada je osigurač programiran. Interni RC oscilator, WDT oscilator, PLL i eksterni sat (CLKI) se mogu odabrati kada se sat izlazi na CLKO. Kristalni oscilatori (XTAL1, XTAL2) se ne mogu koristiti za izlaz takta na CLKO. Ako se koristi predskaler sistemskog sata, izlaz je podijeljeni sistemski sat.

Opis registra

OSCCAL – Registar kalibracije oscilatora

Bit 7 6 5 4 3 2 1 0
0x31 CAL7 CAL6 CAL5 CAL4 CAL3 CAL2 CAL1 CAL0 OSCCAL
Read/Write R/W R/W R/W R/W R/W R/W R/W R/W

Bitovi 7:0 – CAL[7:0]: Vrijednost kalibracije oscilatora

Registar kalibracije oscilatora se koristi za trim kalibriranog internog RC oscilatora kako bi se uklonile varijacije procesa sa frekvencije oscilatora. Unaprijed programirana vrijednost kalibracije se automatski upisuje u ovaj registar tokom resetovanja čipa, dajući tvornički kalibriranu frekvenciju kako je navedeno u Tabela 21-2 na stranici 164. Aplikacioni softver može zapisati ovaj registar da promijeni frekvenciju oscilatora. Oscilator se može kalibrirati na frekvencije kako je navedeno u Tabela 21-2 na stranici 164. Kalibracija izvan tog opsega nije zagarantovana.

Imajte na umu da se ovaj oscilator koristi za mjerenje vremena EEPROM-a i pristupa upisivanju u Flash, te će to u skladu s tim utjecati na vrijeme pisanja. Ako su EEPROM ili Flash upisani, nemojte kalibrirati na više od 8.8 MHz. U suprotnom, EEPROM ili Flash upisivanje možda neće uspjeti.

CAL7 bit određuje opseg rada za oscilator. Postavljanje ovog bita na 0 daje najniži frekventni opseg, a postavljanje ovog bita na 1 daje najveći frekventni opseg. Dva frekvencijska opsega se preklapaju, drugim riječima, postavka OSCCAL = 0x7F daje višu frekvenciju od OSCCAL = 0x80.

CAL[6:0] bitovi se koriste za podešavanje frekvencije unutar odabranog raspona. Postavka 0x00 daje najnižu frekvenciju u tom opsegu, a postavka 0x7F daje najvišu frekvenciju u opsegu.

Da bi se osigurao stabilan rad MCU, vrijednost kalibracije treba mijenjati u malim količinama. Varijacija u učestalosti od više od 2% od jednog ciklusa do drugog može dovesti do nepredvidivog ponašanja. Promjene u OSCCAL ne bi trebale prelaziti 0x20 za svaku kalibraciju. Potrebno je osigurati da se MCU drži u Resetu tokom takvih promjena frekvencije takta

Tabela 6-14. Frekvencijski opseg internog RC oscilatora

OSCCAL vrijednost Tipična najniža frekvencija u odnosu na nominalnu frekvenciju Tipična najveća frekvencija u odnosu na nominalnu frekvenciju
0x00 50% 100%
0x3F 75% 150%
0x7F 100% 200%

CLKPR – Registar predskala sata

Bit 7 6 5 4 3 2 1 0
0x26 CLKPCE CLKPS3 CLKPS2 CLKPS1 CLKPS0 CLKPR
Read/Write R/W R R R R/W R/W R/W R/W

Početna vrijednost 0 0 0 0 Pogledajte opis bita

Bit 7 – CLKPCE: Omogućena promjena predskalera sata

CLKPCE bit mora biti upisan u logičku jedan da bi se omogućila promjena CLKPS bitova. CLKPCE bit se ažurira samo kada su ostali bitovi u CLKPR istovremeno upisani na nulu. CLKPCE se briše od strane hardvera četiri ciklusa nakon što je upisan ili kada su CLKPS bitovi upisani. Ponovno upisivanje CLKPCE bita unutar ovog vremenskog perioda ne produžava vremenski period, niti briše CLKPCE bit.

Bitovi 6:4 – Res: Rezervisani bitovi

Ovi bitovi su rezervirani bitovi u ATtiny25/45/85 i uvijek će se čitati kao nula.

Bitovi 3:0 – CLKPS[3:0]: Odabir predskalera sata Bitovi 3 – 0

Ovi bitovi definiraju faktor podjele između odabranog izvora takta i internog sistemskog sata. Ovi bitovi se mogu upisati u vrijeme izvođenja kako bi se mijenjala frekvencija takta kako bi odgovarala zahtjevima aplikacije. Kako razdjelnik dijeli ulaz glavnog takta na MCU, brzina svih sinhronih perifernih uređaja se smanjuje kada se koristi faktor podjele. Faktori podjele su dati Tabela 6-15.

Da bi se izbjegle nenamjerne promjene frekvencije takta, mora se slijediti posebna procedura pisanja za promjenu CLKPS bitova:

Zapišite bit Enable Clock Prescaler Change Enable (CLKPCE) na jedan, a sve ostale bitove u CLKPR na nulu.

Unutar četiri ciklusa, upišite željenu vrijednost u CLKPS dok upisujete nulu u CLKPCE.

Prekidi moraju biti onemogućeni kada se mijenjaju postavke predskalera kako bi se osiguralo da procedura pisanja nije prekinuta.

CKDIV8 osigurač određuje početnu vrijednost CLKPS bitova. Ako CKDIV8 nije programiran, bitovi CLKPS će biti resetirani na “0000”. Ako je CKDIV8 programiran, CLKPS bitovi se resetuju na “0011”, dajući faktor podjele osam pri pokretanju. Ovu funkciju treba koristiti ako odabrani izvor takta ima višu frekvenciju od maksimalne frekvencije uređaja u trenutnim radnim uvjetima. Imajte na umu da se bilo koja vrijednost može upisati u CLKPS bitove bez obzira na postavku CKDIV8 osigurača. Aplikacioni softver mora osigurati da je dovoljan faktor podjele

odabrano ako odabrani izvor takta ima višu frekvenciju od maksimalne frekvencije uređaja u trenutnim radnim uvjetima. Uređaj se isporučuje sa programiranim osiguračem CKDIV8.

Tabela 6-15. Odabir preskalera sata

CLKPS3 CLKPS2 CLKPS1 CLKPS0 Faktor podjele sata
0 0 0 0 1
0 0 0 1 2
0 0 1 0 4
0 0 1 1 8
0 1 0 0 16
0 1 0 1 32
0 1 1 0 64
0 1 1 1 128
1 0 0 0 256
1 0 0 1 Rezervirano
1 0 1 0 Rezervirano
1 0 1 1 Rezervirano
1 1 0 0 Rezervirano
1 1 0 1 Rezervirano
1 1 1 0 Rezervirano
1 1 1 1 Rezervirano

Napomena: Preskaler je onemogućen u režimu kompatibilnosti ATtiny15 i ni pisanje u CLKPR, niti programiranje CKDIV8 osigurača nemaju nikakav uticaj na sistemski sat (koji će uvijek biti 1.6 MHz).

Upravljanje napajanjem i režimi mirovanja

Visoke performanse i vodeća efikasnost koda čine AVR mikrokontrolere idealnim izborom za aplikacije male snage. Pored toga, režimi mirovanja omogućavaju aplikaciji da isključi nekorišćene module u MCU-u, čime se štedi energija. AVR pruža različite režime mirovanja omogućavajući korisniku da prilagodi potrošnju energije zahtevima aplikacije.

Načini spavanja

Slika 6-1 na stranici 23 predstavlja različite sisteme sata i njihovu distribuciju u ATtiny25/45/85. Slika je od pomoći pri odabiru odgovarajućeg načina mirovanja. Tabela 7-1 prikazuje različite režime spavanja i njihove izvore buđenja.

Tabela 7-1. Aktivne domene sata i izvori buđenja u različitim režimima mirovanja

Active Clock Domains Oscilatori Izvori buđenja
Sleep Mode clkCPU clkFLASH clkIO clkADC clkPCK Glavni izvor sata je omogućen INT0 i Pin Change SPM/EEPROM

Spreman

 

USI početni uvjet

ADC Drugi I/O Watchdog Prekini
Idle X X X X X X X X X X
ADC Smanjenje šuma X X X(1) X X X X
Isključivanje X(1) X X

Napomena: Za INT0, samo prekid nivoa.

Za ulazak u bilo koji od tri načina mirovanja, SE bit u MCUCR-u mora biti zapisan u logički jedan i mora se izvršiti SLEEP instrukcija. SM[1:0] bitovi u MCUCR registru biraju koji će režim mirovanja (Idle, ADC Noise Reduction ili Power-down) biti aktiviran pomoću SLEEP instrukcije. Vidi Tabela 7-2 za sažetak.

Ako dođe do omogućenog prekida dok je MCU u stanju mirovanja, MCU se budi. MCU se zatim zaustavlja na četiri ciklusa pored vremena pokretanja, izvršava rutinu prekida i nastavlja izvršavanje iz instrukcije nakon SLEEP. Sadržaj Registra File i SRAM su nepromijenjeni kada se uređaj probudi iz stanja mirovanja. Ako dođe do resetovanja tokom režima mirovanja, MCU se budi i izvršava iz vektora za resetovanje.

Napomena: ako se prekid aktiviran nivoom koristi za buđenje, promijenjeni nivo mora biti zadržan neko vrijeme da bi se MCU probudio (i da bi MCU ušao u rutinu usluge prekida). Vidi “Spoljni prekidi” na stranici 49 za detalje.

Režim mirovanja

Kada su SM[1:0] bitovi upisani u 00, instrukcija SLEEP tjera MCU da uđe u stanje mirovanja, zaustavljajući CPU, ali dozvoljavajući analognom komparatoru, ADC-u, USI, tajmeru/brojaču, Watchdog-u i sistemu prekida da nastave sa radom. ating. Ovaj režim mirovanja u osnovi zaustavlja clkCPU i clkFLASH, dok dozvoljava ostalim taktovima da rade.

Režim mirovanja omogućava MCU-u da se probudi iz vanjskih pokrenutih prekida, kao i internih kao što je Timer Overflow. Ako buđenje iz prekida analognog komparatora nije potrebno, analogni komparator se može isključiti postavljanjem ACD bita u “ACSR – Registar upravljanja i statusa analognog komparatora” na stranici 120. Ovo će smanjiti potrošnju energije u stanju mirovanja. Ako je ADC omogućen, konverzija počinje automatski kada se uđe u ovaj način.

ADC režim smanjenja šuma

Kada su SM[1:0] bitovi upisani u 01, instrukcija SLEEP tjera MCU da uđe u mod smanjenja buke ADC-a, zaustavljajući CPU, ali dozvoljavajući ADC-u, vanjskim prekidima i Watchdog-u da nastave s radom (ako je omogućeno). Ovaj režim mirovanja zaustavlja clkI/O, clkCPU i clkFLASH, dok dozvoljava ostalim satovima da rade.

Ovo poboljšava okruženje buke za ADC, omogućavajući mjerenja veće rezolucije. Ako je ADC omogućen, konverzija počinje automatski kada se uđe u ovaj način. Osim prekida ADC Conversion Complete, samo vanjski reset, Watchdog reset, Brown-out reset, prekid spreman za SPM/EEPROM, prekid eksternog nivoa na INT0 ili prekid promjene pinova može probuditi MCU iz ADC Noise Reduction način rada.

Režim gašenja

Kada se SM[1:0] bitovi upišu na 10, instrukcija SLEEP čini da MCU uđe u režim isključenja napajanja. U ovom načinu rada, oscilator je zaustavljen, dok vanjski prekidi, USI detekcija startnog stanja i Watchdog nastavljaju s radom (ako je omogućeno). Samo eksterno resetovanje, resetovanje Watchdog-a, resetovanje zatamnjenog stanja, prekid USI startnog stanja, prekid eksternog nivoa na INT0 ili prekid promene pinova mogu probuditi MCU. Ovaj režim mirovanja zaustavlja sve generisane satove, dozvoljavajući rad samo asinhronih modula.

Softver BOD Disable

Kada je detektor zatamnjenja (BOD) omogućen pomoću BODLEVEL osigurača (pogledajte Tabela 20-4 na stranici 148), BOD aktivno prati količinu ponudetage tokom perioda spavanja. Na nekim uređajima moguće je uštedjeti energiju tako što ćete softverski onemogućiti BOD u režimu mirovanja sa isključenim napajanjem. Potrošnja energije u stanju mirovanja će tada biti na istom nivou kao kada je BOD globalno onemogućen osiguračima.

Ako je BOD softver onemogućen, funkcija BOD se isključuje odmah nakon ulaska u stanje mirovanja. Nakon buđenja iz stanja spavanja, BOD se automatski ponovo uključuje. Ovo osigurava siguran rad u slučaju da nivo VCC padne tokom perioda mirovanja.

Kada je BOD onemogućen, vrijeme buđenja iz stanja mirovanja će biti isto kao i vrijeme buđenja iz RESET-a. Korisnik mora ručno konfigurirati vrijeme buđenja tako da referenca pojasnog razmaka ima vremena da se pokrene i da BOD radi ispravno prije nego što MCU nastavi s izvršavanjem koda. Pogledajte SUT[1:0] i CKSEL[3:0] bitove osigurača u tabeli “Niski bajt osigurača” na stranici 149

BOD onemogućavanje kontroliše BODS (BOD Sleep) bit MCU kontrolnog registra, vidi “MCUCR – MCU kontrola Registrujte se” na strani 37. Zapisivanje ovog bita u jedinicu isključuje BOD u Power-Down, dok pisanje nule održava BOD aktivnim. Zadana postavka je nula, tj. BOD je aktivan.

Pisanje u BODS bit je kontrolirano vremenskim nizom i bitom za omogućavanje, vidi “MCUCR – MCU kontrolni registar- ter” na strani 37.

Ograničenja

Funkcija onemogućavanja BOD-a implementirana je samo na sljedećim uređajima:

ATtiny25, revizija E, i novije

ATtiny45, revizija D i novije

ATtiny85, revizija C, i novije

Revizije su označene na paketu uređaja i mogu se nalaziti na sljedeći način:

Donja strana paketa 8P3 i 8S2

Gornja strana pakovanja 20M1

Registar smanjenja snage

Registar smanjenja snage (PRR), vidi “PRR – Registar smanjenja snage” na stranici 38, pruža metodu za smanjenje potrošnje energije zaustavljanjem sata na pojedinačnim perifernim uređajima. Trenutno stanje periferije je zamrznuto i I/O registri se ne mogu čitati ili pisati. Resursi koje koristi periferija prilikom zaustavljanja sata će ostati zauzeti, stoga periferiju u većini slučajeva treba onemogućiti prije zaustavljanja sata. Buđenje modula, koje se vrši brisanjem bita u PRR-u, dovodi modul u isto stanje kao prije gašenja.

Isključivanje modula može se koristiti u načinu mirovanja i aktivnom načinu rada kako bi se značajno smanjila ukupna potrošnja energije. U svim ostalim režimima mirovanja, sat je već zaustavljen. Vidi “Struja napajanja I/O modula” na stranici 177 npramples.

Minimiziranje potrošnje energije

Postoji nekoliko pitanja koja treba uzeti u obzir kada pokušavate da smanjite potrošnju energije u sistemu koji kontroliše AVR. Općenito, režime mirovanja treba koristiti što je više moguće, a režim mirovanja treba odabrati tako da radi što manje funkcija uređaja. Sve funkcije koje nisu potrebne trebaju biti onemogućene. Konkretno, sljedeći moduli možda trebaju posebnu pažnju kada pokušavate postići najmanju moguću potrošnju energije.

Analogno digitalni pretvarač

Ako je omogućen, ADC će biti omogućen u svim režimima mirovanja. Radi uštede energije, ADC bi trebao biti onemogućen prije ulaska u bilo koji način mirovanja. Kada se ADC isključi i ponovo uključi, sljedeća konverzija će biti proširena konverzija. Pogledajte “Analogno-digitalni pretvarač” na stranici 122 za detalje o radu ADC-a.

Analogni komparator

Prilikom ulaska u stanje mirovanja, analogni komparator bi trebao biti onemogućen ako se ne koristi. Prilikom ulaska u režim smanjenja šuma ADC-a, analogni komparator bi trebao biti onemogućen. U drugim režimima mirovanja, analogni komparator je automatski onemogućen. Međutim, ako je analogni komparator podešen da koristi Internal Voltage Referentni kao ulaz, analogni komparator treba da bude onemogućen u svim režimima mirovanja. Inače, Internal Voltage Referenca će biti omogućena, nezavisno od režima mirovanja. Pogledajte “Analogni komparator” na stranici 119 za detalje o tome kako konfigurirati analogni komparator.

Detektor zatamnjenja

Ako detektor zatamnjenja nije potreban u aplikaciji, ovaj modul treba isključiti. Ako je detektor zatamnjenja omogućen pomoću BODLEVEL osigurača, on će biti omogućen u svim režimima mirovanja i stoga će uvijek trošiti energiju. U dubljim režimima spavanja, ovo će značajno doprinijeti ukupnoj potrošnji struje. Vidi “Otkriveni detek- cija” na strani 41 “Onemogućavanje softvera BOD” na stranici 35 za detalje o tome kako da konfigurišete detektor zatamnjenja.

Interni Voltage Referenca

The Internal Voltage Referenca će biti omogućena kada je to potrebno za detekciju zatamnjenja, analogni komparator ili ADC. Ako su ovi moduli onemogućeni kao što je opisano u gornjim odjeljcima, interni voltagReferenca će biti onemogućena i neće trošiti energiju. Kada se ponovo uključi, korisnik mora dozvoliti da se referenca pokrene prije nego što se koristi izlaz. Ako je referenca uključena u stanju mirovanja, izlaz se može odmah koristiti. Pogledajte “Internal Voltage Referenca” na stranici 42 za detalje o vremenu pokretanja.

Watchdog Timer

Ako Watchdog Timer nije potreban u aplikaciji, ovaj modul treba isključiti. Ako je Watchdog tajmer omogućen, on će biti omogućen u svim režimima mirovanja i stoga će uvijek trošiti energiju. U dubljim režimima spavanja, ovo će značajno doprinijeti ukupnoj potrošnji struje. Pogledajte “Watchdog Timer” na stranici 42 za detalje o tome kako konfigurirati Watchdog Timer.

Port Pins

Prilikom ulaska u stanje mirovanja, svi pinovi porta trebaju biti konfigurirani da koriste minimalnu snagu. Najvažnije je tada osigurati da nijedan pinovi ne pokreće otporna opterećenja. U režimima mirovanja gde su i I/O sat (clkI/O) i ADC sat (clkADC) zaustavljeni, ulazni baferi uređaja će biti onemogućeni. Ovo osigurava da se električna energija ne troši

po logici ulaza kada nije potrebno. U nekim slučajevima, ulazna logika je potrebna za otkrivanje stanja buđenja, i

tada će biti omogućeno. Pogledajte odjeljak “Omogućavanje digitalnog ulaza i režimi mirovanja” na stranici 57 za detalje o tome koji su pinovi omogućeni. Ako je ulazni bafer omogućen, a ulazni signal je ostavljen da pluta ili ima nivo analognog signala blizu VCC/2, ulazni bafer će koristiti prekomjernu snagu.

Za pinove analognog ulaza, digitalni ulazni bafer bi trebao biti onemogućen u svakom trenutku. Nivo analognog signala blizu VCC/2 na ulaznom pinu može uzrokovati značajnu struju čak iu aktivnom načinu rada. Digitalni ulazni baferi se mogu onemogućiti upisivanjem u registar onemogućavanja digitalnog ulaza (DIDR0). Pogledajte “DIDR0 – Registar onemogućavanja digitalnog ulaza 0” na stranici 121 za detalje.

Opis registra

MCUCR – MCU kontrolni registar

Kontrolni registar MCU sadrži kontrolne bitove za upravljanje napajanjem.

Bit 7 6 5 4 3 2 1 0
0x35 BODS PUD SE SM1 SM0 BODSE ISC01 ISC00 MCUCR
Read/Write R R/W R/W R/W R/W R R/W R/W
Početna vrijednost 0 0 0 0 0 0 0 0

Bit 7 – BODS: BOD spavanje

Funkcija onemogućavanja BOD-a dostupna je samo na nekim uređajima. Vidi “Ograničenja” na stranici 36.

Da biste onemogućili BOD tokom spavanja (vidi Tabela 7-1 na stranici 34) BODS bit mora biti zapisan u logičku jedan. Ovo se kontrolira vremenskim nizom i bitom za omogućavanje, BODSE u MCUCR-u. Prvo, i BODS i BODSE moraju biti postavljeni na jedan. Drugo, unutar četiri ciklusa takta, BODS mora biti postavljen na jedan, a BODSE mora biti postavljen na nulu. BODS bit je aktivan tri ciklusa sata nakon što je postavljen. Instrukcija mirovanja se mora izvršiti dok je BODS aktivan kako bi se BOD isključio za stvarni način mirovanja. BODS bit se automatski briše nakon tri ciklusa takta.

U uređajima na kojima Sleeping BOD nije implementiran, ovaj bit se ne koristi i uvijek će čitati nulu.

Bit 5 – SE: Omogućeno spavanje

SE bit mora biti zapisan u logički jedan da bi MCU ušao u stanje mirovanja kada se izvrši SLEEP instrukcija. Kako bi se izbjeglo da MCU uđe u stanje mirovanja osim ako to nije svrha programera, preporučuje se da se bit za omogućavanje mirovanja (SE) upiše u jedan neposredno prije izvršenja SLEEP instrukcije i da se obriše odmah nakon buđenja.

Bitovi 4:3 – SM[1:0]: Odabir načina mirovanja Bitovi 1 i 0

Ovi bitovi biraju između tri dostupna režima mirovanja kao što je prikazano Tabela 7-2.

Tabela 7-2. Odaberite način mirovanja

SM1 SM0 Sleep Mode
0 0 Idle
0 1 ADC Smanjenje šuma
1 0 Isključivanje
1 1 Rezervirano

Bit 2 – BODSE: BOD Sleep Enable

Funkcija onemogućavanja BOD-a dostupna je samo na nekim uređajima. Vidi “Ograničenja” na stranici 36.

BODSE bit omogućava postavljanje BODS kontrolnog bita, kao što je objašnjeno u opisu bita BODS. BOD onemogućavanje se kontroliše vremenskim nizom.

Ovaj bit se ne koristi na uređajima na kojima softversko BOD onemogućavanje nije implementirano i čitat će se kao nula na tim uređajima.

PRR – Registar smanjenja snage

Registar smanjenja snage pruža metodu za smanjenje potrošnje energije omogućavanjem da se signali perifernog sata onemogući.

Bit 7 6 5 4 3 2 1 0
0x20 PRTIM1 PRTIM0 PRUSI PRADC PRR
Read/Write R R R R R/W R/W R/W R/W
Početna vrijednost 0 0 0 0 0 0 0 0

Bitovi 7:4 – Res: Rezervisani bitovi

Ovi bitovi su rezervirani bitovi u ATtiny25/45/85 i uvijek će se čitati kao nula.

Bit 3 – PRTIM1: Tajmer/brojač smanjenja snage 1

Upisivanje logičke jedinice u ovaj bit isključuje modul Timer/Counter1. Kada je tajmer/brojač1 omogućen, rad će se nastaviti kao prije isključivanja.

Bit 2 – PRTIM0: Tajmer/brojač smanjenja snage 0

Upisivanje logičke jedinice u ovaj bit isključuje modul Timer/Counter0. Kada je tajmer/brojač0 omogućen, rad će se nastaviti kao prije isključivanja.

Bit 1 – PRUSI: USI za smanjenje snage

Upisivanje logičke jedinice u ovaj bit isključuje USI zaustavljanjem sata na modulu. Prilikom ponovnog buđenja USI, USI bi trebao biti ponovo inicijaliziran kako bi se osigurao pravilan rad.

Bit 0 – PRADC: ADC za smanjenje snage

Upisivanje logičke jedinice u ovaj bit isključuje ADC. ADC se mora isključiti prije isključivanja. Imajte na umu da ADC takt koriste i neki dijelovi analognog komparatora, što znači da se analogni komparator ne može koristiti kada je ovaj bit visok.

Kontrola sistema i resetovanje

Resetovanje AVR-a

Tokom resetovanja, svi I/O registri se postavljaju na svoje početne vrednosti, a program počinje da se izvršava od Vektora resetovanja. Instrukcija postavljena na vektor resetovanja mora biti RJMP – Relativni skok – instrukcija za rutinu rukovanja resetovanjem. Ako program nikada ne omogući izvor prekida, vektori prekida se ne koriste, a regularni programski kod se može postaviti na ove lokacije. Šema strujnog kola u Slika 8-1 prikazuje logiku resetovanja. Dati su električni parametri kola za resetovanje “Karakteristike sistema i resetiranja” na stranici 165.

Slika 8-1 Logika resetovanja Reset-logika

I/O portovi AVR-a se odmah vraćaju u početno stanje kada se aktivira izvor resetovanja. Ovo ne zahtijeva pokretanje bilo kojeg izvora sata.

Nakon što su svi izvori resetovanja postali neaktivni, poziva se brojač kašnjenja, koji proteže interno resetovanje. Ovo omogućava da snaga dostigne stabilan nivo prije nego što počne normalan rad. Vremensko ograničenje brojača kašnjenja definira korisnik preko SUT i CKSEL osigurača. Prikazani su različiti odabiri za period kašnjenja “Sat Izvori” na strani 25.

Resetuj izvore

ATtiny25/45/85 ima četiri izvora resetiranja:

Resetovanje po uključenju. MCU se resetuje kada napajanje voltage je ispod praga za resetovanje po uključenju (VPOT).

Eksterno resetovanje. MCU se resetuje kada je nizak nivo prisutan na RESET pinu duže od minimalne dužine impulsa.

Watchdog Reset. MCU se resetuje kada istekne period Watchdog Timera i Watchdog je omogućen.

Resetovanje zatamnjenja. MCU se resetuje kada napajanje voltage VCC je ispod praga za poništavanje zatamnjenja (VBOT) i Detektor zatamnjenja je omogućen.

Resetiranje napajanja

Puls za resetovanje po uključenju (POR) generiše se od strane kola za detekciju na čipu. Nivo detekcije je definisan u “Sys- tem i resetirajte karakteristike” na stranici 165. POR se aktivira kad god je VCC ispod nivoa detekcije. POR kolo se može koristiti za pokretanje resetiranja pri pokretanju, kao i za otkrivanje kvara u opskrbi voltage.

Kolo za resetovanje po uključenju (POR) osigurava da se uređaj resetuje nakon uključivanja. Dostizanje praga resetovanja po uključenju obtage poziva brojač kašnjenja, koji određuje koliko dugo se uređaj drži u RESET-u nakon porasta VCC. RESET signal se ponovo aktivira, bez ikakvog odlaganja, kada VCC padne ispod nivoa detekcije.

Slika 8-2. MCU pokretanje, RESET Vezano za VCC

INTERNO RESET

Slika 8-3. MCU pokretanje, RESET prošireno eksterno

Eksterno resetovanje

Eksterno resetovanje se generiše niskim nivoom na RESET pinu ako je omogućeno. Resetujte impulse duže od minimalne širine impulsa (vidi “Karakteristike sistema i resetiranja” na stranici 165) će generirati resetiranje, čak i ako sat ne radi. Nije garantovano da će kraći impulsi generisati resetovanje. Kada primijenjeni signal dostigne Reset Threshold Voltage – VRST – na svojoj pozitivnoj ivici, brojač kašnjenja pokreće MCU nakon isteka vremenskog perioda.

Slika 8-4. Eksterno resetovanje tokom rada Fig8.4

Detekcija zatamnjenja

ATtiny25/45/85 ima sklop za detekciju zatamnjenja na čipu (BOD) za praćenje nivoa VCC tokom rada upoređujući ga sa fiksnim nivoom okidača. Nivo okidača za BOD može se odabrati pomoću BODLEVEL osigurača. Nivo okidača ima histerezu kako bi se osigurala detekcija braon-out bez skokova. Histerezu na nivou detekcije treba tumačiti kao VBOT+ = VBOT + VHYST/2 i VBOT- = VBOT – VHYST/2.

Kada je BOD omogućen, a VCC se smanjuje na vrijednost ispod nivoa okidača (VBOT-in Slika 8-5), resetovanje zatamnjenja se odmah aktivira. Kada se VCC poveća iznad nivoa okidača (VBOT+ in Slika 8-5), brojač kašnjenja pokreće MCU nakon isteka vremenskog perioda tTOUT.

BOD kolo će otkriti pad VCC samo ako je voltage ostaje ispod nivoa okidača duže od datog tBOD “Karakteristike sistema i resetiranja” na stranici 165. Fig8.5

Watchdog Reset

Kada Watchdog istekne, generirat će kratki resetni impuls u trajanju od jednog CK ciklusa. Na opadajućoj ivici ovog impulsa, tajmer kašnjenja počinje odbrojavati period vremena tTOUT. Pogledajte “Watchdog Timer” na stranici 42 za detalje o radu Watchdog tajmera.

Voltage Referentni signali za omogućavanje i vrijeme pokretanja

VoltagReferenca ima početno vrijeme koje može utjecati na način na koji treba da se koristi. Vrijeme pokretanja je navedeno “Karakteristike sistema i resetiranja” na stranici 165. Radi uštede energije, referenca nije uvijek uključena. Referenca je uključena u sledećim situacijama:

Kada je BOD omogućen (programiranjem BODLEVEL[2:0] bitova osigurača).

Kada je referenca pojasnog razmaka povezana na analogni komparator (postavljanjem bita ACBG u ACSR).

Kada je ADC uključen.

Stoga, kada BOD nije omogućen, nakon postavljanja bita ACBG ili omogućavanja ADC-a, korisnik uvijek mora dozvoliti da se referenca pokrene prije nego se koristi izlaz iz analognog komparatora ili ADC-a. Da bi se smanjila potrošnja energije u režimu isključenja napajanja, korisnik može izbjeći tri gore navedena uvjeta kako bi osigurao da je referenca isključena prije ulaska u Power-down mod.

Watchdog Timer

Watchdog tajmer je taktovan od On-chip oscilatora koji radi na 128 kHz. Kontrolom pretskalera Watchdog tajmera, interval resetovanja Watchdog-a se može podesiti kao što je prikazano Tabela 8-3 na stranici 46. WDR – Watchdog Reset – instrukcija resetuje Watchdog tajmer. Watchdog tajmer se također resetuje kada je onemogućen i kada dođe do resetovanja čipa. Za određivanje perioda resetovanja može se odabrati deset različitih perioda ciklusa. Ako period resetovanja istekne bez drugog Watchdog resetovanja, ATtiny25/45/85 se resetuje i izvršava iz vektora za resetovanje. Za detalje o vremenu o resetovanju Watchdog-a, pogledajte Tabela 8-3 na stranici 46.

Watchdog Timer se također može konfigurirati da generiše prekid umjesto resetiranja. Ovo može biti od velike pomoći kada koristite Watchdog za buđenje iz isključenja napajanja.

Kako bi se spriječilo nenamjerno onemogućavanje Watchdog-a ili nenamjerna promjena vremenskog perioda, osigurač WDTON bira dva različita nivoa sigurnosti kao što je prikazano na Tabela 8-1 Pogledajte “Vremenske sekvence za promjenu kon- figuracija Watchdog tajmera” na stranici 43 za detalje.

Tabela 8-1. WDT konfiguracija kao funkcija postavki osigurača za WDTON

WDTON Safety Level WDT početno stanje Kako onemogućiti WDT Kako promijeniti vremensko ograničenje
Neprogramirano 1 Onemogućeno Vremenski niz Bez ograničenja
Programirano 2 Omogućeno Uvijek omogućeno Vremenski niz

Slika 8-7. Watchdog Timer Watchdog

Vremenske sekvence za promjenu konfiguracije Watchdog tajmera

Redoslijed promjene konfiguracije neznatno se razlikuje između dva nivoa sigurnosti. Za svaki nivo su opisane posebne procedure.

Sigurnosni nivo 1: U ovom načinu rada, Watchdog Timer je u početku onemogućen, ali se može omogućiti pisanjem WDE bita u jedan bez ikakvih ograničenja. Vremenski slijed je potreban kada se onemogući omogućen Watchdog tajmer. Da biste onemogućili omogućen Watchdog Timer, morate slijediti sljedeću proceduru:

U istoj operaciji napišite logičku u WDCE i WDE. Logički jedan mora biti upisan u WDE bez obzira na prethodnu vrijednost WDE bita.

U sljedeća četiri ciklusa takta, u istoj operaciji, upišite WDE i WDP bitove po želji, ali sa obrisanim WDCE bitom.

Nivo sigurnosti 2: U ovom načinu rada, Watchdog Timer je uvijek omogućen, a WDE bit će uvijek čitati kao jedan. Vremenski slijed je potreban kada se mijenja Watchdog Time-out period. Da biste promijenili Watchdog Time-out, morate slijediti sljedeću proceduru:

U istoj operaciji napišite logičku u WDCE i WDE. Iako je WDE uvijek postavljen, WDE mora biti upisan u jedan da bi započeo vremenski niz.

U sljedeća četiri ciklusa takta, u istoj operaciji, upišite WDP bitove po želji, ali sa obrisanim WDCE bitom. Vrijednost upisana u WDE bit je irelevantna.

Kod Example

Sledeći kod nprample prikazuje jedan sklop i jednu C funkciju za isključivanje WDT-a. Bivšiample pretpostavlja da se prekidi kontrolišu (npr. onemogućavanjem prekida globalno) tako da neće doći do prekida tokom izvršavanja ovih funkcija.

Montažni kod Example(1)
WDT_off:

wdr

; Obrišite WDRF u MCUSR

ldi r16, (0<

out MCUSR, r16

; Napišite logičku jedinicu u WDCE i WDE

; Zadržite staru postavku predskalera kako biste spriječili nenamjerno resetovanje Watchdog-a

u r16, WDTCR

ori r16, (1<

van WDTCR, r16

; Isključite WDT

ldi r16, (0<

van WDTCR, r16

ret

C kod Example(1)
void WDT_off(void)

{

_WDR();

/* Obriši WDRF u MCUSR */ MCUSR = 0x00

/* Upisuje logičku jedinicu u WDCE i WDE */ WDTCR |= (1<

/* Isključi WDT */ WDTCR = 0x00;

}

Napomena: 1. Vidi “Šifra pramples ”na stranici 6.

Opis registra

MCUSR – MCU statusni registar

MCU statusni registar pruža informacije o tome koji je izvor resetiranja izazvao resetovanje MCU-a.

Bit 7 6 5 4 3 2 1 0
0x34 WDRF BORF EXTRF PORF MCUSR
Read/Write R R R R R/W R/W R/W R/W

Početna vrijednost 0 0 0 0 Pogledajte opis bita

Bitovi 7:4 – Res: Rezervisani bitovi

Ovi bitovi su rezervirani bitovi u ATtiny25/45/85 i uvijek će se čitati kao nula.

Bit 3 – WDRF: Watchdog Reset Flag

Ovaj bit se postavlja ako dođe do resetovanja Watchdog-a. Bit se resetuje resetovanjem po uključenju ili pisanjem logičke nule u zastavicu.

Bit 2 – BORF: Oznaka za poništavanje zatamnjenja

Ovaj bit se postavlja ako dođe do resetovanja zatamnjenja. Bit se resetuje resetovanjem po uključenju ili pisanjem logičke nule u zastavicu.

Bit 1 – EXTRF: Zastava eksternog resetovanja

Ovaj bit se postavlja ako dođe do eksternog resetovanja. Bit se resetuje resetovanjem po uključenju ili pisanjem logičke nule u zastavicu.

Bit 0 – PORF: Oznaka za resetovanje po uključenju

Ovaj bit se postavlja ako dođe do resetovanja po uključenju. Bit se resetuje samo upisivanjem logičke nule u zastavicu.

Da bi koristio Reset Flags za identifikaciju stanja resetovanja, korisnik bi trebao pročitati i zatim resetirati MCUSR što je prije moguće u programu. Ako se registar izbriše prije nego što dođe do drugog resetiranja, izvor resetiranja se može pronaći ispitivanjem Reset Flags.

WDTCR – Watchdog Timer Control Register

Bit 7 6 5 4 3 2 1 0
0x21 WDIF WDIE WDP3 WDCE WDE WDP2 WDP1 WDP0 WDTCR
Read/Write R/W R/W R/W R/W R/W R/W R/W R/W
Početna vrijednost 0 0 0 0 X 0 0 0

Bit 7 – WDIF: Watchdog Timeout Interrupt Flag

Ovaj bit se postavlja kada dođe do isteka vremena u Watchdog Timer-u i Watchdog Timer je konfiguriran za prekid. WDIF se briše hardverskim putem prilikom izvršavanja odgovarajućeg vektora za rukovanje prekidom. Alternativno, WDIF se briše upisivanjem logičke jedinice u zastavicu. Kada su I-bit u SREG i WDIE postavljeni, prekida se vremensko ograničenje Watchdog-a.

Bit 6 – WDIE: Omogućen prekid prekida vremenskog ograničenja čuvara

Kada se ovaj bit upiše u jedan, WDE se briše i I-bit u statusnom registru je postavljen, prekid vremenskog ograničenja Watchdog-a je omogućen. U ovom načinu rada se izvršava odgovarajući prekid umjesto resetiranja ako dođe do isteka u Watchdog tajmeru.

Ako je WDE postavljen, WDIE se automatski briše od strane hardvera kada dođe do isteka vremena. Ovo je korisno za održavanje sigurnosti Watchdog Reset-a dok se koristi prekid. Nakon što se WDIE bit obriše, sljedeći time-out će generirati reset. Da biste izbjegli Watchdog Reset, WDIE se mora postaviti nakon svakog prekida.

Tabela 8-2. Watchdog Timer Configuration

WDE WDIE Watchdog Timer State Akcija na Time-out
0 0 Zaustavljeno Nema
0 1 Trčanje Prekini
1 0 Trčanje Reset
1 1 Trčanje Prekini

Bit 4 – WDCE: Omogućena promjena Watchdog-a

Ovaj bit mora biti postavljen kada je WDE bit upisan u logičku nulu. U suprotnom, Watchdog neće biti onemogućen. Kada se jednom upiše na jedan, hardver će obrisati ovaj bit nakon četiri ciklusa takta. Pogledajte opis WDE bita za proceduru onemogućavanja Watchdog-a. Ovaj bit se također mora podesiti prilikom mijenjanja bitova predskalera. Vidi “Vremenske sekvence za promjenu konfiguracije Watchdog tajmera” na stranici 43.

Bit 3 – WDE: Watchdog Enable

Kada je WDE upisan u logičku jedinicu, Watchdog Timer je omogućen, a ako je WDE upisan na logičku nulu, funkcija Watchdog Timera je onemogućena. WDE se može obrisati samo ako WDCE bit ima logičku razinu jedan. Da biste onemogućili omogućen Watchdog Timer, morate slijediti sljedeću proceduru:

U istoj operaciji napišite logičku u WDCE i WDE. Logički jedan mora biti upisan u WDE iako je postavljen na jedan prije nego što operacija onemogućavanja počne.

U sljedeća četiri ciklusa takta upišite logičku 0 u WDE. Ovo onemogućava Watchdog.

U nivou sigurnosti 2, nije moguće onemogućiti Watchdog Timer, čak ni uz gore opisani algoritam. Vidi “Vremenske sekvence za promjenu konfiguracije Watchdog tajmera” na stranici 43.

U nivou sigurnosti 1, WDE je nadjačan od strane WDRF u MCUSR. Vidi “MCUSR – MCU statusni registar” na stranici 44 za opis WDRF-a. To znači da je WDE uvijek postavljen kada je WDRF postavljen. Za brisanje WDE-a, WDRF mora biti obrisan prije onemogućavanja Watchdog-a gore opisanom procedurom. Ova funkcija osigurava višestruka resetiranja tokom uvjeta koji uzrokuju kvar i sigurno pokretanje nakon kvara.

Napomena: Ako se watchdog timer neće koristiti u aplikaciji, važno je proći kroz proceduru onemogućavanja watchdog-a pri inicijalizaciji uređaja. Ako je Watchdog slučajno uključen, nprampAko je pokazivač u bijegu ili stanje zatamnjenja, uređaj će biti resetovan, što će zauzvrat dovesti do novog resetovanja čuvara. Da bi se izbjegla ova situacija, aplikativni softver treba uvijek izbrisati WDRF zastavicu i WDE kontrolni bit u rutini inicijalizacije.

Bitovi 5, 2:0 – WDP[3:0]: Watchdog Timer Prescaler 3, 2, 1 i 0

WDP[3:0] bitovi određuju predskaliranje Watchdog tajmera kada je Watchdog tajmer omogućen. Prikazane su različite vrijednosti prethodnog skaliranja i njihovi odgovarajući vremenski periodi Tabela 8-3.

Tabela 8-3. Watchdog Timer Prescale Select

WDP3 WDP2 WDP1 WDP0 Broj ciklusa WDT oscilatora Tipično vremensko ograničenje na VCC = 5.0V
0 0 0 0 2K (2048) ciklusa 16 ms
0 0 0 1 4K (4096) ciklusa 32 ms
0 0 1 0 8K (8192) ciklusa 64 ms
0 0 1 1 16K (16384) ciklusa 0.125 s
0 1 0 0 32K (32764) ciklusa 0.25 s
0 1 0 1 64K (65536) ciklusa 0.5 s
0 1 1 0 128K (131072) ciklusa 1.0 s
0 1 1 1 256K (262144) ciklusa 2.0 s
1 0 0 0 512K (524288) ciklusa 4.0 s
1 0 0 1 1024K (1048576) ciklusa 8.0 s

Tabela 8-3. Watchdog Timer Prescale Select (nastavak)

WDP3 WDP2 WDP1 WDP0 Broj ciklusa WDT oscilatora Tipično vremensko ograničenje na VCC = 5.0V
1 0 1 0 Rezervirano(1)
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1

Napomena: 1. Ako je odabrano, koristit će se jedno od važećih postavki ispod 0b1010.

Prekidi

Ovaj odjeljak opisuje specifičnosti rukovanja prekidima kako se izvodi u ATtiny25/45/85. Za opšte objašnjenje rukovanja AVR prekidima, pogledajte “Resetovanje i rukovanje prekidima” na stranici 12.

Vektori prekida u ATtiny25/45/85

Vektori prekida za ATtiny25/45/85 su opisani u Tabela 9-1ispod.

Tabela 9-1. Reset i prekid vektora

Vektor br. Adresa programa Izvor Definicija prekida
1 0x0000 RESET Eksterni pin, resetovanje po uključenju, resetovanje zabravljivanja, resetovanje nadzornog psa
2 0x0001 INT0 Zahtjev za vanjskim prekidom 0
3 0x0002 PCINT0 Zahtjev za prekidom promjene pina 0
4 0x0003 TIMER1_COMPA Tajmer/brojač1 Uporedi Podudaranje A
5 0x0004 TIMER1_OVF Timer/Counter1 Overflow
6 0x0005 TIMER0_OVF Timer/Counter0 Overflow
7 0x0006 EE_RDY EEPROM spreman
8 0x0007 ANA_COMP Analogni komparator
9 0x0008 ADC ADC konverzija završena
10 0x0009 TIMER1_COMPB Tajmer/brojač1 Uporedi Uparivanje B
11 0x000A TIMER0_COMPA Tajmer/brojač0 Uporedi Podudaranje A
12 0x000B TIMER0_COMPB Tajmer/brojač0 Uporedi Uparivanje B
13 0x000C WDT Watchdog Time-out
14 0x000D USI_START USI START
15 0x000E USI_OVF USI Overflow

Ako program nikada ne omogući izvor prekida, vektori prekida se ne koriste, a regularni programski kod se može postaviti na ove lokacije.

Tipično i generalno podešavanje za adrese vektora prekida u ATtiny25/45/85 prikazano je u programu example ispod.

Montažni kod Example
.org 0x0000 ;Postavite adresu sljedećeg izjava
rjmp RESET ; Adresa 0x0000
rjmp INT0_ISR ; Adresa 0x0001
rjmp PCINT0_ISR ; Adresa 0x0002
rjmp TIM1_COMPA_ISR ; Adresa 0x0003
rjmp TIM1_OVF_ISR ; Adresa 0x0004
rjmp TIM0_OVF_ISR ; Adresa 0x0005
rjmp EE_RDY_ISR ; Adresa 0x0006
rjmp ANA_COMP_ISR ; Adresa 0x0007
rjmp ADC_ISR ; Adresa 0x0008
rjmp TIM1_COMPB_ISR ; Adresa 0x0009
rjmp TIM0_COMPA_ISR ; Adresa 0x000A
rjmp TIM0_COMPB_ISR ; Adresa 0x000B
rjmp WDT_ISR ; Adresa 0x000C
rjmp USI_START_ISR ; Adresa 0x000D
rjmp USI_OVF_ISR ; Adresa 0x000E
RESETOVATI: ; Početak glavnog programa
; Adresa 0x000F

Napomena: vidi “Šifra pramples ”na stranici 6.

Eksterni prekidi

Eksterne prekide pokreće INT0 pin ili bilo koji od pinova PCINT[5:0]. Obratite pažnju da, ako je omogućeno, prekidi će se pokrenuti čak i ako su pinovi INT0 ili PCINT[5:0] konfigurisani kao izlazi. Ova funkcija pruža način generiranja softverskog prekida. Promjena pinova prekida PCI će se pokrenuti ako se bilo koji omogućeni PCINT[5:0] pin promijeni. PCMSK registar kontrolira koji pinovi doprinose prekidima promjene pina. Prekidi promjene pinova na PCINT[5:0] se detektuju asinhrono. Ovo implicira da se ovi prekidi mogu koristiti za buđenje dijela također iz stanja mirovanja osim iz stanja mirovanja.

INT0 prekidi mogu biti pokrenuti opadajućom ili rastućom ivicom ili niskim nivoom. Ovo je postavljeno kako je naznačeno u specifikaciji za MCU kontrolni registar – MCUCR. Kada je INT0 prekid omogućen i konfigurisan kao aktiviran nivoom, prekid će se pokrenuti sve dok se pin drži nisko. Imajte na umu da prepoznavanje padajućih ili rastućih ivica prekida na INT0 zahtijeva prisustvo I/O sata, opisanog u “Sat sistemi i njihova distribucija” na strana 23.

Prekid niskog nivoa

Prekid niskog nivoa na INT0 detektuje se asinhrono. Ovo implicira da se ovaj prekid može koristiti za buđenje dijela također iz stanja mirovanja osim iz stanja mirovanja. I/O sat se zaustavlja u svim režimima mirovanja osim u stanju mirovanja.

Imajte na umu da ako se prekid aktiviran nivoom koristi za buđenje nakon gašenja napajanja, potreban nivo se mora zadržati dovoljno dugo da MCU dovrši buđenje kako bi pokrenuo prekid nivoa. Ako nivo nestane prije isteka vremena pokretanja, MCU će se i dalje probuditi, ali neće biti generiran prekid. Vrijeme pokretanja definirano je osiguračima SUT i CKSEL kao što je opisano u “Sistemski sat i opcije sata” na stranici 23.

Ako se niski nivo na pinu za prekid ukloni prije nego se uređaj probudi, izvršavanje programa neće biti preusmjereno na rutinu servisiranja prekida, već će se nastaviti od instrukcije koja slijedi naredbu SLEEP.

Pin Change Interrupt Timing

Bivšiampprikazan je broj vremena prekida promjene pinova Slika 9-1.

Opis registra

MCUCR – MCU kontrolni registar

Registar kontrole eksternog prekida A sadrži kontrolne bitove za kontrolu čula prekida.

Bit 7 6 5 4 3 2 1 0
0x35 BODS PUD SE SM1 SM0 BODSE ISC01 ISC00 MCUCR
Read/Write R R/W R/W R/W R/W R R/W R/W
Početna vrijednost 0 0 0 0 0 0 0 0

Bitovi 1:0 – ISC0[1:0]: Kontrola čula prekida 0 Bit 1 i Bit 0

Eksterni prekid 0 se aktivira eksternim pinom INT0 ako je postavljena SREG I-zastavica i odgovarajuća maska ​​prekida. Nivo i rubovi na eksternom INT0 pinu koji aktiviraju prekid su definirani u Tabela 9-2. Vrijednost na pinu INT0 je sampled prije otkrivanja ivica. Ako je odabran prekid na rubu ili prekidač, impulsi koji traju duže od jednog perioda takta će generirati prekid. Nije zagarantovano da će kraći impulsi generirati prekid. Ako je odabran prekid niske razine, niski nivo se mora zadržati do završetka instrukcije koja se trenutno izvršava da bi se generirao prekid.

Tabela 9-2. Interrupt 0 Sense Control

ISC01 ISC00 Opis
0 0 Niski nivo INT0 generiše zahtjev za prekid.
0 1 Svaka logička promjena na INT0 generira zahtjev za prekid.
1 0 Opadajući rub INT0 generiše zahtjev za prekid.
1 1 Rastuća ivica INT0 generira zahtjev za prekid.

GIMSK – Registar maski opšteg prekida

Bit 7 6 5 4 3 2 1 0
0x3B INT0 PCIe GIMSK
Read/Write R R/W R/W R R R R R
Početna vrijednost 0 0 0 0 0 0 0 0

Bitovi 7, 4:0 – Res: Rezervisani bitovi

Ovi bitovi su rezervirani bitovi u ATtiny25/45/85 i uvijek će se čitati kao nula.

Bit 6 – INT0: Omogućen zahtjev za eksternim prekidom 0

Kada je INT0 bit postavljen (jedan) i I-bit u statusnom registru (SREG) postavljen (jedan), eksterni pin prekid je omogućen. Bitovi 0/1 kontrole čula prekida prekida (ISC0 i ISC01) u MCU kontrolnom registru (MCUCR) definiraju da li se eksterni prekid aktivira na rastućoj i/ili opadajućoj ivici INT00 pina ili senzora nivoa. Aktivnost na pinu će uzrokovati zahtjev za prekid čak i ako je INT0 konfiguriran kao izlaz. Odgovarajući prekid zahtjeva za eksterni prekid 0 se izvršava iz INT0 vektora prekida.

Bit 5 – PCIE: Omogućen prekid promjene pina

Kada je PCIE bit postavljen (jedan) i I-bit u statusnom registru (SREG) postavljen (jedan), prekid promjene pina je omogućen. Svaka promjena na bilo kojem omogućenom PCINT[5:0] pinu će uzrokovati prekid. Odgovarajući prekid zahtjeva za prekidom promjene pina se izvršava iz PCI vektora prekida. PCINT[5:0] pinovi su omogućeni pojedinačno od strane PCMSK0 registra.

GIFR – General Interrupt Flag Register

Bit 7 6 5 4 3 2 1 0
0x3A INTF0 PCIF GIFR
Read/Write R R/W R/W R R R R R
Početna vrijednost 0 0 0 0 0 0 0 0

Bitovi 7, 4:0 – Res: Rezervisani bitovi

Ovi bitovi su rezervirani bitovi u ATtiny25/45/85 i uvijek će se čitati kao nula.

Bit 6 – INTF0: Oznaka eksternog prekida 0

Kada promjena ruba ili logike na pinu INT0 pokrene zahtjev za prekidom, INTF0 postaje postavljen (jedan). Ako su I-bit u SREG i INT0 bit u GIMSK postavljeni (jedan), MCU će skočiti na odgovarajući vektor prekida. Oznaka se briše kada se izvrši prekidna rutina. Alternativno, zastavicu se može obrisati pisanjem logične. Ova zastavica se uvijek briše kada je INT0 konfigurisan kao prekid nivoa.

Bit 5 – PCIF: Zastavica prekida promjene pina

Kada promjena logike na bilo kojem PCINT[5:0] pinu pokrene zahtjev za prekidom, PCIF postaje postavljen (jedan). Ako su I-bit u SREG i PCIE bit u GIMSK postavljeni (jedan), MCU će skočiti na odgovarajući vektor prekida. Oznaka se briše kada se izvrši prekidna rutina. Alternativno, zastavicu se može obrisati pisanjem logične.

PCMSK – Pin Change Mask Register

Bit 7 6 5 4 3 2 1 0
0x15 PCINT5 PCINT4 PCINT3 PCINT2 PCINT1 PCINT0 PCMSK
Read/Write R R R/W R/W R/W R/W R/W R/W
Početna vrijednost 0 0 0 0 0 0 0 0

Bitovi 7:6 – Res: Rezervisani bitovi

Ovi bitovi su rezervirani bitovi u ATtiny25/45/85 i uvijek će se čitati kao nula.

Bitovi 5:0 – PCINT[5:0]: Pin Change Enable Mask 5:0

Svaki PCINT[5:0] bit bira da li je prekid promjene pina omogućen na odgovarajućem I/O pinu. Ako je PCINT[5:0] postavljen i PCIE bit u GIMSK postavljen, prekid promjene pina je omogućen na odgovarajućem I/O pinu. Ako je PCINT[5:0] obrisan, prekid promjene pina na odgovarajućem I/O pinu je onemogućen.

I/O portovi

Uvod

Svi AVR portovi imaju istinsku funkciju Read-Modify-Write kada se koriste kao opšti digitalni I/O portovi. To znači da se smjer jednog pina porta može promijeniti bez nenamjerne promjene smjera bilo kojeg drugog pina pomoću SBI i CBI instrukcija. Isto vrijedi i za promjenu vrijednosti pogona (ako je konfiguriran kao izlaz) ili omogućavanje/onemogućavanje pull-up otpornika (ako je konfigurirano kao ulaz). Svaki izlazni bafer ima simetrične karakteristike pogona sa visokim kapacitetom ponora i izvora. Pin drajver je dovoljno jak da direktno pokreće LED ekrane. Svi pinovi porta imaju individualno biranje pull-up otpornika sa napajanjemtage invarijantni otpor. Svi I/O pinovi imaju zaštitne diode za VCC i uzemljenje kao što je naznačeno u Slika 10-1. Pogledajte “Električne karakteristike” na stranici 161 za kompletnu listu parametara.

Slika 10-1. I/O pin ekvivalentna shema

Fig10

Svi registri i reference bitova u ovom odeljku su napisani u opštem obliku. Malo slovo “x” predstavlja numeričko slovo za port, a malo “n” predstavlja broj bita. Međutim, kada se koristi registar ili bit definira u programu, mora se koristiti precizan oblik. Za nprample, PORTB3 za bit br. 3 u portu B, ovdje dokumentirano općenito kao PORTxn. Fizički I/O registri i lokacije bitova su navedeni u „Opis registracije“ uključen strana 64.

Tri I/O memorijske adrese su dodijeljene za svaki port, po jedna za registar podataka – PORTx, registar smjera podataka – DDRx i pinove za ulaz porta – PINx. I/O lokacija ulaznih pinova porta je samo za čitanje, dok se registar podataka i registar smjera podataka čitaju/upisuju. Međutim, upisivanje logičke jedinice u bit u PINx registru, rezultiraće prebacivanjem odgovarajućeg bita u registru podataka. Osim toga, Pull-up Disable – PUD bit u MCUCR-u onemogućava funkciju povlačenja za sve pinove na svim portovima kada je postavljena.

Upotreba I/O porta kao General Digital I/O opisana je u “Portovi kao opšti digitalni I/O” na stranici 53. Većina pinova porta je multipleksirana sa alternativnim funkcijama za periferne karakteristike na uređaju. Kako svaka alternativna funkcija ometa pin porta opisano je u “Funkcije alternativnog porta” na stranici 57. Pogledajte pojedinačne odjeljke modula za potpuni opis alternativnih funkcija.

Imajte na umu da omogućavanje alternativne funkcije nekih pinova porta ne utiče na upotrebu drugih pinova u portu kao opštih digitalnih I/O.

Portovi kao General Digital I/O

Portovi su dvosmerni I/O portovi sa opcionim unutrašnjim izvlačenjem. Slika 10-2 prikazuje funkcionalni opis jednog pina I/O porta, koji se ovdje općenito naziva Pxn.

Slika 10-2. General Digital I/O(1)

Fig10

Konfigurisanje pina

Svaki pin porta se sastoji od tri registarska bita: DDxn, PORTxn i PINxn. Kao što je prikazano u „Opis registracije“ uključen strana 64, DDxn bitovima se pristupa na DDRx I/O adresi, PORTxn bitovima na PORTx I/O adresi i PINxn bitovima na PINx I/O adresi.

DDxn bit u DDRx registru bira smjer ovog pina. Ako je DDxn napisan logički jedan, Pxn je konfigurisan kao izlazni pin. Ako je DDxn upisana logička nula, Pxn je konfigurisan kao ulazni pin.

Ako je PORTxn napisan logički jedan kada je pin konfiguriran kao ulazni pin, aktivira se pull-up otpornik. Da biste isključili pull-up otpornik, PORTxn mora biti upisana logička nula ili pin mora biti konfiguriran kao izlazni pin. Pinovi porta su trostruki kada stanje resetovanja postane aktivno, čak i ako sat ne radi.

Ako je PORTxn napisan kao logička jedinica kada je pin konfiguriran kao izlazni pin, pin porta se pokreće visoko (jedan). Ako je na PORTxn upisana logička nula kada je pin konfiguriran kao izlazni pin, pin porta se pokreće nisko (nula).

Prebacivanje pina

Pisanjem logičke jedinice u PINxn mijenja se vrijednost PORTxn, neovisno o vrijednosti DDRxn. Imajte na umu da se SBI instrukcija može koristiti za prebacivanje jednog bita u portu.

Prebacivanje između ulaza i izlaza

Prilikom prebacivanja između trostrukog stanja ({DDxn, PORTxn} = 0b00) i visokog izlaza ({DDxn, PORTxn} = 0b11), srednje stanje sa omogućenim pull-up {DDxn, PORTxn} = 0b01) ili niskim izlazom ({DDxn, PORTxn} = 0b10) se mora pojaviti. Obično je stanje omogućeno za povlačenje potpuno prihvatljivo, jer okruženje sa visokim impedantom neće primijetiti razliku između snažnog high drivera i pull-up-a. Ako to nije slučaj, PUD bit u MCUCR registru može se podesiti da onemogući sva povlačenja na svim portovima.

Prebacivanje između ulaza sa povlačenjem i niskim izlazom stvara isti problem. Korisnik mora koristiti ili tri-stanje ({DDxn, PORTxn} = 0b00) ili izlazno visoko stanje ({DDxn, PORTxn} = 0b10) kao međukorak.

Tabela 10-1 sumira kontrolne signale za pin vrijednost.

Tabela 10-1. Konfiguracije pinova porta

DDxn PORTxn PUD

(u MCUCR)

I/O Pull-up Komentar
0 0 X Input br Tri-state (Hi-Z)
0 1 0 Input Da Pxn će izvor struje ako ekst. povukao nisko.
0 1 1 Input br Tri-state (Hi-Z)
1 0 X Izlaz br Nizak izlaz (umivaonik)
1 1 X Izlaz br Visoki izlaz (izvor)

Čitanje PIN vrijednosti

Neovisno o postavci bita smjera podataka DDxn, pin porta se može očitati preko bita registra PINxn. Kao što je prikazano u Slika 10-2, bit PINxn registra i prethodni zasun čine sinhronizator. Ovo je potrebno kako bi se izbjegla metastabilnost ako fizički pin promijeni vrijednost blizu ruba unutrašnjeg sata, ali također uvodi kašnjenje. Slika 10-3 prikazuje vremenski dijagram sinhronizacije prilikom čitanja eksterno primenjene vrednosti pina. Maksimalna i minimalna kašnjenja propagacije su označena kao tpd,max i tpd,min.

Uzmite u obzir period takta koji počinje ubrzo nakon prve padajuće ivice sistemskog sata. Zasun je zatvoren kada je sat nizak, a postaje transparentan kada je sat visok, kao što je naznačeno zasjenjenom regijom signala "SYNC LATCH". Vrijednost signala se zaključava kada sistemski sat padne nizak. Upisuje se u PINxn registar na slijedećoj pozitivnoj ivici takta. Kao što pokazuju dvije strelice tpd,max i tpd,min, jedan prijelaz signala na pinu će biti odgođen između ½ i 1½ perioda sistemskog takta u zavisnosti od vremena tvrdnje.

Prilikom čitanja softveru dodijeljene vrijednosti pina, mora se umetnuti nop instrukcija kako je naznačeno u Slika 10-4. Instrukcija izlaza postavlja signal “SYNC LATCH” na pozitivnu ivicu sata. U ovom slučaju, kašnjenje tpd kroz sinhronizator je jedan period sistemskog takta.

Sledeći kod nprample pokazuje kako postaviti pinove porta B 0 i 1 visoko, 2 i 3 nisko, i definirati pinove porta od 4 do 5 kao ulaz sa povlačenjem dodijeljenim pinu 4. Rezultirajuće vrijednosti pinova se ponovo čitaju, ali kao što je prethodno diskutovano, uključena je instrukcija nop kako bi se mogla pročitati vrijednost nedavno dodijeljena nekim od pinova.

Montažni kod Example(1)

; Definirajte zgibove i postavite visoke rezultate

; Definirajte upute za pinove porta

ldi        r16,(1<<PB4)|(1<<PB1)|(1<<PB0)

ldi        r17,(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0)

out PORTB,r16

van DDRB,r17

; Ubacite nop za sinhronizaciju

nop

; Čitanje portova

u r16,PINB

Napomena: Za program sastavljanja, dva privremena registra se koriste za minimiziranje vremena od povlačenja koji se postavljaju na pinove 0, 1 i 4, sve dok se bitovi smjera ne postave ispravno, definirajući bit 2 i 3 kao niske i redefinirajući bitove 0 i 1 kao jaki visoki vozači.

C kod Example
unsigned char i;

/* Definirajte zgibove i postavite visoke rezultate */

/* Definirajte smjerove za pinove porta */ PORTB = (1<

DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0);

/* Ubaci nop za sinhronizaciju*/

_NOP();

/* Čitanje pinova porta */ i = PINB;

Omogućavanje digitalnog ulaza i režim mirovanja

Kao što je prikazano u Slika 10-2, digitalni ulazni signal može biti clamped na masu na ulazu schmitt-okidača. Signal označen SLEEP na slici, postavlja MCU Sleep Controller u Power-down modu kako bi se izbjegla velika potrošnja energije ako neki ulazni signali ostanu plutajući ili imaju nivo analognog signala blizu VCC/2.

SLEEP je poništen za pinove porta koji su omogućeni kao eksterni prekidni pinovi. Ako zahtjev za eksternim prekidom nije omogućen, SLEEP je aktivan i za ove pinove. SLEEP je također nadjačan raznim drugim alternativnim funkcijama kao što je opisano u “Funkcije alternativnog porta” na stranici 57.

Ako je logički visoki nivo („jedan“) prisutan na asinhronom eksternom prekidnom pinu konfigurisanom kao „Prekid na rastućoj ivici, opadajućoj ivici ili bilo kojoj logičkoj promeni na pinu“ dok eksterni prekid nije omogućen, odgovarajuća zastavica eksternog prekida će se podesi kada se nastavlja iz gore navedenog stanja mirovanja, kao clampstavljanje u ovaj način mirovanja proizvodi traženu logičku promjenu.

Unconnected Pins

Ako su neke igle neiskorišćene, preporučuje se da osigurate da ovi igle imaju definisan nivo. Iako je većina digitalnih ulaza onemogućena u načinima dubokog mirovanja kao što je gore opisano, plutajuće ulaze treba izbjegavati kako bi se smanjila potrošnja struje u svim ostalim načinima u kojima su digitalni ulazi omogućeni (Reset, Active mode i Idle mode).

Najjednostavniji način da se osigura definirani nivo neiskorištenog pin-a je omogućavanje unutrašnjeg povlačenja. U ovom slučaju, povlačenje će biti onemogućeno tokom resetiranja. Ako je niska potrošnja energije tokom resetovanja važna, preporučuje se korištenje eksternog pull-up ili pulldown. Povezivanje neiskorištenih pinova direktno na VCC ili GND se ne preporučuje, jer to može uzrokovati prevelike struje ako se pin slučajno konfiguriše kao izlaz.

Alternativne funkcije porta

Većina pinova porta ima alternativne funkcije osim što su opći digitalni I/O. Slika 10-5 pokazuje kako port pin upravlja signalima iz pojednostavljenog Slika 10-2 može se nadjačati alternativnim funkcijama. Signali nadjačavanja možda nisu prisutni u svim pinovima porta, ali slika služi kao generički opis koji se primjenjuje na sve pinove porta u porodici AVR mikrokontrolera.

Tabela 10-2. Generički opis nadjačavajućih signala za alternativne funkcije

Naziv signala Puno ime Opis
PUOE Pull-up Override Enable Ako je ovaj signal postavljen, omogućavanje povlačenja se kontrolira PUOV signalom. Ako je ovaj signal obrisan, povlačenje je omogućeno kada

{DDxn, PORTxn, PUD} = 0b010.

PUOV Pull-up Override Value Ako je PUOE postavljen, povlačenje je omogućeno/onemogućeno kada je PUOV postavljen/obrisan, bez obzira na postavku bitova DDxn, PORTxn i PUD registra.
DDOE Omogući zaobilaženje smjera podataka Ako je ovaj signal postavljen, Omogućavanje izlaznog drajvera kontroliše DDOV signal. Ako je ovaj signal obrisan, izlazni drajver je omogućen bitom DDxn Registra.
DDOV Vrijednost zaobilaženja smjera podataka Ako je DDOE postavljen, izlazni upravljački program je omogućen/onemogućen kada je DDOV postavljen/obrisan, bez obzira na postavku bita registra DDxn.
PVOE Omogućeno zaništavanje vrijednosti porta Ako je ovaj signal postavljen i izlazni drajver je omogućen, vrijednost porta se kontrolira PVOV signalom. Ako je PVOE obrisan, a izlazni drajver je omogućen, vrijednost porta se kontrolira bitom registra PORTxn.
PVOV Port Value Override Value Ako je PVOE postavljen, vrijednost porta je postavljena na PVOV, bez obzira na postavku bita registra PORTxn.
PTOE Port Toggle Override Enable Ako je PTOE postavljen, bit registra PORTxn je invertiran.
DIEOE Digitalni ulaz Enable Override Enable Ako je ovaj bit postavljen, Omogućavanje digitalnog ulaza kontroliše DIEOV signal. Ako se ovaj signal izbriše, Omogućavanje digitalnog ulaza je određeno MCU stanjem (Normalni režim, režim mirovanja).
DIEOV Digital Input Enable Override Value Ako je DIEOE postavljen, digitalni ulaz je omogućen/onemogućen kada je DIEOV postavljen/obrisan, bez obzira na stanje MCU (Normalni način rada, režim mirovanja).
DI Digitalni ulaz Ovo je digitalni ulaz za alternativne funkcije. Na slici je signal spojen na izlaz schmitt-okidača, ali prije sinkronizatora. Osim ako se digitalni ulaz ne koristi kao izvor takta, modul sa alternativnom funkcijom koristit će vlastiti sinhronizator.
AIO Analogni ulaz / izlaz Ovo je analogni ulaz/izlaz na/iz alternativnih funkcija. Signal je povezan direktno na pad i može se koristiti dvosmjerno.

Sljedeći pododjeljci ukratko opisuju alternativne funkcije za svaki port i povezuju signale nadjačavanja s alternativnom funkcijom. Pogledajte opis alternativne funkcije za više detalja.

Alternativne funkcije luke B

Pinovi porta B sa alternativnom funkcijom su prikazani Tabela 10-3.

Tabela 10-3. Alternativne funkcije pinova porta B

Port Pin Alternativna funkcija
PB5

RESET: Resetujte Pin

dW: debugWIRE I/O ADC0: ADC ulazni kanal 0

PCINT5: prekid promjene pina, izvor 5

PB4 XTAL2: Izlaz kristalnog oscilatora CLKO: Izlaz sistemskog takta ADC2: ADC ulazni kanal 2

OC1B: Tajmer/brojač1 Usporedi Match B Izlaz PCINT4: Pin Change Interrupt 0, Source 4

PB3 XTAL1: Ulaz kristalnog oscilatora CLKI: Ulaz eksternog takta ADC3: ADC ulazni kanal 3

OC1B: komplementarni tajmer/brojač1 uporedi podudaranje B Izlaz PCINT3: prekid promjene pina 0, izvor 3

PB2 SCK: Ulaz serijskog sata ADC1: ADC ulazni kanal 1

T0: Tajmer/brojač0 izvor sata USCK: USI sat (trožični način rada) SCL : USI sat (dvožični način rada) INT0: vanjski prekid 0 Ulaz PCINT2: prekid promjene pina 0, izvor 2

PB1 MISO: SPI Master Data Input / Slave Data Output AIN1: Analogni komparator, Negative Input OC0B: Tajmer/Counter0 Uporedi Match B Izlaz OC1A: Tajmer/Counter1 Usporedi Match A Izlaz DO: USI Izlaz podataka (Three Wire Mode) PCINT1:Pin Change Interrupt 0, izvor 1
PB0 MOSI:: SPI Master Data Output / Slave Data Input AIN0: Analog Comparator, Positive Input

OC0A: Timer/Counter0 Usporedi Usklađivanje izlaza

OC1A: komplementarni tajmer/brojač1 uporedi Usporedi izlaz A DI: USI unos podataka (trižični način rada)

SDA: USI unos podataka (dvožični način rada) AREF: eksterna analogna referenca PCINT0: prekid promjene pina 0, izvor 0

Port B, Bit 5 – RESET/dW/ADC0/PCINT5

RESET: Eksterni ulaz za resetovanje je aktivan nisko i omogućen je deprogramiranjem (“1”) RSTDISBL osigurača. Pullup je aktiviran, a izlazni drajver i digitalni ulaz su deaktivirani kada se pin koristi kao RESET pin.

dW: Kada je osigurač debugWIRE Enable (DWEN) programiran, a bitovi zaključavanja nisu programirani, debugWIRE sistem unutar ciljnog uređaja se aktivira. Pin porta RESET konfiguriran je kao dvosmjerni I/O pin wire-AND (open-drain) sa omogućenim pull-up i postaje komunikacijski prolaz između cilja i emulatora.

ADC0: Analogno-digitalni pretvarač, kanal 0.

PCINT5: Pin Promjena izvora prekida 5.

Port B, Bit 4 – XTAL2/CLKO/ADC2/OC1B/PCINT4

XTAL2: Pin 2 oscilatora čipa. Koristi se kao pin takta za sve izvore takta čipa osim internog kalibriranog RC oscilatora i eksternog takta. Kada se koristi kao pin sata, pin se ne može koristiti kao I/O pin. Kada se koristi interni kalibrirani RC oscilator ili eksterni sat kao izvor takta čipa, PB4 služi kao običan I/O pin.

CLKO: Podijeljeni sistemski sat može biti izlaz na pin PB4. Podijeljeni sistemski sat će biti izlaz ako je CKOUT osigurač programiran, bez obzira na postavke PORTB4 i DDB4. Također će biti izlaz tokom resetiranja.

ADC2: Analogno-digitalni pretvarač, kanal 2.

OC1B: Output Compare Match izlaz: PB4 pin može poslužiti kao eksterni izlaz za Timer/Counter1 Compare Match B kada je konfigurisan kao izlaz (DDB4 set). OC1B pin je također izlazni pin za funkciju tajmera PWM moda.

PCINT4: Pin Promjena izvora prekida 4.

Port B, Bit 3 – XTAL1/CLKI/ADC3/OC1B/PCINT3

XTAL1: Pin 1 oscilator takta čipa. Koristi se za sve izvore takta čipa osim internog RC oscilatora koji se može kalibrirati. Kada se koristi kao pin za sat, pin se ne može koristiti kao I/O pin.

CLKI: Ulaz sata sa eksternog izvora takta, vidi “Spoljni sat” na stranici 26.

ADC3: Analogno-digitalni pretvarač, kanal 3.

OC1B: Invertirani izlaz uporednog podudaranja izlaza: PB3 pin može poslužiti kao eksterni izlaz za tajmer/brojač1 uporedno podudaranje B kada je konfigurisan kao izlaz (DDB3 set). Pin OC1B je također invertirani izlazni pin za funkciju tajmera PWM moda.

PCINT3: Pin Promjena izvora prekida 3.

Port B, Bit 2 – SCK/ADC1/T0/USCK/SCL/INT0/PCINT2

SCK: izlaz glavnog sata, ulazni pin slave sata za SPI kanal. Kada je SPI omogućen kao Slave, ovaj pin je konfigurisan kao ulaz bez obzira na postavku DDB2. Kada je SPI omogućen kao glavni, smjer podataka ovog pina kontrolira DDPB2. Kada je pin prisiljen od strane SPI-a da bude ulaz, povlačenje se i dalje može kontrolirati bitom PORTB2.

ADC1: Analogno-digitalni pretvarač, kanal 1.

T0: Tajmer/brojač0 izvor brojača.

USCK: Sat sa univerzalnim serijskim interfejsom u tri žice.

SCL: Dvožični način rada Serijski sat za USI dvožični način rada.

INT0: Eksterni izvor prekida 0.

PCINT2: Pin Promjena izvora prekida 2.

Port B, Bit 1 – MISO/AIN1/OC0B/OC1A/DO/PCINT1

MISO: Ulaz glavnih podataka, izlazni pin slave podataka za SPI kanal. Kada je SPI omogućen kao glavni, ovaj pin je konfigurisan kao ulaz bez obzira na postavku DDB1. Kada je SPI omogućen kao Slave, smjer podataka ovog pina kontrolira DDB1. Kada je pin prisiljen od strane SPI-a da bude ulaz, povlačenje se i dalje može kontrolirati bitom PORTB1.

AIN1: Negativni ulaz analognog komparatora. Konfigurišite pin porta kao ulaz sa isključenim internim povlačenjem kako biste izbegli da funkcija digitalnog porta ometa funkciju analognog komparatora.

OC0B: Output Compare Match output. Pin PB1 može poslužiti kao eksterni izlaz za Timer/Counter0 Compare Match B. PB1 pin mora biti konfiguriran kao izlaz (DDB1 set (jedan)) da bi služio ovoj funkciji. OC0B pin je također izlazni pin za funkciju tajmera PWM moda.

OC1A: Output Compare Match izlaz: PB1 pin može poslužiti kao eksterni izlaz za Timer/Counter1 Compare Match B kada je konfiguriran kao izlaz (DDB1 set). Pin OC1A je također izlazni pin za funkciju tajmera PWM moda.

DO: Trožični način rada Univerzalni serijski interfejs izlaz podataka. Trožični način rada Izlaz podataka nadjačava vrijednost PORTB1 i prenosi se na port kada je bit smjera podataka DDB1 postavljen (jedan). PORTB1 i dalje omogućava povlačenje, ako je smjer unet i PORTB1 je postavljen (jedan).

PCINT1: Pin Promjena izvora prekida 1.

Port B, Bit 0 – MOSI/AIN0/OC0A/OC1A/DI/SDA/AREF/PCINT0

MOSI: SPI izlaz master podataka, ulaz slave podataka za SPI kanal. Kada je SPI omogućen kao Slave, ovaj pin je konfigurisan kao ulaz bez obzira na postavku DDB0. Kada je SPI omogućen kao glavni, smjer podataka ovog pina kontrolira DDB0. Kada je pin prisiljen od strane SPI da bude ulaz, povlačenje se i dalje može kontrolirati bitom PORTB0.

AIN0: Pozitivan ulaz analognog komparatora. Konfigurišite pin porta kao ulaz sa isključenim internim povlačenjem kako biste izbegli da funkcija digitalnog porta ometa funkciju analognog komparatora.

OC0A: Output Compare Match output. PB0 pin može poslužiti kao eksterni izlaz za Tajmer/Counter0 Compare Match A kada je konfigurisan kao izlaz (DDB0 set (jedan)). Pin OC0A je također izlazni pin za funkciju tajmera PWM moda.

OC1A: Invertirani izlaz uporednog podudaranja izlaza: PB0 pin može poslužiti kao eksterni izlaz za tajmer/brojač1 uporedi uparivanje B kada je konfigurisan kao izlaz (DDB0 set). Pin OC1A je također invertirani izlazni pin za funkciju tajmera PWM moda.

SDA: Dvožični način rada podataka serijskog sučelja.

AREF: Eksterna analogna referenca za ADC. Drajver za povlačenje i izlaz su onemogućeni na PB0 kada se pin koristi kao eksterna referenca ili interni Voltage Referenca sa eksternim kondenzatorom na AREF pinu.

DI: Unos podataka u trožičnom USI modu. USI trožični način rada ne poništava normalne funkcije porta, tako da pin mora biti konfiguriran kao ulaz za DI funkciju.

PCINT0: Pin Promjena izvora prekida 0.

Tabela 10-4 Tabela 10-5 povežite alternativne funkcije priključka B sa nadjačavajućim signalima prikazanim u Slika 10-5 na strana 58.

Tabela 10-4. Nadjačavajući signali za alternativne funkcije u PB[5:3]

Naziv signala PB5/RESET/ ADC0/PCINT5 PB4/ADC2/XTAL2/ OC1B/PCINT4 PB3/ADC3/XTAL1/ OC1B/PCINT3
PUOE

RSTDISBL(1) • DWEN(1)

0 0
PUOV 1 0 0
DDOE RSTDISBL(1) • DWEN(1) 0 0
DDOV debugWire Transmit 0 0
PVOE 0 OC1B Enable

OC1B Enable

PVOV 0 OC1B OC1B
PTOE 0 0 0
DIEOE

RSTDISBL(1) + (PCINT5 • PCIE + ADC0D)

PCINT4 • PCIE + ADC2D PCINT3 • PCIE + ADC3D
DIEOV ADC0D ADC2D ADC3D
DI PCINT5 ulaz PCINT4 ulaz PCINT3 ulaz
AIO RESET ulaz, ADC0 ulaz ADC2 ulaz ADC3 ulaz

Napomena: kada je osigurač “0” (programiran).

Tabela 10-5. Nadjačavajući signali za alternativne funkcije u PB[2:0]

Naziv signala PB2/SCK/ADC1/T0/ USCK/SCL/INT0/PCINT2 PB1/MISO/DO/AIN1/ OC1A/OC0B/PCINT1 PB0/MOSI/DI/SDA/AIN0/AR EF/OC1A/OC0A/

PCINT0

PUOE USI_TWO_WIRE 0 USI_TWO_WIRE
PUOV 0 0 0
DDOE USI_TWO_WIRE 0 USI_TWO_WIRE
DDOV (USI_SCL_HOLD + PORTB2) • DDB2 0  

(SDA + PORTB0) • DDB0

PVOE USI_TWO_WIRE • DDB2 OC0B Omogući + OC1A Omogući + USI_THREE_WIRE

OC0A Omogući + OC1A Omogući + (USI_TWO_WIRE

DDB0)

PVOV 0 OC0B + OC1A + DO

OC0A + OC1A

PTOE USITC 0 0
DIEOE PCINT2 • PCIE + ADC1D + USISIE PCINT1 • PCIE + AIN1D PCINT0 • PCIE + AIN0D + USISIE
DIEOV ADC1D AIN1D AIN0D
DI T0/USCK/SCL/INT0/

PCINT2 ulaz

PCINT1 ulaz DI/SDA/PCINT0 ulaz
AIO ADC1 ulaz Negativni ulaz analognog komparatora Pozitivan ulaz analognog komparatora

Opis registra

MCUCR – MCU kontrolni registar

Bit 7 6 5 4 3 2 1 0
0x35 BODS PUD SE SM1 SM0 BODSE ISC01 ISC00 MCUCR
Read/Write R R/W R/W R/W R/W R R/W R/W
Početna vrijednost 0 0 0 0 0 0 0 0

Bit 6 – PUD: Povlačenje isključeno

Kada se ovaj bit upiše u jedan, podizanja u I/O portovima su onemogućena čak i ako su registri DDxn i PORTxn konfigurirani da omoguće pull-up ({DDxn, PORTxn} = 0b01). Vidi “Konfiguriranje pina” na stranici 54 za više detalja o ovoj funkciji.

PORTB – Registar podataka porta B

Bit 7 6 5 4 3 2 1 0
0x18 PORTB5 PORTB4 PORTB3 PORTB2 PORTB1 PORTB0 PORTB
Read/Write R R R/W R/W R/W R/W R/W R/W
Početna vrijednost 0 0 0 0 0 0 0 0

DDRB – Registar smjera podataka porta B

Bit 7 6 5 4 3 2 1 0
0x17 DDB5 DDB4 DDB3 DDB2 DDB1 DDB0 DDRB
Read/Write R R R/W R/W R/W R/W R/W R/W
Početna vrijednost 0 0 0 0 0 0 0 0

PINB – Port B Adresa ulaznih pinova

Bit 7 6 5 4 3 2 1 0
0x16 PINB5 PINB4 PINB3 PINB2 PINB1 PINB0 PINB
Read/Write R R R/W R/W R/W R/W R/W R/W
Početna vrijednost 0 0 N/A N/A N/A N/A N/A N/A

8-bitni tajmer/brojač0 sa PWM

Karakteristike

Dvije nezavisne jedinice za poređenje izlaza

Dvostruki baferirani izlazni registri za poređenje

Brisanje tajmera na uporednom podudaranju (automatsko ponovno učitavanje)

Bez grešaka, fazno ispravan modulator širine impulsa (PWM)

Varijabilni PWM period

Generator frekvencije

Tri nezavisna izvora prekida (TOV0, OCF0A i OCF0B)

Gotovoview

Timer/Counter0 je 8-bitni modul za tajmer/brojač opšte namene, sa dve nezavisne jedinice za poređenje izlaza i sa podrškom za PWM. Omogućava precizno vrijeme izvršavanja programa (upravljanje događajima) i generiranje valova.

Prikazan je pojednostavljeni blok dijagram 8-bitnog tajmera/brojača Slika 11-1. Za stvarno postavljanje I/O pinova, pogledajte “Pinout ATtiny25/45/85” na stranici 2. I/O registri dostupni CPU-u, uključujući I/O bitove i I/O pinove, prikazani su podebljanim slovima. I/O registar specifičan za uređaj i lokacije bitova su navedene u “Opis registra” na stranici 77.

Tajmer/brojač (TCNT0) i registri za poređenje izlaza (OCR0A i OCR0B) su 8-bitni registri. Svi signali zahtjeva za prekidom (skraćeno od Int.Req. na slici) su vidljivi u registru zastavice prekida tajmera (TIFR). Svi prekidi su pojedinačno maskirani registrom maske prekida tajmera (TIMSK). TIFR i TIMSK nisu prikazani na slici.

Tajmer/brojač se može taktirati interno, preko predskalera, ili eksternim izvorom takta na T0 pinu. Logički blok Clock Select kontroliše koji izvor takta i ivicu tajmer/brojač koristi da poveća (ili smanji) svoju vrijednost. Tajmer/brojač je neaktivan kada nije odabran izvor sata. Izlaz iz logike odabira sata se naziva sat tajmera (clkT0).

Dvostruki baferirani registri za usporedbu izlaza (OCR0A i OCR0B) se uspoređuju s vrijednošću Timera/Counter u svakom trenutku. Generator talasnih oblika može koristiti rezultat poređenja da generiše PWM ili izlaz promenljive frekvencije na pinovima za upoređivanje izlaza (OC0A i OC0B). Pogledajte “Jedinica za poređenje izlaza” na stranici 69. za detalje. Događaj Compare Match će također postaviti oznaku za upoređivanje (OCF0A ili OCF0B) koja se može koristiti za generiranje zahtjeva za prekidom usporedbe izlaza.

Definicije

Mnoge reference na registre i bitove u ovom odeljku su napisane u opštem obliku. Malo slovo “n” zamjenjuje broj tajmera/brojača, u ovom slučaju 0. Malo slovo “x” zamjenjuje jedinicu za usporedbu izlaza, u ovom slučaju uporednu jedinicu A ili jedinicu za usporedbu B. Međutim, kada se koristi registar ili bit definira u programu se mora koristiti precizan oblik, tj. TCNT0 za pristup vrijednosti brojača Timer/Counter0 i tako dalje.

Definicije u Tabela 11-1 se takođe intenzivno koriste u celom dokumentu.

Tabela 11-1. Definicije

Konstantno Opis
BOTTOM Brojač dostiže DOLJE kada postane 0x00
MAX Brojač dostiže svoj MAXimum kada postane 0xFF (decimalno 255)
TOP Brojač doseže TOP kada postane jednak najvišoj vrijednosti u nizu brojanja. TOP vrijednost može biti dodijeljena da bude fiksna vrijednost 0xFF (MAX) ili vrijednost pohranjena u OCR0A registru. Dodjela ovisi o načinu rada

Tajmer/brojač predskaler i izvori sata

Tajmer/brojač može biti podešen internim ili eksternim izvorom takta. Izvor takta se bira logikom odabira sata kojom upravljaju bitovi za odabir sata (c) koji se nalaze u kontrolnom registru Timer/Counter0 (TCCR0B).

Interni izvor takta sa predskalerom

Tajmer/brojač0 se može taktovati direktno od sistemskog sata (postavljanjem CS0[2:0] = 1). Ovo obezbeđuje najbrži rad, sa maksimalnom frekvencijom takta tajmera/brojčanika jednakom frekvenciji sistemskog takta (fCLK_I/O). Alternativno, jedan od četiri slavina iz predskalera može se koristiti kao izvor takta. Prethodno skalirani sat ima frekvenciju od bilo kojeg

Resetovanje predskalera

Predskaler radi slobodno, tj. radi nezavisno od logike odabira sata za Tajmer/brojač0. Budući da na predskaler ne utiče odabir sata tajmera/brojača, stanje predskalera će imati implikacije za situacije u kojima se koristi unaprijed skalirani sat. Jedan bivšiampLe artefakta predskara je kada je tajmer/brojač omogućen i taktovan od strane predskalera (6 > CS0[2:0] > 1). Broj ciklusa sistemskog takta od trenutka kada je tajmer omogućen do prvog brojanja može biti od 1 do N+1 ciklusa sistemskog takta, gdje je N jednako djelitelju predskalera (8, 64, 256 ili 1024).

Moguće je koristiti Prescaler Reset za sinhronizaciju tajmera/brojača sa izvršavanjem programa.

Vanjski izvor sata

Eksterni izvor takta primenjen na T0 pin može se koristiti kao tajmer/brojač takta (clkT0). T0 pin je sampvođen jednom u svakom ciklusu sistemskog takta pomoću logike pin sinhronizacije. Sinhronizovani (sampLED) signal se tada propušta

kroz detektor ivica. Slika 11-2 prikazuje funkcionalni ekvivalentni blok dijagram T0 sinhronizacije i logike detektora ruba. Registri se taktiraju na pozitivnoj ivici internog sistemskog sata (clkI/O). Zasun je transparentan u visokom periodu unutrašnjeg sistemskog sata.

Detektor ivice generiše jedan clkT0 impuls za svaku pozitivnu (CS0[2:0] = 7) ili negativnu (CS0[2:0] = 6) ivicu koju detektuje.

OCR0x registri su dvostruko baferovani kada se koristi bilo koji od režima modulacije širine impulsa (PWM). Za normalne i Clear Timer on Compare (CTC) režime rada, dvostruko baferovanje je onemogućeno. Dvostruko baferovanje sinhronizuje ažuriranje registara za poređenje OCR0x na vrh ili na dno niza brojanja. Sinhronizacija sprečava pojavu nesimetričnih PWM impulsa neparne dužine, čineći tako izlaz bez grešaka.

Pristup OCR0x registru može izgledati složeno, ali to nije slučaj. Kada je dvostruko baferovanje omogućeno, CPU ima pristup OCR0x registru bafera, a ako je dvostruko baferovanje onemogućeno, CPU će direktno pristupiti OCR0x.

Force Output Compare

U ne-PWM režimima generisanja talasnog oblika, izlazni izlaz komparatora može se forsirati upisivanjem jedinice u bitu Force Output Compare (FOC0x). Forcing Compare Match neće postaviti OCF0x Flag ili ponovo učitati/obrisati tajmer, ali će OC0x pin biti ažuriran kao da je došlo do stvarnog podudaranja (COM0x[1:0] postavke bitova definiraju da li je OC0x pin postavljen, obrisan ili uključen).

Uporedite Blokiranje utakmica od strane TCNT0 Write

Sve CPU operacije upisivanja u TCNT0 registar će blokirati bilo koje podudaranje poređenja koje se dogodi u sljedećem ciklusu takta tajmera, čak i kada je tajmer zaustavljen. Ova funkcija omogućava da se OCR0x inicijalizira na istu vrijednost kao TCNT0 bez pokretanja prekida kada je sat tajmera/brojača omogućen.

Korištenje jedinice za usporedbu izlaza

Budući da će upisivanje TCNT0 u bilo kojem načinu rada blokirati sva podudaranja usporedbe za jedan ciklus takta tajmera, postoje rizici pri promjeni TCNT0 kada se koristi izlazna jedinica za poređenje, neovisno o tome da li je tajmer/brojač pokrenut ili ne. Ako je vrijednost zapisana u TCNT0 jednaka vrijednosti OCR0x, Compare Match će biti propušteno, što će rezultirati pogrešnim generiranjem valnog oblika. Slično tome, nemojte pisati vrijednost TCNT0 jednaku BOTTOM kada brojač broji naniže.

Podešavanje OC0x treba izvršiti prije postavljanja registra smjera podataka za pin porta za izlaz. Najlakši način postavljanja OC0x vrijednosti je korištenje bitova stroboskopa Force Output Compare (FOC0x) u normalnom načinu rada. OC0x registri zadržavaju svoje vrijednosti čak i kada se mijenjaju između načina generiranja talasnog oblika.

Imajte na umu da COM0x[1:0] bitovi nisu dvostruko baferovani zajedno sa vrednošću za poređenje. Promjena COM0x[1:0] bitova stupa na snagu odmah.

Uporedi Podudarna izlazna jedinica

Bitovi režima za poređenje izlaza (COM0x[1:0]) imaju dvije funkcije. Generator talasnog oblika koristi COM0x[1:0] bitove za definisanje stanja poređenja izlaza (OC0x) pri sledećem upoređivanju. Također, COM0x[1:0] bitovi kontroliraju izlazni izvor pina OC0x. Slika 11-6 prikazuje pojednostavljenu šemu logike na koju utiče postavka bita COM0x[1:0]. I/O registri, I/O bitovi i I/O pinovi na slici su prikazani podebljanim slovima. Prikazani su samo dijelovi općih kontrolnih registara I/O porta (DDR i PORT) na koje utječu COM0x[1:0] bitovi. Kada se odnosi na stanje OC0x, referenca je za interni registar OC0x, a ne za pin OC0x. Ako dođe do resetovanja sistema, OC0x registar se resetuje na “0”.

Kada je OC0A/OC0B povezan na I/O pin, funkcija bitova COM0A[1:0]/COM0B[1:0] zavisi od postavke bita WGM0[2:0]. Tabela 11-2 prikazuje funkcionalnost bita COM0x[1:0] kada su WGM0[2:0] bitovi postavljeni na normalan ili CTC način rada (ne-PWM).

Tabela 11-2. Uporedite izlazni režim, ne-PWM režim

COM0A1 COM0B1 COM0A0 COM0B0 Opis
0 0 Normalan rad porta, OC0A/OC0B isključen.
0 1 Uključite OC0A/OC0B na Compare Match
1 0 Obrišite OC0A/OC0B na uporednom podudaranju
1 1 Postavite OC0A/OC0B na Compare Match

Tabela 11-3 prikazuje funkcionalnost bita COM0x[1:0] kada su WGM0[2:0] bitovi postavljeni na brzi PWM mod.

Tabela 11-3. Uporedite izlazni režim, brzi PWM režim(1)

COM0A1 COM0B1 COM0A0 COM0B0 Opis
0 0 Normalan rad porta, OC0A/OC0B isključen.
0 1 Rezervirano
1 0 Obrišite OC0A/OC0B na Compare Match, postavite OC0A/OC0B na DOLJE (režim bez invertiranja)
1 1 Postavite OC0A/OC0B na Compare Match, obrišite OC0A/OC0B na DNU (režim invertiranja)

Napomena: Poseban slučaj se javlja kada je OCR0A ili OCR0B jednak TOP i COM0A1/COM0B1 je postavljen. U ovom slučaju, poređenje se zanemaruje, ali se postavljanje ili brisanje vrši na DNU. Vidi “Brzi PWM način rada” na stranici 73 za više detalja.

Tabela 11-4 prikazuje funkcionalnost bita COM0x[1:0] kada su WGM0[2:0] bitovi postavljeni na fazno ispravan PWM mod.

Tabela 11-4. Uporedite izlazni režim, PWM režim za korekciju faze(1)

COM0A1 COM0B1 COM0A0 COM0B0 Opis
0 0 Normalan rad porta, OC0A/OC0B isključen.
0 1 Rezervirano
1 0 Obrišite OC0A/OC0B na Compare Match prilikom brojanja naviše. Postavite OC0A/OC0B na Compare Match prilikom odbrojavanja.
1 1 Postavite OC0A/OC0B na Compare Match prilikom brojanja naviše. Obrišite OC0A/OC0B na uporednom podudaranju kada se odbrojava naniže.

Napomena: 1. Poseban slučaj se javlja kada je OCR0A ili OCR0B jednak TOP i COM0A1/COM0B1 je postavljen. U ovom slučaju, Compare Match se zanemaruje, ali se set ili brisanje obavlja na TOP. Vidi “Phase Correct PWM Mode” na stranici 74 za više detalja.

Bitovi 3:2 – Res: Rezervisani bitovi

Ovi bitovi su rezervirani bitovi u ATtiny25/45/85 i uvijek će se čitati kao nula.

Bitovi 1:0 – WGM0[1:0]: Režim generisanja talasnog oblika

U kombinaciji sa WGM02 bitom koji se nalazi u TCCR0B registru, ovi bitovi kontrolišu sekvencu brojanja brojača, izvor za maksimalnu (TOP) vrednost brojača i koji tip generisanja talasnog oblika će se koristiti, vidi Tabela 11-5. Načini rada koje podržava jedinica tajmer/brojač su: normalan način rada (brojač), način rada Clear Timer on Compare Match (CTC) i dva tipa režima pulsne širine (PWM) (vidi "Načini rada" na strani 71).

Tabela 11-5. Opis bita načina generiranja talasnog oblika

Mode WGM 02 WGM 01 WGM 00 Način rada tajmera/brojala TOP Ažuriranje OCRx na TOV Flag Set on
0 0 0 0 Normalno 0xFF Odmah MAX(1)
1 0 0 1 PWM, ispravna faza 0xFF TOP BOTTOM(2)
2 0 1 0 CTC OCRA Odmah MAX(1)
3 0 1 1 Brzi PWM 0xFF BOTTOM(2) MAX(1)
4 1 0 0 Rezervirano
5 1 0 1 PWM, ispravna faza OCRA TOP BOTTOM(2)
6 1 1 0 Rezervirano
7 1 1 1 Brzi PWM OCRA BOTTOM(2) TOP

Bit 7 – FOC0A: Force Output Compare A

FOC0A bit je aktivan samo kada WGM bitovi specificiraju ne-PWM način rada.

Međutim, da bi se osigurala kompatibilnost sa budućim uređajima, ovaj bit mora biti postavljen na nulu kada je TCCR0B upisan kada radi u PWM modu. Prilikom pisanja logičke jedinice u FOC0A bit, na jedinici za generiranje talasnog oblika nameće se trenutno podudaranje usporedbe. OC0A izlaz se mijenja u skladu sa postavkom bitova COM0A[1:0]. Imajte na umu da je FOC0A bit implementiran kao strob. Stoga je vrijednost prisutna u COM0A[1:0] bitovima ta koja određuje učinak prisilnog poređenja.

FOC0A strob neće generisati nikakav prekid, niti će obrisati tajmer u CTC modu koristeći OCR0A kao TOP. FOC0A bit se uvijek čita kao nula.

Bit 6 – FOC0B: Usporedi izlaz snage B

FOC0B bit je aktivan samo kada WGM bitovi specificiraju ne-PWM način rada.

Međutim, da bi se osigurala kompatibilnost sa budućim uređajima, ovaj bit mora biti postavljen na nulu kada je TCCR0B upisan kada radi u PWM modu. Prilikom pisanja logičke jedinice u FOC0B bit, na jedinici za generiranje talasnog oblika nameće se trenutno podudaranje uporedi. OC0B izlaz se mijenja u skladu sa postavkom bitova COM0B[1:0]. Imajte na umu da je FOC0B bit implementiran kao strob. Stoga je vrijednost prisutna u COM0B[1:0] bitovima ta koja određuje učinak prisilnog poređenja.

FOC0B strob neće generirati nikakav prekid, niti će obrisati tajmer u CTC modu koristeći OCR0B kao TOP.

FOC0B bit se uvijek čita kao nula.

Bitovi 5:4 – Res: Rezervisani bitovi

Ovi bitovi su rezervirani bitovi u ATtiny25/45/85 i uvijek će se čitati kao nula.

Bit 3 – WGM02: Režim generisanja talasnog oblika

Pogledajte opis u “TCCR0A – Registar upravljanja tajmerom/brojačem A” na stranici 77.

Bitovi 2:0 – CS0[2:0]: Odabir sata

Tri bita za odabir sata biraju izvor sata koji će koristiti tajmer/brojač.

Tabela 11-6. Sat Odaberite Bit Opis

CS02 CS01 CS00 Opis
0 0 0 Nema izvora sata (tajmer/brojač zaustavljen)
0 0 1 clkI/O/(bez prethodnog skaliranja)
0 1 0 clkI/O/8 (od predskalera)
0 1 1 clkI/O/64 (od predskalera)
1 0 0 clkI/O/256 (od predskalera)
1 0 1 clkI/O/1024 (od predskalera)
1 1 0 Eksterni izvor takta na T0 pinu. Sat na padajućoj ivici.
1 1 1 Eksterni izvor takta na T0 pinu. Sat na uzlaznoj ivici.

Ako se eksterni pin modovi koriste za tajmer/brojač0, prijelazi na T0 pinu će taktirati brojač čak i ako je pin konfiguriran kao izlaz. Ova funkcija omogućava softversku kontrolu brojanja.

Brojite i uporedite jedinice

Opći rad Timer/Counter1 opisan je u asinhronom načinu rada, a rad u sinhronom načinu rada se spominje samo ako postoje razlike između ova dva načina rada. Slika 12-2 prikazuje blok dijagram registra sinhronizacije Timer/Counter 1 i kašnjenja sinhronizacije između registara. Imajte na umu da svi detalji o gajtanju sata nisu prikazani na slici. Vrijednosti registra Timer/Counter1 prolaze kroz interne registre sinhronizacije, koji uzrokuju kašnjenje sinkronizacije ulaza, prije nego što utječu na rad brojača. Registri TCCR1, GTCCR, OCR1A, OCR1B i OCR1C mogu se čitati nazad odmah nakon upisivanja registra. Povratne vrijednosti su odgođene za tajmer/brojač1 (TCNT1) registar i zastavice (OCF1A, OCF1B i TOV1), zbog sinkronizacije ulaza i izlaza.

Tajmer/brojač1 ima visoku rezoluciju i visoku upotrebu preciznosti sa nižim mogućnostima prethodnog skaliranja. Takođe može podržati dva precizna, brza, 8-bitna modulatora širine impulsa koji koriste brzinu takta do 64 MHz (ili 32 MHz u režimu niske brzine). U ovom modu, Timer/Counter1 i registri za usporedbu izlaza služe kao dvostruki samostalni PWM-ovi sa ne-preklapajućim neinvertiranim i invertiranim izlazima. Pogledajte strana 86 za detaljan opis ove funkcije. Slično, velike mogućnosti predskaliranja čine ovu jedinicu korisnom za funkcije niže brzine ili funkcije preciznog mjerenja vremena s rijetkim radnjama.

Slika 12-2. Blok dijagram registra sinhronizacije tajmer/brojač 1.

Tajmer/brojač1 i predskaler omogućavaju pokretanje CPU-a iz bilo kojeg izvora takta dok predskaler radi na brzom PCK taktu od 64 MHz (ili 32 MHz u režimu niske brzine) u asinhronom režimu.

Imajte na umu da frekvencija sistemskog takta mora biti niža od jedne trećine frekvencije PCK-a. Mehanizam sinhronizacije asinhronog Tajmera/Brača1 zahteva najmanje dve ivice PCK-a kada je sistemski sat visok. Ako je frekvencija sistemskog sata previsoka, postoji rizik od gubitka podataka ili kontrolnih vrijednosti.

Sledeće Slika 12-3 prikazuje blok dijagram za Timer/Counter1.

Tabela 12-1. Compare Mode Odaberite u PWM modu

COM1x1 COM1x0 Utjecaj na izlazne uporedne pinove
0 0 OC1x nije povezan. OC1x nije povezan.
0 1 OC1x je obrisan prilikom usporedbe. Postavite kada TCNT1 = $00. OC1x postavljen na uporednu utakmicu. Briše se kada je TCNT1 = 00 USD.
1 0 OC1x je obrisan prilikom usporedbe. Postavite kada TCNT1 = $00. OC1x nije povezan.
1 1 OC1x Podesite na uporednu utakmicu. Briše se kada je TCNT1= 00 USD. OC1x nije povezan.

ADC karakteristike

Tabela 21-8. Karakteristike ADC-a, jednostruki kanali. TA = -40°C do +85°C

Simbol Parametar Stanje Min Tip Max Jedinice
Rezolucija 10 Bits
Apsolutna tačnost (uključujući greške INL, DNL i kvantizacije, pojačanja i pomaka) VREF = 4V, VCC = 4V,

ADC takt = 200 kHz

2 LSB
VREF = 4V, VCC = 4V,

ADC takt = 1 MHz

3 LSB
VREF = 4V, VCC = 4V,

ADC takt = 200 kHz

Režim smanjenja šuma

1.5 LSB
VREF = 4V, VCC = 4V,

ADC takt = 1 MHz

Režim smanjenja šuma

2.5 LSB
Integralna nelinearnost (INL) (preciznost nakon kalibracije pomaka i pojačanja) VREF = 4V, VCC = 4V,

ADC takt = 200 kHz

1 LSB
Diferencijalna nelinearnost (DNL) VREF = 4V, VCC = 4V,

ADC takt = 200 kHz

0.5 LSB
Dobiti grešku VREF = 4V, VCC = 4V,

ADC takt = 200 kHz

2.5 LSB
Pogreška pomaka VREF = 4V, VCC = 4V,

ADC takt = 200 kHz

1.5 LSB
Vrijeme konverzije Free Running Conversion 14 280 µs
Učestalost takta 50 1000 kHz
VIN Ulazni voltage GND VREF V
Ulazna širina pojasa 38.4 kHz
AREF Eksterne reference Voltage 2.0 VCC V
VINT Interni Voltage Referenca 1.0 1.1 1.2 V
Interna 2.56V referenca (1) VCC > 3.0V 2.3 2.56 2.8 V
RREF 32
KIŠA Analogni ulazni otpor 100
ADC izlaz 0 1023 LSB

Napomena: 1. Vrijednosti su samo smjernice.

Tabela 21-9. Karakteristike ADC-a, diferencijalni kanali (unipolarni režim). TA = -40°C do +85°C

Simbol Parametar Stanje Min Tip Max Jedinice
Rezolucija Dobitak = 1x 10 Bits
Dobitak = 20x 10 Bits
Apsolutna tačnost (uključujući INL, DNL i

Greške kvantizacije, pojačanja i pomaka)

Dobitak = 1x

VREF = 4V, VCC = 5V

ADC takt = 50 – 200 kHz

10.0 LSB
Dobitak = 20x

VREF = 4V, VCC = 5V

ADC takt = 50 – 200 kHz

20.0 LSB
Integralna nelinearnost (INL) (preciznost nakon kalibracije pomaka i pojačanja) Dobitak = 1x

VREF = 4V, VCC = 5V

ADC takt = 50 – 200 kHz

4.0 LSB
Dobitak = 20x

VREF = 4V, VCC = 5V

ADC takt = 50 – 200 kHz

10.0 LSB
Dobiti grešku Dobitak = 1x 10.0 LSB
Dobitak = 20x 15.0 LSB
Pogreška pomaka Dobitak = 1x

VREF = 4V, VCC = 5V

ADC takt = 50 – 200 kHz

3.0 LSB
Dobitak = 20x

VREF = 4V, VCC = 5V

ADC takt = 50 – 200 kHz

4.0 LSB
Vrijeme konverzije Free Running Conversion 70 280 µs
Učestalost takta 50 200 kHz
VIN Ulazni voltage GND VCC V
VDIFF Input Differential Voltage VREF/Gain V
Ulazna širina pojasa 4 kHz
AREF Eksterne reference Voltage 2.0 VCC – 1.0 V
VINT Interni Voltage Referenca 1.0 1.1 1.2 V
Interna 2.56V referenca (1) VCC > 3.0V 2.3 2.56 2.8 V
RREF Referentni ulazni otpor 32
KIŠA Analogni ulazni otpor 100
ADC konverzijski izlaz 0 1023 LSB

Napomena: vrijednosti su samo smjernice.

Tabela 21-10. Karakteristike ADC-a, diferencijalni kanali (bipolarni mod). TA = -40°C do +85°C

Simbol Parametar Stanje Min Tip Max Jedinice
Rezolucija Dobitak = 1x 10 Bits
Dobitak = 20x 10 Bits
Apsolutna tačnost (uključujući INL, DNL i

Greške kvantizacije, pojačanja i pomaka)

Dobitak = 1x

VREF = 4V, VCC = 5V

ADC takt = 50 – 200 kHz

8.0 LSB
Dobitak = 20x

VREF = 4V, VCC = 5V

ADC takt = 50 – 200 kHz

8.0 LSB
Integralna nelinearnost (INL) (preciznost nakon kalibracije pomaka i pojačanja) Dobitak = 1x

VREF = 4V, VCC = 5V

ADC takt = 50 – 200 kHz

4.0 LSB
Dobitak = 20x

VREF = 4V, VCC = 5V

ADC takt = 50 – 200 kHz

5.0 LSB
Dobiti grešku Dobitak = 1x 4.0 LSB
Dobitak = 20x 5.0 LSB
Pogreška pomaka Dobitak = 1x

VREF = 4V, VCC = 5V

ADC takt = 50 – 200 kHz

3.0 LSB
Dobitak = 20x

VREF = 4V, VCC = 5V

ADC takt = 50 – 200 kHz

4.0 LSB
Vrijeme konverzije Free Running Conversion 70 280 µs
Učestalost takta 50 200 kHz
VIN Ulazni voltage GND VCC V
VDIFF Input Differential Voltage VREF/Gain V
Ulazna širina pojasa 4 kHz
AREF Eksterne reference Voltage 2.0 VCC – 1.0 V
VINT Interni Voltage Referenca 1.0 1.1 1.2 V
Interna 2.56V referenca (1) VCC > 3.0V 2.3 2.56 2.8 V
RREF Referentni ulazni otpor 32
KIŠA Analogni ulazni otpor 100
ADC konverzijski izlaz -512 511 LSB

Sažetak skupa uputa

Mnemotehnika Operandi Opis Operacija Zastave #Satovi
ARITMETIČKE I LOGIČKE UPUTE
ADD Rd, Rr Dodajte dva registra Rd ← Rd + Rr Z, C, N, V, H 1
ADC Rd, Rr Dodajte sa Carry dva registra Rd ← Rd + Rr + C Z, C, N, V, H 1
ADIW Rdl,K Dodajte Immediate u Word Rdh:Rdl ← Rdh:Rdl + K Z,C,N,V,S 2
SUB Rd, Rr Oduzmite dva registra Rd ← Rd – Rr Z, C, N, V, H 1
UP Rd, K Oduzmi konstantu iz Registra Rd ← Rd – K Z, C, N, V, H 1
SBC Rd, Rr Oduzmi s Carry dva registra Rd ← Rd – Rr – C Z, C, N, V, H 1
SBCI Rd, K Oduzmi s Carry Constant iz Reg. Rd ← Rd – K – C Z, C, N, V, H 1
SBIW Rdl,K Oduzmite Neposredno iz Worda Rdh:Rdl ← Rdh:Rdl – K Z,C,N,V,S 2
I Rd, Rr Logički I registri Rd ← Rd ∙ Rr Z, N, V 1
ANDI Rd, K Logičan I Registriraj se i Konstantan Rd ← Rd ∙ K Z, N, V 1
OR Rd, Rr Logički ILI registri Rd ← Rd v Rr Z, N, V 1
ORI Rd, K Logično ILI Registrirati se i konstantno Rd ← Rd v K Z, N, V 1
EOR Rd, Rr Ekskluzivni ILI registri Rd ← Rd ⊕ Rr Z, N, V 1
COM Rd One's Complement Rd ← 0xFF − Rd Z, C, N, V 1
NEG Rd Dopuna dvojke Rd ← 0x00 − Rd Z, C, N, V, H 1
SBR Rd, K Postavi bit (e) u Registruj Rd ← Rd v K Z, N, V 1
CBR Rd, K Očistite bit (ove) u Registrujte se Rd ← Rd ∙ (0xFF – K) Z, N, V 1
INC Rd Povećanje Rd ← Rd + 1 Z, N, V 1
DEC Rd Dekretnost Rd ← Rd − 1 Z, N, V 1
TST Rd Test za nulu ili minus Rd ← Rd ∙ Rd Z, N, V 1
CLR Rd Obriši registar Rd ← Rd ⊕ Rd Z, N, V 1
SER Rd Postavi registar Rd ← 0xFF Nema 1
UPUTE ZA PODRUŽNICE
RJMP k Relativni skok PC ← PC + k + 1 Nema 2
IJMP Indirektni skok na (Z) PC ← Z Nema 2
POZOVITE k Relativni poziv potprograma PC ← PC + k + 1 Nema 3
ICALL Indirektni poziv na (Z) PC ← Z Nema 3
RET Povratak potprograma PC ← STACK Nema 4
RETI Povratak prekida PC ← STACK I 4
CPSE Rd, Rr Usporedite, preskočite ako je jednako ako je (Rd = Rr) PC ← PC + 2 ili 3 Nema 1/2/3
CP Rd, Rr Uporedite Rd − Rr Z, N, V, C, H 1
CPC Rd, Rr Uporedite sa Carry Rd − Rr − C Z, N, V, C, H 1
CPI Rd, K Uporedite registraciju sa neposrednom Rd − K Z, N, V, C, H 1
SBRC Rr, b Preskoči ako je bit u Registru obrisan ako je (Rr(b)=0) PC ← PC + 2 ili 3 Nema 1/2/3
SBRS Rr, b Preskoči ako je postavljeno Bit in Register ako je (Rr(b)=1) PC ← PC + 2 ili 3 Nema 1/2/3
SBIC P, b Preskoči ako je izbrisan bit u I / O registru ako je (P(b)=0) PC ← PC + 2 ili 3 Nema 1/2/3
SBIS P, b Preskoči ako je postavljeno Bit in I / O Register ako je (P(b)=1) PC ← PC + 2 ili 3 Nema 1/2/3
BRBS s, k Podružnica ako je postavljena zastava statusa ako je (SREG(s) = 1) onda PC←PC+k + 1 Nema 1/2
BRBC s, k Podružnica ako je oznaka statusa izbrisana ako je (SREG(s) = 0) onda PC←PC+k + 1 Nema 1/2
BREQ k Grana ako je jednaka ako je (Z = 1) onda PC ← PC + k + 1 Nema 1/2
BRNE k Grana ako nije jednaka ako je (Z = 0) onda PC ← PC + k + 1 Nema 1/2
BRCS k Grana ako nosi set ako je (C = 1) onda PC ← PC + k + 1 Nema 1/2
BRCC k Podružnica ako je Carry Clearing ako je (C = 0) onda PC ← PC + k + 1 Nema 1/2
BRSH k Podružnica ako je ista ili viša ako je (C = 0) onda PC ← PC + k + 1 Nema 1/2
BRLO k Grana ako je niža ako je (C = 1) onda PC ← PC + k + 1 Nema 1/2
BRMI k Podružnica ako je minus ako je (N = 1) onda PC ← PC + k + 1 Nema 1/2
BRPL k Podružnica ako je plus ako je (N = 0) onda PC ← PC + k + 1 Nema 1/2
BRGE k Podružnica ako je veća ili jednaka, potpisana ako je (N ⊕ V= 0) onda PC ← PC + k + 1 Nema 1/2
BRLT k Podružnica ako je manja od nule, potpisano ako je (N ⊕ V= 1) onda PC ← PC + k + 1 Nema 1/2
BRHS k Grana ako je postavljena zastavica s pola nosača ako je (H = 1) onda PC ← PC + k + 1 Nema 1/2
BRHC k Podružnica ako je oznaka upola nošena ako je (H = 0) onda PC ← PC + k + 1 Nema 1/2
BRTS k Grana ako je postavljena zastavica T ako je (T = 1) onda PC ← PC + k + 1 Nema 1/2
BRTC k Grana ako je T zastavica uklonjena ako je (T = 0) onda PC ← PC + k + 1 Nema 1/2
BRVS k Grananje ako je postavljena zastavica prelijevanja ako je (V = 1) onda PC ← PC + k + 1 Nema 1/2
BRVC k Razgranaj se ako je obrisana zastavica preljeva ako je (V = 0) onda PC ← PC + k + 1 Nema 1/2
BRIE k Grananje ako je omogućen prekid ako je ( I = 1) onda PC ← PC + k + 1 Nema 1/2
MLADIĆ k Podružnica ako je prekid onemogućen ako je ( I = 0) onda PC ← PC + k + 1 Nema 1/2
UPUTE ZA BIT I BIT-TEST
SBI P, b Postavi bit u I / O registru I/O(P,b) ← 1 Nema 2
CBI P, b Očisti bit u I / O registru I/O(P,b) ← 0 Nema 2
LSL Rd Logički pomak ulijevo Rd(n+1) ← Rd(n), Rd(0) ← 0 Z, C, N, V 1
LSR Rd Logički pomak udesno Rd(n) ← Rd(n+1), Rd(7) ← 0 Z, C, N, V 1
ULOGA Rd Rotirajte lijevo kroz Carry Rd(0)←C,Rd(n+1)← Rd(n),C←Rd(7) Z, C, N, V 1
ROR Rd Rotiraj desno kroz Carry Rd(7)←C,Rd(n)← Rd(n+1),C←Rd(0) Z, C, N, V 1
ASR Rd Aritmetički pomak udesno Rd(n) ← Rd(n+1), n=0..6 Z, C, N, V 1
Mnemotehnika Operandi Opis Operacija Zastave #Satovi
SWAP Rd Zamijenite grickalice Rd(3..0)←Rd(7..4),Rd(7..4)←Rd(3..0) Nema 1
BSET s Zastavica postavljena SREG(ovi) ← 1 SREG (s) 1
BCLR s Flag Clear SREG(ovi) ← 0 SREG (s) 1
BST Rr, b Bit Store od Registriraj se do T T ← Rr(b) T 1
BLD Rd, b Bitno opterećenje od T do Registra Rd(b) ← T Nema 1
SEC Postavite Carry C ← 1 C 1
CLC Clear Carry C ← 0 C 1
SEN Postavi negativnu zastavicu N ← 1 N 1
CLN Očisti negativnu zastavicu N ← 0 N 1
SEZ Postavite Zero Flag Z ← 1 Z 1
CLZ Očistite zastavicu nule Z ← 0 Z 1
SEI Omogućavanje globalnog prekida I ← 1 I 1
CLI Onemogući globalni prekid I ← 0 I 1
SES Postavite potpisanu testnu zastavicu S ← 1 S 1
CLS Očistite potpisanu testnu zastavicu S ← 0 S 1
SEV Postavite dva komplementa Overflow. V ← 1 V 1
CLV Obriši prelijevanje komplementa za dvoje V ← 0 V 1
SET Postavite T u SREG T ← 1 T 1
CLT Očistite T u SREG T ← 0 T 1
VIDI Postavite Half Carry Flag u SREG H ← 1 H 1
CLH Očistite zastavicu za pola nošenja u SREG-u H ← 0 H 1
UPUTSTVO ZA PRIJENOS PODATAKA
MOV Rd, Rr Pomicanje između registara Rd ← Rr Nema 1
MOVW Rd, Rr Kopiraj Register Word Rd+1:Rd ← Rr+1:Rr Nema 1
LDI Rd, K Load Immediate Rd ← K Nema 1
LD Rd, X Učitaj indirektno Rd ← (X) Nema 2
LD Rd, X+ Load Indirect i Post-Inc. Rd ← (X), X ← X + 1 Nema 2
LD Rd, – X Učitaj indirektno i pre-dec. X ← X – 1, Rd ← (X) Nema 2
LD Rd, Y Učitaj indirektno Rd ← (Y) Nema 2
LD Rd, Y+ Load Indirect i Post-Inc. Rd ← (Y), Y ← Y + 1 Nema 2
LD Rd, – Y Učitaj indirektno i pre-dec. Y ← Y – 1, Rd ← (Y) Nema 2
LDD Rd,Y+q Indirektno opterećenje sa pomakom Rd ← (Y + q) Nema 2
LD Rd, Z Učitaj indirektno Rd ← (Z) Nema 2
LD Rd, Z+ Load Indirect i Post-Inc. Rd ← (Z), Z ← Z+1 Nema 2
LD Rd, -Z Učitaj indirektno i pre-dec. Z ← Z – 1, Rd ← (Z) Nema 2
LDD Rd, Z+q Indirektno opterećenje sa pomakom Rd ← (Z + q) Nema 2
LDS Rd, k Učitavanje direktno iz SRAM-a Rd ← (k) Nema 2
ST X, Rr Store Indirect (X) ← Rr Nema 2
ST X+, Rr Store Indirect i Post-Inc. (X) ← Rr, X ← X + 1 Nema 2
ST – X, Rr Store Indirect i Pre-dec. X ← X – 1, (X) ← Rr Nema 2
ST Y, Rr Store Indirect (Y) ← Rr Nema 2
ST Y+, Rr Store Indirect i Post-Inc. (Y) ← Rr, Y ← Y + 1 Nema 2
ST – Y, Rr Store Indirect i Pre-dec. Y ← Y – 1, (Y) ← Rr Nema 2
STD Y+q,Rr Store Indirect with Displacement (Y + q) ← Rr Nema 2
ST Z, Rr Store Indirect (Z) ← Rr Nema 2
ST Z+, Rr Store Indirect i Post-Inc. (Z) ← Rr, Z ← Z + 1 Nema 2
ST -Z, Rr Store Indirect i Pre-dec. Z ← Z – 1, (Z) ← Rr Nema 2
STD Z+q,Rr Store Indirect with Displacement (Z + q) ← Rr Nema 2
STS k, Rr Spremite direktno u SRAM (k) ← Rr Nema 2
LPM Učitaj memoriju programa R0 ← (Z) Nema 3
LPM Rd, Z Učitaj memoriju programa Rd ← (Z) Nema 3
LPM Rd, Z+ Učitaj programsku memoriju i Post-Inc Rd ← (Z), Z ← Z+1 Nema 3
SPM Spremite programsku memoriju (z) ← R1:R0 Nema
IN Rd, P U luci Rd ← P Nema 1
OUT P, Rr Out Port P ← Rr Nema 1
PUSH Rr Pritisnite registar na steku STACK ← Rr Nema 2
POP Rd Pop Register iz Stack-a Rd ← STACK Nema 2
UPUTSTVA ZA UPRAVLJANJE MCU-om
NOP Nema operacije Nema 1
SLEEP Spavaj (vidi specifični opis funkcije spavanja) Nema 1
WDR Watchdog Reset (pogledajte specifičan opis za WDR/tajmer) Nema 1
BREAK Pauza
Brzina (MHz) (1) Snabdijevanje voltage (V) Temperaturni opseg Paket (2) Šifra za narudžbu (3)
10 1.8 – 5.5 Industrial

(-40 ° C do + 85 ° C) (4)

8P3 ATtiny45V-10PU
8S2 ATtiny45V-10SU ATtiny45V-10SUR ATtiny45V-10SH ATtiny45V-10SHR
8X ATtiny45V-10XU ATtiny45V-10XUR
20M1 ATtiny45V-10MU ATtiny45V-10MUR
20 2.7 – 5.5 Industrial

(-40 ° C do + 85 ° C) (4)

8P3 ATtiny45-20PU
8S2 ATtiny45-20SU ATtiny45-20SUR

ATtiny45-20SH ATtiny45-20SHR

8X ATtiny45-20XU ATtiny45-20XUR
20M1 ATtiny45-20MU ATtiny45-20MUR

Napomene: 1. Za brzinu u odnosu na potrošnju voltage, vidi odjeljak 21.3 “Brzina” na stranici 163.

Sva pakovanja su bez Pb, bez halogenida i potpuno su zelena i u skladu su sa Evropskom direktivom za ograničenje opasnih supstanci (RoHS).

Indikatori koda

H: NiPdAu olovni završetak

U: mat lim

R: traka i kolut

Ovi uređaji se također mogu isporučiti u obliku wafer-a. Za detaljne informacije o narudžbi i minimalne količine obratite se lokalnom prodajnom uredu Atmel-a.

Greška

Greška ATtiny25

Pismo revizije u ovom odeljku odnosi se na reviziju ATtiny25 uređaja.

Rev D – F

Nema poznatih grešaka.

Rev B – C

Čitanje EEPROM-a može pokvariti pri malom volumenu napajanjatage / niska frekvencija takta

Čitanje EEPROM-a može pokvariti pri malom volumenu napajanjatage / niska frekvencija takta

Pokušaj čitanja EEPROM-a na niskim frekvencijama takta i/ili malom volumenu napajanjatage može rezultirati nevažećim podacima.

Rješavanje problema/rješenje

Nemojte koristiti EEPROM kada je frekvencija takta ispod 1MHz i zapremina napajanjatage je ispod 2V. Ako se radna frekvencija ne može podići iznad 1MHz, tada se obtage bi trebao biti veći od 2V. Slično, ako je ponuda voltage se ne može podići iznad 2V tada bi radna frekvencija trebala biti veća od 1MHz.

Poznato je da ova karakteristika zavisi od temperature, ali nije okarakterisana. Smjernice su date samo za sobnu temperaturu.

Rev A

Ne sampLED.

Greška ATtiny45

Pismo revizije u ovom odeljku odnosi se na reviziju ATtiny45 uređaja.

Rev F – G

Nema poznatih grešaka

Rev D – E

Čitanje EEPROM-a može pokvariti pri malom volumenu napajanjatage / niska frekvencija takta

Čitanje EEPROM-a može pokvariti pri malom volumenu napajanjatage / niska frekvencija takta

Pokušaj čitanja EEPROM-a na niskim frekvencijama takta i/ili malom volumenu napajanjatage može rezultirati nevažećim podacima.

Rješavanje problema/rješenje

Nemojte koristiti EEPROM kada je frekvencija takta ispod 1MHz i zapremina napajanjatage je ispod 2V. Ako se radna frekvencija ne može podići iznad 1MHz, tada se obtage bi trebao biti veći od 2V. Slično, ako je ponuda voltage se ne može podići iznad 2V tada bi radna frekvencija trebala biti veća od 1MHz.

Poznato je da ova karakteristika zavisi od temperature, ali nije okarakterisana. Smjernice su date samo za sobnu temperaturu.

Rev B – C

PLL se ne zaključava

EEPROM čitan iz koda aplikacije ne radi u Lock Bit Mode 3

Čitanje EEPROM-a može pokvariti pri malom volumenu napajanjatage / niska frekvencija takta

Brojač tajmera 1 PWM generisanje izlaza na OC1B-XOC1B ne radi ispravno

PLL se ne zaključava

Kada je na frekvencijama ispod 6.0 ​​MHz, PLL se neće zaključati

Rješavanje problema / rješenje

Kada koristite PLL, radi na 6.0 MHz ili više.

EEPROM čitan iz koda aplikacije ne radi u Lock Bit Mode 3

Kada su bitovi za zaključavanje memorije LB2 i LB1 programirani na način rada 3, čitanje EEPROM-a ne radi iz koda aplikacije.

Rješavanje problema/zaobilaženje

Nemojte postavljati Lock Bit Protection Mode 3 kada se kod aplikacije mora čitati iz EEPROM-a.

Čitanje EEPROM-a može pokvariti pri malom volumenu napajanjatage / niska frekvencija takta

Pokušaj čitanja EEPROM-a na niskim frekvencijama takta i/ili malom volumenu napajanjatage može rezultirati nevažećim podacima.

Rješavanje problema/rješenje

Nemojte koristiti EEPROM kada je frekvencija takta ispod 1MHz i zapremina napajanjatage je ispod 2V. Ako se radna frekvencija ne može podići iznad 1MHz, tada se obtage bi trebao biti veći od 2V. Slično, ako je ponuda voltage se ne može podići iznad 2V tada bi radna frekvencija trebala biti veća od 1MHz.

Poznato je da ova karakteristika zavisi od temperature, ali nije okarakterisana. Smjernice su date samo za sobnu temperaturu.

Brojač tajmera 1 PWM generisanje izlaza na OC1B – XOC1B ne radi ispravno

Tajmer Counter1 PWM izlaz OC1B-XOC1B ne radi ispravno. Samo u slučaju kada su kontrolni bitovi, COM1B1 i COM1B0 u istom modu kao COM1A1 i COM1A0, OC1B-XOC1B izlaz radi ispravno.

Rješavanje problema/zaobilaženje

Jedino rešenje je da koristite istu postavku kontrole na COM1A[1:0] i COM1B[1:0] kontrolnim bitovima, pogledajte tabelu 14-4 u tehničkom listu. Problem je riješen za Tiny45 rev D.

Rev A

Previsoka potrošnja energije za isključivanje

DebugWIRE gubi komunikaciju kada jednom uđe u prekide

PLL se ne zaključava

EEPROM čitan iz koda aplikacije ne radi u Lock Bit Mode 3

Čitanje EEPROM-a može pokvariti pri malom volumenu napajanjatage / niska frekvencija takta

Previsoka potrošnja energije za isključivanje

Tri situacije će dovesti do previsoke potrošnje energije za isključivanje. ovo su:

Eksterni sat se bira osiguračima, ali je I/O PORT i dalje omogućen kao izlaz.

EEPROM se čita prije isključivanja napajanja.

VCC je 4.5 volti ili više.

Odricanje od odgovornosti: Informacije u ovom dokumentu date su u vezi sa Atmel proizvodima. Ovim dokumentom ili u vezi sa prodajom Atmel proizvoda ne daje se nikakva licenca, izričita ili implicirana, putem estoppela ili na drugi način, za bilo koje pravo intelektualne svojine. OSIM KAKO JE NAVEDENO U ODREDBAMA I USLOVIMA PRODAJE NA ATMEL-u WEBSAJT, ATMEL NE PREUZIMA NIKAKVU ODGOVORNOST I ODRIČE BILO KAKVE IZRIČITE ILI ZAKONSKE GARANCIJE KOJE SE ODNOSE NA NJEGOVE PROIZVODE UKLJUČUJUĆI, ALI NE OGRANIČAVAJUĆI SE NA, IMPLICIRANU GARANCIJU ZA TRGOVAČKU DELATNOST . ATMEL NEĆE BITI ODGOVORAN ZA BILO KAKVE DIREKTNE, INDIREKTNE, POSLJEDIČNE, KAZNENE, POSEBNE ILI SLUČAJNE ŠTETE (UKLJUČUJUĆI, BEZ OGRANIČENJA, ŠTETU ZA GUBITAK I DOBIT, POSLOVANJE U UNUTRAŠNJEM POSLOVANJU). SE ILI NEMOGUĆNOST KORIŠĆENJA OVAJ DOKUMENT, ČAK I AKO JE ATMEL OBAVIJEŠTEN O MOGUĆNOSTI TAKVE ŠTETE.

Atmel ne daje nikakve izjave ili garancije u pogledu tačnosti ili potpunosti sadržaja ovog dokumenta i zadržava pravo izmjene specifikacija i opisa proizvoda u bilo koje vrijeme bez prethodne najave. Atmel se ne obavezuje da će ažurirati informacije sadržane u ovom dokumentu. Osim ako nije drugačije naznačeno, Atmel proizvodi nisu prikladni i neće se koristiti u automobilskim aplikacijama. Atmel proizvodi nisu namijenjeni, odobreni ili pod garancijom za upotrebu kao komponente u aplikacijama namijenjenim za održavanje ili održavanje života.

Reference

Ostavite komentar

Vaša email adresa neće biti objavljena. Obavezna polja su označena *