8-bitni AVR mikrokrmilnik Atmel z 2/4/8K bajti sistemsko programabilnega Flasha
Lastnosti
- Visoko zmogljiv 8-bitni mikrokrmilnik AVR® z nizko porabo
- Napredna arhitektura RISC
- 120 zmogljivih navodil – izvedba večine ciklov z eno uro
- 32 x 8 splošnih delovnih registrov
- Popolnoma statično delovanje
- Nehlapni programski in podatkovni pomnilniki
- 2/4/8K bajtov v sistemskem programabilnem programskem pomnilniku Flash
- Vzdržljivost: 10,000 ciklov pisanja/brisanja
- 128/256/512 bajtov EEPROM, ki ga je mogoče programirati v sistemu
- Vzdržljivost: 100,000 ciklov pisanja/brisanja
- 128/256/512 bajtov notranji SRAM
- Programska ključavnica za samoprogramiranje programa Flash in varnost podatkov EEPROM
Periferne funkcije
- 8-bitni časovnik/števec s preddelilnikom in dvema kanaloma PWM
- 8-bitni hitri časovnik/števec z ločenim preddelilnikom
- 2 visokofrekvenčna PWM izhoda z ločenima izhodnima primerjalnima registroma
- Programabilni generator mrtvega časa
- USI – Univerzalni serijski vmesnik z detektorjem stanja zagona
- 10-bitni ADC
4 enojni kanali
2 para diferencialnih kanalov ADC s programirljivim ojačanjem (1x, 20x)
Merjenje temperature
Programabilni nadzorni časovnik z ločenim oscilatorjem na čipu
Analogni primerjalnik na čipu
Posebne funkcije mikrokrmilnika
sistem za odpravljanje napak na čipu debugWIRE
Programiranje znotraj sistema prek vrat SPI
Zunanji in notranji viri prekinitev
Načini mirovanja z nizko porabo energije, zmanjševanje šuma ADC in načini izklopa
Izboljšano vezje za ponastavitev ob vklopu
Programabilno vezje za zaznavanje porjavitve
Notranji kalibrirani oscilator
V/I in paketi
Šest programabilnih V/I linij
8-pin PDIP, 8-pin SOIC, 20-pin QFN/MLF in 8-pin TSSOP (samo ATtiny45/V)
Delovna zvezatage
– 1.8 – 5.5 V za ATtiny25V/45V/85V
– 2.7 – 5.5 V za ATtiny25/45/85
Stopnja hitrosti
– 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
Razpon industrijskih temperatur
Nizka poraba energije
Aktivni način:
1 MHz, 1.8 V: 300 µA
Način izklopa:
Konfiguracije pinov
Pinout ATtiny25/45/85
Opisi žebljičkov
VCC: Supply voltage.
GND: Ozemljitev.
Vrata B (PB5:PB0): Vrata B so 6-bitna dvosmerna V/I vrata z notranjimi vlečnimi upori (izbranimi za vsak bit). Izhodni medpomnilniki vrat B imajo simetrične pogonske lastnosti z visoko zmogljivostjo ponora in vira. Kot vhodi bodo zatiči vrat B, ki so zunaj nizko potegnjeni, vir toka, če so aktivirani vlečni upori. Zatiči vrat B so v treh položajih, ko postane pogoj ponastavitve aktiven, tudi če ura ne teče.
Vrata B služijo tudi funkcijam različnih posebnih funkcij ATtiny25/45/85, kot je navedeno
Na ATtiny25 se programabilna V/I vrata PB3 in PB4 (zatiči 2 in 3) zamenjajo v načinu združljivosti ATtiny15 za podporo združljivosti nazaj z ATtiny15.
RESET: Ponastavi vhod. Nizek nivo na tem zatiču, ki je daljši od minimalne dolžine impulza, bo povzročil ponastavitev, tudi če ura ne teče in pod pogojem, da zatič za ponastavitev ni bil onemogočen. Najmanjša dolžina impulza je navedena v Tabela 21-4 na strani 165. Ni zajamčeno, da bodo krajši impulzi ustvarili ponastavitev.
Zatič za ponastavitev se lahko uporablja tudi kot (šibek) I/O zatič.
konecview
ATtiny25/45/85 je CMOS 8-bitni mikrokrmilnik z nizko porabo energije, ki temelji na AVR izboljšani RISC arhitekturi. Z izvajanjem zmogljivih navodil v enem taktu ATtiny25/45/85 doseže prepustnost, ki se približuje 1 MIPS na MHz, kar oblikovalcu sistema omogoča optimizacijo porabe energije glede na hitrost obdelave.
Diagram blokov
Jedro AVR združuje bogat nabor navodil z 32 splošnimi delovnimi registri. Vseh 32 registrov je neposredno povezanih z aritmetično logično enoto (ALU), kar omogoča dostop do dveh neodvisnih registrov v enem samem ukazu, ki se izvede v enem taktu. Nastala arhitektura je bolj učinkovita pri kodiranju, hkrati pa dosega do desetkrat hitrejše prepustnosti kot običajni mikrokrmilniki CISC.
ATtiny25/45/85 ponuja naslednje funkcije: 2/4/8K bajtov programabilnega bliska v sistemu, 128/256/512 bajtov EEPROM, 128/256/256 bajtov SRAM, 6 splošnih V/I linij, 32 splošnih namenski delovni registri, en 8-bitni časovnik/števec z načini primerjave, en 8-bitni visokohitrostni časovnik/števec, univerzalni serijski vmesnik, notranje in zunanje prekinitve, 4-kanalni 10-bitni ADC, programabilni nadzorni časovnik z notranjim Oscilator in trije programsko izbrani načini varčevanja z energijo. Način nedejavnosti ustavi CPE, hkrati pa omogoči nadaljnje delovanje SRAM-a, časovnika/števca, ADC-ja, analognega primerjalnika in sistema prekinitev. Način izklopa shrani vsebino registra in onemogoči vse funkcije čipa do naslednje prekinitve ali ponastavitve strojne opreme. Način zmanjševanja hrupa ADC ustavi CPE in vse V/I module razen ADC, da zmanjša šum preklapljanja med pretvorbami ADC.
Naprava je izdelana z uporabo Atmelove tehnologije obstojnega pomnilnika visoke gostote. ISP Flash na čipu omogoča ponovno programiranje programskega pomnilnika v sistemu prek serijskega vmesnika SPI, z običajnim obstojnim programatorjem pomnilnika ali z zagonsko kodo na čipu, ki se izvaja na jedru AVR.
ATtiny25/45/85 AVR je podprt s celotno zbirko orodij za razvoj programov in sistemov, vključno s prevajalniki C, sestavljalci makrov, razhroščevalniki/simulatorji programov in kompleti za ocenjevanje.
O virih
Obsežen nabor razvojnih orodij, opomb o aplikacijah in podatkovnih listov je na voljo za prenos http://www.atmel.com/avr.
Koda npramples
Ta dokumentacija vsebuje preprosto kodo, nprampdatoteke, ki na kratko prikazujejo uporabo različnih delov naprave. Ta koda nprampdomnevamo, da del specifične glave file je vključen pred kompilacijo. Zavedajte se, da vsi prodajalci prevajalnika C ne vključujejo bitnih definicij v glavo files in obravnavanje prekinitev v C je odvisno od prevajalnika. Za več podrobnosti potrdite z dokumentacijo prevajalnika C.
Za V/I registre, ki se nahajajo v razširjeni V/I preslikavi, je treba navodila “IN”, “OUT”, “SBIS”, “SBIC”, “CBI” in “SBI” zamenjati z navodili, ki omogočajo dostop do razširjenega I /O. Običajno to pomeni "LDS" in "STS" v kombinaciji s "SBRS", "SBRC", "SBR" in "CBR". Upoštevajte, da vse naprave AVR ne vključujejo razširjenega V/I zemljevida.
Kapacitivno zaznavanje dotika
Atmel QTouch Library ponuja preprosto rešitev za vmesnike, občutljive na dotik, na mikrokontrolerjih Atmel AVR. Knjižnica QTouch Library vključuje podporo za metode pridobivanja QTouch® in QMatrix®.
Zaznavanje dotika je enostavno dodano kateri koli aplikaciji s povezovanjem knjižnice QTouch in uporabo vmesnika za programiranje aplikacij (API) knjižnice za definiranje kanalov na dotik in senzorjev. Aplikacija nato pokliče API, da pridobi informacije o kanalu in določi stanje senzorja za dotik.
Knjižnica QTouch je brezplačna in jo lahko prenesete iz Atmela webmesto. Za več informacij in podrobnosti o implementaciji glejte QTouch Library User Guide – na voljo tudi pri Atmelu webmesto.
Hramba podatkov
Rezultati kvalifikacije zanesljivosti kažejo, da je predvidena stopnja napak pri hrambi podatkov veliko manjša od 1 PPM v 20 letih pri 85 °C ali 100 letih pri 25 °C.
CPU jedro AVR
Uvod
Ta razdelek govori o jedrni arhitekturi AVR na splošno. Glavna funkcija jedra procesorja je zagotavljanje pravilnega izvajanja programa. CPE mora zato imeti možnost dostopa do pomnilnikov, izvajanja izračunov, nadzora perifernih naprav in obravnavanja prekinitev.
Arhitekturni konecview
Da bi povečali zmogljivost in vzporednost, AVR uporablja harvardsko arhitekturo – z ločenimi pomnilniki in vodili za program in podatke. Navodila v programskem pomnilniku se izvajajo z enostopenjskim cevovodom. Medtem ko se eno navodilo izvaja, je naslednje navodilo vnaprej pridobljeno iz pomnilnika programa. Ta koncept omogoča, da se ukazi izvajajo v vsakem taktu. Programski pomnilnik je bliskovni pomnilnik, ki ga je mogoče ponovno programirati v sistemu.
Register s hitrim dostopom File vsebuje 32 x 8-bitnih splošnih delovnih registrov z enim dostopnim časom taktnega cikla. To omogoča enociklično delovanje aritmetično logične enote (ALU). Pri tipični operaciji ALU se iz registra izdata dva operanda File, se operacija izvede, rezultat pa se shrani nazaj v register File– v enem taktu.
Šest od 32 registrov je mogoče uporabiti kot tri 16-bitne kazalce posrednega naslovnega registra za naslavljanje podatkovnega prostora – kar omogoča učinkovite izračune naslovov. Enega od teh kazalcev naslovov lahko uporabite tudi kot kazalec naslovov za iskalne tabele v pomnilniku programa Flash. Ti dodani funkcijski registri so 16-bitni X-, Y- in Z-register, opisani kasneje v tem razdelku.
ALU podpira aritmetične in logične operacije med registri ali med konstanto in registrom. Operacije z enim registrom se lahko izvajajo tudi v ALU. Po aritmetični operaciji se statusni register posodobi, da odraža informacije o rezultatu operacije.
Potek programa je zagotovljen s pogojnimi in brezpogojnimi navodili za skok in klic, ki lahko neposredno naslovijo celoten naslovni prostor. Večina ukazov AVR ima eno samo 16-bitno besedno obliko, vendar obstajajo tudi 32-bitna navodila.
Med prekinitvami in klici podprogramov je povratni naslov Program Counter (PC) shranjen v skladu. Sklad je dejansko dodeljen v splošnem podatkovnem SRAM-u, zato je velikost sklada omejena samo s skupno velikostjo SRAM-a in uporabo SRAM-a. Vsi uporabniški programi morajo inicializirati SP v rutini Reset (preden se izvedejo podprogrami ali prekinitve). Kazalec sklada (SP) je dostopen za branje/pisanje v V/I prostoru. Do podatkovnega SRAM-a je mogoče zlahka dostopati prek petih različnih načinov naslavljanja, ki jih podpira arhitektura AVR.
Vsi pomnilniški prostori v arhitekturi AVR so linearni in navadni pomnilniški zemljevidi.
Fleksibilni prekinitveni modul ima svoje krmilne registre v V/I prostoru z dodatnim bitom za omogočanje globalne prekinitve v statusnem registru. Vse prekinitve imajo ločen prekinitveni vektor v tabeli prekinitvenih vektorjev. Prekinitve imajo prednost v skladu s svojim položajem prekinitvenega vektorja. Nižji kot je naslov prekinitvenega vektorja, višja je prioriteta.
V/I pomnilniški prostor vsebuje 64 naslovov za periferne funkcije CPU, kot so kontrolni registri, SPI in druge V/I funkcije. Do V/I pomnilnika je mogoče dostopati neposredno ali kot lokacije podatkovnega prostora, ki sledijo lokacijam registra File, 0x20 – 0x5F.
ALU – Aritmetično logična enota
Visoko zmogljiva AVR ALU deluje v neposredni povezavi z vsemi 32 splošnimi delovnimi registri. Znotraj enega takta se izvajajo aritmetične operacije med registri splošnega namena ali med registrom in takojšnjim. Operacije ALU so razdeljene v tri glavne kategorije – aritmetične, logične in bitne funkcije. Nekatere izvedbe arhitekture nudijo tudi zmogljiv množitelj, ki podpira predznačeno/nepodznačeno množenje in ulomek. Za podroben opis si oglejte razdelek »Nabor navodil«.
Statusni register
Statusni register vsebuje informacije o rezultatu zadnjega izvedenega aritmetičnega ukaza. Te informacije se lahko uporabijo za spreminjanje poteka programa za izvajanje pogojnih operacij. Upoštevajte, da se statusni register posodobi po vseh operacijah ALU, kot je določeno v Referenci nabora navodil. To bo v mnogih primerih odpravilo potrebo po uporabi namenskih navodil za primerjavo, kar bo povzročilo hitrejšo in bolj kompaktno kodo.
Statusni register se ne shrani samodejno ob vstopu v prekinitveno rutino in obnovi ob vrnitvi iz prekinitve. To mora obravnavati programska oprema.
SREG – register statusa AVR
Statusni register AVR – SREG – je opredeljen kot:
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3F | I | T | H | S | V | N | Z | C | SREG |
Branje/Pisanje | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Začetna vrednost | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit 7 – I: Omogočanje globalne prekinitve
Global Interrupt Enable bit mora biti nastavljen, da so prekinitve omogočene. Posamezno krmiljenje omogočanja prekinitev se nato izvaja v ločenih kontrolnih registrih. Če je Global Interrupt Enable Register počiščen, nobena od prekinitev ni omogočena neodvisno od posameznih nastavitev za omogočanje prekinitve. I-bit izbriše strojna oprema, potem ko pride do prekinitve, in ga nastavi ukaz RETI, da omogoči nadaljnje prekinitve. I-bit lahko nastavi in počisti tudi aplikacija z navodili SEI in CLI, kot je opisano v sklicu na nabor navodil.
Bit 6 – T: shranjevanje bitnih kopij
Navodila za kopiranje bitov BLD (Bit LoaD) in BST (Bit STore) uporabljajo T-bit kot vir ali cilj za upravljani bit. Malo iz registra v Registru File lahko prekopirate v T z ukazom BST, bit v T pa lahko prekopirate v bit v registru v registru File po navodilih BLD.
Bit 5 – H: Zastavica za polovični prenos
Zastavica Half Carry H označuje Half Carry v nekaterih aritmetičnih operacijah. Half Carry je uporaben pri aritmetiki BCD. Za podrobne informacije glejte »Opis nabora navodil«.
Bit 4 – S: bit predznaka, S = N ⊕ V
S-bit je vedno izključujoč ali med negativno zastavico N in zastavico preliva komplementa dveh V. Glejte »Opis nabora navodil« za podrobne informacije.
Bit 3 – V: Zastavica prelivanja komplementa dveh
Zastavica prelivanja komplementa dveh V podpira aritmetiko komplementa dveh. Za podrobne informacije glejte »Opis nabora navodil«.
Bit 2 – N: Negativna zastavica
Negativna zastavica N označuje negativen rezultat aritmetične ali logične operacije. Za podrobne informacije glejte »Opis nabora navodil«.
Bit 1 – Z: ničelna zastavica
Ničelna zastavica Z označuje ničelni rezultat aritmetične ali logične operacije. Za podrobne informacije glejte »Opis nabora navodil«.
Bit 0 – C: Zastavica za prenos
Zastavica za prenos C označuje prenos v aritmetični ali logični operaciji. Za podrobne informacije glejte »Opis nabora navodil«.
Register za splošne namene File
Register File je optimiziran za nabor navodil AVR Enhanced RISC. Da bi dosegli zahtevano zmogljivost in prilagodljivost, register podpira naslednje vhodno/izhodne sheme File:
En 8-bitni izhodni operand in en 8-bitni vhodni rezultat
Dva 8-bitna izhodna operanda in en 8-bitni vhodni rezultat
Dva 8-bitna izhodna operanda in en 16-bitni vhodni rezultat
En 16-bitni izhodni operand in en 16-bitni vhodni rezultat
Slika 4-2 prikazuje strukturo 32 splošnih delovnih registrov v CPU.
Kot je prikazano v Slika 4-2, je vsakemu registru dodeljen tudi naslov podatkovnega pomnilnika, ki jih preslika neposredno v prvih 32 lokacij uporabniškega podatkovnega prostora. Čeprav ta organizacija pomnilnika ni fizično implementirana kot lokacije SRAM, zagotavlja veliko prilagodljivost pri dostopu do registrov, saj je mogoče registre kazalcev X, Y in Z nastaviti tako, da indeksirajo kateri koli register v file.Večina navodil, ki delujejo na Register File imajo neposreden dostop do vseh registrov, večina pa je enocikličnih navodil.
X-register, Y-register in Z-register
Registri R26..R31 imajo poleg splošne uporabe še nekaj dodatnih funkcij. Ti registri so 16-bitni naslovni kazalci za posredno naslavljanje podatkovnega prostora. Trije posredni naslovni registri X, Y in Z so definirani, kot je opisano v Slika 4-3.
V različnih načinih naslavljanja imajo ti naslovni registri funkcije kot fiksni premik, samodejno povečevanje in samodejno zmanjševanje (za podrobnosti glejte referenco nabora navodil).
Kazalec sklada
Stack se uporablja predvsem za shranjevanje začasnih podatkov, za shranjevanje lokalnih spremenljivk in za shranjevanje povratnih naslovov po prekinitvah in klicih podprogramov. Register kazalca sklada vedno kaže na vrh sklada. Upoštevajte, da je sklad implementiran tako, da raste z višjih pomnilniških lokacij na nižje pomnilniške lokacije. To pomeni, da ukaz Stack PUSH zmanjša kazalec sklada.
Kazalec sklada kaže na področje podatkovnega sklada SRAM, kjer se nahajajo skladi podprogramov in prekinitev. Ta prostor sklada v podatkovnem SRAM-u mora definirati program, preden se izvedejo kakršni koli podprogramski klici ali omogočijo prekinitve. Kazalec sklada mora biti nastavljen na točko nad 0x60. Kazalec sklada se zmanjša za eno, ko se podatki potisnejo v sklad z ukazom PUSH, in se zmanjša za dve, ko se povratni naslov potisne v sklad s klicem podprograma ali prekinitvijo. Kazalec sklada se poveča za eno, ko se podatki izvlečejo iz sklada z ukazom POP, in se poveča za dve, ko se podatki izvlečejo iz sklada z vrnitvijo iz podprograma RET ali vrnitvijo iz prekinitve RETI.
AVR Stack Pointer je implementiran kot dva 8-bitna registra v I/O prostoru. Število dejansko uporabljenih bitov je odvisno od izvedbe. Upoštevajte, da je podatkovni prostor v nekaterih izvedbah arhitekture AVR tako majhen, da je potreben samo SPL. V tem primeru register SPH ne bo prisoten.
SPH in SPL — register kazalcev sklada
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 | ||
Branje/Pisanje | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Branje/Pisanje | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Začetna vrednost | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | |
Začetna vrednost | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND |
Čas izvedbe navodil
Ta razdelek opisuje splošne koncepte časovnega razporejanja dostopa za izvajanje navodil. CPE AVR poganja ura CPE clkCPU, neposredno ustvarjena iz izbranega vira takta za čip. Notranja delitev ure se ne uporablja.
Slika 4-4 prikazuje vzporedno pridobivanje navodil in izvajanje navodil, ki jih omogočata harvardska arhitektura in register hitrega dostopa File koncept. To je osnovni koncept cevovoda za pridobitev do 1 MIPS na MHz z ustreznimi edinstvenimi rezultati za funkcije na ceno, funkcije na takte in funkcije na napajalno enoto.
Slika 4-5. Enociklično delovanje ALU
Obravnava ponastavitve in prekinitve
AVR ponuja več različnih virov prekinitev. Te prekinitve in ločen vektor ponastavitve imajo vsak ločen programski vektor v pomnilniškem prostoru programa. Vsem prekinitvam so dodeljeni posamezni omogočitveni biti, ki morajo biti zapisani kot logična ena skupaj z bitom za omogočitev globalne prekinitve v statusnem registru, da omogočijo prekinitev.
Najnižji naslovi v pomnilniškem prostoru programa so privzeto definirani kot vektorji ponastavitve in prekinitve. Celoten seznam vektorjev je prikazan v “Prekinitve” na strani 48. Seznam določa tudi stopnje prioritete različnih prekinitev. Nižji kot je naslov, višja je stopnja prioritete. RESET ima najvišjo prioriteto, naslednji pa je INT0 – zahteva za zunanjo prekinitev 0.
Ko pride do prekinitve, se I-bit Global Interrupt Enable počisti in vse prekinitve so onemogočene. Uporabniška programska oprema lahko zapiše logično ena v I-bit, da omogoči ugnezdene prekinitve. Vse omogočene prekinitve lahko nato prekinejo trenutno prekinitveno rutino. I-bit se samodejno nastavi, ko se izvede navodilo za vrnitev iz prekinitve – RETI.
V osnovi obstajata dve vrsti prekinitev. Prvo vrsto sproži dogodek, ki nastavi zastavico prekinitve. Za te prekinitve je programski števec vektoriran na dejanski prekinitveni vektor, da se izvede rutina za obdelavo prekinitev, strojna oprema pa počisti ustrezno prekinitveno zastavico. Prekinitvene zastavice je mogoče počistiti tudi tako, da zapišete logično enoto na položaj(e) bitov zastavice, ki jih želite počistiti. Če pride do prekinitvenega stanja, medtem ko je ustrezen bit za omogočanje prekinitve počiščen, bo zastavica prekinitve nastavljena in shranjena, dokler prekinitev ni omogočena ali programska oprema ne počisti zastavice. Podobno, če pride do enega ali več prekinitvenih pogojev, medtem ko je bit za omogočanje globalne prekinitve počiščen, bodo ustrezne zastavice za prekinitev nastavljene in shranjene, dokler ni nastavljen bit za omogočanje globalne prekinitve, nato pa bodo izvedene po prednostnem vrstnem redu.
Druga vrsta prekinitev se bo sprožila, dokler je prisotno prekinitveno stanje. Te prekinitve nimajo nujno prekinitvenih zastavic. Če prekinitveni pogoj izgine, preden je prekinitev omogočena, se prekinitev ne bo sprožila.
Ko AVR zapusti prekinitev, se bo vedno vrnil v glavni program in izvedel še en ukaz, preden bo postrežena kakršna koli čakajoča prekinitev.
Upoštevajte, da se statusni register ne shrani samodejno, ko vstopite v prekinitveno rutino, niti se ne obnovi, ko se vrnete iz prekinitvene rutine. To mora obravnavati programska oprema.
Ko uporabite navodilo CLI za onemogočanje prekinitev, bodo prekinitve takoj onemogočene. Po ukazu CLI ne bo izvedena nobena prekinitev, tudi če se pojavi hkrati z ukazom CLI. Naslednji exampLe prikazuje, kako se to lahko uporabi za izogibanje prekinitvam med časovno določenim zapisovalnim zaporedjem EEPROM.
Koda sestavljanja Example |
v r16, SREG; shrani vrednost SREG
cli ; onemogočite prekinitve med časovnim zaporedjem sbi EECR, EEMPE ; zaženite zapisovanje v EEPROM sbi EECR, EEPE ven SREG, r16 ; obnovi vrednost SREG (I-bit) |
C Koda Example |
char cSREG;
cSREG = SREG; /* shrani vrednost SREG */ /* onemogoči prekinitve med časovnim zaporedjem */ _CLI(); EECR |= (1< EECR |= (1< SREG = cSREG; /* obnovi vrednost SREG (I-bit) */ |
Pri uporabi ukaza SEI za omogočanje prekinitev se bo ukaz, ki sledi SEI, izvedel pred morebitnimi čakajočimi prekinitvami, kot je prikazano v tem primeruample.
Koda sestavljanja Example |
sei ; nastavite Global Interrupt Enable
spanje; vstopi v stanje spanja in čaka na prekinitev ; opomba: preklopil bo v stanje spanja pred vsemi čakajočimi ; prekinitev(e) |
C Koda Example |
_SEI(); /* nastavi globalno omogoči prekinitev */
_SLEEP(); /* vstop v stanje mirovanja, čakanje na prekinitev */ /* opomba: prešel bo v stanje mirovanja pred kakršno koli čakajočo(-imi) prekinitvijo(-ami) */ |
Odzivni čas prekinitve
Odziv izvajanja prekinitve za vse omogočene prekinitve AVR je najmanj štiri takte. Po štirih taktih se izvede naslov programskega vektorja za dejansko rutino za obdelavo prekinitev. V tem obdobju štirih urnih ciklov je programski števec potisnjen na sklad. Vektor je običajno skok na prekinitveno rutino in ta skok traja tri takte. Če med izvajanjem ukaza z več cikli pride do prekinitve, se to navodilo zaključi, preden je prekinitev postrežena. Če pride do prekinitve, ko je MCU v načinu mirovanja, se odzivni čas izvajanja prekinitve poveča za štiri takte. To povečanje pride poleg časa zagona iz izbranega načina mirovanja.
Vrnitev iz rutine za obdelavo prekinitev traja štiri takte. Med temi štirimi taktnimi cikli se programski števec (dva bajta) vrne iz sklada, kazalec sklada se poveča za dva in nastavi se I-bit v SREG.
AVR spomini
V tem razdelku so opisani različni pomnilniki v ATtiny25/45/85. Arhitektura AVR ima dva glavna pomnilniška prostora, podatkovni pomnilnik in programski pomnilniški prostor. Poleg tega ima ATtiny25/45/85 pomnilnik EEPROM za shranjevanje podatkov. Vsi trije pomnilniški prostori so linearni in pravilni.
Programski bliskovni pomnilnik, ki ga je mogoče ponovno programirati v sistemu
ATtiny25/45/85 vsebuje 2/4/8K bajtov vgrajenega sistemskega bliskovnega pomnilnika, ki ga je mogoče ponovno programirati, za shranjevanje programov. Ker so vsa navodila AVR široka 16 ali 32 bitov, je Flash organiziran kot 1024/2048/4096 x 16.
Flash pomnilnik ima vzdržljivost vsaj 10,000 ciklov pisanja/brisanja. Programski števec ATtiny25/45/85 (PC) je širok 10/11/12 bitov in tako obravnava 1024/2048/4096 programskih pomnilniških mest. "Program za spomin- ming« na strani 147 vsebuje podroben opis serijskega prenosa podatkov Flash z uporabo zatičev SPI.
Konstantne tabele je mogoče dodeliti znotraj celotnega naslovnega prostora programskega pomnilnika (glejte opis navodil LPM – Load Program memory).
Slika 5-1. Zemljevid programskega pomnilnika
Podatkovni pomnilnik SRAM
Slika 5-2 prikazuje, kako je organiziran pomnilnik ATtiny25/45/85 SRAM.
Nižje 224/352/607 Podatkovne pomnilniške lokacije obravnavajo oba registra File, V/I pomnilnik in notranji podatkovni SRAM. Prvih 32 lokacij naslavlja Register File, naslednjih 64 lokacij standardni V/I pomnilnik, zadnjih 128/256/512 lokacij pa naslavlja notranji podatkovni SRAM.
Pet različnih načinov naslavljanja za podatkovni pomnilnik zajema: neposredno, posredno s premikom, posredno, posredno s predzmanjševanjem in posredno z naknadnim prirastkom. V registru File, registri R26 do R31 vsebujejo registre kazalcev posrednega naslavljanja.
Neposredno naslavljanje doseže celoten podatkovni prostor.
Način Indirektno s premikom doseže 63 naslovnih lokacij od osnovnega naslova, ki ga poda Y- ali Z- register.
Pri uporabi načinov posrednega naslavljanja registra s samodejnim pred-dekrementom in post-inkrementom se naslovni registri X, Y in Z dekrementirajo ali povečajo.
32 splošnih delovnih registrov, 64 V/I registrov in 128/256/512 bajtov notranjih podatkov SRAM v ATtiny25/45/85 so vsi dostopni prek vseh teh načinov naslavljanja. Register File je opisano v "Gen- eralni register namenov File« na strani 10.
Slika 5-2. Zemljevid pomnilnika podatkov
Dostop do pomnilnika podatkov Times
Ta razdelek opisuje splošne koncepte časovnega razporeda dostopa za dostop do notranjega pomnilnika. Dostop do notranjih podatkov SRAM se izvede v dveh ciklih clkCPE, kot je opisano v Slika 5-3.
Slika 5-3. Cikli dostopa do podatkov SRAM na čipu Podatkovni pomnilnik EEPROM
ATtiny25/45/85 vsebuje 128/256/512 bajtov podatkovnega pomnilnika EEPROM. Organiziran je kot ločen podatkovni prostor, v katerem je mogoče brati in zapisovati posamezne bajte. EEPROM ima vzdržljivost vsaj 100,000 ciklov pisanja/brisanja. V nadaljevanju je opisan dostop med EEPROM in CPE, ki določa naslovne registre EEPROM, podatkovni register EEPROM in kontrolni register EEPROM. Za podrobnosti glej “Serijski prenos” na strani 151.
EEPROM dostop za branje/pisanje
Dostopni registri EEPROM so dostopni v V/I prostoru.
Dostopni časi pisanja za EEPROM so podani v Tabela 5-1 na strani 21. Funkcija samočasovnega merjenja pa omogoča, da uporabniška programska oprema zazna, kdaj se lahko zapiše naslednji bajt. Če uporabniška koda vsebuje navodila, ki zapisujejo EEPROM, je treba sprejeti nekaj previdnostnih ukrepov. V močno filtriranih napajalnikih bo VCC verjetno počasi naraščal ali padal
Vklop/izklop. To povzroči, da naprava nekaj časa deluje pri voltage nižji od določenega kot najmanjšega za uporabljeno taktno frekvenco. glej “Preprečevanje poškodb EEPROM-a” na strani 19 za podrobnosti o tem, kako se izogniti težavam v teh situacijah.
Da bi preprečili nenamerno pisanje v EEPROM, je treba upoštevati poseben postopek zapisovanja. Nanašati se na »Atomsko Programiranje bajtov” na strani 17 in “Programiranje deljenih bajtov” na strani 17 za podrobnosti o tem.
Ko je EEPROM prebran, se CPE ustavi za štiri takte, preden se izvede naslednji ukaz. Ko je EEPROM zapisan, se CPE ustavi za dva cikla ure, preden se izvede naslednji ukaz.
Programiranje atomskega bajta
Uporaba atomskega bajtnega programiranja je najenostavnejši način. Pri zapisovanju bajta v EEPROM mora uporabnik zapisati naslov v register EEAR in podatke v register EEDR. Če so biti EEPMn nič, bo pisanje EEPE (v štirih ciklih po zapisu EEMPE) sprožilo operacijo brisanja/pisanja. Tako cikel brisanja kot pisanja se izvedeta v eni operaciji in podan je skupni čas programiranja Tabela 5-1 na strani 21. Bit EEPE ostane nastavljen, dokler se operacije brisanja in pisanja ne zaključijo. Medtem ko je naprava zaposlena s programiranjem, ni mogoče izvajati drugih operacij EEPROM.
Programiranje razdeljenih bajtov
Cikel brisanja in pisanja je mogoče razdeliti na dve različni operaciji. To je lahko uporabno, če sistem zahteva kratek dostopni čas za neko omejeno časovno obdobje (običajno, če napajalnik voltage pade). Da bi napredoval- tagPri tej metodi se zahteva, da so bila mesta za pisanje izbrisana pred operacijo pisanja. Ker pa sta operaciji brisanja in pisanja razdeljeni, je brisanje mogoče izvesti, ko sistem omogoča izvajanje časovno kritičnih operacij (običajno po vklopu).
Izbriši
Za brisanje bajta je treba naslov zapisati v EEAR. Če so biti EEPMn 0b01, bo pisanje EEPE (v štirih ciklih po zapisu EEMPE) sprožilo samo operacijo brisanja (čas programiranja je podan v Tabela 5-1 naprej stran 21). Bit EEPE ostane nastavljen, dokler se brisanje ne zaključi. Medtem ko je naprava zaposlena s programiranjem, ni mogoče izvajati drugih operacij EEPROM.
Pišite
Za zapis lokacije mora uporabnik vpisati naslov v EEAR in podatke v EEDR. Če so biti EEPMn 0b10, bo pisanje EEPE (v štirih ciklih po zapisu EEMPE) sprožilo samo operacijo pisanja (čas programiranja je podan v Tabela 5-1 na strani 21). Bit EEPE ostane nastavljen, dokler se zapisovanje ne zaključi. Če lokacija za pisanje ni bila izbrisana pred pisanjem, je treba shranjene podatke šteti za izgubljene. Medtem ko je naprava zaposlena s programiranjem, ni mogoče izvajati drugih operacij EEPROM.
Umerjeni oscilator se uporablja za merjenje časa dostopov do EEPROM-a. Prepričajte se, da je frekvenca oscilatorja znotraj zahtev, opisanih v “OSCCAL – kalibracijski register oscilatorja” na strani 31.
Naslednja koda nprampprikazujejo en sklop in eno funkcijo C za brisanje, pisanje ali atomsko pisanje EEPROM-a. BivšiampPredpostavljamo, da so prekinitve nadzorovane (npr. z onemogočanjem prekinitev globalno), tako da med izvajanjem teh funkcij ne bo prišlo do prekinitev.
Koda sestavljanja Example |
EEPROM_zapis:
; Počakajte na dokončanje prejšnjega pisanja sbic EECR,EEPE rjmp EEPROM_write ; Nastavite način programiranja ldi r16, (0<<EEPM1)|(0<<EEPM0) ven EECR, r16 ; Nastavite naslov (r18:r17) v registru naslovov ven EEARH, r18 ven EEARL, r17 ; Zapis podatkov (r19) v register podatkov ven EEDR, r19 ; Napiši logično enico v EEMPE sbi EECR,EEMPE ; Zaženite zapisovanje v eeprom z nastavitvijo EEPE sbi EECR,EEPE ret |
C Koda Example |
void EEPROM_write(unsigned char ucAddress, unsigned char ucData)
{ /* Počakajte na dokončanje prejšnjega pisanja */ while(EECR & (1< ; /* Nastavi način programiranja */ EECR = (0< /* Nastavitev registrov naslovov in podatkov */ EEAR = ucAddress; EEDR = ucData; /* Zapiši logično enico v EEMPE */ EECR |= (1< /* Začni zapisovanje v eeprom z nastavitvijo EEPE */ EECR |= (1< } |
Naslednja koda nprampprikazujejo sestavljanje in funkcije C za branje EEPROM-a. Bivšiamppredpostavljamo, da so prekinitve nadzorovane, tako da med izvajanjem teh funkcij ne bo prišlo do prekinitev.
Koda sestavljanja Example |
EEPROM_branje:
; Počakajte na dokončanje prejšnjega pisanja sbic EECR,EEPE rjmp EEPROM_branje ; Nastavite naslov (r18:r17) v registru naslovov ven EEARH, r18 ven EEARL, r17 ; Začnite brati eeprom tako, da napišete EERE sbi EECR,EERE ; Branje podatkov iz registra podatkov v r16, EEDR ret |
C Koda Example |
unsigned char EEPROM_read(unsigned char ucAddress)
{ /* Počakajte na dokončanje prejšnjega pisanja */ medtem ko(EECR & (1< ; /* Nastavi register naslovov */ EEAR = ucAddress; /* Zaženite branje eeproma z zapisom EERE */ EECR |= (1< /* Vrni podatke iz registra podatkov */ vrni EEDR; } |
Preprečevanje poškodb EEPROM-a
V obdobjih nizkega VCC se lahko podatki EEPROM poškodujejo, ker voltage je prenizek, da bi CPE in EEPROM pravilno delovala. Te težave so enake kot pri sistemih na ravni plošče, ki uporabljajo EEPROM, in uporabiti je treba enake oblikovalske rešitve.
Poškodbo podatkov EEPROM lahko povzročita dve situaciji, ko voltage je prenizek. Prvič, običajno zaporedje pisanja v EEPROM zahteva minimalno voltage za pravilno delovanje. Drugič, CPE sam lahko nepravilno izvaja navodila, če je dobava voltage je prenizek.
Poškodbam podatkov EEPROM se je mogoče preprosto izogniti z upoštevanjem tega priporočila za načrtovanje:
Pusti AVR RESET aktivno (nizko) v obdobjih nezadostne voltage. To lahko storite tako, da omogočite notranji detektor rjave barve (BOD). Če se raven zaznave notranjega BOD ne ujema z
potrebna raven zaznavanja, lahko uporabite zunanje zaščitno vezje za ponastavitev nizkega VCC. Če pride do ponastavitve med potekom pisanja, se bo zapisovanje zaključilo pod pogojem, da je voltage zadostuje.
V/I pomnilnik
Definicija V/I prostora ATtiny25/45/85 je prikazana v “Povzetek registra” na strani 200.
Vsi V/I in zunanje naprave ATtiny25/45/85 so nameščeni v V/I prostoru. Do vseh V/I lokacij je mogoče dostopati z navodili LD/LDS/LDD in ST/STS/STD, ki prenašajo podatke med 32 splošnimi delovnimi registri in V/I prostorom. V/I registri v območju naslovov 0x00 – 0x1F so neposredno bitno dostopni z uporabo navodil SBI in CBI. V teh registrih je mogoče preveriti vrednost posameznih bitov z uporabo navodil SBIS in SBIC. Za več podrobnosti glejte razdelek z navodili. Pri uporabi posebnih V/I ukazov IN in OUT je treba uporabiti V/I naslove 0x00 – 0x3F. Pri naslavljanju V/I registrov kot podatkovnega prostora z uporabo navodil LD in ST je treba tem naslovom dodati 0x20.
Zaradi združljivosti s prihodnjimi napravami je treba rezervirane bite zapisati na nič, če do njih dostopate. Rezerviranih V/I pomnilniških naslovov se ne sme nikoli zapisovati.
Nekatere statusne zastavice se počistijo tako, da se jim zapiše logična ena. Upoštevajte, da bodo ukazi CBI in SBI delovali samo na podanem bitu in jih je zato mogoče uporabiti v registrih, ki vsebujejo takšne statusne zastavice. Navodila CBI in SBI delujejo samo z registri 0x00 do 0x1F.
V/I in krmilni registri perifernih naprav so razloženi v naslednjih razdelkih.
Opis registra
EEARH – EEPROM naslovni register
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x1F | – | – | – | – | – | – | – | EEAR8 | EEARH |
Branje/Pisanje | R | R | R | R | R | R | R | R/W | |
Začetna vrednost | 0 | 0 | 0 | 0 | 0 | 0 | 0 | X/0 |
Biti 7:1 – Res: rezervirani biti
Ti biti so rezervirani za prihodnjo uporabo in se vedno berejo kot nič.
Biti 0 – EEAR8: naslov EEPROM
To je najpomembnejši bit naslova EEPROM ATtiny85. V napravah z manj EEPROM-a, npr. ATtiny25/ATtiny45, je ta bit rezerviran in bo vedno prebral ničlo. Začetna vrednost registra naslovov EEPROM (EEAR) je nedefinirana, zato je treba pred dostopom do EEPROM-a zapisati pravilno vrednost.
EEARL – EEPROM naslovni register
bit
0x1E | EEAR7 | EEAR6 | EEAR5 | EEAR4 | EEAR3 | EEAR2 | EEAR1 | EEAR0 | EEARL |
Zadaj/Pisanje | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Začetna vrednost | X | X | X | X | X | X | X | X |
Bit 7 – EEAR7: naslov EEPROM
To je najpomembnejši bit naslova EEPROM ATtiny45. V napravah z manj EEPROM-a, npr. ATtiny25, je ta bit rezerviran in bo vedno prebral ničlo. Začetna vrednost EEPROM Address Register (EEAR) je nedefinirana, zato je treba pred dostopom do EEPROM zapisati pravilno vrednost.
Biti 6:0 – EEAR[6:0]: naslov EEPROM
To so (nizki) biti registra naslovov EEPROM. Podatkovni bajti EEPROM-a so naslovljeni linearno v območju 0…(128/256/512-1). Začetna vrednost EEAR je nedefinirana, zato je treba pred dostopom do EEPROM-a zapisati pravilno vrednost.
EEDR – register podatkov EEPROM
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x1D | EEDR7 | EEDR6 | EEDR5 | EEDR4 | EEDR3 | EEDR2 | EEDR1 | EEDR0 | EEDR |
Branje/Pisanje | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Začetna vrednost | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Za operacijo zapisovanja v EEPROM register EEDR vsebuje podatke, ki jih je treba zapisati v EEPROM na naslovu, ki ga poda register EEAR. Za operacijo branja EEPROM-a EEDR vsebuje podatke, prebrane iz
EEPROM na naslovu EEAR.
5.5.4 EECR – kontrolni register EEPROM |
|||||||||
Bit 7 6 5 | 4 | 3 | 2 | 1 | 0 | ||||
0x1C – | – | EEPM1 | EEPM0 | JEZIČNO | EEMPE | EEPE | EERE | EECR | |
Branje/pisanje R R R/W | R/W | R/W | R/W | R/W | R/W | ||||
Začetna vrednost 0 0 X | X | 0 | 0 | X | 0 |
Bit 7 – Res: rezerviran bit
Ta bit je rezerviran za prihodnjo uporabo in se bo v ATtiny0/25/45 vedno glasil kot 85. Za združljivost s prihodnjimi napravami AVR ta bit vedno zapišite na nič. Po branju zakrijte ta del.
Bit 6 – Res: rezerviran bit
Ta bit je rezerviran v ATtiny25/45/85 in se bo vedno bral kot nič.
Biti 5:4 – EEPM[1:0]: Biti načina programiranja EEPROM
Nastavitev bitov načina programiranja EEPROM določa, katero dejanje programiranja se bo sprožilo pri zapisovanju EEPE. Podatke je mogoče programirati v eni atomski operaciji (izbriši staro vrednost in programirati novo vrednost) ali razdeliti operaciji brisanja in pisanja v dve različni operaciji. Časi programiranja za različne načine so prikazani v Tabela 5-1. Medtem ko je EEPE nastavljen, bo vsako pisanje v EEPMn prezrto. Med ponastavitvijo bodo biti EEPMn ponastavljeni na 0b00, razen če je EEPROM zaseden s programiranjem.
Tabela 5-1. Biti načina EEPROM
EEPM1 | EEPM0 | Čas programiranja | Delovanje |
0 | 0 | 3.4 ms | Brisanje in pisanje v eni operaciji (Atomsko delovanje) |
0 | 1 | 1.8 ms | Samo brisanje |
1 | 0 | 1.8 ms | Samo piši |
1 | 1 | – | Rezervirano za prihodnjo uporabo |
Bit 3 – EERIE: EEPROM Ready Interrupt Enable
Zapis EERIE v eno omogoči prekinitev EEPROM Ready Interrupt, če je nastavljen I-bit v SREG. Zapis EERIE na nič onemogoči prekinitev. EEPROM pripravljena prekinitev ustvari stalno prekinitev, ko je obstojni pomnilnik pripravljen za programiranje.
Bit 2 – EEMPE: Omogočanje glavnega programa EEPROM
Bit EEMPE določa, ali bo pisanje EEPE v enega imelo učinek ali ne.
Ko je nastavljen EEMPE, bo nastavitev EEPE v štirih taktih programirala EEPROM na izbranem naslovu. Če je EEMPE enak nič, nastavitev EEPE ne bo imela učinka. Ko programska oprema zapiše EEMPE v eno, strojna oprema po štirih taktih počisti bit na nič.
Bit 1 – EEPE: Omogočanje programa EEPROM
Signal za omogočanje programa EEPROM EEPE je signal za omogočanje programiranja v EEPROM. Ko je EEPE zapisan, bo EEPROM programiran v skladu z nastavitvijo bitov EEPMn. Bit EEMPE je treba zapisati v eno, preden se v EEPE zapiše logična ena, sicer zapis v EEPROM ne poteka. Ko se čas dostopa do pisanja izteče, strojna oprema izbriše bit EEPE. Ko je EEPE nastavljen, se CPU ustavi za dva cikla, preden se izvede naslednji ukaz.
Bit 0 – EERE: Omogočeno branje EEPROM-a
Signal za omogočanje branja EEPROM – EERE – je bralni utrip v EEPROM. Ko je v registru EEAR nastavljen pravilen naslov, je treba bit EERE zapisati v eno, da se sproži branje EEPROM-a. Dostop za branje EEPROM-a traja eno navodilo, zahtevani podatki pa so na voljo takoj. Ko je EEPROM prebran, se CPE ustavi za štiri cikle, preden se izvede naslednji ukaz. Uporabnik mora vprašati bit EEPE, preden začne z operacijo branja. Če poteka zapisovanje, ni mogoče prebrati EEPROM-a niti spremeniti registra EEAR.
Sistemska ura in možnosti ure
Urni sistemi in njihova distribucija
Ura CPU-ja
Ura CPU je usmerjena v dele sistema, ki so povezani z delovanjem jedra AVR. nprampdeli takšnih modulov so register splošnih namenov File, statusni register in podatkovni pomnilnik, v katerem je kazalec sklada. Zaustavitev takta procesorja onemogoči jedru izvajanje splošnih operacij in izračunov.
V/I ura – clkI/O
V/I uro uporablja večina V/I modulov, kot je časovnik/števec. V/I uro uporablja tudi modul za zunanje prekinitve, vendar upoštevajte, da nekatere zunanje prekinitve zazna asinhrona logika, kar omogoča zaznavanje takšnih prekinitev, tudi če je V/I ura zaustavljena.
Ura bliskavice – clkFLASH
Ura Flash nadzoruje delovanje vmesnika Flash. Ura Flash je običajno aktivna sočasno z uro procesorja.
Ura ADC – clkADC
ADC ima namensko domeno ure. To omogoča zaustavitev taktov CPU in I/O, da se zmanjša šum, ki ga ustvarja digitalno vezje. To daje natančnejše rezultate pretvorbe ADC.
Notranji PLL za hitro generiranje perifernega takta – clkPCK
Notranji PLL v ATtiny25/45/85 ustvari taktno frekvenco, ki je 8x pomnožena z vhodom vira. PLL privzeto uporablja izhod notranjega oscilatorja RC 8.0 MHz kot vir. Če je bit LSM PLLCSR nastavljen, bo PLL uporabil izhod RC oscilatorja, deljen z dva. Tako je izhod PLL, hitra periferna ura, 64 MHz. Hitra periferna ura ali ura, vnaprej skalirana iz nje, se lahko izbere kot vir ure za Timer/Counter1 ali kot sistemska ura. glej Slika 6-2. Frekvenca hitre periferne ure je deljena z dva, ko je nastavljen LSM PLLCSR, kar ima za posledico taktno frekvenco 32 MHz. Upoštevajte, da LSM ni mogoče nastaviti, če se kot sistemska ura uporablja PLLCLK.
Slika 6-2. Urni sistem PCK.
PLL je zaklenjen na RC oscilatorju in prilagajanje RC oscilatorja prek registra OSCCAL bo hkrati prilagodilo hitro periferno uro. Toda tudi če je RC oscilator nastavljen na višjo frekvenco od 8 MHz, se hitra frekvenca periferne ure nasiči pri 85 MHz (v najslabšem primeru) in ostane nihajoča pri najvišji frekvenci. Upoštevati je treba, da PLL v tem primeru ni več zaklenjen z uro RC oscilatorja. Zato je priporočljivo, da nastavitve OSCCAL ne izvajate na višjo frekvenco od 8 MHz, da ohranite PLL v pravilnem delovnem območju.
Notranji PLL je omogočen, ko:
Bit PLLE v registru PLLCSR je nastavljen.
Varovalka CKSEL je programirana na '0001'.
Varovalka CKSEL je programirana na '0011'.
Bit PLLCSR PLOCK je nastavljen, ko je PLL zaklenjen. Notranji oscilator RC in PLL sta izklopljena v načinu izklopa in stanju mirovanja.
Notranji PLL v združljivem načinu ATtiny15
Ker je ATtiny25/45/85 naprava za selitev za uporabnike ATtiny15, obstaja način združljivosti ATtiny15 za združljivost s prejšnjimi različicami. Način združljivosti ATtiny15 se izbere s programiranjem varovalk CKSEL na '0011'.
V načinu združljivosti ATtiny15 je frekvenca notranjega oscilatorja RC umerjena na 6.4 MHz, faktor množenja PLL pa je nastavljen na 4x. glej Slika 6-3. S temi prilagoditvami je taktni sistem združljiv z ATtiny15 in posledična hitra periferna ura ima frekvenco 25.6 MHz (enako kot v ATtiny15).
Slika 6-3. PCK taktni sistem v združljivem načinu ATtiny15.
Viri ure
Naprava ima naslednje možnosti vira ure, ki jih je mogoče izbrati z bitji Flash Fuse, kot je prikazano spodaj. Ura iz izbranega vira se vnese v taktni generator AVR in usmeri k ustreznim modulom.
Tabela 6-1. Device Clocking Options Izberite
Možnost merjenja ure naprave | CKSEL[3:0](1) |
Zunanja ura (glej stran 26) | 0000 |
Visokofrekvenčna ura PLL (glej stran 26) | 0001 |
Kalibriran notranji oscilator (glej stran 27) | 0010(2) |
Kalibriran notranji oscilator (glej stran 27) | 0011(3) |
Notranji 128 kHz oscilator (glej stran 28) | 0100 |
Nizkofrekvenčni kristalni oscilator (glej stran 29) | 0110 |
Kristalni oscilator/keramični resonator (glej stran 29) | 1000 – 1111 |
Rezervirano | 0101, 0111 |
Za vse varovalke "1" pomeni neprogramirano, medtem ko "0" pomeni programirano.
Naprava je dobavljena z izbrano to možnostjo.
To bo izbralo način združljivosti ATtiny15, kjer je sistemska ura deljena s štiri, kar ima za posledico urno frekvenco 1.6 MHz. Za več informacij glejte “Umerjeni notranji oscilator” na strani 27.
V naslednjih razdelkih so podane različne možnosti za vsako možnost merjenja ure. Ko se CPE prebudi iz izklopa, se izbrani vir ure uporabi za merjenje časa zagona, kar zagotavlja stabilno delovanje oscilatorja, preden se začne izvajanje navodil. Ko se CPE začne s ponastavitvijo, obstaja dodatna zakasnitev, ki omogoča, da moč doseže stabilno raven, preden začne normalno delovati. Oscilator Watchdog se uporablja za merjenje časa tega dela zagonskega časa v realnem času. Število ciklov oscilatorja WDT, uporabljenih za vsako časovno omejitev, je prikazano v Tabela 6-2.
Tabela 6-2. Število ciklov nadzornega oscilatorja
Vnesite Časovna omejitev | Število ciklov |
4 ms | 512 |
64 ms | 8K (8,192) |
Zunanja ura
Če želite poganjati napravo iz zunanjega vira ure, je treba poganjati CLKI, kot je prikazano v Slika 6-4. Za delovanje naprave na zunanji uri morajo biti varovalke CKSEL programirane na "00".
Slika 6-4. Konfiguracija zunanjega pogona ure
Ko je izbran ta vir ure, zagonske čase določajo varovalke SUT, kot je prikazano v Tabela 6-3.
Tabela 6-3. Zagonski časi za izbiro zunanje ure
NED[1:0] | Čas zagona po izklopu | Dodatna zamuda pri ponastavitvi | Priporočena uporaba |
00 | 6 CK | 14CK | BOD omogočen |
01 | 6 CK | 14CK + 4 ms | Hitro naraščajoča moč |
10 | 6 CK | 14CK + 64 ms | Počasi naraščajoča moč |
11 | Rezervirano |
Pri uporabi zunanje ure se je treba izogibati nenadnim spremembam uporabljene frekvence ure, da se zagotovi stabilno delovanje MCU. Sprememba frekvence za več kot 2 % od enega takta do drugega lahko privede do nepredvidljivega vedenja. Zagotoviti je treba, da je MCU med takšnimi spremembami taktne frekvence v stanju Reset.
Upoštevajte, da lahko predprodajo sistemske ure uporabite za izvajanje sprememb med izvajanjem frekvence notranje ure, medtem ko še vedno zagotavljate stabilno delovanje. Nanašati se na “Preddelilnik sistemske ure” na strani 31 za podrobnosti.
Visokofrekvenčna ura PLL
Obstaja notranji PLL, ki zagotavlja nominalno frekvenco 64 MHz, zaklenjeno na RC oscilator za uporabo perifernega časovnika/števca1 in za vir sistemske ure. Ko je izbran kot vir sistemske ure, se s programiranjem varovalk CKSEL na '0001' razdeli na štiri, kot je prikazano v Tabela 6-4.
Tabela 6-4. Načini delovanja visokofrekvenčnega PLL takta
CKSEL[3:0] | Nominalna frekvenca |
0001 | 16 MHz |
Ko je izbran ta vir ure, so časi zagona določeni z varovalkami SUT, kot je prikazano v Tabela 6-5.
Tabela 6-5. Zagonski časi za visokofrekvenčno uro PLL
NED[1:0] | Čas zagona po izklopu | Dodatna zakasnitev po ponastavitvi ob vklopu (VCC = 5.0 V) | Priporočena uporaba |
00 | 14CK + 1K (1024) CK + 4 ms | 4 ms | BOD omogočen |
Tabela 6-5. Zagonski časi za visokofrekvenčno uro PLL
NED[1:0] | Čas zagona po izklopu | Dodatna zakasnitev po ponastavitvi ob vklopu (VCC = 5.0 V) | Priporočena uporaba |
01 | 14CK + 16K (16384) CK + 4 ms | 4 ms | Hitro naraščajoča moč |
10 | 14CK + 1K (1024) CK + 64 ms | 4 ms | Počasi naraščajoča moč |
11 | 14CK + 16K (16384) CK + 64 ms | 4 ms | Počasi naraščajoča moč |
Kalibriran notranji oscilator
Notranji oscilator RC privzeto zagotavlja takt približno 8.0 MHz. Čeprav voltage in odvisno od temperature lahko to uro uporabnik zelo natančno umeri. glej »Umerjeni notranji akumulator RC oscilatorja Racy« na strani 164 in “Hitrost notranjega oscilatorja” na strani 192 za več podrobnosti. Naprava je dobavljena s programirano varovalko CKDIV8. glej “Preddelilnik sistemske ure” na strani 31 za več podrobnosti.
To uro lahko izberete kot sistemsko uro s programiranjem varovalk CKSEL, kot je prikazano v Tabela 6-6 na strani
27. Če je izbrana, bo delovala brez zunanjih komponent. Med ponastavitvijo strojna oprema naloži vnaprej programirano kalibracijsko vrednost v register OSCCAL in s tem samodejno kalibrira RC oscilator. Natančnost te kalibracije je prikazana kot tovarniška kalibracija v Tabela 21-2 na strani 164.
S spreminjanjem registra OSCCAL iz SW, glejte “OSCCAL – kalibracijski register oscilatorja” na strani 31, je mogoče doseči višjo natančnost kalibracije kot z uporabo tovarniške kalibracije. Natančnost te kalibracije je prikazana kot uporabniška kalibracija v Tabela 21-2 na strani 164.
Ko se ta oscilator uporablja kot ura čipa, bo Watchdog oscilator še vedno uporabljen za Watchdog Timer in za Reset Time-out. Za več informacij o vnaprej programirani vrednosti umerjanja glejte razdelek "Cali- bracijski bajti« na strani 150.
Notranji oscilator lahko nastavite tudi tako, da zagotavlja takt 6.4 MHz, tako da zapišete varovalke CKSEL na "0011", kot je prikazano v Tabela 6-6 spodaj. Ta nastavitev se imenuje način združljivosti ATtiny15 in je namenjena zagotavljanju kalibriranega vira ure pri 6.4 MHz, kot v ATtiny15. V združljivem načinu ATtiny15 PLL uporablja notranji oscilator, ki deluje pri 6.4 MHz, da ustvari 25.6 MHz periferni taktni signal za Timer/Counter1 (glejte “8-bitni časovnik/števec1 in Način ATtiny15« na strani 95). Upoštevajte, da je v tem načinu delovanja signal ure 6.4 MHz vedno deljen s štiri, kar zagotavlja sistemsko uro 1.6 MHz.
Tabela 6-6. Notranji kalibrirani načini delovanja RC oscilatorja
CKSEL[3:0] | Nominalna frekvenca |
0010(1) | 8.0 MHz |
0011(2) | 6.4 MHz |
Naprava je dobavljena z izbrano to možnostjo.
Ta nastavitev bo izbrala način združljivosti ATtiny15, kjer je sistemska ura deljena s štiri, kar ima za posledico urno frekvenco 1.6 MHz.
Ko je kalibriran notranji oscilator 8 MHz izbran kot vir takta, so zagonski časi določeni z varovalkami SUT, kot je prikazano v Tabela 6-7 spodaj.
Tabela 6-7. Zagonski časi za notranjo kalibrirano uro RC oscilatorja
NED[1:0] | Čas zagona po izklopu | Dodatna zakasnitev pred ponastavitvijo (VCC = 5.0 V) | Priporočena uporaba |
00 | 6 CK | 14CK(1) | BOD omogočen |
01 | 6 CK | 14CK + 4 ms | Hitro naraščajoča moč |
10(2) | 6 CK | 14CK + 64 ms | Počasi naraščajoča moč |
11 | Rezervirano |
1. Če je varovalka RSTDISBL programirana, se ta zagonski čas poveča na 14CK + 4 ms, da se zagotovi vstop v način programiranja.
2. Naprava je dobavljena z izbrano to možnostjo.
V načinu združljivosti ATtiny15 so zagonski časi določeni z varovalkami SUT, kot je prikazano v Tabela 6-8 spodaj.
Tabela 6-8. Zagonski časi za notranjo kalibrirano uro RC oscilatorja (v načinu ATtiny15)
NED[1:0] | Čas zagona po izklopu | Dodatna zakasnitev pred ponastavitvijo (VCC = 5.0 V) | Priporočena uporaba |
00 | 6 CK | 14CK + 64 ms | |
01 | 6 CK | 14CK + 64 ms | |
10 | 6 CK | 14CK + 4 ms | |
11 | 1 CK | 14CK(1) |
Opomba: Če je varovalka RSTDISBL programirana, se bo ta zagonski čas povečal na 14CK + 4 ms, da se zagotovi vstop v način programiranja.
Če povzamemo, več informacij o načinu združljivosti ATtiny15 najdete v razdelkih »Vrata B (PB5:PB0)« vklopljena stran 2, “Notranji PLL v združljivem načinu ATtiny15” na strani 24, »8-bitni časovnik/števec1 v načinu ATtiny15« je vklopljen stran 95, “Omejitve debugWIRE” na strani 140, “Kalibracijski bajti” na strani 150 in v tabeli »Urni predmerilnik Izberite” na strani 33.
Notranji 128 kHz oscilator
Notranji oscilator 128 kHz je oscilator majhne moči, ki zagotavlja takt 128 kHz. Frekvenca je nominalna pri 3V in 25°C. To uro lahko izberete kot sistemsko uro s programiranjem varovalk CKSEL na »0100«.
Ko je izbran ta vir ure, zagonske čase določajo varovalke SUT, kot je prikazano v Tabela 6-9.
Tabela 6-9. Zagonski časi za notranji oscilator 128 kHz
NED[1:0] | Čas zagona po izklopu | Dodatna zamuda pri ponastavitvi | Priporočena uporaba |
00 | 6 CK | 14CK(1) | BOD omogočen |
01 | 6 CK | 14CK + 4 ms | Hitro naraščajoča moč |
10 | 6 CK | 14CK + 64 ms | Počasi naraščajoča moč |
11 | Rezervirano |
Opomba: Če je varovalka RSTDISBL programirana, se bo ta zagonski čas povečal na 14CK + 4 ms, da se zagotovi vstop v način programiranja.
Nizkofrekvenčni kristalni oscilator
Za uporabo kristala ure 32.768 kHz kot vira ure za napravo je treba izbrati nizkofrekvenčni kristalni oscilator z nastavitvijo varovalk CKSEL na '0110'. Kristal je treba povezati, kot je prikazano na Slika 6-5. Če želite najti primerno obremenitveno kapacitivnost za 32.768 kHz crysal, si oglejte proizvajalčev podatkovni list.
Ko je ta oscilator izbran, so časi zagona določeni z varovalkami SUT, kot je prikazano v Tabela 6-10.
Tabela 6-10. Zagonski časi za izbiro ure nizkofrekvenčnega kristalnega oscilatorja
NED[1:0] | Čas zagona po izklopu | Dodatna zakasnitev pred ponastavitvijo (VCC = 5.0 V) | Priporočena uporaba |
00 | 1K (1024) CK(1) | 4 ms | Omogočeno hitro naraščanje moči ali BPK |
01 | 1K (1024) CK(1) | 64 ms | Počasi naraščajoča moč |
10 | 32K (32768) CK | 64 ms | Stabilna frekvenca ob zagonu |
11 | Rezervirano |
Opomba: Te možnosti uporabite le, če stabilnost frekvence ob zagonu ni pomembna.
Nizkofrekvenčni kristalni oscilator zagotavlja notranjo obremenitveno kapacitivnost, glej Tabela 6-11 na vsakem zatiču TOSC.
Tabela 6-11. Kapacitivnost nizkofrekvenčnega kristalnega oscilatorja
Naprava | 32 kHz Osc. Vrsta | Pokrov (Xtal1/Tosc1) | Pokrov (Xtal2/Tosc2) |
ATtiny25/45/85 | Sistem Osc. | 16 pF | 6 pF |
Kristalni oscilator/keramični resonator
XTAL1 in XTAL2 sta vhod in izhod obračanja amplifier, ki ga je mogoče konfigurirati za uporabo kot oscilator na čipu, kot je prikazano v Slika 6-5. Lahko se uporabi bodisi kvarčni kristal ali keramični resonator.
C1 in C2 morata biti vedno enaka za kristale in resonatorje. Optimalna vrednost kondenzatorjev je odvisna od uporabljenega kristala ali resonatorja, količine blodeče kapacitivnosti in elektromagnetnega šuma okolja. Podanih je nekaj začetnih smernic za izbiro kondenzatorjev za uporabo s kristali Tabela 6-12 spodaj. Za keramične resonatorje je treba uporabiti vrednosti kondenzatorja, ki jih je navedel proizvajalec.
Tabela 6-12. Načini delovanja kristalnega oscilatorja
CKSEL[3:1] | Frekvenčno območje (MHz) | Priporočeno območje za kondenzatorja C1 in C2 za uporabo s kristali (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 |
Opombe: te možnosti ne bi smeli uporabljati s kristali, ampak samo s keramičnimi resonatorji.
Oscilator lahko deluje v treh različnih načinih, od katerih je vsak optimiziran za določeno frekvenčno območje. Način delovanja se izbere z varovalkami CKSEL[3:1], kot je prikazano na Tabela 6-12.
Varovalka CKSEL0 skupaj z varovalkami SUT[1:0] izbereta zagonske čase, kot je prikazano v Tabela 6-13.
Tabela 6-13. Zagonski časi za izbiro ure kristalnega oscilatorja
CKSEL0 | NED[1:0] | Čas zagona po izklopu | Dodatna zamuda pri ponastavitvi | Priporočena uporaba |
0 | 00 | 258 CK(1) | 14CK + 4 ms | Keramični resonator, hitro naraščajoča moč |
0 | 01 | 258 CK(1) | 14CK + 64 ms | Keramični resonator, počasi narašča moč |
0 | 10 | 1K (1024) CK(2) | 14CK | Keramični resonator, BOD omogočen |
0 | 11 | 1K (1024)CK(2) | 14CK + 4 ms | Keramični resonator, hitro naraščajoča moč |
1 | 00 | 1K (1024)CK(2) | 14CK + 64 ms | Keramični resonator, počasi narašča moč |
1 | 01 | 16K (16384) CK | 14CK | Kristalni oscilator, BOD omogočen |
1 | 10 | 16K (16384) CK | 14CK + 4 ms | Kristalni oscilator, hitro naraščajoča moč |
1 | 11 | 16K (16384) CK | 14CK + 64 ms | Kristalni oscilator, počasi naraščajoča moč |
Opombe
Te možnosti je treba uporabiti le, če ne delujejo blizu največje frekvence naprave in le, če stabilnost frekvence ob zagonu ni pomembna za aplikacijo. Te možnosti niso primerne za kristale.
Te možnosti so namenjene uporabi s keramičnimi resonatorji in zagotavljajo stabilnost frekvence ob zagonu. Uporabljajo se lahko tudi s kristali, ko ne delujejo blizu maksimalne frekvence naprave in če stabilnost frekvence ob zagonu ni pomembna za aplikacijo.
Privzeti vir ure
Naprava je dobavljena s programiranimi CKSEL = “0010”, SUT = “10” in CKDIV8. Privzeta nastavitev vira ure je torej notranji RC oscilator, ki deluje pri 8 MHz z najdaljšim zagonskim časom in začetnim predskaliranjem sistemske ure 8, kar ima za posledico sistemsko uro 1.0 MHz. Ta privzeta nastavitev zagotavlja, da lahko vsi uporabniki nastavijo želeno nastavitev vira ure z uporabo In-System ali High-voltage Programer.
Preddelilnik sistemske ure
Sistemsko uro ATtiny25/45/85 lahko razdelite tako, da nastavite “CLKPR – Urni predskalni register” na strani 32. To funkcijo lahko uporabite za zmanjšanje porabe energije, ko je zahteva po procesorski moči nizka. To je mogoče uporabiti z vsemi možnostmi vira ure in bo vplivalo na frekvenco ure CPE in vseh sinhronih zunanjih naprav. clkI/O, clkADC, clkCPU in clkFLASH so deljeni s faktorjem, kot je prikazano v Tabela 6-15 na strani 33.
Preklopni čas
Pri preklapljanju med nastavitvami preddelilnika preddelilnik sistemske ure zagotovi, da v sistemu ure ne pride do napak in da nobena vmesna frekvenca ni višja od frekvence ure, ki ustreza prejšnji nastavitvi, niti frekvence ure, ki ustreza novi nastavitvi.
Števec valovanja, ki izvaja preddelilnik, deluje na frekvenci nerazdeljene ure, ki je lahko hitrejša od frekvence ure CPE. Zato ni mogoče določiti stanja preddelilnika – tudi če bi bil berljiv, in natančnega časa, ki je potreben za preklop z enega razdelka ure na drugega, ni mogoče natančno predvideti.
Od trenutka, ko so vrednosti CLKPS zapisane, traja med T1 + T2 in T1 + 2*T2, preden je nova urna frekvenca aktivna. V tem intervalu se ustvarita 2 aktivna robova ure. Tu je T1 prejšnje časovno obdobje, T2 pa obdobje, ki ustreza novi nastavitvi preddelilnika.
Izhodni medpomnilnik ure
Naprava lahko izpiše sistemsko uro na pin CLKO (če se ne uporablja kot pin XTAL2). Za omogočanje izhoda je treba programirati varovalko CKOUT. Ta način je primeren, kadar se ura čipa uporablja za krmiljenje drugih vezij v sistemu. Upoštevajte, da ura med ponastavitvijo ne bo prikazana in da bo normalno delovanje V/I zatiča preglaseno, ko je varovalka programirana. Notranji oscilator RC, oscilator WDT, PLL in zunanjo uro (CLKI) lahko izberete, ko je ura izhodna na CLKO. Kristalnih oscilatorjev (XTAL1, XTAL2) ni mogoče uporabiti za izhod ure na CLKO. Če je uporabljen preddelilnik sistemske ure, je izhod razdeljena sistemska ura.
Opis registra
OSCCAL – Register kalibracije oscilatorja
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x31 | CAL7 | CAL6 | CAL5 | CAL4 | CAL3 | CAL2 | CAL1 | CAL0 | OSCCAL |
Branje/Pisanje | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
Biti 7:0 – CAL[7:0]: vrednost kalibracije oscilatorja
Kalibracijski register oscilatorja se uporablja za prilagoditev kalibriranega notranjega RC oscilatorja, da se odstranijo variacije postopka iz frekvence oscilatorja. Vnaprej programirana vrednost umerjanja se med ponastavitvijo čipa samodejno zapiše v ta register, kar daje tovarniško umerjeno frekvenco, kot je določeno v Tabela 21-2 na strani 164. Programska oprema lahko zapiše ta register, da spremeni frekvenco oscilatorja. Oscilator je mogoče kalibrirati na frekvence, kot je določeno v Tabela 21-2 na strani 164. Kalibracija zunaj tega območja ni zagotovljena.
Upoštevajte, da se ta oscilator uporablja za merjenje časa dostopov za zapisovanje v EEPROM in Flash, kar bo ustrezno vplivalo na čase zapisovanja. Če sta EEPROM ali Flash zapisana, ne kalibrirajte na več kot 8.8 MHz. V nasprotnem primeru lahko pisanje v EEPROM ali Flash ne uspe.
Bit CAL7 določa območje delovanja oscilatorja. Nastavitev tega bita na 0 daje najnižje frekvenčno območje, nastavitev tega bita na 1 pa najvišje frekvenčno območje. Obe frekvenčni območji se prekrivata, z drugimi besedami, nastavitev OSCCAL = 0x7F daje višjo frekvenco kot OSCCAL = 0x80.
Biti CAL[6:0] se uporabljajo za nastavitev frekvence znotraj izbranega območja. Nastavitev 0x00 daje najnižjo frekvenco v tem območju, nastavitev 0x7F pa najvišjo frekvenco v območju.
Za zagotovitev stabilnega delovanja MCU je treba kalibracijsko vrednost spremeniti v majhni meri. Sprememba pogostosti za več kot 2 % od enega cikla do drugega lahko privede do nepredvidljivega vedenja. Spremembe v OSCCAL ne smejo preseči 0x20 za vsako kalibracijo. Zagotoviti je treba, da je MCU med takšnimi spremembami taktne frekvence v stanju Reset
Tabela 6-14. Frekvenčno območje notranjega RC oscilatorja
Vrednost OSCCAL | Tipična najnižja frekvenca glede na nazivno frekvenco | Tipična najvišja frekvenca glede na nazivno frekvenco |
0x00 | 50 % | 100 % |
0x3F | 75 % | 150 % |
0x7F | 100 % | 200 % |
CLKPR – Urni predskalni register
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x26 | CLKPCE | – | – | – | CLKPS3 | CLKPS2 | CLKPS1 | CLKPS0 | CLKPR |
Branje/Pisanje | R/W | R | R | R | R/W | R/W | R/W | R/W |
Začetna vrednost 0 0 0 0 Glej opis bitov
Bit 7 – CLKPCE: Omogočena sprememba preddelilnika ure
Bit CLKPCE mora biti zapisan v logično ena, da se omogoči sprememba bitov CLKPS. Bit CLKPCE se posodobi le, ko so drugi biti v CLKPR istočasno zapisani na nič. CLKPCE izbriše strojna oprema štiri cikle po zapisu ali ko so zapisani biti CLKPS. Prepisovanje bita CLKPCE znotraj te časovne omejitve niti ne podaljša časovne omejitve niti ne počisti bita CLKPCE.
Biti 6:4 – Res: rezervirani biti
Ti biti so v ATtiny25/45/85 rezervirani biti in se vedno berejo kot nič.
Biti 3:0 – CLKPS[3:0]: Preddelilnik ure Izbira bitov 3 – 0
Ti biti določajo faktor delitve med izbranim virom ure in notranjo sistemsko uro. Te bite lahko zapišete med izvajanjem, da spremenite frekvenco ure, da ustreza zahtevam aplikacije. Ker delilnik deli vhod glavne ure v MCU, se hitrost vseh sinhronih perifernih naprav zmanjša, ko se uporabi faktor delitve. Faktorji delitve so navedeni v Tabela 6-15.
Da bi se izognili nenamernim spremembam taktne frekvence, je treba za spreminjanje bitov CLKPS upoštevati poseben postopek zapisovanja:
Bit Clock Prescaler Change Enable (CLKPCE) zapišite na ena in vse druge bite v CLKPR na nič.
V štirih ciklih zapišite želeno vrednost v CLKPS, medtem ko v CLKPCE zapišite ničlo.
Prekinitve morajo biti onemogočene pri spreminjanju nastavitve preddelilnika, da zagotovite, da postopek zapisovanja ni prekinjen.
Varovalka CKDIV8 določa začetno vrednost bitov CLKPS. Če CKDIV8 ni programiran, bodo biti CLKPS ponastavljeni na »0000«. Če je programiran CKDIV8, se biti CLKPS ponastavijo na »0011«, kar daje faktor deljenja osem ob zagonu. To funkcijo je treba uporabiti, če ima izbrani vir ure višjo frekvenco od največje frekvence naprave pri trenutnih pogojih delovanja. Upoštevajte, da je mogoče v bite CLKPS zapisati katero koli vrednost, ne glede na nastavitev varovalke CKDIV8. Aplikacijska programska oprema mora zagotoviti zadosten faktor delitve
izbrano, če ima izbrani vir ure višjo frekvenco od največje frekvence naprave pri trenutnih pogojih delovanja. Naprava je dobavljena s programirano varovalko CKDIV8.
Tabela 6-15. Clock Prescaler Select
CLKPS3 | CLKPS2 | CLKPS1 | CLKPS0 | Faktor deljenja ure |
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 |
Opomba: preddelilnik je onemogočen v združljivem načinu ATtiny15 in niti pisanje v CLKPR niti programiranje varovalke CKDIV8 ne vplivata na sistemsko uro (ki bo vedno 1.6 MHz).
Upravljanje porabe energije in načini mirovanja
Zaradi visoke zmogljivosti in vodilne učinkovitosti kode so mikrokrmilniki AVR idealna izbira za aplikacije z nizko porabo energije. Poleg tega načini mirovanja omogočajo aplikaciji, da zaustavi neuporabljene module v MCU, s čimer prihrani energijo. AVR omogoča različne načine mirovanja, ki uporabniku omogočajo prilagajanje porabe energije zahtevam aplikacije.
Načini spanja
Slika 6-1 na strani 23 predstavlja različne sisteme ure in njihovo porazdelitev v ATtiny25/45/85. Slika je v pomoč pri izbiri ustreznega načina mirovanja. Tabela 7-1 prikazuje različne načine spanja in njihove vire bujenja.
Tabela 7-1. Domene aktivne ure in viri bujenja v različnih načinih mirovanja
Domene aktivne ure | Oscilatorji | Viri za prebujanje | ||||||||||
Način mirovanja | clkCPU | clkFLASH | clkIO | clkADC | clkPCK | Glavni vir ure je omogočen | INT0 in Pin Change | SPM/EEPROM
pripravljena |
Začetni pogoj USI |
ADC | Drugi V/I | pes čuvaj Prekiniti |
nedejaven | X | X | X | X | X | X | X | X | X | X | ||
Zmanjšanje šuma ADC | X | X | X(1) | X | X | X | X | |||||
Izklop | X(1) | X | X |
Opomba: Za INT0 samo prekinitev ravni.
Za vstop v katerega koli od treh načinov mirovanja je treba bit SE v MCUCR zapisati v logično ena in izvesti ukaz SLEEP. Biti SM[1:0] v registru MCUCR določajo, kateri način mirovanja (idle, ADC Noise Reduction ali Power-down) bo aktiviran z ukazom SLEEP. glej Tabela 7-2 za povzetek.
Če pride do omogočene prekinitve, ko je MCU v načinu mirovanja, se MCU prebudi. MCU se nato poleg časa zagona ustavi za štiri cikle, izvede prekinitveno rutino in nadaljuje z izvajanjem od navodila, ki sledi SLEEP. Vsebina registra File in SRAM sta nespremenjena, ko se naprava prebudi iz spanja. Če pride do ponastavitve med načinom mirovanja, se MCU prebudi in izvede iz vektorja ponastavitve.
Opomba: če se za prebujanje uporabi prekinitev, ki jo sproži raven, je treba spremenjeno raven zadržati nekaj časa, da prebudi MCU (in da MCU vstopi v servisno rutino prekinitve). glej “Zunanje prekinitve” na strani 49 za podrobnosti.
V stanju pripravljenosti
Ko so biti SM[1:0] zapisani na 00, navodilo SLEEP povzroči, da MCU vstopi v način mirovanja, s čimer ustavi CPE, vendar omogoči analognemu primerjalniku, ADC, USI, časovniku/števcu, čuvaju in sistemu prekinitev, da nadaljujejo z delovanjem. jesti. Ta način mirovanja v bistvu ustavi clkCPU in clkFLASH, medtem ko drugim uram omogoči delovanje.
Način mirovanja omogoča MCU, da se prebudi iz zunanjih sproženih prekinitev in notranjih, kot je Timer Overflow. Če prebujanje iz prekinitve analognega primerjalnika ni potrebno, lahko analogni primerjalnik izklopite z nastavitvijo bita ACD v “ACSR – Nadzorni in statusni register analognega primerjalnika” na strani 120. To bo zmanjšalo porabo energije v stanju mirovanja. Če je ADC omogočen, se pretvorba začne samodejno, ko vstopite v ta način.
Način zmanjševanja šuma ADC
Ko so biti SM[1:0] zapisani v 01, navodilo SLEEP povzroči, da MCU vstopi v način zmanjševanja hrupa ADC, s čimer se ustavi CPE, vendar omogoči, da ADC, zunanje prekinitve in Watchdog nadaljujejo z delovanjem (če so omogočeni). Ta način mirovanja ustavi clkI/O, clkCPU in clkFLASH, medtem ko dovoli delovanje drugih ur.
To izboljša šumno okolje za ADC, kar omogoča meritve višje ločljivosti. Če je ADC omogočen, se pretvorba začne samodejno, ko vstopite v ta način. Razen prekinitve ADC Conversion Complete lahko samo zunanja ponastavitev, ponastavitev Watchdog, ponastavitev Brown-out, prekinitev pripravljenosti SPM/EEPROM, prekinitev zunanjega nivoja na INT0 ali prekinitev spremembe pina lahko prebudi MCU iz zmanjševanja šuma ADC način.
Način izklopa
Ko so biti SM[1:0] zapisani na 10, navodilo SLEEP povzroči, da MCU vstopi v način izklopa. V tem načinu se oscilator ustavi, medtem ko zunanje prekinitve, zaznavanje stanja zagona USI in nadzorni pes nadaljujejo z delovanjem (če so omogočeni). MCU lahko prebudijo samo zunanja ponastavitev, ponastavitev Watchdog, ponastavitev ob izpadu, prekinitev stanja zagona USI, prekinitev zunanjega nivoja na INT0 ali prekinitev spremembe pina. Ta način mirovanja ustavi vse ustvarjene ure in omogoči delovanje samo asinhronih modulov.
Programska oprema BOD Onemogoči
Ko je detektor zagorelosti (BOD) omogočen z varovalkami BODLEVEL (glejte Tabela 20-4 na strani 148), BOD aktivno spremlja dobavo voltage med obdobjem spanja. V nekaterih napravah je mogoče varčevati z energijo tako, da onemogočite BOD s programsko opremo v načinu mirovanja Power-Down. Poraba energije v načinu mirovanja bo takrat na enaki ravni kot takrat, ko je BOD globalno onemogočen z varovalkami.
Če programsko opremo onemogoči BOD, se funkcija BOD izklopi takoj po vstopu v način mirovanja. Po prebujanju iz stanja spanja se BOD znova samodejno omogoči. To zagotavlja varno delovanje v primeru padca ravni VCC med obdobjem mirovanja.
Ko je BOD onemogočen, bo čas prebujanja iz načina spanja enak kot za prebujanje iz RESET. Uporabnik mora ročno konfigurirati čase bujenja, tako da ima referenca pasovne vrzeli čas za zagon in da BOD deluje pravilno, preden MCU nadaljuje z izvajanjem kode. Glej varovalke SUT[1:0] in CKSEL[3:0] v tabeli “Fuse Low Byte” na strani 149
Onemogočanje BOD nadzira bit BODS (BOD Sleep) krmilnega registra MCU, glejte “MCUCR – Nadzor MCU Registracija” na strani 37. Zapisovanje tega bita na ena izklopi BOD v Power-Down, pisanje ničle pa ohranja BOD aktiven. Privzeta nastavitev je nič, tj. BOD je aktiven.
Zapisovanje v bit BODS nadzirata časovno določeno zaporedje in bit za omogočanje, glejte “MCUCR – Nadzorni register MCU- ter” na strani 37.
Omejitve
Funkcija onemogočanja BOD je bila implementirana samo v naslednjih napravah:
ATtiny25, revizija E in novejše
ATtiny45, revizija D in novejše
ATtiny85, revizija C in novejše
Revizije so označene na paketu naprave in jih lahko najdete na naslednji način:
Spodnja stran paketov 8P3 in 8S2
Zgornja stran paketa 20M1
Register zmanjšanja moči
Register zmanjšanja moči (PRR), glejte “PRR – Register zmanjšanja moči” na strani 38, zagotavlja metodo za zmanjšanje porabe energije z zaustavitvijo ure posameznih zunanjih naprav. Trenutno stanje zunanje enote je zamrznjeno in V/I registrov ni mogoče brati ali pisati. Viri, ki jih periferna enota uporablja pri zaustavitvi ure, bodo ostali zasedeni, zato je treba periferno enoto v večini primerov onemogočiti, preden zaustavite uro. Prebujanje modula, ki se izvede z brisanjem bita v PRR, postavi modul v isto stanje kot pred zaustavitvijo.
Zaustavitev modula lahko uporabite v načinu mirovanja in aktivnem načinu, da znatno zmanjšate skupno porabo energije. V vseh drugih načinih mirovanja je ura že ustavljena. glej “Napajalni tok V/I modulov” na strani 177 npramples.
Zmanjšanje porabe energije
Pri poskusu zmanjšanja porabe energije v sistemu, ki ga nadzoruje AVR, je treba upoštevati več vprašanj. Na splošno je treba čim pogosteje uporabljati načine mirovanja, način mirovanja pa izbrati tako, da deluje čim manj funkcij naprave. Vse nepotrebne funkcije je treba onemogočiti. Pri doseganju najnižje možne porabe energije je morda treba posebej upoštevati naslednje module.
Analogno digitalni pretvornik
Če je omogočeno, bo ADC omogočen v vseh načinih mirovanja. Za varčevanje z energijo je treba ADC onemogočiti, preden preklopite v način mirovanja. Ko se ADC izklopi in znova vklopi, bo naslednja pretvorba razširjena pretvorba. Nanašati se na “Analogno-digitalni pretvornik” na strani 122 za podrobnosti o delovanju ADC.
Analogni primerjalnik
Ko vstopite v način mirovanja, mora biti analogni primerjalnik onemogočen, če ga ne uporabljate. Ko vstopite v način zmanjševanja šuma ADC, mora biti analogni primerjalnik onemogočen. V drugih načinih mirovanja je analogni primerjalnik samodejno onemogočen. Vendar, če je analogni primerjalnik nastavljen za uporabo notranjega voltage Referenca kot vnos mora biti analogni primerjalnik onemogočen v vseh načinih mirovanja. Sicer pa je Internal Voltage Referenca bo omogočena, neodvisno od načina mirovanja. Nanašati se na “Analogni primerjalnik” na strani 119 za podrobnosti o konfiguraciji analognega primerjalnika.
Detektor porjavitve
Če Detektor porjavitve v aplikaciji ni potreben, je treba ta modul izklopiti. Če varovalke BODLEVEL omogočijo detektor izgorelosti, bo omogočen v vseh načinih mirovanja in bo zato vedno porabljal energijo. V načinih globljega spanja bo to znatno prispevalo k skupni porabi toka. glej »Zaznavanje porjavelosti tion« na strani 41 in “Onemogočanje BOD programske opreme” na strani 35 za podrobnosti o konfiguraciji detektorja porjavitve.
Notranji zvtage Referenca
The Internal Voltage Referenca bo omogočena, ko jo bodo potrebovali zaznavanje porjavitve, analogni primerjalnik ali ADC. Če so ti moduli onemogočeni, kot je opisano v zgornjih razdelkih, se notranji voltagReferenca bo onemogočena in ne bo porabljala energije. Ko je znova vklopljen, mora uporabnik omogočiti zagon reference, preden se uporabi izhod. Če je referenca vklopljena v načinu mirovanja, je mogoče izhod uporabiti takoj. Nanašati se na “Internal Voltage Referenca« na strani 42 za podrobnosti o času zagona.
Watchdog Timer
Če Watchdog Timer v aplikaciji ni potreben, je treba ta modul izklopiti. Če je Watchdog Timer omogočen, bo omogočen v vseh načinih mirovanja in bo zato vedno porabljal energijo. V načinih globljega spanja bo to znatno prispevalo k skupni porabi toka. Nanašati se na “Watchdog Timer” na strani 42 za podrobnosti o tem, kako konfigurirati Watchdog Timer.
Port Pins
Ko vstopite v način mirovanja, morajo biti vsi zatiči vrat konfigurirani tako, da uporabljajo minimalno moč. Najpomembneje je torej zagotoviti, da nobeni zatiči ne poganjajo uporovnih obremenitev. V načinih mirovanja, kjer sta tako V/I ura (clkI/O) kot ADC ura (clkADC) ustavljena, bodo vhodni medpomnilniki naprave onemogočeni. To zagotavlja, da se energija ne porablja
po logiki vnosa, ko ni potreben. V nekaterih primerih je vhodna logika potrebna za zaznavanje pogojev prebujanja in
nato bo omogočeno. Glejte razdelek “Omogočanje digitalnega vhoda in način mirovanja” na strani 57 za podrobnosti o tem, kateri zatiči so omogočeni. Če je vhodni medpomnilnik omogočen in je vhodni signal lebdeč ali ima raven analognega signala blizu VCC/2, bo vhodni medpomnilnik porabil prekomerno moč.
Za analogne vhodne zatiče mora biti digitalni vhodni medpomnilnik ves čas onemogočen. Raven analognega signala blizu VCC/2 na vhodnem zatiču lahko povzroči znaten tok tudi v aktivnem načinu. Digitalne vhodne medpomnilnike lahko onemogočite tako, da zapišete v register za onemogočanje digitalnega vhoda (DIDR0). Nanašati se na “DIDR0 – Digitalni vhod onemogoči register 0” na strani 121 za podrobnosti.
Opis registra
MCUCR – kontrolni register MCU
Nadzorni register MCU vsebuje kontrolne bite za upravljanje porabe energije.
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | BODS | PUD | SE | SM1 | SM0 | BODSE | ISC01 | ISC00 | MCUCR |
Branje/Pisanje | R | R/W | R/W | R/W | R/W | R | R/W | R/W | |
Začetna vrednost | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit 7 – BODS: BOD Spanje
Funkcija onemogočanja BOD je na voljo samo v nekaterih napravah. glej “Omejitve” na strani 36.
Če želite onemogočiti BPK med spanjem (glejte Tabela 7-1 na strani 34) bit BODS mora biti zapisan v logično ena. To je nadzorovano s časovnim zaporedjem in omogočitvenim bitom, BODSE v MCUCR. Prvič, tako BODS kot BODSE morata biti nastavljena na eno. Drugič, v štirih taktih mora biti BODS nastavljen na ena, BODSE pa na nič. Bit BODS je aktiven tri cikle ure po tem, ko je nastavljen. Navodilo za mirovanje je treba izvesti, ko je BODS aktiven, da se BOD izklopi za dejanski način mirovanja. Bit BODS se samodejno izbriše po treh taktih.
V napravah, kjer BOD v mirovanju ni bil implementiran, je ta bit neuporabljen in bo vedno bral nič.
Bit 5 – SE: Omogočanje mirovanja
Bit SE mora biti zapisan v logično ena, da MCU preide v način mirovanja, ko se izvede ukaz SLEEP. Da preprečite, da bi MCU vstopil v način mirovanja, razen če je to namen programatorja, je priporočljivo, da bit Sleep Enable (SE) zapišete v eno tik pred izvedbo ukaza SLEEP in ga počistite takoj po prebujanju.
Biti 4:3 – SM[1:0]: Način mirovanja Izberite bita 1 in 0
Ti bitovi izbirajo med tremi razpoložljivimi načini mirovanja, kot je prikazano v Tabela 7-2.
Tabela 7-2. Izbira načina mirovanja
SM1 | SM0 | Način mirovanja |
0 | 0 | nedejaven |
0 | 1 | Zmanjšanje šuma ADC |
1 | 0 | Izklop |
1 | 1 | Rezervirano |
Bit 2 – BODSE: Omogočanje mirovanja BOD
Funkcija onemogočanja BOD je na voljo samo v nekaterih napravah. glej “Omejitve” na strani 36.
Bit BODSE omogoča nastavitev kontrolnega bita BODS, kot je razloženo v opisu bitov BODS. Onemogočanje BOD je nadzorovano s časovnim zaporedjem.
Ta bit se ne uporablja v napravah, v katerih onemogočanje BOD programske opreme ni bilo implementirano, in se bo v teh napravah bral kot nič.
PRR – Register zmanjšanja moči
Register za zmanjšanje porabe energije zagotavlja metodo za zmanjšanje porabe energije, tako da omogoči onemogočanje perifernih signalov ure.
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x20 | – | – | – | – | PRTIM1 | PRTIM0 | PRUSI | PRADC | PRR |
Branje/Pisanje | R | R | R | R | R/W | R/W | R/W | R/W | |
Začetna vrednost | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Biti 7:4 – Res: rezervirani biti
Ti biti so v ATtiny25/45/85 rezervirani biti in se vedno berejo kot nič.
Bit 3 – PRTIM1: Časovnik/števec zmanjšanja moči1
Zapisovanje logične ena v ta bit izklopi modul Timer/Counter1. Ko je Timer/Counter1 omogočen, se bo delovanje nadaljevalo kot pred zaustavitvijo.
Bit 2 – PRTIM0: Časovnik/števec zmanjšanja moči0
Zapisovanje logične ena v ta bit izklopi modul Timer/Counter0. Ko je Timer/Counter0 omogočen, se bo delovanje nadaljevalo kot pred zaustavitvijo.
Bit 1 – PRUSI: USI za zmanjšanje moči
Zapisovanje logične ena v ta bit izklopi USI z zaustavitvijo ure modula. Pri ponovnem prebujanju USI je treba USI ponovno inicializirati, da zagotovite pravilno delovanje.
Bit 0 – PRADC: ADC za zmanjšanje moči
Zapisovanje logične ena v ta bit izklopi ADC. ADC mora biti pred izklopom onemogočen. Upoštevajte, da uro ADC uporabljajo tudi nekateri deli analognega primerjalnika, kar pomeni, da analognega primerjalnika ni mogoče uporabiti, ko je ta bit visok.
Nadzor in ponastavitev sistema
Ponastavitev AVR
Med ponastavitvijo so vsi V/I registri nastavljeni na začetne vrednosti in program se začne izvajati iz vektorja ponastavitve. Navodilo, postavljeno v vektor ponastavitve, mora biti RJMP – Relative Jump – navodilo za rutino za ponastavitev. Če program nikoli ne omogoči prekinitvenega vira, se prekinitveni vektorji ne uporabijo in na ta mesta se lahko postavi redna programska koda. Shema vezja v Slika 8-1 prikazuje logiko ponastavitve. Električni parametri vezja za ponastavitev so podani v “Karakteristike sistema in ponastavitve” na strani 165.
Slika 8-1 Logika ponastavitve
V/I vrata AVR se nemudoma ponastavijo na začetno stanje, ko se aktivira vir ponastavitve. Za to ni potreben noben izvor ure.
Ko so vsi viri ponastavitve neaktivni, se sproži števec zakasnitve, ki podaljša notranjo ponastavitev. To omogoča, da moč doseže stabilno raven, preden se začne normalno delovanje. Obdobje časovne omejitve števca zakasnitve določi uporabnik prek varovalk SUT in CKSEL. Različne izbire za obdobje zamude so predstavljene v »Ura Viri« na strani 25.
Ponastavi vire
ATtiny25/45/85 ima štiri vire ponastavitve:
Ponastavitev ob vklopu. MCU se ponastavi, ko se voltage je pod pragom ponastavitve ob vklopu (VPOT).
Zunanja ponastavitev. MCU se ponastavi, ko je nizka raven na zatiču RESET daljša od minimalne dolžine impulza.
Watchdog Reset. MCU se ponastavi, ko poteče obdobje Watchdog Timerja in je Watchdog omogočen.
Porjavitev Ponastavitev. MCU se ponastavi, ko se voltage VCC je pod pragom za ponastavitev rjave barve (VBOT) in detektor rjave barve je omogočen.
Ponastavitev ob vklopu
Impulz ponastavitve ob vklopu (POR) ustvari vezje za zaznavanje na čipu. Stopnja zaznavanja je določena v "System tem in ponastavi značilnosti” na strani 165. POR se aktivira vedno, ko je VCC pod nivojem zaznave. Vezje POR se lahko uporablja za sprožitev ponastavitve ob zagonu, kot tudi za odkrivanje napake v voltage.
Vezje ponastavitve ob vklopu (POR) zagotavlja, da se naprava ponastavi po vklopu. Doseganje praga za ponastavitev voltage prikliče števec zakasnitve, ki določa, kako dolgo ostane naprava v RESET po dvigu VCC. Signal RESET se ponovno aktivira brez kakršne koli zamude, ko se VCC zmanjša pod raven zaznave.
Slika 8-2. Zagon MCU, PONASTAVITEV Vezano na VCC
NOTRANJA PONASTAVITEV
Slika 8-3. Zagon MCU, RESET Extended External
Zunanja ponastavitev
Zunanjo ponastavitev ustvari nizka raven na zatiču RESET, če je omogočena. Ponastavite impulze, daljše od minimalne širine impulza (glejte “Karakteristike sistema in ponastavitve” na strani 165) bo ustvaril ponastavitev, tudi če ura ne teče. Ni zajamčeno, da bodo krajši impulzi ustvarili ponastavitev. Ko uporabljeni signal doseže Reset Threshold Voltage – VRST – na svojem pozitivnem robu števec zakasnitve zažene MCU po izteku časovne omejitve.
Slika 8-4. Zunanja ponastavitev med delovanjem
Zaznavanje porjavitve
ATtiny25/45/85 ima vezje za zaznavanje izgorevanja (BOD) za spremljanje ravni VCC med delovanjem tako, da jo primerja s fiksno ravnjo sprožitve. Nivo sprožitve za BOD lahko izberete z varovalkami BODLEVEL. Stopnja sprožitve ima histerezo, ki zagotavlja zaznavanje porjavitve brez konic. Histerezo na ravni zaznavanja je treba razlagati kot VBOT+ = VBOT + VHYST/2 in VBOT- = VBOT – VHYST/2.
Ko je BOD omogočen in se VCC zmanjša na vrednost pod sprožilno ravnjo (VBOT-in Slika 8-5), se takoj aktivira ponastavitev zatemnitve. Ko se VCC poveča nad sprožilno raven (VBOT+ in Slika 8-5), števec zakasnitve zažene MCU po izteku časovne omejitve tTOUT.
BOD vezje bo zaznalo padec VCC le, če voltage ostane pod sprožilno ravnjo dlje, kot je dano tBOD “Karakteristike sistema in ponastavitve” na strani 165.
Watchdog Reset
Ko Watchdog poteče, bo ustvaril kratek ponastavitveni impulz v trajanju enega cikla CK. Na padajočem robu tega impulza začne časovnik zakasnitve šteti časovno obdobje tTOUT. Nanašati se na “Watchdog Timer” na strani 42 za podrobnosti o delovanju nadzornega časovnika.
voltage Referenčni signali za omogočanje in čas zagona
VoltagReferenca ima začetni čas, ki lahko vpliva na način njene uporabe. Naveden je čas zagona “Karakteristike sistema in ponastavitve” na strani 165. Zaradi varčevanja z energijo referenca ni vedno vklopljena. Referenca je vklopljena v naslednjih situacijah:
Ko je BOD omogočen (s programiranjem varovalk BODLEVEL [2:0]).
Ko je referenca pasovne vrzeli povezana z analognim primerjalnikom (z nastavitvijo bita ACBG v ACSR).
Ko je ADC omogočen.
Ko BOD ni omogočen, mora uporabnik po nastavitvi bita ACBG ali omogočanju ADC vedno dovoliti zagon reference, preden se uporabi izhod iz analognega primerjalnika ali ADC. Za zmanjšanje porabe energije v načinu izklopa se lahko uporabnik izogne zgornjim trem pogojem in zagotovi, da je referenca izklopljena, preden vstopi v način izklopa.
Watchdog Timer
Watchdog Timer se meri z oscilatorjem na čipu, ki deluje pri 128 kHz. Z nadzorom preddelilnika Watchdog Timer lahko interval Watchdog Reset prilagodite, kot je prikazano v Tabela 8-3 na strani 46. WDR – Watchdog Reset – navodilo ponastavi Watchdog Timer. Watchdog Timer se prav tako ponastavi, ko je onemogočen in ko pride do ponastavitve čipa. Za določitev obdobja ponastavitve je mogoče izbrati deset različnih časovnih obdobij. Če obdobje ponastavitve poteče brez ponovne ponastavitve Watchdog, se ATtiny25/45/85 ponastavi in izvede iz vektorja ponastavitve. Za podrobnosti o časovni razporeditvi Watchdog Reset glejte Tabela 8-3 na strani 46.
Watchdog Timer je mogoče konfigurirati tudi tako, da ustvari prekinitev namesto ponastavitve. To je lahko zelo koristno pri uporabi Watchdog za prebujanje iz izklopa.
Da bi preprečili nenamerno onemogočanje Watchdog-a ali nenamerno spremembo časovne omejitve, se z varovalko WDTON izbereta dve različni varnostni ravni, kot je prikazano v Tabela 8-1 Nanašajte se na »Časovna zaporedja za spreminjanje kon- podoba Watchdog Timerja« na strani 43 za podrobnosti.
Tabela 8-1. Konfiguracija WDT kot funkcija nastavitev varovalke WDTON
WDTON | Raven varnosti | Začetno stanje WDT | Kako onemogočiti WDT | Kako spremeniti časovno omejitev |
Neprogramirano | 1 | Onemogočen | Časovno zaporedje | Brez omejitev |
Programirano | 2 | Omogočeno | Vedno omogočeno | Časovno zaporedje |
Slika 8-7. Watchdog Timer
Časovna zaporedja za spreminjanje konfiguracije časovnika Watchdog
Zaporedje spreminjanja konfiguracije se med obema varnostnima nivojema nekoliko razlikuje. Za vsako raven so opisani ločeni postopki.
Varnostna stopnja 1: V tem načinu je Watchdog Timer sprva onemogočen, vendar ga je mogoče omogočiti tako, da zapišete bit WDE v eno brez kakršnih koli omejitev. Pri onemogočanju omogočenega nadzornega časovnika je potrebno časovno zaporedje. Če želite onemogočiti omogočen Watchdog Timer, morate slediti naslednjemu postopku:
V isti operaciji zapišite logično enoto v WDCE in WDE. Logično enoto je treba zapisati v WDE ne glede na prejšnjo vrednost bita WDE.
Znotraj naslednjih štirih časovnih ciklov v isti operaciji zapišite bita WDE in WDP po želji, vendar s počiščenim bitom WDCE.
Varnostna stopnja 2: V tem načinu je Watchdog Timer vedno omogočen in bit WDE bo vedno prebran kot ena. Pri spreminjanju časovne omejitve Watchdog je potrebno časovno zaporedje. Če želite spremeniti časovno omejitev Watchdog, morate slediti naslednjemu postopku:
V isti operaciji zapišite logično enoto v WDCE in WDE. Čeprav je WDE vedno nastavljen, mora biti WDE zapisan v eno, da se začne časovno zaporedje.
V naslednjih štirih taktnih ciklih v isti operaciji zapišite bite WDP po želji, vendar s počiščenim bitom WDCE. Vrednost, zapisana v bit WDE, ni pomembna.
Koda nprample
Naslednja koda nprample prikazuje en sklop in eno funkcijo C za izklop WDT. Bivšiample predpostavlja, da so prekinitve nadzorovane (npr. z onemogočanjem prekinitev globalno), tako da med izvajanjem teh funkcij ne bo prišlo do prekinitev.
Koda sestavljanja Example(1) |
WDT_off:
wdr ; Počisti WDRF v MCUSR ldi r16, (0< zunaj MCUSR, r16 ; Zapišite logično 1 v WDCE in WDE ; Ohranite staro nastavitev preddelilnika, da preprečite nenamerno ponastavitev Watchdog v r16, WDTCR ori r16, (1< ven WDTCR, r16 ; Izklopite WDT ldi r16, (0< ven WDTCR, r16 ret |
C Koda Example(1) |
void WDT_off(void)
{ _WDR(); /* Počisti WDRF v MCUSR */ MCUSR = 0x00 /* Zapiši logično 1 v WDCE in WDE */ WDTCR |= (1< /* Izklopi WDT */ WDTCR = 0x00; } |
Opomba: 1. Glej »Kodeks Examples" na strani 6.
Opis registra
MCUSR – register stanja MCU
Register stanja MCU zagotavlja informacije o tem, kateri vir ponastavitve je povzročil ponastavitev MCU.
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x34 | – | – | – | – | WDRF | BORF | EXTRF | PORF | MCUSR |
Branje/Pisanje | R | R | R | R | R/W | R/W | R/W | R/W |
Začetna vrednost 0 0 0 0 Glej opis bitov
Biti 7:4 – Res: rezervirani biti
Ti biti so v ATtiny25/45/85 rezervirani biti in se vedno berejo kot nič.
Bit 3 – WDRF: Zastavica za ponastavitev nadzornega psa
Ta bit je nastavljen, če pride do ponastavitve nadzornega psa. Bit se ponastavi s ponastavitvijo ob vklopu ali z zapisom logične ničle v zastavico.
Bit 2 – BORF: Zastavica za ponastavitev porjavitve
Ta bit je nastavljen, če pride do ponastavitve Brown-out. Bit se ponastavi s ponastavitvijo ob vklopu ali z zapisom logične ničle v zastavico.
Bit 1 – EXTRF: zunanja zastavica za ponastavitev
Ta bit je nastavljen, če pride do zunanje ponastavitve. Bit se ponastavi s ponastavitvijo ob vklopu ali z zapisom logične ničle v zastavico.
Bit 0 – PORF: Zastavica ponastavitve ob vklopu
Ta bit je nastavljen, če pride do ponastavitve ob vklopu. Bit se ponastavi samo z zapisom logične ničle na zastavico.
Če želite uporabiti zastavice za ponastavitev za identifikacijo stanja ponastavitve, mora uporabnik prebrati in nato ponastaviti MCUSR čim prej v programu. Če je register počiščen, preden pride do nove ponastavitve, je vir ponastavitve mogoče najti s pregledovanjem zastavic za ponastavitev.
WDTCR – Nadzorni register nadzornega časovnika
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x21 | WDIF | WDIE | WDP3 | WDCE | WDE | WDP2 | WDP1 | WDP0 | WDTCR |
Branje/Pisanje | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Začetna vrednost | 0 | 0 | 0 | 0 | X | 0 | 0 | 0 |
Bit 7 – WDIF: Zastavica prekinitve časovne omejitve Watchdog
Ta bit je nastavljen, ko pride do časovne omejitve v Watchdog Timerju in je Watchdog Timer konfiguriran za prekinitev. WDIF počisti strojna oprema, ko izvaja ustrezen vektor za obravnavo prekinitev. Druga možnost je, da se WDIF počisti tako, da se zastavici zapiše logična ena. Ko sta I-bit v SREG in WDIE nastavljena, se izvede prekinitev Watchdog Time-out.
Bit 6 – WDIE: Omogočena prekinitev časovne omejitve Watchdog
Ko je ta bit zapisan v eno, je WDE počiščen in je I-bit v statusnem registru nastavljen, prekinitev časovne omejitve Watchdog je omogočena. V tem načinu se namesto ponastavitve izvede ustrezna prekinitev, če pride do časovne omejitve v Watchdog Timerju.
Če je nastavljen WDE, strojna oprema samodejno izbriše WDIE, ko pride do časovne omejitve. To je uporabno za ohranjanje varnosti Watchdog Reset med uporabo prekinitve. Ko je bit WDIE počiščen, bo naslednja časovna omejitev ustvarila ponastavitev. Da bi se izognili ponastavitvi Watchdog, je treba WDIE nastaviti po vsaki prekinitvi.
Tabela 8-2. Konfiguracija nadzornega časovnika
WDE | WDIE | Stanje nadzornega časovnika | Ukrep ob prekinitvi |
0 | 0 | ustavil | Noben |
0 | 1 | tek | Prekiniti |
1 | 0 | tek | Ponastavi |
1 | 1 | tek | Prekiniti |
Bit 4 – WDCE: Watchdog Change Enable
Ta bit je treba nastaviti, ko je bit WDE zapisan na logično ničlo. V nasprotnem primeru Watchdog ne bo onemogočen. Ko je enkrat zapisan v eno, bo strojna oprema počistila ta bit po štirih taktih. Glejte opis bita WDE za postopek onemogočanja nadzornega psa. Ta bit je treba nastaviti tudi pri menjavi bitov preddelilnika. glej »Časovna zaporedja za spreminjanje konfiguracije časovnika Watchdog« na strani 43.
Bit 3 – WDE: Watchdog Enable
Ko je WDE zapisan na logično ena, je Watchdog Timer omogočen, in če je WDE zapisan na logično ničlo, je funkcija Watchdog Timer onemogočena. WDE je mogoče počistiti le, če ima bit WDCE logično raven ena. Če želite onemogočiti omogočen Watchdog Timer, morate slediti naslednjemu postopku:
V isti operaciji zapišite logično enoto v WDCE in WDE. Logično enoto je treba zapisati v WDE, čeprav je nastavljena na ena, preden se začne operacija onemogočanja.
V naslednjih štirih taktih zapišite logično 0 v WDE. To onemogoči Watchdog.
Na ravni varnosti 2 ni mogoče onemogočiti nadzornega časovnika niti z zgoraj opisanim algoritmom. glej “Časovna zaporedja za spreminjanje konfiguracije časovnika Watchdog” na strani 43.
Na ravni varnosti 1 WDE preglasi WDRF v MCUSR. glej “MCUSR – register stanja MCU” na strani 44 za opis WDRF. To pomeni, da je WDE vedno nastavljen, ko je nastavljen WDRF. Če želite počistiti WDE, morate počistiti WDRF, preden onemogočite Watchdog z zgoraj opisanim postopkom. Ta funkcija zagotavlja večkratne ponastavitve med pogoji, ki povzročajo okvaro, in varen zagon po okvari.
Opomba: Če v aplikaciji ne boste uporabljali nadzornega časovnika, je pomembno, da pri inicializaciji naprave opravite postopek onemogočanja nadzornega psa. Če je Watchdog pomotoma omogočen, nprampzaradi pobeglega kazalca ali porjavelosti, bo naprava ponastavljena, kar bo vodilo do nove ponastavitve nadzornega psa. Da bi se izognili tej situaciji, mora aplikacijska programska oprema vedno počistiti zastavico WDRF in kontrolni bit WDE v inicializacijski rutini.
Biti 5, 2:0 – WDP[3:0]: Watchdog Timer Prescaler 3, 2, 1 in 0
Biti WDP[3:0] določajo predhodno skaliranje Watchdog Timerja, ko je Watchdog Timer omogočen. Različne vrednosti predskaliranja in njihove ustrezne časovne omejitve so prikazane v Tabela 8-3.
Tabela 8-3. Watchdog Timer Prescale Select
WDP3 | WDP2 | WDP1 | WDP0 | Število ciklov oscilatorja WDT | Tipična časovna omejitev pri VCC = 5.0 V |
0 | 0 | 0 | 0 | 2K (2048) ciklov | 16 ms |
0 | 0 | 0 | 1 | 4K (4096) ciklov | 32 ms |
0 | 0 | 1 | 0 | 8K (8192) ciklov | 64 ms |
0 | 0 | 1 | 1 | 16K (16384) ciklov | 0.125 s |
0 | 1 | 0 | 0 | 32K (32764) ciklov | 0.25 s |
0 | 1 | 0 | 1 | 64K (65536) ciklov | 0.5 s |
0 | 1 | 1 | 0 | 128K (131072) ciklov | 1.0 s |
0 | 1 | 1 | 1 | 256K (262144) ciklov | 2.0 s |
1 | 0 | 0 | 0 | 512K (524288) ciklov | 4.0 s |
1 | 0 | 0 | 1 | 1024K (1048576) ciklov | 8.0 s |
Tabela 8-3. Watchdog Timer Prescale Select (nadaljevanje)
WDP3 | WDP2 | WDP1 | WDP0 | Število ciklov oscilatorja WDT | Tipična časovna omejitev pri VCC = 5.0 V |
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 |
Opomba: 1. Če je izbrana, bo uporabljena ena od veljavnih nastavitev pod 0b1010.
Prekinitve
Ta razdelek opisuje posebnosti obravnavanja prekinitev, kot se izvaja v ATtiny25/45/85. Za splošno razlago obravnavanja prekinitev AVR glejte “Ponastavitev in obravnavanje prekinitev” na strani 12.
Prekinitveni vektorji v ATtiny25/45/85
Prekinitveni vektorji ATtiny25/45/85 so opisani v Tabela 9-1spodaj.
Tabela 9-1. Vektorji ponastavitve in prekinitve
vektorska št. | Naslov programa | Vir | Definicija prekinitve |
1 | 0x0000 | PONASTAVI | Zunanji zatič, ponastavitev ob vklopu, ponastavitev izgorevanja, ponastavitev Watchdog |
2 | 0x0001 | INT0 | Zahteva za zunanjo prekinitev 0 |
3 | 0x0002 | PCINT0 | Zahteva za prekinitev spremembe Pin 0 |
4 | 0x0003 | TIMER1_COMPA | Časovnik/Števec1 Primerjaj ujemanje A |
5 | 0x0004 | ČASOVNIK1_OVF | Časovnik/Števec1 Prelivanje |
6 | 0x0005 | ČASOVNIK0_OVF | Časovnik/Števec0 Prelivanje |
7 | 0x0006 | EE_RDY | EEPROM pripravljen |
8 | 0x0007 | ANA_COMP | Analogni primerjalnik |
9 | 0x0008 | ADC | Pretvorba ADC končana |
10 | 0x0009 | TIMER1_COMPB | Časovnik/Števec1 Primerjaj ujemanje B |
11 | 0x000A | TIMER0_COMPA | Časovnik/Števec0 Primerjaj ujemanje A |
12 | 0x000B | TIMER0_COMPB | Časovnik/Števec0 Primerjaj ujemanje B |
13 | 0x000C | WDT | Watchdog Time-out |
14 | 0x000D | USI_START | USI START |
15 | 0x000E | USI_OVF | USI Overflow |
Če program nikoli ne omogoči prekinitvenega vira, se prekinitveni vektorji ne uporabijo in na ta mesta se lahko postavi redna programska koda.
Tipična in splošna nastavitev za naslove prekinitvenih vektorjev v ATtiny25/45/85 je prikazana v programu example spodaj.
Koda sestavljanja Example | ||
.org 0x0000 | ;Nastavi naslov naslednjega | izjava |
rjmp PONASTAVI | ; Naslov 0x0000 | |
rjmp INT0_ISR | ; Naslov 0x0001 | |
rjmp PCINT0_ISR | ; Naslov 0x0002 | |
rjmp TIM1_COMPA_ISR | ; Naslov 0x0003 | |
rjmp TIM1_OVF_ISR | ; Naslov 0x0004 | |
rjmp TIM0_OVF_ISR | ; Naslov 0x0005 | |
rjmp EE_RDY_ISR | ; Naslov 0x0006 | |
rjmp ANA_COMP_ISR | ; Naslov 0x0007 | |
rjmp ADC_ISR | ; Naslov 0x0008 | |
rjmp TIM1_COMPB_ISR | ; Naslov 0x0009 | |
rjmp TIM0_COMPA_ISR | ; Naslov 0x000A | |
rjmp TIM0_COMPB_ISR | ; Naslov 0x000B | |
rjmp WDT_ISR | ; Naslov 0x000C | |
rjmp USI_START_ISR | ; Naslov 0x000D | |
rjmp USI_OVF_ISR | ; Naslov 0x000E | |
PONASTAVITI: | ; Začetek glavnega programa | |
; Naslov 0x000F | ||
… |
Opomba: Glej »Kodeks Examples" na strani 6.
Zunanje prekinitve
Zunanje prekinitve sproži pin INT0 ali kateri koli od pin-ov PCINT[5:0]. Upoštevajte, da se bodo prekinitve sprožile, če so omogočene, tudi če so nožice INT0 ali PCINT[5:0] konfigurirane kot izhodi. Ta funkcija omogoča način generiranja programske prekinitve. Prekinitve pri spremembi pinov PCI se bodo sprožile, če se kateri koli omogočen pin PCINT[5:0] preklopi. Register PCMSK nadzoruje, kateri pini prispevajo k prekinitvam spremembe pinov. Prekinitve spremembe pina na PCINT[5:0] so zaznane asinhrono. To pomeni, da je mogoče te prekinitve uporabiti za prebujanje dela tudi iz načinov mirovanja, ki niso način mirovanja.
Prekinitve INT0 se lahko sprožijo zaradi padajočega ali naraščajočega roba ali nizke ravni. To je nastavljeno, kot je navedeno v specifikaciji za kontrolni register MCU – MCUCR. Ko je prekinitev INT0 omogočena in je konfigurirana kot sprožena raven, se bo prekinitev sprožila, dokler bo pin nizek. Upoštevajte, da prepoznavanje prekinitev padajočega ali naraščajočega roba na INT0 zahteva prisotnost V/I ure, opisane v "Urni sistemi in njihova distribucija" na stran 23.
Prekinitev na nizki ravni
Prekinitev nizke ravni na INT0 je zaznana asinhrono. To pomeni, da se ta prekinitev lahko uporabi za prebujanje dela tudi iz načinov mirovanja, ki niso način mirovanja. V/I ura se ustavi v vseh načinih mirovanja, razen v stanju mirovanja.
Upoštevajte, da če se za prebujanje iz izklopa uporabi prekinitev, ki jo sproži raven, je treba zahtevano raven zadržati dovolj dolgo, da MCU dokonča prebujenje, da sproži prekinitev ravni. Če raven izgine pred koncem zagonskega časa, se bo MCU še vedno prebudil, vendar ne bo ustvarjena prekinitev. Čas zagona določata varovalki SUT in CKSEL, kot je opisano v “Sistemska ura in možnosti ure” na strani 23.
Če je nizka raven na prekinitvenem zatiču odstranjena, preden se naprava prebudi, potem izvajanje programa ne bo preusmerjeno na prekinitveno servisno rutino, ampak se bo nadaljevalo z navodilom, ki sledi ukazu SLEEP.
Pin Change Interrupt Timing
Bivšiampje prikazan čas prekinitve spremembe pina Slika 9-1.
Opis registra
MCUCR – kontrolni register MCU
Zunanji register za nadzor prekinitev A vsebuje kontrolne bite za nadzor zaznavanja prekinitev.
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | BODS | PUD | SE | SM1 | SM0 | BODSE | ISC01 | ISC00 | MCUCR |
Branje/Pisanje | R | R/W | R/W | R/W | R/W | R | R/W | R/W | |
Začetna vrednost | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Biti 1:0 – ISC0[1:0]: Nadzor zaznavanja prekinitev 0 Bit 1 in Bit 0
Zunanjo prekinitev 0 aktivira zunanji pin INT0, če sta nastavljeni zastavica SREG I in ustrezna maska prekinitve. Raven in robovi na zunanjem zatiču INT0, ki aktivirajo prekinitev, so definirani v Tabela 9-2. Vrednost na pinu INT0 je samppred zaznavanjem robov. Če je izbrana prekinitev roba ali preklopa, bodo impulzi, ki trajajo dlje od ene taktne dobe, ustvarili prekinitev. Ni zagotovljeno, da bodo krajši impulzi ustvarili prekinitev. Če je izbrana prekinitev nizke ravni, mora biti nizka raven zadržana do zaključka trenutno izvajajočega se ukaza, da se ustvari prekinitev.
Tabela 9-2. Prekinitev 0 Sense Control
ISC01 | ISC00 | Opis |
0 | 0 | Nizka raven INT0 ustvari zahtevo za prekinitev. |
0 | 1 | Vsaka logična sprememba na INT0 ustvari zahtevo za prekinitev. |
1 | 0 | Padajoči rob INT0 ustvari zahtevo za prekinitev. |
1 | 1 | Naraščajoči rob INT0 ustvari zahtevo za prekinitev. |
GIMSK – Splošni register prekinitvenih mask
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3B | – | INT0 | PCIe | – | – | – | – | – | GIMSK |
Branje/Pisanje | R | R/W | R/W | R | R | R | R | R | |
Začetna vrednost | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Biti 7, 4:0 – Res: Rezervirani biti
Ti biti so v ATtiny25/45/85 rezervirani biti in se vedno berejo kot nič.
Bit 6 – INT0: Omogočena zunanja prekinitvena zahteva 0
Ko je bit INT0 nastavljen (ena) in je bit I v statusnem registru (SREG) nastavljen (ena), je prekinitev zunanjega pina omogočena. Biti za nadzor zaznavanja prekinitve0 1/0 (ISC01 in ISC00) v krmilnem registru MCU (MCUCR) določajo, ali se zunanja prekinitev aktivira na naraščajočem in/ali padajočem robu zatiča INT0 ali zaznanega nivoja. Dejavnost na pinu bo povzročila zahtevo za prekinitev, tudi če je INT0 konfiguriran kot izhod. Ustrezna prekinitev zahteve za zunanjo prekinitev 0 se izvede iz prekinitvenega vektorja INT0.
Bit 5 – PCIE: Omogočanje prekinitve spremembe pina
Ko je bit PCIE nastavljen (ena) in I-bit v statusnem registru (SREG) nastavljen (ena), je prekinitev spremembe pina omogočena. Vsaka sprememba na katerem koli omogočenem zatiču PCINT[5:0] bo povzročila prekinitev. Ustrezna prekinitev zahteve za prekinitev Pin Change se izvede iz vektorja prekinitev PCI. Zatiči PCINT[5:0] so posamezno omogočeni z registrom PCMSK0.
GIFR – register splošnih prekinitvenih zastavic
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3A | – | INTF0 | PCIF | – | – | – | – | – | GIFR |
Branje/Pisanje | R | R/W | R/W | R | R | R | R | R | |
Začetna vrednost | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Biti 7, 4:0 – Res: Rezervirani biti
Ti biti so v ATtiny25/45/85 rezervirani biti in se vedno berejo kot nič.
Bit 6 – INTF0: zunanja prekinitvena zastavica 0
Ko rob ali logična sprememba na pinu INT0 sproži zahtevo za prekinitev, INTF0 postane nastavljen (ena). Če sta I-bit v SREG in INT0 bit v GIMSK nastavljena (ena), bo MCU skočil na ustrezen prekinitveni vektor. Zastavica se počisti, ko se izvede prekinitvena rutina. Druga možnost je, da zastavico počistite tako, da vanjo napišete logično enoto. Ta zastavica je vedno počiščena, ko je INT0 konfiguriran kot prekinitev ravni.
Bit 5 – PCIF: Pin Change Interrupt Flag
Ko sprememba logike na katerem koli zatiču PCINT[5:0] sproži zahtevo za prekinitev, PCIF postane nastavljen (ena). Če sta I-bit v SREG in PCIE bit v GIMSK nastavljena (ena), bo MCU skočil na ustrezen prekinitveni vektor. Zastavica se počisti, ko se izvede prekinitvena rutina. Druga možnost je, da zastavico počistite tako, da vanjo napišete logično enoto.
PCMSK – Register maske za spremembo pinov
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x15 | – | – | PCINT5 | PCINT4 | PCINT3 | PCINT2 | PCINT1 | PCINT0 | PCMSK |
Branje/Pisanje | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Začetna vrednost | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Biti 7:6 – Res: rezervirani biti
Ti biti so v ATtiny25/45/85 rezervirani biti in se vedno berejo kot nič.
Biti 5:0 – PCINT[5:0]: maska za omogočanje spremembe Pin 5:0
Vsak bit PCINT[5:0] izbere, ali je prekinitev spremembe pina omogočena na ustreznem V/I pinu. Če je nastavljen PCINT[5:0] in je bit PCIE v GIMSK nastavljen, je prekinitev spremembe pina omogočena na ustreznem V/I pinu. Če je PCINT[5:0] počiščen, je prekinitev spremembe zatiča na ustreznem V/I zatiču onemogočena.
V/I vrata
Uvod
Vsa vrata AVR imajo resnično funkcijo branja-spreminjanja-pisanja, kadar se uporabljajo kot splošna digitalna V/I vrata. To pomeni, da je mogoče smer enega zatiča vrat spremeniti, ne da bi nenamerno spremenili smer katerega koli drugega zatiča z navodili SBI in CBI. Enako velja pri spreminjanju vrednosti pogona (če je konfiguriran kot izhod) ali omogočanju/onemogočanju vlečnih uporov (če je konfiguriran kot vhod). Vsak izhodni medpomnilnik ima simetrične pogonske značilnosti z visoko zmogljivostjo ponora in vira. Gonilnik nožic je dovolj močan, da neposredno poganja LED zaslone. Vsi pristaniški zatiči imajo individualno izbirne vlečne upore z napajalno voltage invariantni upor. Vsi V/I zatiči imajo zaščitne diode za VCC in ozemljitev, kot je navedeno v Slika 10-1. Sklicuj se na “Električne lastnosti” na strani 161 za celoten seznam parametrov.
Slika 10-1. Ekvivalentna shema I/O Pin
Vsi registri in bitne reference v tem razdelku so napisani v splošni obliki. Mala črka "x" predstavlja oštevilčeno črko za vrata, mala črka "n" pa številko bita. Vendar pa je pri uporabi registra ali bitnih definicij v programu treba uporabiti natančno obliko. Na primerample, PORTB3 za bit št. 3 v vratih B, tukaj na splošno dokumentirano kot PORTxn. Fizični V/I registri in bitne lokacije so navedeni v Vklopljen je “Opis registracije”. stran 64.
Za vsaka vrata so dodeljene tri naslovne lokacije V/I pomnilnika, po ena za podatkovni register – PORTx, register usmerjanja podatkov – DDRx in vhodne nožice vrat – PINx. Vhodno/izhodna lokacija vhodnih nožic je samo za branje, medtem ko sta podatkovni register in register za usmerjanje podatkov branje/pisanje. Vendar pa bo zapisovanje logične ena v bit v registru PINx povzročilo preklop v ustreznem bitu v registru podatkov. Poleg tega bit Pull-up Disable – PUD v MCUCR onemogoči funkcijo pull-up za vse zatiče v vseh vratih, ko je nastavljen.
Uporaba V/I vrat kot splošnega digitalnega V/I je opisana v “Vrata kot splošni digitalni V/I” na strani 53. Večina zatičev vrat je multipleksiranih z alternativnimi funkcijami za periferne funkcije v napravi. Kako vsaka alternativna funkcija vpliva na zatič vrat, je opisano v “Nadomestne funkcije vrat” na strani 57. Za popoln opis nadomestnih funkcij glejte razdelke posameznih modulov.
Upoštevajte, da omogočanje nadomestne funkcije nekaterih zatičev vrat ne vpliva na uporabo drugih zatičev v vratih kot splošnega digitalnega V/I.
Vrata kot splošni digitalni V/I
Vrata so dvosmerna V/I vrata z izbirnimi notranjimi potezami. Slika 10-2 prikazuje funkcionalni opis enega priključka V/I-vrat, ki se tukaj splošno imenuje Pxn.
Slika 10-2. Splošni digitalni V/I(1)
Konfiguracija Pin-a
Vsak pin vrat je sestavljen iz treh registrskih bitov: DDxn, PORTxn in PINxn. Kot je prikazano v Vklopljen je “Opis registracije”. stran 64, do bitov DDxn se dostopa na naslovu DDRx I/O, do bitov PORTxn na naslovu PORTx I/O in do bitov PINxn na naslovu PINx I/O.
Bit DDxn v registru DDRx izbere smer tega zatiča. Če je DDxn zapisan kot logična ena, je Pxn konfiguriran kot izhodni pin. Če je DDxn zapisana logična ničla, je Pxn konfiguriran kot vhodni pin.
Če je PORTxn zapisan kot logična ena, ko je pin konfiguriran kot vhodni pin, je aktiviran upor za dvig. Za izklop vlečnega upora je treba PORTxn zapisati na logično ničlo ali pa mora biti pin konfiguriran kot izhodni pin. Zatiči vrat so v treh položajih, ko postane pogoj ponastavitve aktiven, tudi če ne teče nobena ura.
Če je PORTxn zapisan kot logična ena, ko je pin konfiguriran kot izhodni pin, je pin vrat nastavljen na visoko raven (ena). Če je PORTxn zapisan kot logična ničla, ko je pin konfiguriran kot izhodni pin, je pin vrat nizko (nič).
Preklapljanje Pin
Zapisovanje logične ena v PINxn preklopi vrednost PORTxn, neodvisno od vrednosti DDRxn. Upoštevajte, da lahko navodilo SBI uporabite za preklop enega samega bita v vratih.
Preklapljanje med vhodom in izhodom
Pri preklapljanju med tristanjem ({DDxn, PORTxn} = 0b00) in visokim izhodom ({DDxn, PORTxn} = 0b11), vmesnim stanjem z omogočenim dvigom {DDxn, PORTxn} = 0b01) ali nizkim izhodom ({DDxn, PORTxn} = 0b10). Običajno je stanje omogočenega vlečenja povsem sprejemljivo, saj okolje z visokim uporom ne bo opazilo razlike med močnim visokim voznikom in vlečenjem. Če temu ni tako, lahko bit PUD v registru MCUCR nastavite tako, da onemogoči vse dvige v vseh vratih.
Preklapljanje med vhodom s potegom navzgor in nizkim izhodom povzroča isto težavo. Uporabnik mora kot vmesni korak uporabiti bodisi tristanje ({DDxn, PORTxn} = 0b00) ali izhodno visoko stanje ({DDxn, PORTxn} = 0b10).
Tabela 10-1 povzema krmilne signale za vrednost pina.
Tabela 10-1. Port Pin Configurations
DDxn | PORTxn | PUD
(v MCUCR) |
I/O | Pull-up | Komentiraj |
0 | 0 | X | Vnos | št | Tristanje (Hi-Z) |
0 | 1 | 0 | Vnos | ja | Pxn bo vir toka, če zun. potegnil nizko. |
0 | 1 | 1 | Vnos | št | Tristanje (Hi-Z) |
1 | 0 | X | Izhod | št | Izhod nizek (ponor) |
1 | 1 | X | Izhod | št | Visok izhod (vir) |
Branje vrednosti Pin
Neodvisno od nastavitve bita Data Direction DDxn je mogoče pin vrat brati prek bita registra PINxn. Kot je prikazano v Slika 10-2, bit registra PINxn in predhodni zapah tvorita sinhronizator. To je potrebno, da se izognemo metastabilnosti, če fizični zatič spremeni vrednost blizu roba notranje ure, vendar tudi povzroči zakasnitev. Slika 10-3 prikazuje časovni diagram sinhronizacije pri branju zunanje uporabljene vrednosti pina. Največja in najmanjša zakasnitev širjenja sta označeni s tpd,max oziroma tpd,min.
Razmislite o časovnem obdobju, ki se začne kmalu po prvem padajočem robu sistemske ure. Zapah je zaprt, ko je ura nizka, in postane prosojna, ko je ura visoka, kot kaže zasenčeno območje signala »SYNC LATCH«. Vrednost signala se zaskoči, ko sistemska ura pade nizko. Zapisuje se v register PINxn na naslednjem pozitivnem robu ure. Kot kažeta puščici tpd,max in tpd,min, bo prehod posameznega signala na zatiču zakasnjen med ½ in 1½ periode sistemske ure, odvisno od časa potrditve.
Pri branju vrednosti pina, dodeljene programski opremi, je treba vstaviti ukaz nop, kot je navedeno v Slika 10-4. Izhodno navodilo nastavi signal »SYNC LATCH« na pozitivni rob takta. V tem primeru je zakasnitev tpd skozi sinhronizator ena sistemska ura.
Naslednja koda nprample prikazuje, kako nastaviti pine 0 in 1 vrat B, nizko, 2 in 3 in definirati pine vrat od 4 do 5 kot vhod s potegom, dodeljenim pinu 4 vrat. Dobljene vrednosti pinov se znova preberejo, vendar kot je bilo že omenjeno, je vključeno navodilo nop, da lahko preberete vrednost, ki je bila nedavno dodeljena nekaterim nožicam.
Koda sestavljanja Example(1) |
…
; Določite dvige in nastavite visoke rezultate ; Določite navodila za zatiče vrat ldi r16,(1<<PB4)|(1<<PB1)|(1<<PB0) ldi r17,(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0) izhod PORTB,r16 ven DDRB, r17 ; Vstavite nop za sinhronizacijo nop ; Preberite zatiče vrat v r16, PINB … |
Opomba: Za montažni program se uporabljata dva začasna registra za minimiziranje časa od nastavitev dvigov na nožice 0, 1 in 4, dokler niso smerni biti pravilno nastavljeni, pri čemer bit 2 in 3 definirata kot nizka in ponovno definirata bita 0 in 1 kot močni visoki vozniki.
C Koda Example |
nepodpisani znak i;
… /* Določite dvige in nastavite visoke rezultate */ /* Določite smeri za zatiče vrat */ PORTB = (1< DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0); /* Vstavi nop za sinhronizacijo*/ _NOP(); /* Branje pinov vrat */ i = PINB; … |
Omogočanje digitalnega vhoda in način mirovanja
Kot je prikazano v Slika 10-2, digitalni vhodni signal je lahko klampozemljitev na vhodu schmittovega sprožilca. Signal, označen s SLEEP na sliki, nastavi krmilnik mirovanja MCU v načinu izklopa, da se izogne visoki porabi energije, če nekateri vhodni signali ostanejo neaktivni ali imajo raven analognega signala blizu VCC/2.
SLEEP je preglasen za zatiče vrat, ki so omogočeni kot zunanji prekinitveni zatiči. Če zahteva za zunanjo prekinitev ni omogočena, je SLEEP aktiven tudi za te pine. SLEEP preglasijo tudi različne druge nadomestne funkcije, kot je opisano v “Nadomestne funkcije vrat” na strani 57.
Če je na asinhronem zunanjem prekinitvenem pinu, konfiguriranem kot »Prekinitev na naraščajočem robu, padajočem robu ali kateri koli logični spremembi na pinu«, prisotna logična visoka raven (»ena«), medtem ko zunanja prekinitev ni omogočena, bo ustrezna zunanja prekinitvena zastavica nastavite ob preklopu iz zgoraj omenjenega načina mirovanja, kot je clampdelovanje v teh načinih mirovanja povzroči zahtevano logično spremembo.
Nepovezani zatiči
Če so nekateri zatiči neuporabljeni, je priporočljivo zagotoviti, da imajo ti zatiči določeno raven. Čeprav je večina digitalnih vhodov onemogočenih v načinih globokega spanja, kot je opisano zgoraj, se je treba izogibati plavajočim vhodom, da zmanjšate porabo toka v vseh drugih načinih, kjer so digitalni vhodi omogočeni (Ponastavitev, aktivni način in način mirovanja).
Najenostavnejša metoda za zagotovitev določene ravni neuporabljenega zatiča je omogočiti notranji poteg navzgor. V tem primeru bo vlečenje med ponastavitvijo onemogočeno. Če je med ponastavitvijo pomembna nizka poraba energije, je priporočljiva uporaba zunanjega vlečnega ali vlečnega. Povezovanje neuporabljenih zatičev neposredno na VCC ali GND ni priporočljivo, saj lahko to povzroči čezmerne tokove, če je zatič pomotoma konfiguriran kot izhod.
Nadomestne funkcije vrat
Večina zatičev vrat ima poleg splošnih digitalnih V/I tudi druge funkcije. Slika 10-5 prikazuje, kako krmilni signali vrat pin iz poenostavljenega Slika 10-2 lahko preglasijo nadomestne funkcije. Prevladujoči signali morda niso prisotni v vseh zatičih vrat, vendar slika služi kot splošen opis, ki se uporablja za vse zatiče vrat v družini mikrokrmilnikov AVR.
Tabela 10-2. Generični opis preglasitvenih signalov za alternativne funkcije
Ime signala | Polno ime | Opis |
PUOE | Pull-up Override Enable | Če je ta signal nastavljen, se omogočanje vlečenja krmili s signalom PUOV. Če je ta signal izbrisan, je dvig omogočen, ko
{DDxn, PORTxn, PUD} = 0b010. |
PUOV | Vrednost preglasitve dviga | Če je PUOE nastavljen, je dvig omogočen/onemogočen, ko je PUOV nastavljen/počiščen, ne glede na nastavitev bitov registra DDxn, PORTxn in PUD. |
DDOE | Omogoči preglasitev smeri podatkov | Če je ta signal nastavljen, je Output Driver Enable krmiljen s signalom DDOV. Če je ta signal izbrisan, je izhodni gonilnik omogočen z bitom registra DDxn. |
DDOV | Vrednost preglasitve smeri podatkov | Če je DDOE nastavljen, je izhodni gonilnik omogočen/onemogočen, ko je DDOV nastavljen/počiščen, ne glede na nastavitev bita registra DDxn. |
PVOE | Omogoči preglasitev vrednosti vrat | Če je ta signal nastavljen in je izhodni gonilnik omogočen, vrednost vrat nadzira signal PVOV. Če je PVOE počiščen in je izhodni gonilnik omogočen, vrednost vrat nadzira bit registra PORTxn. |
PVOV | Vrednost preglasitve vrat | Če je nastavljen PVOE, je vrednost vrat nastavljena na PVOV, ne glede na nastavitev bita registra PORTxn. |
PTOE | Omogoči preglasitev preklopa vrat | Če je PTOE nastavljen, se bit registra PORTxn obrne. |
DIEOE | Digitalni vhod Omogoči Preglasi Omogoči | Če je ta bit nastavljen, je digitalni vhod Enable krmiljen s signalom DIEOV. Če je ta signal počiščen, je omogočitev digitalnega vhoda določena s stanjem MCU (normalni način, način mirovanja). |
DIEOV | Digitalni vhod omogoči preglasitev vrednosti | Če je nastavljen DIEOE, je digitalni vhod omogočen/onemogočen, ko je DIEOV nastavljen/počiščen, ne glede na stanje MCU (običajni način, način mirovanja). |
DI | Digitalni vhod | To je digitalni vhod za nadomestne funkcije. Na sliki je signal priključen na izhod schmitt-triggerja, vendar pred sinhronizatorjem. Razen če je digitalni vhod uporabljen kot vir takta, bo modul z alternativno funkcijo uporabljal lasten sinhronizator. |
AIO | Analogni vhod / izhod | To je analogni vhod/izhod v/iz alternativnih funkcij. Signal je priključen neposredno na ploščico in se lahko uporablja dvosmerno. |
Naslednji pododdelki na kratko opisujejo nadomestne funkcije za posamezna vrata in povezujejo prevladujoče signale z nadomestno funkcijo. Za dodatne podrobnosti glejte opis nadomestne funkcije.
Nadomestne funkcije vrat B
Zatiči vrat B z alternativno funkcijo so prikazani v Tabela 10-3.
Tabela 10-3. Nadomestne funkcije zatičev vrat B
Port Pin | Nadomestna funkcija |
PB5 | ![]() RESET: Ponastavite Pin dW: V/I debugWIRE ADC0: Vhodni kanal ADC 0 PCINT5: Prekinitev spremembe pina, vir 5 |
PB4 | XTAL2: Izhod kristalnega oscilatorja CLKO: Izhod sistemske ure ADC2: Vhodni kanal ADC 2
OC1B: Timer/Counter1 Compare Match B Output PCINT4: Pin Change Interrupt 0, Source 4 |
PB3 | XTAL1: Vhod kristalnega oscilatorja CLKI: Vhod zunanje ure ADC3: Vhodni kanal ADC 3
OC1B: komplementarni časovnik/števec1 primerjava ujemanja B izhod PCINT3: prekinitev spremembe pina 0, vir 3 |
PB2 | SCK: Vhod serijske ure ADC1: Vhodni kanal ADC 1
T0: Timer/Counter0 Clock Source USCK: USI Clock (Three Wire Mode) SCL: USI Clock (Two Wire Mode) INT0: Zunanja prekinitev 0 Input PCINT2: Pin Change Interrupt 0, Source 2 |
PB1 | MISO: SPI glavni vnos podatkov / izhod podrejenih podatkov AIN1: analogni primerjalnik, negativni vhod OC0B: časovnik/števec0 primerjava ujemanja B izhod OC1A: časovnik/števec1 primerjava ujemanja A izhod DO: podatkovni izhod USI (trižični način) PCINT1: prekinitev spremembe nožice 0, vir 1 |
PB0 | MOSI:: SPI glavni izhod podatkov / podrejeni vhod podatkov AIN0: analogni primerjalnik, pozitivni vhod
OC0A: Timer/Counter0 Compare Match A izhod OC1A: komplementarni časovnik/števec1 primerjava ujemanja A izhod DI: podatkovni vhod USI (trižični način) SDA: Podatkovni vnos USI (dvožilni način) AREF: Zunanja analogna referenca PCINT0: Prekinitev spremembe pina 0, vir 0 |
Vrata B, Bit 5 – RESET/dW/ADC0/PCINT5
RESET: Zunanji vhod za ponastavitev je aktiven nizek in omogočen z odprogramiranjem (»1«) varovalke RSTDISBL. Pullup je aktiviran, izhodni gonilnik in digitalni vhod pa sta deaktivirana, ko se zatič uporablja kot zatič RESET.
dW: Ko je varovalka debugWIRE Enable (DWEN) programirana in so zaklepni biti neprogramirani, se sistem debugWIRE znotraj ciljne naprave aktivira. Zatič vrat RESET je konfiguriran kot dvosmerni V/I zatič za žično IN (odprt odtok) z omogočenim dvigom in postane komunikacijski prehod med ciljem in emulatorjem.
ADC0: Analogno-digitalni pretvornik, kanal 0.
PCINT5: Pin Change Interrupt vir 5.
Vrata B, Bit 4 – XTAL2/CLKO/ADC2/OC1B/PCINT4
XTAL2: pin 2 oscilatorja ure čipa. Uporablja se kot pin ure za vse vire ure čipa, razen notranjega umerljivega RC oscilatorja in zunanje ure. Če se uporablja kot zatič za uro, ga ni mogoče uporabiti kot V/I zatič. Pri uporabi notranjega umerljivega RC oscilatorja ali zunanje ure kot vira takta čipa PB4 služi kot navaden I/O pin.
CLKO: razdeljena sistemska ura je lahko izhodna na pin PB4. Razdeljena sistemska ura bo prikazana, če je programirana varovalka CKOUT, ne glede na nastavitve PORTB4 in DDB4. Izveden bo tudi med ponastavitvijo.
ADC2: Analogno-digitalni pretvornik, kanal 2.
OC1B: Izhod primerjave ujemanja izhoda: Pin PB4 lahko služi kot zunanji izhod za Timer/Counter1 Compare Match B, ko je konfiguriran kot izhod (nastavljen DDB4). Zatič OC1B je tudi izhodni zatič za funkcijo časovnika načina PWM.
PCINT4: Pin Change Interrupt vir 4.
Vrata B, bit 3 – XTAL1/CLKI/ADC3/OC1B/PCINT3
XTAL1: Pin 1 oscilatorja ure čipa. Uporablja se za vse vire takta čipa, razen notranjega kalibriranega oscilatorja RC. Če se uporablja kot zatič za uro, ga ni mogoče uporabiti kot V/I zatič.
CLKI: Ura Vhod iz zunanjega vira ure, glejte “Zunanja ura” na strani 26.
ADC3: Analogno-digitalni pretvornik, kanal 3.
OC1B: Obrnjen izhod primerjave ujemanja izhod: Pin PB3 lahko služi kot zunanji izhod za Timer/Counter1 Compare Match B, ko je konfiguriran kot izhod (nastavljen DDB3). Zatič OC1B je tudi obrnjeni izhodni zatič za funkcijo časovnika načina PWM.
PCINT3: Pin Change Interrupt vir 3.
Vrata B, Bit 2 – SCK/ADC1/T0/USCK/SCL/INT0/PCINT2
SCK: izhod glavne ure, vhodni pin podrejene ure za kanal SPI. Ko je SPI omogočen kot podrejeni, je ta nožica konfigurirana kot vhod ne glede na nastavitev DDB2. Ko je SPI omogočen kot glavni, smer podatkov tega zatiča nadzoruje DDPB2. Ko SPI prisili pin, da je vhod, lahko dvig še vedno nadzira bit PORTB2.
ADC1: Analogno-digitalni pretvornik, kanal 1.
T0: vir števca časovnika/števca0.
USCK: Ura univerzalnega serijskega vmesnika v trižičnem načinu.
SCL: Serijska ura za dvožilni način za dvožilni način USI.
INT0: zunanji prekinitveni vir 0.
PCINT2: Pin Change Interrupt vir 2.
Vrata B, Bit 1 – MISO/AIN1/OC0B/OC1A/DO/PCINT1
MISO: vhodni glavni podatki, izhodni pin podrejenih podatkov za kanal SPI. Ko je SPI omogočen kot glavni, je ta nožica konfigurirana kot vhod ne glede na nastavitev DDB1. Ko je SPI omogočen kot podrejeni, smer podatkov tega zatiča nadzoruje DDB1. Ko SPI prisili pin, da je vhod, lahko dvig še vedno nadzira bit PORTB1.
AIN1: negativni vhod analognega primerjalnika. Konfigurirajte zatič vrat kot vhod z izklopljenim notranjim dvigom, da preprečite, da bi funkcija digitalnih vrat motila delovanje analognega primerjalnika.
OC0B: Izhod Primerjava Ujemaj izhod. Pin PB1 lahko služi kot zunanji izhod za Timer/Counter0 Compare Match B. Pin PB1 mora biti konfiguriran kot izhod (nabor DDB1 (ena)), da služi tej funkciji. Zatič OC0B je tudi izhodni zatič za funkcijo časovnika načina PWM.
OC1A: izhod primerjave ujemanja izhoda: Pin PB1 lahko služi kot zunanji izhod za časovnik/števec1 primerjava ujemanja B, ko je konfiguriran kot izhod (nastavljen DDB1). Zatič OC1A je tudi izhodni zatič za funkcijo časovnika načina PWM.
DO: Izhod podatkov univerzalnega serijskega vmesnika v trižičnem načinu. Trižični način Podatkovni izhod preglasi vrednost PORTB1 in se pošlje v vrata, ko je nastavljen bit podatkovne smeri DDB1 (ena). PORTB1 še vedno omogoča poteg navzgor, če je smer vnesena in je PORTB1 nastavljen (ena).
PCINT1: Pin Change Interrupt vir 1.
Vrata B, Bit 0 – MOSI/AIN0/OC0A/OC1A/DI/SDA/AREF/PCINT0
MOSI: SPI Master Data izhod, Slave Data vhod za SPI kanal. Ko je SPI omogočen kot podrejeni, je ta nožica konfigurirana kot vhod ne glede na nastavitev DDB0. Ko je SPI omogočen kot glavni, smer podatkov tega zatiča nadzoruje DDB0. Ko SPI prisili pin, da je vhod, lahko dvig še vedno nadzira bit PORTB0.
AIN0: Pozitivni vhod analognega primerjalnika. Konfigurirajte zatič vrat kot vhod z izklopljenim notranjim dvigom, da preprečite, da bi funkcija digitalnih vrat motila delovanje analognega primerjalnika.
OC0A: Izhod Primerjava Ujemaj izhod. Nožica PB0 lahko služi kot zunanji izhod za Timer/Counter0 Compare Match A, ko je konfiguriran kot izhod (DDB0 set (ena)). Zatič OC0A je tudi izhodni zatič za funkcijo časovnika načina PWM.
OC1A: Obrnjen izhod primerjave ujemanja izhod: Pin PB0 lahko služi kot zunanji izhod za Timer/Counter1 Compare Match B, ko je konfiguriran kot izhod (nastavljen DDB0). Zatič OC1A je tudi obrnjeni izhodni zatič za funkcijo časovnika načina PWM.
SDA: Podatki serijskega vmesnika dvožilnega načina.
AREF: Zunanja analogna referenca za ADC. Pullup in izhodni gonilnik sta na PB0 onemogočena, ko se nožica uporablja kot zunanja referenca ali notranja vol.tage Referenca z zunanjim kondenzatorjem na zatiču AREF.
DI: Vnos podatkov v trižičnem načinu USI. Trižični način USI ne preglasi običajnih funkcij vrat, zato je treba pin konfigurirati kot vhod za funkcijo DI.
PCINT0: Pin Change Interrupt vir 0.
Tabela 10-4 in Tabela 10-5 povežite nadomestne funkcije vrat B s prevladujočimi signali, prikazanimi v Slika 10-5 naprej stran 58.
Tabela 10-4. Preglasitev signalov za alternativne funkcije v PB[5:3]
Ime signala | PB5/PONASTAVI/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 Omogoči | ![]() OC1B Omogoči |
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 | Vnos PCINT5 | Vnos PCINT4 | Vnos PCINT3 |
AIO | Vhod RESET, vhod ADC0 | ADC2 vhod | ADC3 vhod |
Opomba: ko je varovalka "0" (programirano).
Tabela 10-5. Preglasitev signalov za alternativne funkcije v PB[2:0]
Ime 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 Omogoči + OC1A Omogoči + USI_THREE_WIRE | ![]() OC0A Omogoči + OC1A Omogoč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/
Vnos PCINT2 |
Vnos PCINT1 | Vnos DI/SDA/PCINT0 |
AIO | ADC1 vhod | Negativni vhod analognega primerjalnika | Pozitivni vhod analognega primerjalnika |
Opis registra
MCUCR – kontrolni register MCU
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | BODS | PUD | SE | SM1 | SM0 | BODSE | ISC01 | ISC00 | MCUCR |
Branje/Pisanje | R | R/W | R/W | R/W | R/W | R | R/W | R/W | |
Začetna vrednost | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit 6 – PUD: Pull-up Onemogoči
Ko je ta bit zapisan v eno, so dvigi v V/I vratih onemogočeni, tudi če sta registra DDxn in PORTxn konfigurirana tako, da omogočata dvige ({DDxn, PORTxn} = 0b01). glej “Konfiguracija PIN-a” na strani 54 za več podrobnosti o tej funkciji.
PORTB – Podatkovni register vrat B
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x18 | – | – | PORTB5 | PORTB4 | PORTB3 | PORTB2 | PORTB1 | PORTB0 | PORTB |
Branje/Pisanje | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Začetna vrednost | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
DDRB – Port B Data Direction Register
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x17 | – | – | DDB5 | DDB4 | DDB3 | DDB2 | DDB1 | DDB0 | DDRB |
Branje/Pisanje | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Začetna vrednost | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
PINB – Port B Input Pins Address
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x16 | – | – | PINB5 | PINB4 | PINB3 | PINB2 | PINB1 | PINB0 | PINB |
Branje/Pisanje | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Začetna vrednost | 0 | 0 | N/A | N/A | N/A | N/A | N/A | N/A |
8-bitni časovnik/števec0 s PWM
Lastnosti
Dve neodvisni izhodni enoti za primerjavo
Primerjava registrov dvojnega medpomnilnika izhoda
Počisti časovnik ob ujemanju primerjave (samodejno ponovno nalaganje)
Modulator širine impulza (PWM) brez napak, fazno pravilen
Spremenljivo obdobje PWM
Frekvenčni generator
Trije neodvisni viri prekinitev (TOV0, OCF0A in OCF0B)
konecview
Timer/Counter0 je splošni 8-bitni modul Timer/Counter z dvema neodvisnima enotama za primerjavo izhodov in podporo za PWM. Omogoča natančen čas izvajanja programa (upravljanje dogodkov) in generiranje valov.
Poenostavljen blokovni diagram 8-bitnega časovnika/števca je prikazan v Slika 11-1. Za dejansko postavitev V/I zatičev glejte “Pinout ATtiny25/45/85” na strani 2. V/I registri, dostopni CPU, vključno z V/I biti in V/I zatiči, so prikazani krepko. V/I register in lokacije bitov, specifične za napravo, so navedene v “Opis registra” na strani 77.
Časovnik/števec (TCNT0) in registri za primerjavo izhodov (OCR0A in OCR0B) so 8-bitni registri. Vsi signali zahteve za prekinitev (skrajšano za Int.Req. na sliki) so vidni v registru zastavic časovne prekinitve (TIFR). Vse prekinitve so posamično maskirane z registrom maske časovne prekinitve (TIMSK). TIFR in TIMSK nista prikazana na sliki.
Časovnik/števec je mogoče taktirati interno, prek preddelilnika ali zunanjega vira ure na zatiču T0. Logični blok za izbiro ure nadzira, kateri vir in rob ure uporablja časovnik/števec za povečanje (ali zmanjšanje) svoje vrednosti. Časovnik/števec je neaktiven, če ni izbran vir ure. Izhod iz logike izbire ure se imenuje ura časovnika (clkT0).
Izhodni primerjalni registri z dvojnim medpomnilnikom (OCR0A in OCR0B) se ves čas primerjajo z vrednostjo časovnika/števca. Rezultat primerjave lahko uporabi generator valovnih oblik za generiranje izhoda PWM ali spremenljive frekvence na zatičih za primerjavo izhodov (OC0A in OC0B). Glejte “Enota za primerjavo izhoda” na strani 69. za podrobnosti. Dogodek Compare Match bo nastavil tudi zastavico Compare (OCF0A ali OCF0B), ki se lahko uporabi za generiranje zahteve za prekinitev primerjave izhoda.
Definicije
Veliko referenc na registre in bite v tem razdelku je napisanih v splošni obliki. Mala črka "n" nadomesti številko časovnika/števca, v tem primeru 0. Mala črka "x" nadomesti izhodno primerjalno enoto, v tem primeru primerjalno enoto A ali primerjalno enoto B. Vendar pa pri uporabi registra ali bita definira v programu je treba uporabiti natančno obliko, tj. TCNT0 za dostop do vrednosti števca Timer/Counter0 itd.
Definicije v Tabela 11-1 se prav tako pogosto uporabljajo v celotnem dokumentu.
Tabela 11-1. Definicije
Konstanta | Opis |
SPODNJE | Števec doseže DNO, ko postane 0x00 |
MAKS | Števec doseže svoj MAXimum, ko postane 0xFF (decimalno 255) |
TOP | Števec doseže TOP, ko postane enak najvišji vrednosti v zaporedju štetja. TOP vrednost lahko dodelite fiksni vrednosti 0xFF (MAX) ali vrednosti, shranjeni v registru OCR0A. Dodelitev je odvisna od načina delovanja |
Preddelilnik časa/števec in viri ure
Časovnik/števec se lahko uravnava z notranjim ali zunanjim virom ure. Vir ure je izbran z logiko izbire ure, ki jo nadzirajo biti za izbiro ure (c), ki se nahajajo v nadzornem registru časovnika/števca0 (TCCR0B).
Notranji vir ure s preddelilnikom
Časovnik/števec0 lahko merite neposredno s sistemsko uro (z nastavitvijo CS0[2:0] = 1). To zagotavlja najhitrejše delovanje z največjo frekvenco ure časovnika/števca, ki je enaka frekvenci sistemske ure (fCLK_I/O). Druga možnost je, da se kot vir takta uporabi ena od štirih pip iz preddelilnika. Prednastavljena ura ima frekvenco obeh
Ponastavitev preddelilnika
Preddelilnik deluje prosto, tj. deluje neodvisno od logike izbire ure časovnika/števca0. Ker izbira ure časovnika/števca ne vpliva na preddelilnik, bo imelo stanje preddelilnika posledice za situacije, kjer se uporablja prednastavljena ura. En bivšiampartefakt vnaprejšnjega skaliranja je, ko je časovnik/števec omogočen in taktiran z vnaprejšnjim merilnikom (6 > CS0[2:0] > 1). Število ciklov sistemske ure od trenutka, ko je časovnik omogočen, do prvega štetja je lahko od 1 do N+1 ciklov sistemske ure, kjer je N enako delitelju preddelilnika (8, 64, 256 ali 1024).
Možno je uporabiti ponastavitev preddelilnika za sinhronizacijo časovnika/števca z izvajanjem programa.
Zunanji vir ure
Zunanji vir ure, priključen na pin T0, se lahko uporablja kot časovnik/števec (clkT0). Zatič T0 je sampvodi enkrat vsak cikel sistemske ure z logiko sinhronizacije pinov. Sinhronizirani (sampLED) je nato posredovan signal
skozi detektor robov. Slika 11-2 prikazuje funkcionalno enakovredni blokovni diagram T0 sinhronizacije in logike detektorja robov. Registri so taktni na pozitivnem robu notranje sistemske ure (clkI/O). Zapah je v visokem obdobju notranje sistemske ure prozoren.
Detektor robov ustvari en impulz clkT0 za vsak pozitivni (CS0[2:0] = 7) ali negativni (CS0[2:0] = 6) rob, ki ga zazna.
Registri OCR0x so dvojno medpomnilniki pri uporabi katerega koli od načinov modulacije širine impulza (PWM). Za običajni način delovanja in način delovanja Clear Timer on Compare (CTC) je dvojno medpomnjenje onemogočeno. Dvojno medpomnjenje sinhronizira posodobitev primerjalnih registrov OCR0x na vrh ali dno zaporedja štetja. Sinhronizacija preprečuje pojav lihih, nesimetričnih impulzov PWM, zaradi česar je izhod brez napak.
Dostop do registra OCR0x se morda zdi zapleten, vendar ni tako. Ko je omogočeno dvojno medpomnjenje, ima CPE dostop do registra medpomnilnika OCR0x, in če je dvojno medpomnjenje onemogočeno, bo CPE neposredno dostopal do OCR0x.
Force Output Compare
V načinih generiranja valovne oblike brez PWM se lahko ujemanje izhoda primerjalnika vsili tako, da se v bit Force Output Compare (FOC0x) zapiše ena. Prisilno ujemanje primerjave ne bo nastavilo zastavice OCF0x ali znova naložilo/počistilo časovnika, vendar bo pin OC0x posodobljen, kot da bi prišlo do resničnega primerjalnega ujemanja (nastavitve bitov COM0x[1:0] določajo, ali je pin OC0x nastavljen, počiščen ali preklopno).
Primerjaj Match Blocking s TCNT0 Write
Vse operacije pisanja CPE v register TCNT0 bodo blokirale kakršno koli primerjalno ujemanje, ki se pojavi v naslednjem ciklu časovnika, tudi ko je časovnik ustavljen. Ta funkcija omogoča inicializacijo OCR0x na isto vrednost kot TCNT0 brez sprožitve prekinitve, ko je omogočena ura časovnika/števca.
Uporaba enote za primerjavo izhoda
Ker bo pisanje TCNT0 v katerem koli načinu delovanja blokiralo vsa primerjalna ujemanja za en cikel časovnika, obstajajo tveganja pri spreminjanju TCNT0 pri uporabi enote za primerjavo izhoda, ne glede na to, ali se časovnik/števec izvaja ali ne. Če je vrednost, zapisana v TCNT0, enaka vrednosti OCR0x, bo primerjalno ujemanje zgrešeno, kar bo povzročilo nepravilno generiranje valovne oblike. Podobno ne zapišite vrednosti TCNT0, ki je enaka BOTTOM, ko števec odšteva navzdol.
Nastavitev OC0x je treba izvesti, preden nastavite register usmerjanja podatkov za izhodni pin vrat. Najlažji način za nastavitev vrednosti OC0x je uporaba bitov za primerjavo izhodne sile (FOC0x) v običajnem načinu. Registri OC0x ohranjajo svoje vrednosti tudi pri menjavi med načini generiranja valov.
Zavedajte se, da biti COM0x[1:0] niso dvojno medpomnilnik skupaj s primerjalno vrednostjo. Spreminjanje bitov COM0x[1:0] bo začelo veljati takoj.
Primerjaj Match Output Unit
Primerjaj izhodnih bitov (COM0x[1:0]) ima dve funkciji. Generator valovnih oblik uporablja bite COM0x[1:0] za definiranje stanja primerjave izhoda (OC0x) pri naslednjem ujemanju primerjave. Tudi biti COM0x[1:0] nadzorujejo izhodni vir nožice OC0x. Slika 11-6 prikazuje poenostavljeno shemo logike, na katero vpliva bitna nastavitev COM0x[1:0]. V/I registri, V/I biti in V/I zatiči na sliki so prikazani krepko. Prikazani so samo deli splošnih registrov za nadzor V/I vrat (DDR in PORT), na katere vplivajo bitovi COM0x[1:0]. Pri sklicevanju na stanje OC0x je referenca za notranji register OC0x, ne za pin OC0x. Če pride do ponastavitve sistema, se register OC0x ponastavi na »0«.
Ko je OC0A/OC0B priključen na I/O pin, je funkcija bitov COM0A[1:0]/COM0B[1:0] odvisna od nastavitve bita WGM0[2:0]. Tabela 11-2 prikazuje funkcionalnost bita COM0x[1:0], ko so biti WGM0[2:0] nastavljeni na običajni način ali način CTC (brez PWM).
Tabela 11-2. Primerjaj izhodni način, način brez PWM
COM0A1 COM0B1 | COM0A0 COM0B0 | Opis |
0 | 0 | Normalno delovanje vrat, OC0A/OC0B prekinjena. |
0 | 1 | Preklopite OC0A/OC0B na primerjavo ujemanja |
1 | 0 | Počisti OC0A/OC0B pri primerjalnem ujemanju |
1 | 1 | Nastavite OC0A/OC0B na Compare Match |
Tabela 11-3 prikazuje funkcionalnost bita COM0x[1:0], ko so biti WGM0[2:0] nastavljeni na hitri način PWM.
Tabela 11-3. Primerjaj izhodni način, hitri način PWM(1)
COM0A1 COM0B1 | COM0A0 COM0B0 | Opis |
0 | 0 | Normalno delovanje vrat, OC0A/OC0B prekinjena. |
0 | 1 | Rezervirano |
1 | 0 | Počistite OC0A/OC0B pri primerjalnem ujemanju, nastavite OC0A/OC0B na SPODAJ (način brez obračanja) |
1 | 1 | Nastavite OC0A/OC0B na Compare Match, počistite OC0A/OC0B na SPODAJ (način obračanja) |
Opomba: Poseben primer se pojavi, ko je OCR0A ali OCR0B enako TOP in je nastavljen COM0A1/COM0B1. V tem primeru se primerjalno ujemanje prezre, nastavitev ali brisanje pa se izvede na SPODNJEM. glej “Hitri način PWM” na strani 73 za več podrobnosti.
Tabela 11-4 prikazuje funkcionalnost bita COM0x[1:0], ko so biti WGM0[2:0] nastavljeni na fazno pravilen način PWM.
Tabela 11-4. Primerjajte način izhoda, način pravilne faze PWM(1)
COM0A1 COM0B1 | COM0A0 COM0B0 | Opis |
0 | 0 | Normalno delovanje vrat, OC0A/OC0B prekinjena. |
0 | 1 | Rezervirano |
1 | 0 | Počisti OC0A/OC0B pri primerjalnem ujemanju pri štetju. Pri štetju navzdol nastavite OC0A/OC0B na Compare Match. |
1 | 1 | Pri štetju navzgor nastavite OC0A/OC0B na Compare Match. Počisti OC0A/OC0B pri primerjalnem ujemanju pri štetju navzdol. |
Opomba: 1. Do posebnega primera pride, ko je OCR0A ali OCR0B enako TOP in je nastavljen COM0A1/COM0B1. V tem primeru se primerjava ujemanja prezre, nastavitev ali brisanje pa se izvede na VRHU. glej “Phase Correct PWM Mode” na strani 74 za več podrobnosti.
Biti 3:2 – Res: rezervirani biti
Ti biti so v ATtiny25/45/85 rezervirani biti in se vedno berejo kot nič.
Biti 1:0 – WGM0[1:0]: način generiranja valov
V kombinaciji z bitom WGM02, ki ga najdete v registru TCCR0B, ti biti nadzirajo zaporedje štetja števca, vir za največjo (TOP) vrednost števca in vrsto generiranja valovne oblike, ki se uporablja, glejte Tabela 11-5. Načini delovanja, ki jih podpira enota časovnik/števec, so: običajni način (števec), način brisanja časovnika pri primerjanju ujemanja (CTC) in dve vrsti načinov modulacije širine impulza (PWM) (glejte "Načini delovanja" na strani 71).
Tabela 11-5. Bit Opis načina generiranja valovne oblike
Način | WGM 02 | WGM 01 | WGM 00 | Način delovanja časovnika/števca | TOP | Posodobitev OCRx na | Zastavica TOV je vklopljena |
0 | 0 | 0 | 0 | normalno | 0xFF | Takoj | MAKS(1) |
1 | 0 | 0 | 1 | PWM, pravilna faza | 0xFF | TOP | SPODNJE(2) |
2 | 0 | 1 | 0 | CTC | OCRA | Takoj | MAKS(1) |
3 | 0 | 1 | 1 | Hiter PWM | 0xFF | SPODNJE(2) | MAKS(1) |
4 | 1 | 0 | 0 | Rezervirano | – | – | – |
5 | 1 | 0 | 1 | PWM, pravilna faza | OCRA | TOP | SPODNJE(2) |
6 | 1 | 1 | 0 | Rezervirano | – | – | – |
7 | 1 | 1 | 1 | Hiter PWM | OCRA | SPODNJE(2) | TOP |
Bit 7 – FOC0A: Force Output Compare A
Bit FOC0A je aktiven le, če biti WGM določajo način brez PWM.
Za zagotavljanje združljivosti s prihodnjimi napravami pa mora biti ta bit nastavljen na nič, ko je TCCR0B zapisan pri delovanju v načinu PWM. Pri zapisovanju logične enote v bit FOC0A je v enoti za generiranje valov vsiljeno takojšnje primerjalno ujemanje. Izhod OC0A se spremeni glede na njegovo nastavitev bitov COM0A[1:0]. Upoštevajte, da je bit FOC0A implementiran kot stroboskop. Zato je vrednost, prisotna v bitih COM0A[1:0], tista, ki določa učinek prisilne primerjave.
Utrip FOC0A ne bo ustvaril nobene prekinitve, niti ne bo počistil časovnika v načinu CTC z uporabo OCR0A kot TOP. Bit FOC0A se vedno bere kot nič.
Bit 6 – FOC0B: Force Output Compare B
Bit FOC0B je aktiven le, če biti WGM določajo način brez PWM.
Za zagotavljanje združljivosti s prihodnjimi napravami pa mora biti ta bit nastavljen na nič, ko je TCCR0B zapisan pri delovanju v načinu PWM. Pri zapisovanju logične enote v bit FOC0B je v enoti za generiranje valov vsiljeno takojšnje primerjalno ujemanje. Izhod OC0B se spremeni v skladu z nastavitvijo bitov COM0B[1:0]. Upoštevajte, da je bit FOC0B implementiran kot stroboskop. Zato je vrednost, prisotna v bitih COM0B[1:0], tista, ki določa učinek prisilne primerjave.
Utrip FOC0B ne bo ustvaril nobene prekinitve, niti ne bo počistil časovnika v načinu CTC z uporabo OCR0B kot TOP.
Bit FOC0B se vedno bere kot nič.
Biti 5:4 – Res: rezervirani biti
Ti biti so v ATtiny25/45/85 rezervirani biti in se vedno berejo kot nič.
Bit 3 – WGM02: način generiranja valov
Glej opis v “TCCR0A – Nadzorni register časovnika/števca A” na strani 77.
Biti 2:0 – CS0[2:0]: Izbira ure
Trije biti za izbiro ure izberejo vir ure, ki ga bo uporabljal časovnik/števec.
Tabela 11-6. Ura Izberite Bit Opis
CS02 | CS01 | CS00 | Opis |
0 | 0 | 0 | Ni vira ure (časovnik/števec ustavljen) |
0 | 0 | 1 | clkI/O/(brez predhodnega skaliranja) |
0 | 1 | 0 | clkI/O/8 (iz preddelilnika) |
0 | 1 | 1 | clkI/O/64 (iz preddelilnika) |
1 | 0 | 0 | clkI/O/256 (iz preddelilnika) |
1 | 0 | 1 | clkI/O/1024 (iz preddelilnika) |
1 | 1 | 0 | Zunanji vir ure na zatiču T0. Ura na padajočem robu. |
1 | 1 | 1 | Zunanji vir ure na zatiču T0. Ura na naraščajočem robu. |
Če se za Timer/Counter0 uporabljajo zunanji načini zatičev, bodo prehodi na zatiču T0 taktirali števec, tudi če je zatič konfiguriran kot izhod. Ta funkcija omogoča programsko upravljanje štetja.
Štetje in primerjava enot
Splošno delovanje Timer/Counter1 je opisano v asinhronem načinu, delovanje v sinhronem načinu pa je omenjeno le, če obstajajo razlike med tema načinoma. Slika 12-2 prikazuje blokovni diagram sinhronizacijskega registra Timer/Counter 1 in sinhronizacijske zakasnitve med registri. Upoštevajte, da na sliki niso prikazane vse podrobnosti o strmitvi ure. Vrednosti registra Timer/Counter1 gredo skozi notranje sinhronizacijske registre, ki povzročijo zakasnitev vhodne sinhronizacije, preden vplivajo na delovanje števca. Registre TCCR1, GTCCR, OCR1A, OCR1B in OCR1C je mogoče prebrati nazaj takoj po pisanju registra. Prebrane vrednosti so zakasnjene za register Timer/Counter1 (TCNT1) in zastavice (OCF1A, OCF1B in TOV1) zaradi vhodne in izhodne sinhronizacije.
Časovnik/števec1 ima visoko ločljivost in visoko natančno uporabo z nižjimi možnostmi predskaliranja. Podpira lahko tudi dva natančna, visokohitrostna, 8-bitna modulatorja širine impulza, ki uporabljata frekvenco do 64 MHz (ali 32 MHz v načinu nizke hitrosti). V tem načinu Timer/Counter1 in izhodni primerjalni registri služijo kot dvojni samostojni PWM z neprekrivajočimi se neinvertiranimi in invertiranimi izhodi. Nanašati se na stran 86 za podroben opis te funkcije. Podobno je zaradi visokih možnosti predskaliranja ta enota uporabna za funkcije nižje hitrosti ali funkcije natančnega merjenja časa z redkimi dejanji.
Slika 12-2. Blok diagrama sinhronizacijskega registra časovnika/števca 1.
Časovnik/števec1 in preddelilnik omogočata delovanje CPU iz katerega koli vira takta, medtem ko preddelilnik deluje na hitri 64 MHz (ali 32 MHz v načinu nizke hitrosti) PCK uri v asinhronem načinu.
Upoštevajte, da mora biti frekvenca sistemske ure nižja od ene tretjine frekvence PCK. Sinhronizacijski mehanizem asinhronega časovnika/števca1 potrebuje vsaj dva robova PCK, ko je sistemska ura visoka. Če je frekvenca sistemske ure previsoka, obstaja nevarnost izgube podatkov ali kontrolnih vrednosti.
Naslednji Slika 12-3 prikazuje blokovni diagram za Timer/Counter1.
Tabela 12-1. Način primerjave Izberite v načinu PWM
COM1x1 | COM1x0 | Učinek na izhodne primerjalne nožice |
0 | 0 | OC1x ni povezan. OC1x ni povezan. |
0 | 1 | OC1x počiščen pri primerjalnem ujemanju. Nastavite, ko je TCNT1 = 00 USD. OC1x nastavljen na primerjavo. Počiščeno, ko je TCNT1 = 00 USD. |
1 | 0 | OC1x počiščen pri primerjalnem ujemanju. Nastavite, ko je TCNT1 = 00 USD. OC1x ni povezan. |
1 | 1 | OC1x Nastavite na primerjavo. Počiščeno, ko je TCNT1= $00. OC1x ni povezan. |
Značilnosti ADC
Tabela 21-8. Značilnosti ADC, enojni kanali. TA = -40°C do +85°C
Simbol | Parameter | Pogoj | Min | Tip | Maks | Enote |
Resolucija | 10 | Biti | ||||
Absolutna natančnost (vključno z napakami INL, DNL in kvantizacijo, ojačanjem in odmikom) | VREF = 4V, VCC = 4V,
Ura ADC = 200 kHz |
2 | LSB | |||
VREF = 4V, VCC = 4V,
Ura ADC = 1 MHz |
3 | LSB | ||||
VREF = 4V, VCC = 4V,
Ura ADC = 200 kHz Način za zmanjšanje hrupa |
1.5 | LSB | ||||
VREF = 4V, VCC = 4V,
Ura ADC = 1 MHz Način za zmanjšanje hrupa |
2.5 | LSB | ||||
Integralna nelinearnost (INL) (natančnost po kalibraciji odmika in ojačanja) | VREF = 4V, VCC = 4V,
Ura ADC = 200 kHz |
1 | LSB | |||
Diferencialna nelinearnost (DNL) | VREF = 4V, VCC = 4V,
Ura ADC = 200 kHz |
0.5 | LSB | |||
Napaka pridobivanja | VREF = 4V, VCC = 4V,
Ura ADC = 200 kHz |
2.5 | LSB | |||
Napaka odmika | VREF = 4V, VCC = 4V,
Ura ADC = 200 kHz |
1.5 | LSB | |||
Čas pretvorbe | Free Running Conversion | 14 | 280 | µs | ||
Ura Frekvenca | 50 | 1000 | kHz | |||
VIN | Vhodna voltage | GND | VREF | V | ||
Vhodna pasovna širina | 38.4 | kHz | ||||
AREF | Zunanja referenca Voltage | 2.0 | VCC | V | ||
VINT | Notranji zvtage Referenca | 1.0 | 1.1 | 1.2 | V | |
Notranja referenca 2.56 V (1) | VCC > 3.0 V | 2.3 | 2.56 | 2.8 | V | |
RREF | 32 | kΩ | ||||
DEŽ | Analogni vhodni upor | 100 | MΩ | |||
Izhod ADC | 0 | 1023 | LSB |
Opomba: 1. Vrednosti so samo smernice.
Tabela 21-9. Karakteristike ADC, diferencialni kanali (unipolarni način). TA = -40°C do +85°C
Simbol | Parameter | Pogoj | Min | Tip | Maks | Enote |
Resolucija | Dobiček = 1x | 10 | Biti | |||
Dobiček = 20x | 10 | Biti | ||||
Absolutna natančnost (vključno z INL, DNL in
Napake kvantizacije, ojačanja in odmika) |
Dobiček = 1x
VREF = 4V, VCC = 5V Ura ADC = 50 – 200 kHz |
10.0 | LSB | |||
Dobiček = 20x
VREF = 4V, VCC = 5V Ura ADC = 50 – 200 kHz |
20.0 | LSB | ||||
Integralna nelinearnost (INL) (natančnost po kalibraciji odmika in ojačanja) | Dobiček = 1x
VREF = 4V, VCC = 5V Ura ADC = 50 – 200 kHz |
4.0 | LSB | |||
Dobiček = 20x
VREF = 4V, VCC = 5V Ura ADC = 50 – 200 kHz |
10.0 | LSB | ||||
Napaka pridobivanja | Dobiček = 1x | 10.0 | LSB | |||
Dobiček = 20x | 15.0 | LSB | ||||
Napaka odmika | Dobiček = 1x
VREF = 4V, VCC = 5V Ura ADC = 50 – 200 kHz |
3.0 | LSB | |||
Dobiček = 20x
VREF = 4V, VCC = 5V Ura ADC = 50 – 200 kHz |
4.0 | LSB | ||||
Čas pretvorbe | Free Running Conversion | 70 | 280 | µs | ||
Ura Frekvenca | 50 | 200 | kHz | |||
VIN | Vhodna voltage | GND | VCC | V | ||
VDIFF | Vhodna razlika Voltage | VREF/ojačanje | V | |||
Vhodna pasovna širina | 4 | kHz | ||||
AREF | Zunanja referenca Voltage | 2.0 | VCC – 1.0 | V | ||
VINT | Notranji zvtage Referenca | 1.0 | 1.1 | 1.2 | V | |
Notranja referenca 2.56 V (1) | VCC > 3.0 V | 2.3 | 2.56 | 2.8 | V | |
RREF | Referenčni vhodni upor | 32 | kΩ | |||
DEŽ | Analogni vhodni upor | 100 | MΩ | |||
Izhod pretvorbe ADC | 0 | 1023 | LSB |
Opomba: vrednosti so samo smernice.
Tabela 21-10. Karakteristike ADC, diferencialni kanali (bipolarni način). TA = -40°C do +85°C
Simbol | Parameter | Pogoj | Min | Tip | Maks | Enote |
Resolucija | Dobiček = 1x | 10 | Biti | |||
Dobiček = 20x | 10 | Biti | ||||
Absolutna natančnost (vključno z INL, DNL in
Napake kvantizacije, ojačanja in odmika) |
Dobiček = 1x
VREF = 4V, VCC = 5V Ura ADC = 50 – 200 kHz |
8.0 | LSB | |||
Dobiček = 20x
VREF = 4V, VCC = 5V Ura ADC = 50 – 200 kHz |
8.0 | LSB | ||||
Integralna nelinearnost (INL) (natančnost po kalibraciji odmika in ojačanja) | Dobiček = 1x
VREF = 4V, VCC = 5V Ura ADC = 50 – 200 kHz |
4.0 | LSB | |||
Dobiček = 20x
VREF = 4V, VCC = 5V Ura ADC = 50 – 200 kHz |
5.0 | LSB | ||||
Napaka pridobivanja | Dobiček = 1x | 4.0 | LSB | |||
Dobiček = 20x | 5.0 | LSB | ||||
Napaka odmika | Dobiček = 1x
VREF = 4V, VCC = 5V Ura ADC = 50 – 200 kHz |
3.0 | LSB | |||
Dobiček = 20x
VREF = 4V, VCC = 5V Ura ADC = 50 – 200 kHz |
4.0 | LSB | ||||
Čas pretvorbe | Free Running Conversion | 70 | 280 | µs | ||
Ura Frekvenca | 50 | 200 | kHz | |||
VIN | Vhodna voltage | GND | VCC | V | ||
VDIFF | Vhodna razlika Voltage | VREF/ojačanje | V | |||
Vhodna pasovna širina | 4 | kHz | ||||
AREF | Zunanja referenca Voltage | 2.0 | VCC – 1.0 | V | ||
VINT | Notranji zvtage Referenca | 1.0 | 1.1 | 1.2 | V | |
Notranja referenca 2.56 V (1) | VCC > 3.0 V | 2.3 | 2.56 | 2.8 | V | |
RREF | Referenčni vhodni upor | 32 | kΩ | |||
DEŽ | Analogni vhodni upor | 100 | MΩ | |||
Izhod pretvorbe ADC | -512 | 511 | LSB |
Povzetek niza navodil
Mnemotehnika | Operandi | Opis | Delovanje | Zastave | #Ure |
ARITMETIČNA IN LOGIČNA NAVODILA | |||||
DODAJ | Rd, Rr | Dodajte dva registra | Rd ← Rd + Rr | Z,C,N,V,H | 1 |
ADC | Rd, Rr | Dodajte s Carry dva registra | Rd ← Rd + Rr + C | Z,C,N,V,H | 1 |
ADIW | Rdl,K | Dodaj takoj v Word | Rdh:Rdl ← Rdh:Rdl + K | Z,C,N,V,J | 2 |
SUB | Rd, Rr | Odštejte dva registra | Rd ← Rd – Rr | Z,C,N,V,H | 1 |
SUBI | Rd, K | Odštejte konstanto iz registra | Rd ← Rd – K | Z,C,N,V,H | 1 |
SBC | Rd, Rr | Odštejte s Carry two Registers | Rd ← Rd – Rr – C | Z,C,N,V,H | 1 |
SBCI | Rd, K | Odštejte s Carry Constant od Reg. | Rd ← Rd – K – C | Z,C,N,V,H | 1 |
SBIW | Rdl,K | Odštejte takoj od Worda | Rdh:Rdl ← Rdh:Rdl – K | Z,C,N,V,J | 2 |
IN | Rd, Rr | Logični registri IN | Rd ← Rd ∙ Rr | Z,N,V | 1 |
ANDI | Rd, K | Logični IN register in konstanta | Rd ← Rd ∙ K | Z,N,V | 1 |
OR | Rd, Rr | Logični ALI registri | Rd ← Rd v Rr | Z,N,V | 1 |
ORI | Rd, K | Logični ALI register in konstanta | Rd ← Rd v K | Z,N,V | 1 |
EOR | Rd, Rr | Ekskluzivni OR registri | Rd ← Rd ⊕ Rr | Z,N,V | 1 |
COM | Rd | Eno dopolnilo | Rd ← 0xFF − Rd | Z,C,N,V | 1 |
NEG | Rd | Komplement dveh | Rd ← 0x00 − Rd | Z,C,N,V,H | 1 |
SBR | Rd,K | Nastavite bit(e) v register | Rd ← Rd v K | Z,N,V | 1 |
CBR | Rd,K | Počisti bit(e) v registru | Rd ← Rd ∙ (0xFF – K) | Z,N,V | 1 |
INC | Rd | Prirastek | Rd ← Rd + 1 | Z,N,V | 1 |
DEC | Rd | Zmanjšanje | Rd ← Rd − 1 | Z,N,V | 1 |
TST | Rd | Preizkusite nič ali minus | Rd ← Rd ∙ Rd | Z,N,V | 1 |
CLR | Rd | Počisti register | Rd ← Rd ⊕ Rd | Z,N,V | 1 |
SER | Rd | Nastavite Register | Rd ← 0xFF | Noben | 1 |
NAVODILA PODRUŽNICE | |||||
RJMP | k | Relativni skok | PC ← PC + k + 1 | Noben | 2 |
IJMP | Posredni skok na (Z) | PC ← Z | Noben | 2 | |
KLIC | k | Relativni klic podprograma | PC ← PC + k + 1 | Noben | 3 |
ICALL | Posredni klic na (Z) | PC ← Z | Noben | 3 | |
RET | Vrnitev podprograma | PC ← STAK | Noben | 4 | |
RETI | Prekinitev Vrnitev | PC ← STAK | I | 4 | |
CPSE | Rd,Rr | Primerjaj, preskoči, če je enako | če (Rd = Rr) PC ← PC + 2 ali 3 | Noben | 1/2/3 |
CP | Rd,Rr | Primerjaj | Rd − Rr | Z, N, V, C, H | 1 |
CNK | Rd,Rr | Primerjaj s Carryjem | Rd − Rr − C | Z, N, V, C, H | 1 |
CPI | Rd,K | Primerjaj Register s takojšnjim | Rd − K | Z, N, V, C, H | 1 |
SBRC | Rr, b | Preskoči, če je bit v registru izbrisan | če (Rr(b)=0) PC ← PC + 2 ali 3 | Noben | 1/2/3 |
SBRS | Rr, b | Preskoči, če je bit v registru nastavljen | če (Rr(b)=1) PC ← PC + 2 ali 3 | Noben | 1/2/3 |
SBIC | P, b | Preskoči, če je bit v V/I registru počiščen | če (P(b)=0) PC ← PC + 2 ali 3 | Noben | 1/2/3 |
SBIS | P, b | Preskoči, če je bit v V/I registru nastavljen | če (P(b)=1) PC ← PC + 2 ali 3 | Noben | 1/2/3 |
BRBS | s, k | Veja, če je nastavljena zastavica stanja | če je (SREG(s) = 1), potem PC←PC+k + 1 | Noben | 1/2 |
BRBC | s, k | Razvej, če je zastavica statusa počiščena | če je (SREG(s) = 0), potem PC←PC+k + 1 | Noben | 1/2 |
BREQ | k | Podružnica, če je enaka | če je (Z = 1), potem PC ← PC + k + 1 | Noben | 1/2 |
BRNE | k | Branch if Not Equal | če je (Z = 0), potem PC ← PC + k + 1 | Noben | 1/2 |
BRCS | k | Branch if Carry Set | če je (C = 1), potem PC ← PC + k + 1 | Noben | 1/2 |
BRCC | k | Branch if Carry Cleared | če je (C = 0), potem PC ← PC + k + 1 | Noben | 1/2 |
BRSH | k | Podružnica, če je ista ali višja | če je (C = 0), potem PC ← PC + k + 1 | Noben | 1/2 |
BRLO | k | Podružnica nižje | če je (C = 1), potem PC ← PC + k + 1 | Noben | 1/2 |
BRMI | k | Podružnica če Minus | če je (N = 1), potem PC ← PC + k + 1 | Noben | 1/2 |
BRPL | k | Podružnica če Plus | če je (N = 0), potem PC ← PC + k + 1 | Noben | 1/2 |
BRGE | k | Veja, če je večja ali enaka, s predznakom | če je (N ⊕ V= 0), potem PC ← PC + k + 1 | Noben | 1/2 |
BRLT | k | Podružnica, če je manjša od nič, podpisano | če je (N ⊕ V= 1), potem PC ← PC + k + 1 | Noben | 1/2 |
BRHS | k | Branch if Half Carry Flag Set | če je (H = 1), potem PC ← PC + k + 1 | Noben | 1/2 |
BRHC | k | Odcep, če je zastavica Half Carry počiščena | če je (H = 0), potem PC ← PC + k + 1 | Noben | 1/2 |
BRTS | k | Veja, če je nastavljena zastavica T | če (T = 1), potem PC ← PC + k + 1 | Noben | 1/2 |
BRTC | k | Odcep, če je zastavica T počiščena | če (T = 0), potem PC ← PC + k + 1 | Noben | 1/2 |
BRVS | k | Razvejajte, če je nastavljena zastavica prelivanja | če (V = 1), potem PC ← PC + k + 1 | Noben | 1/2 |
BRVC | k | Razvejajte, če je zastavica za prelivanje počiščena | če (V = 0), potem PC ← PC + k + 1 | Noben | 1/2 |
BRIE | k | Razvej, če je prekinitev omogočena | če ( I = 1), potem PC ← PC + k + 1 | Noben | 1/2 |
NEVESTA | k | Razvej, če je prekinitev onemogočena | če ( I = 0), potem PC ← PC + k + 1 | Noben | 1/2 |
BIT IN NAVODILA ZA BITNI TEST | |||||
SBI | P,b | Nastavite bit v V/I registru | I/O(P,b) ← 1 | Noben | 2 |
CBI | P,b | Počisti bit v V/I registru | I/O(P,b) ← 0 | Noben | 2 |
LSL | Rd | Logičen premik v levo | Rd(n+1) ← Rd(n), Rd(0) ← 0 | Z,C,N,V | 1 |
LSR | Rd | Logični premik v desno | Rd(n) ← Rd(n+1), Rd(7) ← 0 | Z,C,N,V | 1 |
VLOGA | Rd | Vrtenje v levo skozi prenašanje | Rd(0)←C,Rd(n+1) ← Rd(n),C←Rd(7) | Z,C,N,V | 1 |
ROR | Rd | Rotate Right Through Carry | Rd(7)←C,Rd(n) ← Rd(n+1),C←Rd(0) | Z,C,N,V | 1 |
ASR | Rd | Aritmetični premik v desno | Rd(n) ← Rd(n+1), n=0..6 | Z,C,N,V | 1 |
Mnemotehnika | Operandi | Opis | Delovanje | Zastave | #Ure |
ZAMENJAVA | Rd | Zamenjaj grickalice | Rd(3..0)←Rd(7..4),Rd(7..4)←Rd(3..0) | Noben | 1 |
BSET | s | Set zastavic | SREG(i) ← 1 | SREG(i) | 1 |
BCLR | s | Zastavica Počisti | SREG(i) ← 0 | SREG(i) | 1 |
BST | Rr, b | Bit Store iz registra v T | T ← Rr(b) | T | 1 |
BLD | Rd, b | Bitna obremenitev od T do registra | Rd(b) ← T | Noben | 1 |
SEC | Set Carry | C ← 1 | C | 1 | |
CLC | Clear Carry | C ← 0 | C | 1 | |
SEN | Nastavite negativno zastavico | N ← 1 | N | 1 | |
CLN | Počisti negativno zastavico | N ← 0 | N | 1 | |
SEZ | Nastavite ničelno zastavico | Ž ← 1 | Z | 1 | |
CLZ | Počisti ničelno zastavico | Ž ← 0 | Z | 1 | |
SEI | Omogoči globalno prekinitev | Jaz ← 1 | I | 1 | |
CLI | Onemogoči globalno prekinitev | Jaz ← 0 | I | 1 | |
SES | Nastavite podpisano preskusno zastavo | S ← 1 | S | 1 | |
CLS | Jasno podpisana testna zastavica | S ← 0 | S | 1 | |
SEV | Set Twos Complement Overflow. | V ← 1 | V | 1 | |
CLV | Clear Twos Complement Overflow | V ← 0 | V | 1 | |
NASTAVI | Nastavite T v SREG | T ← 1 | T | 1 | |
CLT | Počisti T v SREG | T ← 0 | T | 1 | |
SEH | Nastavite zastavico za polovični prenos v SREG | H ← 1 | H | 1 | |
CLH | Počisti zastavico za polovični prenos v SREG | H ← 0 | H | 1 | |
NAVODILA ZA PRENOS PODATKOV | |||||
MOV | Rd, Rr | Premikanje med registri | Rd ← Rr | Noben | 1 |
MOVW | Rd, Rr | Kopiraj Register Word | Rd+1:Rd ← Rr+1:Rr | Noben | 1 |
LDI | Rd, K | Naloži takoj | Rd ← K | Noben | 1 |
LD | Rd, X | Naloži posredno | Rd ← (X) | Noben | 2 |
LD | Rd, X+ | Naloži posredno in post-inc. | Rd ← (X), X ← X + 1 | Noben | 2 |
LD | Rd, – X | Naloži posredno in pred dec. | X ← X – 1, Rd ← (X) | Noben | 2 |
LD | Rd, Y | Naloži posredno | Rd ← (Y) | Noben | 2 |
LD | Rd, Y+ | Naloži posredno in post-inc. | Rd ← (Y), Y ← Y + 1 | Noben | 2 |
LD | Rd, – Y | Naloži posredno in pred dec. | Y ← Y – 1, Rd ← (Y) | Noben | 2 |
LDD | Rd,Y+q | Posredna obremenitev s premikom | Rd ← (Y + q) | Noben | 2 |
LD | Rd, Z | Naloži posredno | Rd ← (Z) | Noben | 2 |
LD | Rd, Z+ | Naloži posredno in post-inc. | Rd ← (Z), Z ← Z+1 | Noben | 2 |
LD | Rd, -Z | Naloži posredno in pred dec. | Z ← Z – 1, Rd ← (Z) | Noben | 2 |
LDD | Rd, Z+q | Posredna obremenitev s premikom | Rd ← (Z + q) | Noben | 2 |
LDS | Rd, k | Nalaganje neposredno iz SRAM-a | Rd ← (k) | Noben | 2 |
ST | X, Rr | Store Indirect | (X) ← Rr | Noben | 2 |
ST | X+, Rr | Store Indirect in Post-Inc. | (X) ← Rr, X ← X + 1 | Noben | 2 |
ST | – X, Rr | Store Indirect in Pre-Dec. | X ← X – 1, (X) ← Rr | Noben | 2 |
ST | Y, Rr | Store Indirect | (Y) ← Rr | Noben | 2 |
ST | Y+, Rr | Store Indirect in Post-Inc. | (Y) ← Rr, Y ← Y + 1 | Noben | 2 |
ST | – Y, Rr | Store Indirect in Pre-Dec. | Y ← Y – 1, (Y) ← Rr | Noben | 2 |
STD | Y+q,Rr | Posredno shranjevanje s premikom | (Y + q) ← Rr | Noben | 2 |
ST | Z, Rr | Store Indirect | (Z) ← Rr | Noben | 2 |
ST | Z+, Rr | Store Indirect in Post-Inc. | (Z) ← Rr, Z ← Z + 1 | Noben | 2 |
ST | -Z, Rr | Store Indirect in Pre-Dec. | Z ← Z – 1, (Z) ← Rr | Noben | 2 |
STD | Z+q,Rr | Posredno shranjevanje s premikom | (Z + q) ← Rr | Noben | 2 |
STS | k, Rr | Shranjujte neposredno v SRAM | (k) ← Rr | Noben | 2 |
LPM | Naloži programski pomnilnik | R0 ← (Z) | Noben | 3 | |
LPM | Rd, Z | Naloži programski pomnilnik | Rd ← (Z) | Noben | 3 |
LPM | Rd, Z+ | Load Program Memory in Post-Inc | Rd ← (Z), Z ← Z+1 | Noben | 3 |
SPM | Shranite programski pomnilnik | (z) ← R1:R0 | Noben | ||
IN | Rd, P | V pristanišču | Rd ← P | Noben | 1 |
VEN | P, Rr | Out Port | P ← Rr | Noben | 1 |
POTISNI | Rr | Potisni register na sklad | STAK ← Rr | Noben | 2 |
POP | Rd | Pop Register iz sklada | Rd ← STOK | Noben | 2 |
NAVODILA ZA NADZOR MCU | |||||
NOP | Brez operacije | Noben | 1 | ||
SPANJE | spi | (glejte poseben opis za funkcijo mirovanja) | Noben | 1 | |
WDR | Watchdog Reset | (glejte poseben opis za WDR/Timer) | Noben | 1 | |
BREAK | Zlom |
Hitrost (MHz) (1) | Dobava Voltage (V) | Temperaturno območje | Paket (2) | Koda za naročanje (3) |
10 | 1.8 – 5.5 | Industrijski
(-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 | Industrijski
(-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 |
Opombe: 1. Za hitrost v primerjavi s ponudbo voltage, glejte razdelek 21.3 “Hitrost” na strani 163.
Vse embalaže so brez Pb, brez halogenidov in popolnoma zelene ter so v skladu z evropsko direktivo o omejevanju nevarnih snovi (RoHS).
Indikatorji kod
H: svinčeni zaključek NiPdAu
U: mat pločevina
R: trak in kolut
Te naprave so lahko dobavljive tudi v obliki rezin. Za podrobne informacije o naročanju in najmanjše količine se obrnite na vašo lokalno prodajno pisarno Atmel.
Napaka
Napaka ATtiny25
Revizijsko pismo v tem razdelku se nanaša na revizijo naprave ATtiny25.
Rev. D – F
Ni znanih napak.
Rev B – C
Branje EEPROM-a morda ne uspe pri nizki volumnu napajanjatage / nizka taktna frekvenca
Branje EEPROM-a morda ne uspe pri nizki volumnu napajanjatage / nizka taktna frekvenca
Poskus branja EEPROM-a pri nizkih taktnih frekvencah in/ali nizki volumni napajanjatage lahko povzroči neveljavne podatke.
Rešitev težave/rešitev
Ne uporabljajte EEPROM-a, ko je taktna frekvenca pod 1MHz in voltage je pod 2V. Če delovne frekvence ni mogoče dvigniti nad 1MHz, potem napajalno voltage mora biti več kot 2V. Podobno, če dobava voltage ne more biti dvignjen nad 2 V, potem mora biti delovna frekvenca večja od 1 MHz.
Znano je, da je ta lastnost odvisna od temperature, vendar ni bila opredeljena. Smernice so podane samo za sobno temperaturo.
Rev A.
Ne sampLED.
Napaka ATtiny45
Revizijsko pismo v tem razdelku se nanaša na revizijo naprave ATtiny45.
Rev F – G
Ni znanih napak
Rev D – E
Branje EEPROM-a morda ne uspe pri nizki volumnu napajanjatage / nizka taktna frekvenca
Branje EEPROM-a morda ne uspe pri nizki volumnu napajanjatage / nizka taktna frekvenca
Poskus branja EEPROM-a pri nizkih taktnih frekvencah in/ali nizki volumni napajanjatage lahko povzroči neveljavne podatke.
Rešitev težave/rešitev
Ne uporabljajte EEPROM-a, ko je taktna frekvenca pod 1MHz in voltage je pod 2V. Če delovne frekvence ni mogoče dvigniti nad 1MHz, potem napajalno voltage mora biti več kot 2V. Podobno, če dobava voltage ne more biti dvignjen nad 2 V, potem mora biti delovna frekvenca večja od 1 MHz.
Znano je, da je ta lastnost odvisna od temperature, vendar ni bila opredeljena. Smernice so podane samo za sobno temperaturo.
Rev B – C
PLL se ne zaklepa
EEPROM, prebran iz kode aplikacije, ne deluje v Lock Bit Mode 3
Branje EEPROM-a morda ne uspe pri nizki volumnu napajanjatage / nizka taktna frekvenca
Generacija izhoda PWM števca 1 na OC1B-XOC1B ne deluje pravilno
PLL se ne zaklepa
Pri frekvencah pod 6.0 MHz se PLL ne bo zaklenil
Popravek težave/rešitev
Ko uporabljate PLL, zaženite pri 6.0 MHz ali več.
EEPROM, prebran iz kode aplikacije, ne deluje v Lock Bit Mode 3
Ko sta bita za zaklepanje pomnilnika LB2 in LB1 programirana na način 3, branje EEPROM-a ne deluje iz kode aplikacije.
Popravek/obhod težave
Ne nastavite Lock Bit Protection Mode 3, ko mora koda aplikacije brati iz EEPROM-a.
Branje EEPROM-a morda ne uspe pri nizki volumnu napajanjatage / nizka taktna frekvenca
Poskus branja EEPROM-a pri nizkih taktnih frekvencah in/ali nizki volumni napajanjatage lahko povzroči neveljavne podatke.
Rešitev težave/rešitev
Ne uporabljajte EEPROM-a, ko je taktna frekvenca pod 1MHz in voltage je pod 2V. Če delovne frekvence ni mogoče dvigniti nad 1MHz, potem napajalno voltage mora biti več kot 2V. Podobno, če dobava voltage ne more biti dvignjen nad 2 V, potem mora biti delovna frekvenca večja od 1 MHz.
Znano je, da je ta lastnost odvisna od temperature, vendar ni bila opredeljena. Smernice so podane samo za sobno temperaturo.
Generacija izhoda števca časa 1 PWM na OC1B – XOC1B ne deluje pravilno
Timer Counter1 PWM izhod OC1B-XOC1B ne deluje pravilno. Samo v primeru, ko sta krmilna bita COM1B1 in COM1B0 v istem načinu kot COM1A1 oziroma COM1A0, izhod OC1B-XOC1B deluje pravilno.
Popravek/obhod težave
Edina rešitev je uporaba iste nastavitve nadzora na kontrolnih bitih COM1A[1:0] in COM1B[1:0], glejte tabelo 14-4 v podatkovnem listu. Težava je bila odpravljena za Tiny45 rev D.
Rev A.
Previsoka poraba energije pri izklopu
DebugWIRE izgubi komunikacijo, ko enkrat stopi v prekinitve
PLL se ne zaklepa
EEPROM, prebran iz kode aplikacije, ne deluje v Lock Bit Mode 3
Branje EEPROM-a morda ne uspe pri nizki volumnu napajanjatage / nizka taktna frekvenca
Previsoka poraba energije pri izklopu
Tri situacije bodo vodile do previsoke porabe energije pri izklopu. To so:
Zunanja ura je izbrana z varovalkami, vendar je I/O PORT še vedno omogočen kot izhod.
EEPROM se prebere pred izklopom.
VCC je 4.5 voltov ali več.
Zavrnitev odgovornosti: informacije v tem dokumentu so na voljo v povezavi z izdelki Atmel. S tem dokumentom ali v povezavi s prodajo izdelkov Atmel ni podeljena nobena licenca, izrecna ali implicitna, z ustavitvijo ali kako drugače, za katero koli pravico do intelektualne lastnine. RAZEN KOT JE DOLOČENO V PRODAJNIH POGOJIH ATMEL NA STRANI ATMEL WEBSPLETNO MESTO, ATMEL NE PREVZEMA NOBENE ODGOVORNOSTI IN ZAVRAČA KAKRŠNE KOLI IZRECNE, NAZNAČENE ALI ZAKONSKE GARANCIJE V ZVEZI S SVOJIM IZDELKOM, VENDAR NE OMEJENO NA NAZNAČENO GARANCIJO PRIMERNOSTI ZA PRODAJO, PRIMERNOST ZA DOLOČEN NAMEN ALI NEKRŠITEV . ATMEL V NOBENEM PRIMERU NI ODGOVOREN ZA NEPOSREDNO, POSREDNO, POSLEDIČNO, POSEBNO ALI NAKLJUČNO ŠKODO (VKLJUČNO Z, BREZ OMEJITVE, ŠKODO ZA IZGUBO IN DOBIČEK, PREKINITEV POSLOVANJA ALI IZGUBO INFORMACIJ), KI IZHAJA ZARADI UPORABE ALI NESPOSOBNOSTI UPORABE TEGA DOKUMENTA, TUDI ČE JE BIL ATMEL OBVEŠČEN O MOŽNOSTI TAKŠNE ŠKODE.
Atmel ne daje nobenih zagotovil ali jamstev v zvezi s točnostjo ali popolnostjo vsebine tega dokumenta in si pridržuje pravico do sprememb specifikacij in opisov izdelkov kadar koli brez predhodnega obvestila. Atmel se ne zavezuje, da bo posodobil informacije, ki jih vsebuje. Razen če ni posebej določeno drugače, izdelki Atmel niso primerni za avtomobilske aplikacije in se v njih ne smejo uporabljati. Izdelki Atmel niso namenjeni, odobreni ali zajamčeni za uporabo kot komponente v aplikacijah, ki so namenjene podpori ali ohranjanju življenja.