Atmel 8-bitni AVR mikrokontroler sa 2/4/8K bajtova u sistemu koji se može programirati
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
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
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
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.
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.
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.
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
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
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
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 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 i “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
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.
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.
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
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 i “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 i “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
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
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.
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
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
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)
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 i 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 | ![]() |
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 | kΩ | ||||
KIŠA | Analogni ulazni otpor | 100 | MΩ | |||
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 | kΩ | |||
KIŠA | Analogni ulazni otpor | 100 | MΩ | |||
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 | kΩ | |||
KIŠA | Analogni ulazni otpor | 100 | MΩ | |||
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.