Atmeli 8-bitine AVR mikrokontroller koos 2/4/8K baiti süsteemis programmeeritava välguga
Omadused
- Suure jõudlusega väikese võimsusega AVR® 8-bitine mikrokontroller
- Täiustatud RISC arhitektuur
- 120 võimsat juhist - kõige rohkem ühe tsükli täitmist
- 32 x 8 üldotstarbelist tööregistrit
- Täielikult staatiline töö
- Mittelenduv programm ja andmemälud
- 2/4 / 8K baiti süsteemisisest programmeeritavat programmimälu
- Vastupidavus: 10,000 XNUMX kirjutamis-/kustutustsüklit
- 128/256/512 baiti süsteemis programmeeritav EEPROM
- Vastupidavus: 100,000 XNUMX kirjutamis-/kustutustsüklit
- 128/256/512 baiti sisemine SRAM
- Programmeerimislukk iseprogrammeeritavale Flash-programmile ja EEPROM-i andmeturvalisusele
Perifeersed omadused
- 8-bitine taimer / loendur koos eelkaaleri ja kahe PWM-kanaliga
- 8-bitine kiire taimer / loendur koos eraldi eskaltsaatoriga
- 2 kõrgsageduslikku PWM-väljundit koos eraldi väljundi võrdlusregistritega
- Programmeeritav Dead Time Generator
- USI - universaalne jadaliides käivitustingimuste detektoriga
- 10-bitine ADC
4 ühe otsaga kanalit
2 diferentsiaalset ADC kanalipaari koos programmeeritava võimendusega (1x, 20x)
Temperatuuri mõõtmine
Programmeeritav valvekoera taimer eraldi kiibis oleva ostsillaatoriga
Kiibil olev analoogvõrdleja
Mikrokontrolleri erifunktsioonid
debugWIRE kiibil silumissüsteem
Süsteemis programmeeritav SPI pordi kaudu
Välised ja sisemised katkestusallikad
Vähese energiatarbega tühikäigu, ADC müra vähendamise ja väljalülitamise režiimid
Tõhustatud sisselülitamise lähtestamise ahel
Programmeeritav Brown-out Detection Circuit
Sisemine kalibreeritud ostsillaator
I / O ja paketid
Kuus programmeeritavat I / O-joont
8-pin PDIP, 8-pin SOIC, 20-pad QFN / MLF ja 8-pin TSSOP (ainult ATtiny45 / V)
Operation Voltage
- 1.8 - 5.5 V ATtiny25V / 45V / 85V jaoks
- 2.7 - 5.5 V ATtiny25 / 45/85 jaoks
Kiirusklass
- ATtiny25V / 45V / 85V: 0 - 4 MHz @ 1.8 - 5.5 V, 0 - 10 MHz @ 2.7 - 5.5 V
- ATtiny25 / 45/85: 0 - 10 MHz @ 2.7 - 5.5 V, 0 - 20 MHz @ 4.5 - 5.5 V
Tööstuslik temperatuurivahemik
Madal energiatarve
Aktiivne režiim:
1 MHz, 1.8 V: 300 uA
Väljalülitusrežiim:
Kinnituskonfiguratsioonid
Pinout ATtiny25 / 45/85
Pin Kirjeldused
VCC: Supply voltage.
GND: maapind.
Port B (PB5:PB0): Port B on 6-bitine kahesuunaline sisend-/väljundport sisemiste tõmbetakistitega (valitud iga biti jaoks). Port B väljundpuhvritel on sümmeetrilised ajami omadused, millel on nii suur valamu kui ka allika võime. Kui tõmbetakistid on aktiveeritud, annavad sisenditena voolu väljastpoolt madalaks tõmmatud pordi B kontaktid. Pordi B viigud on kolmeolekus, kui lähtestamistingimus muutub aktiivseks, isegi kui kell ei tööta.
Sadam B täidab ka loetletud ATtiny25 / 45/85 erinevate funktsioonide funktsioone
ATtiny25-l vahetatakse programmeeritavad sisend- / väljundportid PB3 ja PB4 (tihvtid 2 ja 3) ATtiny15 ühilduvusrežiimis, et toetada tagurpidi ühilduvust ATtiny15-ga.
RESET: lähtestage sisend. Selle viigu madal tase, mis on pikem kui minimaalne impulsi pikkus, loob lähtestamise, isegi kui kell ei tööta ja kui lähtestusviik pole keelatud. Impulsi minimaalne pikkus on antud Tabel 21-4 165. leheküljel. Lühemate impulsside lähtestamine pole garanteeritud.
Lähtestustihvti saab kasutada ka (nõrga) sisend- / väljundnõelana.
Läbiview
ATtiny25 / 45/85 on madala energiatarbega 8-bitine CMOS mikrokontroller, mis põhineb AVR-i täiustatud RISC-arhitektuuril. Rakendades võimsad käsud ühe taktsükliga, saavutab ATtiny25 / 45/85 läbilaskevõime, mis läheneb 1 MIPS-le MHz kohta, võimaldades süsteemidisaineril optimeerida energiatarvet töötlemiskiiruse suhtes.
Blokeeri skeem
AVR tuum ühendab rikkaliku käskude komplekti 32 üldotstarbelise tööregistriga. Kõik 32 registrit on otseselt ühendatud aritmeetilise loogikaüksusega (ALU), mis võimaldab juurdepääsu kahele sõltumatule registrile ühes käskluses, mis täidetakse ühes taktsüklis. Saadud arhitektuur on kooditõhusam, saavutades samas läbilaskevõime kuni kümme korda kiiremini kui tavalised CISC mikrokontrollerid.
ATtiny25 / 45/85 pakub järgmisi funktsioone: 2/4 / 8K baiti süsteemisisest programmeeritavat välku, 128/256/512 baiti EEPROM, 128/256/256 baiti SRAM, 6 üldotstarbelist I / O-rida, 32 üldist otstarbekohased tööregistrid, üks 8-bitine taimer / loendur võrdlusrežiimidega, üks 8-bitine kiire taimer / loendur, universaalne jadaliides, sisemised ja välised katkestused, 4-kanaliline, 10-bitine ADC, programmeeritav valvuriga taimer Ostsillaator ja kolm tarkvara abil valitavat energiasäästurežiimi. Ooterežiimis peatatakse protsessor, võimaldades samal ajal SRAM-i, taimeri / loenduri, ADC, analoog-komparaatori ja katkestussüsteemi tööd jätkata. Väljalülitusrežiim salvestab registri sisu, keelates kõik kiibi funktsioonid järgmise katkestuse või riistvara lähtestamiseni. ADC müra vähendamise režiim peatab protsessori ja kõik sisend- / väljundmoodulid, välja arvatud ADC, et minimeerida lülitusmüra ADC teisenduste ajal.
Seade on valmistatud Atmeli suure tihedusega püsimälu tehnoloogia abil. Kiibil olev Interneti-teenuse pakkuja välk võimaldab programmi mälu programmeerida süsteemisiseselt SPI jadaliidese kaudu, tavapärase püsimälu programmeerija või AVR-tuumas töötava kiibil oleva alglaadimiskoodi abil.
ATtiny25 / 45/85 AVR-i toetatakse kõigi programmide ja süsteemiarendustööriistade komplektiga, sealhulgas: C-kompilerid, makrokomplektid, programmide silur / simulaatorid ja hindamiskomplektid.
Ressursside kohta
Põhjalik arendustööriistade komplekt, rakenduse märkused ja andmelehed on allalaadimiseks saadaval http://www.atmel.com/avr.
Kood Näideamples
See dokumentatsioon sisaldab lihtsat koodi, ntampmis näitavad lühidalt, kuidas seadme erinevaid osi kasutada. Need koodid ntamples eeldavad, et osa spetsiifiline päis file on enne koostamist kaasas. Pidage meeles, et mitte kõik C -kompilaatori pakkujad ei sisalda päises bitide definitsioone files ja katkestuste käsitlemine C -s sõltub kompilaatorist. Lisateabe saamiseks kinnitage see C kompilaatori dokumentatsiooniga.
Laiendatud sisend- / väljundkaardil asuvate sisend- / väljundregistrite puhul tuleb juhised “IN”, “OUT”, “SBIS”, “SBIC”, “CBI” ja “SBI” asendada juhistega, mis võimaldavad juurdepääsu laiendatud I kaardile. / O. Tavaliselt tähendab see "LDS" ja "STS" koos "SBRS", "SBRC", "SBR" ja "CBR". Pange tähele, et kõik AVR-seadmed ei sisalda laiendatud sisend- / väljundkaarti.
Mahtuvuslik puutetundlik
Atmel QTouch Library pakub lihtsalt kasutatavat lahendust Atmel AVR mikrokontrollerite puutetundlike liideste jaoks. QTouch Library sisaldab tuge QTouch® ja QMatrix® hankimismeetoditele.
Puutetundlikkust saab hõlpsalt lisada mis tahes rakendusse, linkides QTouchi teegi ja kasutades puute kanalite ja andurite määratlemiseks teegi rakenduse programmeerimisliidest (API). Seejärel kutsub rakendus API-le kanaliteabe hankimiseks ja puutetundliku anduri oleku määramiseks.
QTouchi raamatukogu on tasuta ja selle saab Atmelist alla laadida websaidil. Lisateavet ja rakendamise üksikasju leiate QTouchi raamatukogu kasutusjuhendist - saadaval ka Atmelist websaidile.
Andmete säilitamine
Usaldusväärsus Kvalifikatsiooni tulemused näitavad, et prognoositav andmete säilitamise ebaõnnestumise määr on palju väiksem kui 1 PPM 20 aasta jooksul temperatuuril 85 ° C või 100 aasta jooksul temperatuuril 25 ° C.
AVR protsessori tuum
Sissejuhatus
Selles osas käsitletakse AVR-i tuumaarhitektuuri üldiselt. Protsessori tuumiku peamine ülesanne on tagada programmi korrektne täitmine. Seetõttu peab protsessor olema võimeline mäludele juurde pääsema, arvutusi tegema, välisseadmeid juhtima ja katkestusi käsitsema.
Arhitektuurne lõppview
Jõudluse ja paralleelsuse maksimeerimiseks kasutab AVR Harvardi arhitektuuri - programmide ja andmete jaoks on eraldi mälud ja siinid. Programmimälus olevad juhised täidetakse ühetasandilise torujuhtmega. Ühe käsu käivitamisel tõmmatakse järgmine käsk programmi mälust ette. See kontseptsioon võimaldab käske täita igas taktsüklis. Programmi mälu on süsteemis programmeeritav välkmälu.
Kiirjuurdepääsu register File sisaldab 32 x 8-bitist üldotstarbelist tööregistrit ühe taktitsükli juurdepääsuajaga. See võimaldab ühetsüklilist aritmeetilise loogikaüksuse (ALU) tööd. Tüüpilise ALU operatsiooni korral väljastatakse registrist kaks operandi File, toiming täidetakse ja tulemus salvestatakse registrisse File- ühes taktsüklis.
32 registrist kuut saab kasutada kolme 16-bitise kaudse aadressiregistri kursorina andmeruumi adresseerimiseks - see võimaldab tõhusaid aadressi arvutusi. Ühte nendest aadressinäitajatest saab kasutada ka Flash-programmi mälust tabelite otsimiseks aadressinäiturina. Need lisatud funktsioonide registrid on 16-bitised X-, Y- ja Z-registrid, mida kirjeldatakse edaspidi selles jaotises.
ALU toetab aritmeetilisi ja loogilisi toiminguid registrite vahel või konstandi ja registri vahel. Ühe registri toiminguid saab teha ka ALU-s. Pärast aritmeetilist toimingut värskendatakse olekuregistrit, et kajastada teavet toimingu tulemuse kohta.
Programmi voog on tagatud tingimuslike ja tingimusteta hüppe- ja helistamisjuhistega, mis suudavad kogu aadressiruumi otse käsitleda. Enamikul AVR-juhistest on üks 16-bitine sõnavorming, kuid on ka 32-bitiseid juhiseid.
Katkestuste ja alamprogrammi kõnede ajal salvestatakse tagastusaadress Program Counter (PC) virnasse. Virna on tõhusalt jaotatud üldandmete SRAM-is ja järelikult on virna suurus piiratud ainult kogu SRAM-i suuruse ja SRAM-i kasutamisega. Kõik kasutajaprogrammid peavad lähtestama SP rutiinil Lähtesta (enne alamrutiinide või katkestuste käivitamist). Stack Pointer (SP) on lugemis- / kirjutamisruum, mida saab kasutada sisend- / väljundruumis. Andmetele SRAM pääseb hõlpsasti juurde viie erineva AVR-arhitektuuris toetatava adresseerimisrežiimi kaudu.
AVR-arhitektuuri mäluruumid on kõik lineaarsed ja tavalised mälukaardid.
Paindliku katkestusmooduli juhtimisregistrid on sisend- ja väljundruumis koos olekuregistris täiendava globaalse katkestuse lubamise bitiga. Kõigil katkestustel on katkestusvektori tabelis eraldi katkestusvektor. Katkestustel on prioriteet vastavalt nende katkestuse vektori positsioonile. Mida madalam on katkestusvektori aadress, seda suurem on prioriteet.
I/O mäluruum sisaldab 64 aadressi CPU välisseadmete funktsioonide jaoks, nagu juhtregistrid, SPI ja muud I/O funktsioonid. Sisend-/välkmälule pääseb juurde otse või andmeruumi asukohtadena pärast registri asukohta File, 0x20 - 0x5F.
ALU - aritmeetilise loogika üksus
Kõrgjõudlusega AVR ALU töötab otseses ühenduses kõigi 32 üldotstarbelise tööregistriga. Ühe taktsükli jooksul viiakse läbi aritmeetilised toimingud üldotstarbeliste registrite või registri ja vahetu vahel. ALU toimingud on jagatud kolme põhikategooriasse - aritmeetilised, loogilised ja bitifunktsioonid. Mõned arhitektuuri rakendused pakuvad ka võimsat kordajat, mis toetab nii signeeritud / allkirjastamata korrutamist kui ka murdvormingut. Üksikasjaliku kirjelduse leiate jaotisest „Juhiste komplekt”.
Olekuregister
Olekuregister sisaldab teavet viimati täidetud aritmeetilise käsu tulemuse kohta. Seda teavet saab kasutada programmivoo muutmiseks tingimuslike toimingute tegemiseks. Pange tähele, et olekuregistrit värskendatakse pärast kõiki ALU toiminguid, nagu on täpsustatud juhiste komplekti juhendis. See kaotab paljudel juhtudel vajaduse kasutada spetsiaalseid võrdlusjuhiseid, mille tulemuseks on kiirem ja kompaktsem kood.
Olekuregistrit ei salvestata katkestusrutiini sisestamisel automaatselt ega taastata katkestusest naastes. Sellega peab tegelema tarkvara.
SREG - AVR olekuregister
AVR olekuregister - SREG - on määratletud järgmiselt:
Natuke | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3F | I | T | H | S | V | N | Z | C | SREG |
Loe/kirjuta | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Algväärtus | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bits 7 - I: globaalse katkestuse lubamine
Katkestuste lubamiseks peab olema määratud globaalse katkestuse lubamise bitt. Seejärel viiakse individuaalse katkestuse lubamise juhtimine läbi eraldi juhtimisregistrites. Kui globaalse katkestuse lubamise register tühjendatakse, pole ükski katkestustest lubatud, sõltumata üksikute katkestuste lubamise seadetest. I-biti puhastab riistvara pärast katkestuse toimumist ja selle määrab RETI-käsk järgmiste katkestuste lubamiseks. I-bitti saab rakenduse abil seadistada ja kustutada ka SEI- ja CLI-juhistega, nagu on kirjeldatud käsukomplekti viites.
Bitt 6 - T: bittide koopiate salvestusruum
Bittide kopeerimise juhised BLD (Bit LoaD) ja BST (Bit STore) kasutavad T-bitti juhitava biti allika või sihtkohana. Natuke registrist registris File saab BST -käsuga kopeerida T -sse ja bitti T -s saab kopeerida registris olevasse registrisse File BLD juhiste järgi.
Bitt 5 - H: poolkandelipp
Poolkandelipp H tähistab mõnes aritmeetilises operatsioonis poolkandmist. Half Carry on kasulik BCD aritmeetikas. Üksikasjaliku teabe saamiseks lugege juhiste komplekti kirjeldust.
Bitt 4 – S: märgibitt, S = N ⊕ V
S-bitt on alati eksklusiivne või negatiivse lipu N ja nende kahe täiendava ülevoolulipu V vahel või üksikasjaliku teabe saamiseks vaadake juhiste komplekti kirjeldust.
Bitt 3 - V: kahe täiendav ülevoolulipp
Nende kahe täiendav ülevoolulipp V toetab kahe komplemendi aritmeetikat. Üksikasjaliku teabe saamiseks lugege juhiste komplekti kirjeldust.
Bitt 2 - N: negatiivne lipp
Negatiivne lipp N näitab aritmeetilise või loogilise toimingu negatiivset tulemust. Üksikasjaliku teabe saamiseks lugege juhiste komplekti kirjeldust.
Bitt 1 - Z: nulllipp
Nulllipp Z näitab nulltulemust aritmeetilises või loogilises toimingus. Üksikasjaliku teabe saamiseks lugege juhiste komplekti kirjeldust.
Bit 0 - C: kandelipp
Kandelipp C näitab kandmist aritmeetilises või loogilises toimingus. Üksikasjaliku teabe saamiseks lugege juhiste komplekti kirjeldust.
Üldotstarbeline register File
Register File on optimeeritud AVR Enhanced RISC käsukomplekti jaoks. Nõutava jõudluse ja paindlikkuse saavutamiseks toetab register järgmisi sisend-/väljundskeeme File:
Üks 8-bitine väljundoperand ja üks 8-bitine tulemuse sisend
Kaks 8-bitist väljundoperandit ja üks 8-bitine tulemuse sisend
Kaks 8-bitist väljundoperandit ja üks 16-bitine tulemuse sisend
Üks 16-bitine väljundoperand ja üks 16-bitine tulemuse sisend
Joonis 4-2 näitab protsessori 32 üldotstarbelise tööregistri struktuuri.
Nagu näidatud Joonis 4-2, igale registrile määratakse ka andmemälu aadress, kaardistades need otse kasutaja andmeruumi 32 esimesse kohta. Kuigi seda mäluorganisatsiooni ei kasutata füüsiliselt SRAM-i asukohtadena, pakub see paindlikku juurdepääsu registritele, kuna X-, Y- ja Z-osuti registrid saab seadistada indekseerima mis tahes registrit file.Enamik registris tegutsevatest juhistest File neil on otsene juurdepääs kõigile registritele ja enamik neist on ühe tsükli juhised.
X-register, Y-register ja Z-register
Registritel R26..R31 on nende üldotstarbelisele kasutamisele mõned funktsioonid. Need registrid on 16-bitised aadressinäitajad andmeruumi kaudseks adresseerimiseks. Kolm kaudset aadressiregistrit X, Y ja Z on määratletud nii, nagu on kirjeldatud punktis Joonis 4-3.
Erinevates adresseerimisrežiimides on nendel aadressiregistritel fikseeritud nihke, automaatse suurendamise ja automaatse vähendamise funktsioonid (vt üksikasju juhiste komplekti viitest).
Virnaosuti
Stacki kasutatakse peamiselt ajutiste andmete salvestamiseks, kohalike muutujate salvestamiseks ning tagasiside aadresside salvestamiseks pärast katkestusi ja alamprogrammi kõnesid. Virnaosutajate register osutab alati virna ülaosale. Pange tähele, et virn on rakendatud nii, et see kasvab suuremast mälukohast madalamale. See tähendab, et käsk Stack PUSH vähendab virnakursorit.
Virnakursor osutab andmete SRAM-i virna piirkonnale, kus asuvad alamprogramm ja katkestuspakk. See virna ruumi andmete SRAM-is peab programm määratlema enne alamprogrammi kõnede käivitamist või katkestuste lubamist. Virnakursor peab olema määratud punktiks üle 0x60. Stack Pointerit vähendatakse ühega, kui andmed PUSH-käsklusega virnasse lükatakse, ja kahega, kui alamprogrammkõne või katkestusega aadressi peale aadressi surutakse. Virnakursorit suurendatakse ühega, kui andmed hüppavad virnast koos POP-käsklusega, ja kahega, kui andmed hüppavad virnast tagasi alamprogrammilt RET või tagasipöördumisest katkestuse RETI-st.
AVR Stack Pointer on rakendatud kahe 8-bitise registrina sisend- ja väljundruumis. Tegelikult kasutatud bittide arv sõltub rakendamisest. Pange tähele, et AVR-arhitektuuri mõnes rakenduses on andmemaht nii väike, et vaja on ainult SPL-i. Sel juhul SPH-registrit ei ole.
SPH ja SPL - korstnate näitamise register
Natuke | 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 | ||
Loe/kirjuta | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Loe/kirjuta | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Algväärtus | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | |
Algväärtus | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND |
Juhiste täitmise ajastus
See jaotis kirjeldab üldisi juurdepääsu ajastuse kontseptsioone käsu täitmiseks. AVR-i protsessorit juhib protsessori kell clkCPU, mis genereeritakse otse kiibi jaoks valitud kellaallikast. Sisemist kella jaotust ei kasutata.
Joonis 4-4 näitab Harvardi arhitektuuri ja kiirpääsuregistri poolt lubatud paralleelseid käskude allalaadimisi ja käsutäitmisi File kontseptsioon. See on põhiline konveierkontseptsioon, mille abil saadakse kuni 1 MIPS MHz kohta koos vastavate ainulaadsete tulemustega funktsioonide kohta kulude, funktsioonide kohta kellade ja funktsioonide kohta toiteühiku kohta.
Joonis 4-5. Ühetsükliline ALU töö
Lähtestamine ja katkestamine
AVR pakub mitut erinevat katkestuse allikat. Nendel katkestustel ja eraldi lähtestusvektoril on mõlemal eraldi programmivektor programmi mäluruumis. Kõigile katkestustele määratakse individuaalsed lubamisbitid, mis katkestuse lubamiseks tuleb koos olekuregistris oleva globaalse katkestuse lubamise bitiga kirjutada loogiliselt.
Programmi mäluruumi madalaimad aadressid on vaikimisi määratletud kui lähtestus- ja katkestusvektorid. Vektorite täielik loetelu on esitatud “Katkestused” lk 48. Loendis määratakse ka erinevate katkestuste prioriteeditasemed. Mida madalam on aadress, seda kõrgem on prioriteet. RESET on kõrgeima prioriteediga ja järgmine on INT0 - väline katkestustaotlus 0.
Katkestuse korral tühistatakse üldine katkestuse lubamise I-bit ja kõik katkestused on keelatud. Kasutaja tarkvara saab pesastatud katkestuste lubamiseks I-bitti loogika kirjutada. Kõik lubatud katkestused võivad seejärel katkestada praeguse katkestusrutiini. I-bit määratakse automaatselt, kui käivitatakse katkestusest naasmise käsk - RETI.
Katkestusi on põhimõtteliselt kahte tüüpi. Esimese tüübi käivitab sündmus, mis määrab katkestuse lipu. Nende katkestuste jaoks vektoritakse programmiloendur tegeliku katkestusvektoriga, et täita katkestuste käitlemise rutiin, ja riistvara kustutab vastava katkestuse lipu. Katkestavate lippude saab kustutada ka kirjutades loogika tühjendatavatesse lipubittide asukohtadesse. Kui katkestuse tingimus ilmneb vastava katkestuse lubamise biti tühjendamise ajal, määratakse katkestuse lipp ja mäletatakse seda seni, kuni katkestus on lubatud või lipp tarkvara kustutatakse. Samamoodi, kui üks või mitu katkestustingimust ilmnevad globaalse katkestuse lubamise biti tühjendamise ajal, määratakse vastav (ad) katkestuslipp (id) ja mäletatakse neid seni, kuni globaalse katkestuse lubamise bitt on määratud, ja täidetakse seejärel prioriteetsuse järjekorras.
Teist tüüpi katkestused käivituvad seni, kuni katkestustingimus on olemas. Nendel katkestustel pole tingimata katkestuslippe. Kui katkestuse tingimus kaob enne katkestuse lubamist, katkestust ei käivitata.
Kui AVR katkestusest väljub, naaseb ta alati põhiprogrammi ja täidab veel ühe käsu, enne kui katkestus on ootel.
Pange tähele, et olekuregistrit ei salvestata katkestusrutiini sisestamisel automaatselt ega taastata katkestusrutiinist naastes. Sellega peab tegelema tarkvara.
Kui kasutate katkestuste keelamiseks CLI käsku, keelatakse katkestused kohe. Pärast CLI -käsku ei katkestata, isegi kui see toimub samaaegselt CLI -käsuga. Järgmine eksample näitab, kuidas seda saab kasutada katkestuste vältimiseks ajastatud EEPROM -i kirjutamise ajal.
Kokkupanekukood Example |
r16-s SREG; salvestage SREG väärtus
klii ; keelake ajastatud jada ajal katkestused sbi EECR, EEMPE ; käivitage EEPROM-i kirjutamine sbi EECR, EEPE välja SREG, r16; taastage SREG väärtus (I-bitine) |
C Kood Näideample |
char cSREG;
cSREG = SREG; /* salvesta SREG väärtus */ /* keela katkestused ajastatud jada ajal */ _CLI (); EECR |= (1< EECR | = (1 < SREG = cSREG; /* taasta SREG väärtus (I-bitine) */ |
Kui kasutate SEI käsku katkestuste lubamiseks, täidetakse SEI järgnev käsk enne pooleliolevaid katkestusi, nagu on näidatud käesolevasample.
Kokkupanekukood Example |
sei ; määrake globaalse katkestuse lubamine
magada; siseneda unerežiimi, oodates katkestust ; märkus: lülitub unerežiimi enne pooleliolemist ; katkestama |
C Kood Näideample |
_SEI(); /* määra globaalse katkestuse lubamine */
_SLEEP(); /* sisene unerežiimi, ootab katkestust */ / * märkus: lülitub unerežiimi enne kõiki ootel katkestusi * / |
Katkestatud reageerimisaeg
Kõigi lubatud AVR-i katkestuste katkestuse täitmise vastus on vähemalt neli taktsüklit. Nelja taktsükli järel käivitatakse katkestuste käsitlemise rutiini programmivektori aadress. Selle nelja taktsükli jooksul lükatakse programmiloendur virna külge. Vektor on tavaliselt hüpe katkestamise rutiinile ja see hüpe võtab kolm kellatsüklit. Kui mitme tsükli käsu täitmise ajal tekib katkestus, viiakse see käsk enne katkestuse toimimist lõpule. Kui katkestus toimub siis, kui MCU on unerežiimis, pikeneb katkestuse täitmise reageerimisaeg nelja taktsükli võrra. See tõus lisandub valitud unerežiimi käivitamisajale.
Tagasi katkestuste käitlemise rutiinist võtab neli taktsüklit. Nende nelja taktsükli jooksul hüpatakse programmiloendur (kaks baiti) virnast tagasi, virnakursorit suurendatakse kahega ja seadistatakse I-bitt SREG-is.
AVR mälestused
Selles osas kirjeldatakse ATtiny25 / 45/85 erinevaid mälestusi. AVR-arhitektuuril on kaks peamist mäluruumi, andmemälu ja programmi mäluruum. Lisaks on ATtiny25 / 45/85-l andmete salvestamiseks EEPROM-mälu. Kõik kolm mäluruumi on lineaarsed ja korrapärased.
Süsteemisisene ümberprogrammeeritav välkmälu
ATtiny25 / 45/85 sisaldab 2/4 / 8K baiti kiibistikku sisseehitatud süsteemis programmeeritavat välkmälu programmide salvestamiseks. Kuna kõigi AVR-i juhiste laius on 16 või 32 bitti, on Flash korraldatud 1024/2048/4096 x 16.
Välkmälu vastupidavus on vähemalt 10,000 25 kirjutamis- / kustutustsüklit. Programmilugeja ATtiny45 / 85/10 (PC) on 11/12/1024 bitti lai, seega on see suunatud programmi 2048/4096/XNUMX mälumahtudele. “Mäluprogramm- ming ”lk 147 sisaldab üksikasjalikku kirjeldust Flash-andmete järjestikuse allalaadimise kohta SPI-tihvtide abil.
Konstantseid tabeleid saab eraldada kogu programmi mälumälu aadressiruumi ulatuses (vt LPM - Programmi mälu laadimise juhiste kirjeldus).
Joonis 5-1. Programmi mälukaart
SRAM-i andmemälu
Joonis 5-2 näitab, kuidas ATtiny25 / 45/85 SRAM-mälu on korraldatud.
Madalamad 224/352/607 andmemälu asukohad käsitlevad mõlemat registrit File, I/O mälu ja sisemised andmed SRAM. Esimesed 32 asukohta pöörduvad registri poole File, järgmised 64 asukohta standard I/O mälu ja viimased 128/256/512 asukohad käsitlevad sisemisi andmeid SRAM.
Andmemälu katmiseks on viis erinevat adresseerimisrežiimi: otsene, kaudne nihkega, kaudne, kaudne eelseadistusega ja kaudne järelkasvuga. Registris File, registrites R26 kuni R31 on kaudse adresseerimise osuti registrid.
Otsene adresseerimine jõuab kogu andmeruumi.
Režiim Kaudne koos nihkega jõuab 63 aadressi Y- või Z-registri antud baasaadressilt.
Registreeritud kaudse adresseerimise režiimide kasutamisel koos automaatse vähendamise ja järeltöötlusega vähendatakse või suurendatakse aadressiregistreid X, Y ja Z.
32 üldotstarbelist tööregistrit, 64 I/O registrit ja 128/256/512 baiti sisemisi andmeid SRAM seadmes ATtiny25/45/85 on kõik kättesaadavad kõigi nende aadressirežiimide kaudu. Register File on kirjeldatud aastal „Gen- Eesmärgiregister File”Lk 10.
Joonis 5-2. Andmemälu kaart
Juurdepääs andmemälule Ajad
Selles jaotises kirjeldatakse sisemälu juurdepääsu üldisi juurdepääsu ajastamise kontseptsioone. Siseandmete SRAM-i juurdepääs toimub kahe clkCPU tsüklina, nagu on kirjeldatud punktis Joonis 5-3.
Joonis 5-3. Kiibis olevad andmeside SRAM-i juurdepääsutsüklid EEPROMi andmemälu
ATtiny25 / 45/85 sisaldab 128/256/512 baiti EEPROM-mälu. See on korraldatud eraldi andmeruumina, milles saab lugeda ja kirjutada üksikuid baite. EEPROM-i vastupidavus on vähemalt 100,000 XNUMX kirjutamis- / kustutustsüklit. Juurdepääsu EEPROM-i ja protsessori vahel kirjeldatakse allpool, täpsustades EEPROM-i aadressiregistreid, EEPROM-i andmeregistrit ja EEPROM-i juhtimisregistrit. Üksikasju vt “Seeriaalne allalaadimine” lk 151.
EEPROMi lugemis- / kirjutusjuurdepääs
EEPROM-i juurdepääsuregistrid on ligipääsetavad sisend- / väljundruumis.
EEPROM-i kirjutusjuurdepääsu ajad on toodud Tabel 5-1 lk 21. Iseajamise funktsioon võimaldab aga kasutajatarkvaral tuvastada, millal saab järgmise baidi kirjutada. Kui kasutajakood sisaldab juhiseid, mis kirjutavad EEPROM-i, tuleb võtta kasutusele mõned ettevaatusabinõud. Tugevalt filtreeritud toiteallikates VCC tõenäoliselt tõuseb või langeb aeglaselt sisse
Toide üles/alla. See põhjustab seadme teatud aja jooksul töötamist voltage madalam, kui on määratud kasutatava taktsageduse miinimumina. Vaata „EEPROMi korruptsiooni ärahoidmine” lk 19 üksikasjad selle kohta, kuidas nendes olukordades probleeme vältida.
EEPROM-i tahtmatute kirjutamiste vältimiseks tuleb järgida konkreetset kirjutamisprotseduuri. Viitama “Aatomiline Baitide programmeerimine ”lk 17 ja „Jagatud baitide programmeerimine” lk 17 selle kohta üksikasju.
Kui EEPROM-i loetakse, peatatakse protsessor neljaks taktsükliks enne järgmise käsu täitmist. Kui EEPROM on kirjutatud, peatatakse protsessor kaheks taktsükliks enne järgmise käsu täitmist.
Aatomibaitide programmeerimine
Aatomibaidi programmeerimise kasutamine on lihtsaim režiim. Bait EEPROM-ile kirjutades peab kasutaja kirjutama aadressi EEAR-i registrisse ja andmed EEDR-i registrisse. Kui EEPMn bitid on null, käivitab EEPE kirjutamine (nelja tsükli jooksul pärast EEMPE kirjutamist) kustutamise / kirjutamise toimingu. Nii kustutamise kui kirjutamise tsükkel tehakse ühe toiminguna ja kogu programmeerimisaeg on antud Tabel 5-1 lk 21. EEPE-bitt jääb seadistatud seni, kuni kustutamis- ja kirjutamistoimingud on lõpule viidud. Kui seade on programmeerimisega hõivatud, pole muid EEPROM-toiminguid võimalik teha.
Jagatud baitide programmeerimine
Kustutus- ja kirjutamistsükli on võimalik jagada kaheks erinevaks toiminguks. See võib olla kasulik, kui süsteem nõuab piiratud aja jooksul lühikest juurdepääsuaega (tavaliselt siis, kui toiteallika voltage kukub). Et edusamme saada, tagSelle meetodi puhul on nõutav, et kirjutatavad asukohad oleks enne kirjutamist kustutatud. Kuid kuna kustutamis- ja kirjutamistoimingud on jagatud, on kustutamistoiminguid võimalik teha siis, kui süsteem võimaldab teha ajakriitilisi toiminguid (tavaliselt pärast sisselülitamist).
Kustuta
Baidi kustutamiseks tuleb aadress kirjutada EEAR-ile. Kui EEPMn bitid on 0b01, käivitab EEPE kirjutamine (nelja tsükli jooksul pärast EEMPE kirjutamist) ainult kustutustoimingu (programmeerimisaeg on toodud Tabel 5-1 edasi lehekülg 21). EEPE-bitt jääb seadistatud seni, kuni kustutustoiming lõpeb. Kui seade on programmeerimisega hõivatud, pole muid EEPROM-toiminguid võimalik teha.
Kirjutage
Asukoha kirjutamiseks peab kasutaja kirjutama aadressi EEAR-i ja andmed EEDR-i. Kui EEPMn bitid on 0b10, käivitab EEPE kirjutamine (nelja tsükli jooksul pärast EEMPE kirjutamist) ainult kirjutamistoimingu (programmeerimisaeg on antud Tabel 5-1 lk 21). EEPE-bitt jääb seadistatud seni, kuni kirjutamistoiming lõpeb. Kui kirjutatavat asukohta pole enne kirjutamist kustutatud, tuleb salvestatud andmeid lugeda kadunuks. Kui seade on programmeerimisega hõivatud, pole muid EEPROM-toiminguid võimalik teha.
Kalibreeritud ostsillaatorit kasutatakse EEPROM-i juurdepääsude ajastamiseks. Veenduge, et ostsillaatori sagedus vastaks punktis XNUMX kirjeldatud nõuetele “OSCCAL - ostsillaatori kalibreerimisregister” lk 31.
Järgmine kood ntamples näitavad ühte koost ja ühte C -funktsiooni EEPROM -i kustutamiseks, kirjutamiseks või aatomi kirjutamiseks. Endineampeeldatakse, et katkestusi kontrollitakse (nt katkestuste globaalne keelamine), nii et nende funktsioonide täitmisel ei toimu katkestusi.
Kokkupanekukood Example |
EEPROM_write:
; Oodake eelmise kirjutamise lõpuleviimist sbic EECR,EEPE rjmp EEPROM_write ; Määra programmeerimisrežiim ldi r16, (0<<EEPM1)|(0<<EEPM0) välja EECR, r16 ; Seadistage aadressiregistrisse aadress (r18: r17) välja EEARH, r18 välja EEARL, r17 ; Kirjutage andmed (r19) andmeregistrisse välja EEDR, r19 ; Kirjutage loogiline üks EEMPE-le sbi EECR, EEMPE ; Alustage eepromi kirjutamist, määrates EEPE sbi EECR,EEPE ret |
C Kood Näideample |
void EEPROM_write(allkirjata char ucAddress, unsigned char ucData)
{ /* Oodake eelmise kirjutamise lõpetamist */ while(EECR & (1< ; /* Programmeerimisrežiimi määramine */ EECR = (0 < / * Aadressi- ja andmeregistrite seadistamine * / EEAR = ucAddress; EEDR = ucData; /* Kirjuta loogiline üks EEMPEsse */ EECR | = (1 < / * Alustage eepromi kirjutamist, seadistades EEPE * / EECR | = (1 < } |
Järgmine kood ntamples näitavad kokkupanekut ja C -funktsioone EEPROM -i lugemiseks. Endineampeeldatakse, et katkestusi kontrollitakse nii, et nende funktsioonide täitmisel ei toimu katkestusi.
Kokkupanekukood Example |
EEPROM_loetud:
; Oodake eelmise kirjutamise lõpuleviimist sbic EECR,EEPE rjmp EEPROM_read ; Seadistage aadressiregistrisse aadress (r18: r17) välja EEARH, r18 välja EEARL, r17 ; Alustage eepromi lugemist kirjutades EERE sbi EECR,EERE ; Andmeregistri andmete lugemine aastal r16,EEDR ret |
C Kood Näideample |
unsigned char EEPROM_read(signed char ucAddress)
{ / * Oota eelmise kirjutamise lõpuleviimist * / samas (EECR & (1 < ; / * Aadressiregistri seadistamine * / EEAR = ucAddress; /* Alusta eeprom lugemist kirjutades EERE */ EECR | = (1 < / * Andmete edastamine registrist * / tagastama EEDR; } |
EEPROMi korruptsiooni ennetamine
Madala VCC perioodidel võivad EEPROM-i andmed rikkuda, kuna toitevoldtage on liiga madal, et protsessor ja EEPROM saaks korralikult töötada. Need probleemid on samad, mis EEPROMi kasutavate tahvlitaseme süsteemide puhul, ja tuleks kasutada samu disainilahendusi.
EEPROMi andmete riknemise võivad põhjustada kaks olukorda, kui voltage on liiga madal. Esiteks nõuab tavaline EEPROM -i kirjutamise jada minimaalset mahtutage õigesti töötada. Teiseks võib protsessor ise käske valesti täita, kui toiteplokktage on liiga madal.
EEPROM-i andmete rikkumist saab hõlpsasti vältida, järgides seda kujunduse soovitust:
Hoidke AVR RESET aktiivne (madal) ajal, kui toiteallikas ei ole piisavtage. Seda saab teha, lubades sisemise väljumisdetektori (BOD). Kui sisemise BOD tuvastustase ei ühti
Vajaliku tuvastustasemega saab kasutada välist madala VCC lähtestamise kaitseahelat. Kui lähtestamine toimub kirjutustoimingu ajal, lõpetatakse kirjutamistoiming tingimusel, et toiteallika mahttage on piisav.
I / O-mälu
ATtiny25 / 45/85 sisend- / väljundruumi määratlus on näidatud joonisel “Registreeri kokkuvõte” lk 200.
Kõik ATtiny25 / 45/85 I / O-d ja välisseadmed paigutatakse sisend- / väljundruumi. Kõigile sisend- ja väljundkohtadele pääseb juurde LD / LDS / LDD ja ST / STS / STD juhiste abil, edastades andmeid 32 üldotstarbelise tööregistri ja sisend- / väljundruumi vahel. Sisend- / väljundregistrid aadressivahemikus 0x00 - 0x1F on SBI ja CBI juhiste abil bitile otse juurdepääsetavad. Nendes registrites saab üksikute bitide väärtust kontrollida SBIS- ja SBIC-juhiste abil. Lisateavet leiate juhiste komplekti jaotisest. Sisend- / väljundspetsiaalsete käskude IN ja OUT kasutamisel tuleb kasutada sisend- / väljundaadresse 0x00 - 0x3F. Kui pöördute I / O registrite poole andmeruumina, kasutades LD ja ST juhiseid, tuleb nendele aadressidele lisada 0x20.
Tulevaste seadmetega ühilduvuse huvides tuleks reserveeritud bittidele juurdepääsuks kirjutada null. Reserveeritud sisend- / väljundmälu aadresse ei tohiks kunagi kirjutada.
Mõned olekulipud kustutatakse, kirjutades neile loogilise lipu. Pange tähele, et CBI ja SBI käsud töötavad ainult määratud bitil ja seetõttu saab neid kasutada selliseid olekulippe sisaldavates registrites. CBI ja SBI juhised töötavad ainult registritega 0x00 kuni 0x1F.
I / O ja lisaseadmete juhtimisregistrid on selgitatud järgnevates jaotistes.
Registreeri kirjeldus
EEARH - EEPROMi aadressiregister
Natuke | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x1F | – | – | – | – | – | – | – | EEAR8 | KÕRVAL |
Loe/kirjuta | R | R | R | R | R | R | R | R/W | |
Algväärtus | 0 | 0 | 0 | 0 | 0 | 0 | 0 | X/0 |
Bitid 7: 1 - Res: reserveeritud bitid
Need bitid on reserveeritud edaspidiseks kasutamiseks ja loetakse alati nulliks.
Bitid 0 - EEAR8: EEPROM-i aadress
See on ATtiny85 kõige olulisem EEPROM-i aadressibitt. Seadmetes, kus on vähem EEPROM-i, st ATtiny25 / ATtiny45, on see bitt reserveeritud ja loeb alati nulli. EEPROM-i aadressiregistri (EEAR) algväärtus on määratlemata ja seetõttu tuleb enne EEPROM-i juurde pääsemist kirjutada õige väärtus.
EEARL - EEPROMi aadressiregister
Natuke
0x1E | EEAR7 | EEAR6 | EEAR5 | EEAR4 | EEAR3 | EEAR2 | EEAR1 | EEAR0 | EEARL |
Tagumine / kirjutamine | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Algväärtus | X | X | X | X | X | X | X | X |
Bits 7 - EEAR7: EEPROM-i aadress
See on ATtiny45 kõige olulisem EEPROM-i aadressibitt. Seadmetes, kus on vähem EEPROM-i, st ATtiny25, on see bitt reserveeritud ja loeb alati nulli. EEPROM-i aadressiregistri (EEAR) algväärtus on määratlemata ja seetõttu tuleb enne EEPROM-i juurde pääsemist kirjutada õige väärtus.
Bitid 6: 0 - EEAR [6: 0]: EEPROMi aadress
Need on EEPROMi aadressiregistri (madalad) bitid. EEPROM-i andmebaidid adresseeritakse lineaarselt vahemikus 0… (128/256 / 512-1). EEARi esialgne väärtus on määratlemata ja seetõttu tuleb enne EEPROM-ile juurdepääsu saamiseks kirjutada õige väärtus.
EEDR - EEPROMi andmeregister
Natuke | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x1D | EEDR7 | EEDR6 | EEDR5 | EEDR4 | EEDR3 | EEDR2 | EEDR1 | EEDR0 | EEDR |
Loe/kirjuta | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Algväärtus | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
EEPROMi kirjutamistoimingu jaoks sisaldab EEDR register andmeid, mis kirjutatakse EEPROM-ile EEAR-i registri antud aadressil. EEPROMi lugemisoperatsiooni jaoks sisaldab EEDR andmeid, mis on loetud
EEPROM Euroopa välisteenistuse antud aadressil.
5.5.4 EECR - EEPROMi kontrollregister |
|||||||||
Bitt 7 6 5 | 4 | 3 | 2 | 1 | 0 | ||||
0x1C – | – | EEPM1 | EEPM0 | EERIE | EEMPE | EEPE | SIIN | EMÜR | |
Loe / kirjuta R R R / W | R/W | R/W | R/W | R/W | R/W | ||||
Algväärtus 0 0 X | X | 0 | 0 | X | 0 |
Bitt 7 - Res: reserveeritud bitt
See bitt on reserveeritud edaspidiseks kasutamiseks ja loeb ATtiny0 / 25/45-s alati väärtuseks 85. Tulevaste AVR-seadmetega ühilduvuse huvides kirjutage see bitt alati nulli. Pärast lugemist maskeeri see natuke välja.
Bitt 6 - Res: reserveeritud bitt
See bitt on reserveeritud seadmesse ATtiny25 / 45/85 ja loetakse alati nulliks.
Bitid 5: 4 - EEPM [1: 0]: EEPROMi programmeerimisrežiimi bitid
EEPROM-i programmeerimisrežiimi bittide seade määrab, millised programmeerimistoimingud käivitatakse EEPE-i kirjutamisel. Andmeid on võimalik programmeerida ühe aatomioperatsiooniga (kustutada vana väärtus ja programmeerida uus väärtus) või jagada toimingud Kustuta ja Kirjutada kaheks erinevaks toiminguks. Eri režiimide programmeerimisajad on näidatud Tabel 5-1. Kuigi EEPE on seatud, eiratakse mis tahes kirjutamist EEPMn-ile. Lähtestamise ajal lähtestatakse EEPMn bitid väärtusele 0b00, kui EEPROM pole programmeerimisega hõivatud.
Tabel 5-1. EEPROM-i režiimi bitid
EEPM1 | EEPM0 | Programmeerimisaeg | Operatsioon |
0 | 0 | 3.4 ms | Kustuta ja kirjuta ühe toiminguna (aatomitoiming) |
0 | 1 | 1.8 ms | Ainult kustutamine |
1 | 0 | 1.8 ms | Ainult kirjutamine |
1 | 1 | – | Reserveeritud edaspidiseks kasutamiseks |
Bitt 3 - EERIE: EEPROM-i katkestuse lubamine
EERIE kirjutamine ühele võimaldab EEPROM-i katkestuse, kui SREG-i I-bit on seatud. EERIE nullile kirjutamine hajutab katkestuse. EEPROMi valmis katkestus genereerib pideva katkestuse, kui püsimälu on programmeerimiseks valmis.
Bitt 2 - EEMPE: EEPROMi magistriprogramm on lubatud
Bitt EEMPE määrab, kas EEPE kirjutamine ühele avaldab mõju või mitte.
Kui EEMPE on seatud, programmeerib EEPE nelja taktsükli jooksul EEPROM valitud aadressil. Kui EEMPE on null, ei mõjuta EEPE seadistamine. Kui tarkvara on EEMPE ühele kirjutanud, puhastab riistvara nelja kellaaja järel tsükli nulli.
Bitt 1 - EEPE: EEPROM-programm on lubatud
EEPROMi programmi lubamise signaal EEPE on programmeerimise lubamise signaal EEPROM-ile. Kui EEPE on kirjutatud, programmeeritakse EEPROM vastavalt EEPMn bittide seadistusele. Enne loogilise kirjutamist EEPE-le tuleb EEMPE-bit kirjutada ühele, vastasel juhul EEPROM-i kirjutamist ei toimu. Kui kirjutamisjuurdepääsuaeg on möödas, puhastatakse riistvara abil EEPE-bitt. Kui EEPE on määratud, peatatakse protsessor kaheks tsükliks enne järgmise käsu täitmist.
Bitt 0 - EERE: EEPROMi lugemise lubamine
EEPROM-i lugemise lubamise signaal - EERE - on EEPROM-i loetud strobe. Kui EEAR-i registris on õige aadress seatud, tuleb EEPROM-i lugemise käivitamiseks kirjutada EERE-bit ühele. EEPROM-i lugemisõigus võtab ühe juhise ja nõutavad andmed on kohe saadaval. Kui EEPROM-i loetakse, peatatakse protsessor neljaks tsükliks enne järgmise käsu täitmist. Kasutaja peaks enne lugemisoperatsiooni alustamist küsitlema EEPE-bitti. Kui kirjutamistoiming on pooleli, ei ole võimalik EEPROM-i lugeda ega muuta Euroopa välisteenistuse registrit.
Süsteemi kell ja suvandid
Kellasüsteemid ja nende levitamine
Protsessori kell
Protsessorikell suunatakse süsteemi osadesse, mis on seotud AVR -tuumaga. NäideampSellised moodulid on üldotstarbeline register File, staatuse register ja andmemälu, mis hoiavad virnaosutajat. CPU kella peatamine takistab tuumal üldiste toimingute ja arvutuste tegemist.
I / O kell - klkI / O
Sisend- / väljundkella kasutab enamus sisend- / väljundmooduleid, näiteks Taimer / Loendur. Sisend- / väljundkella kasutab ka välise katkestuse moodul, kuid pange tähele, et mõned välised katkestused tuvastatakse asünkroonse loogika abil, mis võimaldab selliseid katkestusi tuvastada ka siis, kui sisend- / väljundkell on peatatud.
Välk kell - clkFLASH
Flash-kell juhib Flash-liidese tööd. Flash-kell on tavaliselt aktiivne samaaegselt protsessori kellaga.
ADC kell - clkADC
ADC on varustatud spetsiaalse kelladomeeniga. See võimaldab peatada protsessori ja sisend- / väljundkellad, et vähendada digitaalsete vooluringide tekitatavat müra. See annab täpsemad ADC teisendustulemused.
Sisemine PLL kiirete perifeersete kellade genereerimiseks - clkPCK
ATtiny25 / 45/85 sisemine PLL genereerib taktsageduse, mis on 8x korrutatud allika sisendist. Vaikimisi kasutab PLL allikana sisemise 8.0 MHz RC-ostsillaatori väljundit. Kui PLLCSR-i bitt LSM on määratud, kasutab PLL RC-ostsillaatori väljundit jagatuna kahega. Seega on PLL-i väljund, kiire perifeerne kell 64 MHz. Kiire perifeerne kell või sellest eelkalkuleeritud kell saab valida taimeri / loenduri1 kella allikaks või süsteemikellaks. Vaata Joonis 6-2. Kui PLLCSR-i LSM on seadistatud, jagatakse kiire perifeerse kella sagedus kahega, mille tulemuseks on taktsagedus 32 MHz. Pange tähele, et LSM-i ei saa seadistada, kui süsteemikellana kasutatakse PLLCLK-d.
Joonis 6-2. PCK kellasüsteem.
PLL on lukustatud RC-ostsillaatoril ja RC-ostsillaatori reguleerimine OSCCAL-i registri kaudu reguleerib samal ajal kiiret välisseadme kella. Isegi kui RC-ostsillaator võetakse kõrgemale sagedusele kui 8 MHz, küllastub kiire perifeerne taktsagedus sagedusel 85 MHz (halvimal juhul) ja jääb võnkuma maksimaalsel sagedusel. Tuleb märkida, et antud juhul ei lukustata PLL-d enam RC-ostsillaatori kellaga. Seetõttu on soovitatav mitte viia OSCCAL-i reguleerimisi kõrgemale sagedusele kui 8 MHz, et hoida PLL-i õiges tööpiirkonnas.
Sisemine PLL on lubatud, kui:
Registris PLLCSR on määratud PLLE-bitt.
CKSEL-kaitsmele on programmeeritud '0001'.
CKSEL-kaitsmele on programmeeritud '0011'.
PLLCSR-biti PLOCK on seatud, kui PLL on lukustatud. Nii sisemine RC-ostsillaator kui ka PLL on väljalülitatud ja ooterežiimis välja lülitatud.
Sisemine PLL ATtiny15 ühilduvusrežiimis
Kuna ATtiny25 / 45/85 on ATtiny15 kasutajate migreerimisseade, on tagapõhiseks ühilduvuseks ATtiny15 ühilduvusrežiim. ATtiny15 ühilduvusrežiim valitakse CKSEL-kaitsmete programmeerimisega väärtusele „0011”.
Ühilduvusrežiimis ATtiny15 kalibreeritakse sisemise RC-ostsillaatori sagedus 6.4 MHz-ni ja PLL-i korrutusteguriks seatakse 4x. Vaata Joonis 6-3. Nende seadistustega on kellasüsteem ATtiny15-ga ühilduv ja saadud kiire välisseadme sagedus on 25.6 MHz (sama mis ATtiny15-l).
Joonis 6-3. PCK kellasüsteem ATtiny15 ühilduvusrežiimis.
Kelliallikad
Seadmel on järgmised kella allika valikud, mille saab valida Flash Fuse bitide abil, nagu allpool näidatud. Valitud allikast pärit kell sisestatakse AVR-i kella generaatorisse ja suunatakse vastavate moodulite juurde.
Tabel 6-1. Seadme kellaaja valikud Valige
Seadme kellamise võimalus | CKSEL[3:0](1) |
Väline kell (vaata lehekülg 26) | 0000 |
Kõrge sagedusega PLL-kell (vaata lehekülg 26) | 0001 |
Kalibreeritud sisemine ostsillaator (vaata lehekülg 27) | 0010(2) |
Kalibreeritud sisemine ostsillaator (vaata lehekülg 27) | 0011(3) |
Sisemine 128 kHz ostsillaator (vaata lehekülg 28) | 0100 |
Madalsageduslik kristalli ostsillaator (vaata lehekülg 29) | 0110 |
Kristalli ostsillaator / keraamiline resonaator (vaata lehekülg 29) | 1000-1111 |
Reserveeritud | 0101, 0111 |
Kõigi kaitsmete puhul tähendab “1” programmeerimata ja “0” programmeeritud.
Seadmele tarnitakse see valik.
See valib ühilduvusrežiimi ATtiny15, kus süsteemi kell jagatakse neljaga, mille tulemuseks on 1.6 MHz taktsagedus. Rohkem inormatsiooni vt „Kalibreeritud sisemine ostsillaator” lk 27.
Iga kellavõimaluse erinevad valikud on toodud järgmistes jaotistes. Kui protsessor ärkab toitelülitamisest, kasutatakse käivitamise ajastamiseks valitud kella allikat, mis tagab ostsillaatori stabiilse töö enne käskude käivitamise algust. Kui protsessor lähtestatakse lähtestamisest, toimub täiendav viivitus, mis võimaldab toitel jõuda stabiilsele tasemele enne normaalse töö alustamist. Valvekoera ostsillaatorit kasutatakse selle reaalajas käivitusaja osa ajastamiseks. Iga ajaarvu jaoks kasutatud WDT ostsillaatori tsüklite arv on näidatud Tabel 6-2.
Tabel 6-2. Watchdogi ostsillaatori tsüklite arv
Tüüpiline ajalõpp | Tsüklite arv |
4 ms | 512 |
64 ms | 8K (8,192) |
Väline kell
Seadme juhtimiseks välisest kelliallikast peaks CLKI juhtima, nagu on näidatud joonisel Joonis 6-4. Seadme töötamiseks välisel kellal peavad CKSEL-kaitsmed olema programmeeritud väärtusele “00”.
Joonis 6-4. Välise kellaseadme konfiguratsioon
Selle kella allika valimisel määratakse käivitamisajad SUT-kaitsmete abil, nagu on näidatud joonisel Tabel 6-3.
Tabel 6-3. Välise kella valiku käivitusajad
SUT[1:0] | Käivitamise aeg alates väljalülitamisest | Lähtestamise täiendav viivitus | Soovitatav kasutamine |
00 | 6 CK | 14CK | BOD on lubatud |
01 | 6 CK | 14CK + 4 ms | Kiiresti tõusev jõud |
10 | 6 CK | 14CK + 64 ms | Aeglaselt tõusev jõud |
11 | Reserveeritud |
Välise kella rakendamisel tuleb MCU stabiilse töö tagamiseks vältida rakendatud kella sageduse järske muutusi. Üle 2% sageduse kõikumine kellatsüklist teise võib põhjustada ettearvamatut käitumist. Selliste kellasageduse muutuste ajal tuleb tagada MCU hoidmine lähtestamises.
Pange tähele, et System Clock Presale'i saab kasutada sisemise kella sageduse tööaja muutuste teostamiseks, tagades samal ajal stabiilse töö. Viitama “Süsteemi kella eelkaaler” lk 31 üksikasjade saamiseks.
Kõrge sagedusega PLL-kell
Olemas on sisemine PLL, mis tagab nimiväärtusega 64 MHz taktsageduse, mis on lukustatud RC-ostsillaatoriga perifeerse taimeri / loenduri1 kasutamiseks ja süsteemi kella allikaks. Kui see on valitud süsteemi taktiallikaks, jagatakse see CKSEL-i kaitsmete programmeerimisega väärtusele „0001” neljale nagu näidatud joonisel Tabel 6-4.
Tabel 6-4. Kõrgsagedusliku PLL-kella töörežiimid
CKSEL[3:0] | Nominaalne sagedus |
0001 | 16 MHz |
Selle kella allika valimisel määratakse käivitamisajad SUT-sulavkaitsmete abil, nagu on näidatud joonisel Tabel 6-5.
Tabel 6-5. Kõrgsagedusliku PLL-kella käivitusajad
SUT[1:0] | Käivitamisaeg toite väljalülitamisest | Täiendav viivitus sisselülitamise lähtestamisel (VCC = 5.0 V) | Soovitatav kasutus |
00 | 14CK + 1K (1024) CK + 4 ms | 4 ms | BOD on lubatud |
Tabel 6-5. Kõrgsagedusliku PLL-kella käivitusajad
SUT[1:0] | Käivitamisaeg toite väljalülitamisest | Täiendav viivitus sisselülitamise lähtestamisel (VCC = 5.0 V) | Soovitatav kasutus |
01 | 14CK + 16K (16384) CK + 4 ms | 4 ms | Kiiresti tõusev jõud |
10 | 14CK + 1K (1024) CK + 64 ms | 4 ms | Aeglaselt tõusev jõud |
11 | 14CK + 16K (16384) CK + 64 ms | 4 ms | Aeglaselt tõusev jõud |
Kalibreeritud sisemine ostsillaator
Vaikimisi pakub sisemine RC -ostsillaator ligikaudset 8.0 MHz kella. Kuigi voltage ja temperatuurist sõltuvad, saab kasutaja seda kella väga täpselt kalibreerida. Vt “Kalibreeritud sisemine RC-ostsillaatori aku racy ”lk 164 ja “Sisemise ostsillaatori kiirus” lk 192 lähemalt. Seadet tarnitakse koos programmeeritud CKDIV8 kaitsmega. Vaata “Süsteemi kella eelkaaler” lk 31 lisateabe saamiseks.
Selle kella saab valida süsteemi kellaks, programmeerides CKSEL-kaitsmeid, nagu on näidatud joonisel Tabel 6-6 lk
27. Kui see on valitud, töötab see väliste komponentideta. Lähtestamise ajal laadib riistvara eelnevalt programmeeritud kalibreerimisväärtuse OSCCAL-i registrisse ja seeläbi kalibreerib automaatselt RC-ostsillaatori. Selle kalibreerimise täpsust näidatakse tehases kalibreerimisena Tabel 21-2 lk 164.
Muutes OSCCAL-i registrit SW-lt, vt “OSCCAL - ostsillaatori kalibreerimisregister” lk 31, on võimalik saada suurem kalibreerimistäpsus kui tehase kalibreerimise abil. Selle kalibreerimise täpsust näidatakse kasutaja kalibreerimisena Tabel 21-2 lk 164.
Kui seda ostsillaatorit kasutatakse kiibikellana, kasutatakse valvekoera ostsillaatorit endiselt valvekoera taimeri ja lähtestamise ajalõpu jaoks. Eelprogrammeeritud kalibreerimisväärtuse kohta leiate lisateavet jaotisest „Cali- bation Bytes ”lk 150.
Sisemise ostsillaatori saab seadistada pakkuma ka 6.4 MHz kella, kirjutades CKSEL-kaitsmed numbrile “0011”, nagu on näidatud Tabel 6-6 allpool. Seda seadet pakutakse ühilduvusrežiimina ATtiny15 ja see on ette nähtud kalibreeritud kella allikaks sagedusel 6.4 MHz, nagu ATtiny15-s. ATtiny15 ühilduvusrežiimis kasutab PLL taimerile / loendurile6.4 25.6 MHz perifeerse kella signaali genereerimiseks sisemise ostsillaatorit, mis töötab sagedusel 1 MHz (vt. „8-bitine taimer / loendur1 sisse ATtiny15 režiim ”lk 95). Pange tähele, et selles töörežiimis jagatakse 6.4 MHz taktsignaal alati neljaks, pakkudes 1.6 MHz süsteemikella.
Tabel 6-6. Sisemised kalibreeritud RC-ostsillaatori töörežiimid
CKSEL[3:0] | Nominaalne sagedus |
0010(1) | 8.0 MHz |
0011(2) | 6.4 MHz |
Seadmele tarnitakse see valik.
Selle sätte abil valitakse ühilduvusrežiim ATtiny15, kus süsteemi kell jagatakse neljaga, mille tulemuseks on 1.6 MHz taktsagedus.
Kui kella allikaks on valitud kalibreeritud 8 MHz sisemine ostsillaator, määratakse käivitamisajad SUT-kaitsmete abil, nagu on näidatud Tabel 6-7 allpool.
Tabel 6-7. Sisemise kalibreeritud RC-ostsillaatori kella käivitusajad
SUT[1:0] | Käivitamise aeg alates väljalülitamisest | Lähtestumise täiendav viivitus (VCC = 5.0 V) | Soovitatav kasutamine |
00 | 6 CK | 14CK(1) | BOD on lubatud |
01 | 6 CK | 14CK + 4 ms | Kiiresti tõusev jõud |
10(2) | 6 CK | 14CK + 64 ms | Aeglaselt tõusev jõud |
11 | Reserveeritud |
1. Kui RSTDISBL-kaitse on programmeeritud, pikeneb see käivitamisaeg 14CK + 4 ms-ni, et tagada programmeerimisrežiimi sisestamine.
2. Seadmele tarnitakse see valik.
ATtiny15 ühilduvusrežiimis määravad käivitamisajad SUT-sulavkaitsmed, nagu on näidatud joonisel Tabel 6-8 allpool.
Tabel 6-8. Sisemise kalibreeritud RC-ostsillaatorkella käivitusajad (režiimis ATtiny15)
SUT[1:0] | Käivitamise aeg alates väljalülitamisest | Lähtestumise täiendav viivitus (VCC = 5.0 V) | Soovitatav kasutamine |
00 | 6 CK | 14CK + 64 ms | |
01 | 6 CK | 14CK + 64 ms | |
10 | 6 CK | 14CK + 4 ms | |
11 | 1 CK | 14CK(1) |
Märkus. Kui RSTDISBL-kaitse on programmeeritud, pikeneb see käivitusaeg 14CK + 4 ms-ni, et tagada programmeerimisrežiimi sisenemine.
Kokkuvõtlikult võib lisateavet ATtiny15 ühilduvusrežiimi kohta leida jaotistest „Port B (PB5: PB0)” on sisse lülitatud lehekülg 2, „Sisemine PLL ATtiny15 ühilduvusrežiimis” lk 24, „8-bitine taimer / loendur1 režiimis ATtiny15” on sisse lülitatud lehekülg 95, „SilumisWIRE piirangud” lk 140, “Baitide kalibreerimine” lk 150 ja tabelis “Kella eelkalkulaator Valige ”lk 33.
Sisemine 128 kHz ostsillaator
128 kHz sisemine ostsillaator on väikese võimsusega ostsillaator, mille taktsagedus on 128 kHz. Sagedus on nimipingel 3V ja 25°C. Selle kella saab valida süsteemi kellaks, programmeerides CKSEL-i kaitsmed väärtusele “0100”.
Selle kella allika valimisel määratakse käivitamisajad SUT-kaitsmete abil, nagu on näidatud joonisel Tabel 6-9.
Tabel 6-9. 128 kHz sisemise ostsillaatori käivitusajad
SUT[1:0] | Käivitamise aeg alates väljalülitamisest | Lähtestamise täiendav viivitus | Soovitatav kasutamine |
00 | 6 CK | 14CK(1) | BOD on lubatud |
01 | 6 CK | 14CK + 4 ms | Kiiresti tõusev jõud |
10 | 6 CK | 14CK + 64 ms | Aeglaselt tõusev jõud |
11 | Reserveeritud |
Märkus. Kui RSTDISBL-kaitse on programmeeritud, pikeneb see käivitusaeg 14CK + 4 ms-ni, et tagada programmeerimisrežiimi sisenemine.
Madalsageduslik kristalli ostsillaator
Seadme kella allikana 32.768 kHz kellakristalli kasutamiseks tuleb valida madalsageduslik kristalli ostsillaator, seades CKSEL-i kaitsmed väärtusele '0110'. Kristall peaks olema ühendatud vastavalt joonisele Joonis 6-5. Sobiva koormusmahtuvuse leidmiseks 32.768 kHz krisali jaoks lugege tootja andmelehte.
Selle ostsillaatori valimisel määratakse käivitamisajad SUT-kaitsmete abil, nagu on näidatud joonisel Tabel 6-10.
Tabel 6-10. Madala sagedusega kristallostsillaatorkella valimise käivitusajad
SUT[1:0] | Käivitamisaeg toite väljalülitamisest | Lähtestumise täiendav viivitus (VCC = 5.0 V) | Soovitatav kasutus |
00 | 1K (1024) CK(1) | 4 ms | Kiiresti tõusev võimsus või BOD on lubatud |
01 | 1K (1024) CK(1) | 64 ms | Aeglaselt tõusev jõud |
10 | 32K (32768) CK | 64 ms | Stabiilne sagedus käivitamisel |
11 | Reserveeritud |
Märkus. Neid valikuid tuleks kasutada ainult siis, kui sageduse stabiilsus käivitamisel ei ole oluline.
Madalsageduslik kristalli ostsillaator tagab sisemise koormusmahtuvuse, vt Tabel 6-11 iga TOSC tihvti juures.
Tabel 6-11. Madalsagedusliku kristallostsillaatori mahtuvus
Seade | 32 kHz Osc. Tüüp | Kork (Xtal1 / Tosc1) | Kork (Xtal2 / Tosc2) |
ATtiny25 / 45/85 | Süsteem Osc. | 16 pF | 6 pF |
Kristalli ostsillaator / keraamiline resonaator
XTAL1 ja XTAL2 on vastavalt inverteerimise sisend ja väljund amplifier, mida saab konfigureerida kasutamiseks kiibi ostsillaatorina, nagu on näidatud Joonis 6-5. Kasutada võib kas kvartskristalli või keraamilist resonaatorit.
C1 ja C2 peaksid alati olema võrdsed nii kristallide kui ka resonaatorite puhul. Kondensaatorite optimaalne väärtus sõltub kasutatavast kristallist või resonaatorist, hajuvmahtuvuse hulgast ja keskkonna elektromagnetilisest mürast. Mõned esialgsed juhised kristallidega kasutatavate kondensaatorite valimiseks on toodud Tabel 6-12 allpool. Keraamiliste resonaatorite puhul tuleks kasutada tootja antud kondensaatori väärtusi.
Tabel 6-12. Kristallostsillaatori töörežiimid
CKSEL[3:1] | Sagedusala (MHz) | Kondensaatorite C1 ja C2 soovitatav vahemik kristallidega kasutamiseks (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 |
Märkused: Seda valikut ei tohiks kasutada kristallide, vaid keraamiliste resonaatorite puhul.
Ostsillaator võib töötada kolmes erinevas režiimis, millest igaüks on optimeeritud kindla sagedusala jaoks. Töörežiimi valivad kaitsmed CKSEL [3: 1], nagu on näidatud joonisel Tabel 6-12.
Kaitsmed CKSEL0 koos SUT [1: 0] kaitsmetega valivad käivitamisajad vastavalt joonisele Tabel 6-13.
Tabel 6-13. Kristallostsillaatorkella valimise käivitusajad
CKSEL0 | SUT[1:0] | Käivitamise aeg alates väljalülitamisest | Lähtestamise täiendav viivitus | Soovitatav kasutamine |
0 | 00 | 258 CK(1) | 14CK + 4 ms | Keraamiline resonaator, kiiresti tõusev jõud |
0 | 01 | 258 CK(1) | 14CK + 64 ms | Keraamiline resonaator, aeglaselt tõusev jõud |
0 | 10 | 1K (1024) CK(2) | 14CK | Keraamiline resonaator, BOD lubatud |
0 | 11 | 1K (1024) CK(2) | 14CK + 4 ms | Keraamiline resonaator, kiiresti tõusev jõud |
1 | 00 | 1K (1024) CK(2) | 14CK + 64 ms | Keraamiline resonaator, aeglaselt tõusev jõud |
1 | 01 | 16K (16384) CK | 14CK | Kristalli ostsillaator, BOD lubatud |
1 | 10 | 16K (16384) CK | 14CK + 4 ms | Kristalli ostsillaator, kiiresti tõusev jõud |
1 | 11 | 16K (16384) CK | 14CK + 64 ms | Kristall-ostsillaator, aeglaselt tõusev jõud |
Märkmed
Neid suvandeid tuleks kasutada ainult siis, kui need ei tööta seadme maksimaalse sageduse lähedal, ja ainult siis, kui sageduse stabiilsus käivitamisel pole rakenduse jaoks oluline. Need valikud ei sobi kristallide jaoks.
Need valikud on mõeldud kasutamiseks keraamiliste resonaatoritega ja tagavad käivitamisel sageduse stabiilsuse. Neid saab kasutada ka kristallidega, kui need ei tööta seadme maksimaalse sageduse lähedal ning kui sageduse stabiilsus käivitamisel ei ole rakenduse jaoks oluline.
Kella vaikeallikas
Seadme tarnimisel on programmeeritud CKSEL = “0010”, SUT = “10” ja CKDIV8. Seepärast on kellaallika vaikeseadeks sisemine RC-ostsillaator, mis töötab sagedusel 8 MHz, pikima käivitusajaga ja esialgse süsteemi kella eelseadistusega 8, mille tulemuseks on 1.0 MHz süsteemikell. See vaikeseade tagab, et kõik kasutajad saavad teha oma soovitud kellaallika seadistuse süsteemisiseste või suure mahuga seadete abiltage Programmeerija.
Süsteemi kella eelseade
ATtiny25 / 45/85 süsteemi kella saab jagada, seadistades “CLKPR - kellade eelkaltide register” lk 32. Seda funktsiooni saab kasutada energiatarbimise vähendamiseks, kui töötlemisvõimsuse nõue on madal. Seda saab kasutada kõigi kellaallika suvanditega ja see mõjutab protsessori ja kõigi sünkroonsete välisseadmete taktsagedust. clkI/O, clkADC, clkCPU ja clkFLASH jagatakse teguriga, nagu näidatud Tabel 6-15 lk 33.
Vahetusaeg
Eeskaaleri seadete vahel vahetamisel tagab süsteemikella eelkalkulaator, et kellasüsteemis ei toimuks tõrkeid ja et ükski vahesagedus ei oleks kõrgem kui eelmisele seadistusele vastav kellasagedus ega uuele seadistusele vastav kella sagedus.
Eelskaalat rakendav pulsatsiooniloendur töötab jagamata kella sagedusel, mis võib olla kiirem kui protsessori taktsagedus. Seega pole eelskaala olekut võimalik kindlaks teha - isegi kui see oleks loetav ja täpset aega, mis kulub ühelt kellajaotiselt teisele üleminekuks, ei saa täpselt ennustada.
Alates CLKPS-i väärtuste kirjutamisest kulub T1 + T2 ja T1 + 2 * T2 vahel, enne kui uus kella sagedus on aktiivne. Selles intervallis toodetakse 2 aktiivset kella serva. Siin on T1 eelmine taktiperiood ja T2 on ajavahemik, mis vastab uuele eelskaala seadele.
Kella väljundpuhver
Seade suudab väljastada süsteemi kella CLKO tihvtil (kui seda ei kasutata XTAL2 tihvtina). Väljundi lubamiseks tuleb programmeerida CKOUT-kaitse. See režiim sobib, kui kiibikella kasutatakse süsteemi muude ahelate juhtimiseks. Pange tähele, et lähtestamise ajal kella ei väljastata ja kaitsme programmeerimisel tühistatakse sisend- / väljundnupu tavapärane töö. Sisemist RC-ostsillaatorit, WDT-ostsillaatorit, PLL-i ja välist kella (CLKI) saab valida, kui kell väljastatakse CLKO-l. Kristall-ostsillaatoreid (XTAL1, XTAL2) ei saa CLKO-s kella väljundiks kasutada. Kui kasutatakse System Clock Prescalerit, väljastatakse jagatud süsteemikell.
Registreeri kirjeldus
OSCCAL - ostsillaatori kalibreerimisregister
Natuke | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x31 | CAL7 | CAL6 | CAL5 | CAL4 | CAL3 | CAL2 | CAL1 | CAL0 | OSCCAL |
Loe/kirjuta | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
Bitid 7: 0 - CAL [7: 0]: ostsillaatori kalibreerimise väärtus
Ostsillaatori kalibreerimisregistrit kasutatakse kalibreeritud sisemise RC-ostsillaatori kärpimiseks, et eemaldada protsessi variatsioonid ostsillaatori sageduselt. Eelprogrammeeritud kalibreerimisväärtus kirjutatakse kiibi lähtestamise ajal sellesse registrisse automaatselt, andes tehases kalibreeritud sageduse vastavalt Tabel 21-2 lk 164. Rakendustarkvara saab selle registri kirjutada ostsillaatori sageduse muutmiseks. Ostsillaatorit saab kalibreerida sagedustele, nagu on määratletud punktis Tabel 21-2 lk 164. Kalibreerimine väljaspool seda vahemikku ei ole tagatud.
Pange tähele, et seda ostsillaatorit kasutatakse EEPROM-i ja Flashi kirjutusjuurdepääsude ajastamiseks ning need kirjutamisajad mõjutatakse vastavalt. Kui EEPROM või Flash on kirjutatud, ärge kalibreerige üle 8.8 MHz. Vastasel juhul võib EEPROM või Flash kirjutamine ebaõnnestuda.
CAL7-bit määrab ostsillaatori tööpiirkonna. Selle biti seadmine 0 annab madalaima sagedusala, selle biti määramine 1 annab kõrgeima sagedusala. Need kaks sagedusvahemikku kattuvad, teisisõnu annab OSCCAL = 0x7F seadistus suurema sageduse kui OSCCAL = 0x80.
CAL [6: 0] bitte kasutatakse sageduse häälestamiseks valitud vahemikus. Seade 0x00 annab selle vahemiku madalaima sageduse ja vahemikus 0x7F kõrgeima sageduse.
MCU stabiilse töö tagamiseks tuleks kalibreerimisväärtust muuta väiksena. Üle 2% sageduse kõikumine tsüklist teise võib põhjustada ettearvamatu käitumise. Muutused OSCCAL-is ei tohiks iga kalibreerimise korral ületada 0x20. Selliste kellasageduse muutuste ajal tuleb tagada MCU hoidmine lähtestamises
Tabel 6-14. Sisemine RC-ostsillaatori sagedusvahemik
OSCCALi väärtus | Tüüpiline madalaim sagedus nominaalsageduse suhtes | Tüüpiline kõrgeim sagedus nominaalsageduse suhtes |
0x00 | 50% | 100% |
0x3F | 75% | 150% |
0x7F | 100% | 200% |
CLKPR - kellade eelkaalude register
Natuke | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x26 | CLKPCE | – | – | – | CLKPS3 | CLKPS2 | CLKPS1 | CLKPS0 | CLKPR |
Loe/kirjuta | R/W | R | R | R | R/W | R/W | R/W | R/W |
Algväärtus 0 0 0 0 Vt biti kirjeldust
Bits 7 - CLKPCE: Kella eelkaaleri muutmise lubamine
CLKPCE-bitide muutmise võimaldamiseks tuleb CLKPCE-bit kirjutada loogilisse üks. CLKPCE-bitti värskendatakse ainult siis, kui ülejäänud CLKPR-i bitid kirjutatakse samaaegselt nulli. CLKPCE puhastatakse riistvaral neli tsüklit pärast selle kirjutamist või kui CLKPS-i bitid on kirjutatud. CLKPCE-biti ümberkirjutamine selle ajalõpu perioodi jooksul ei pikenda ajalõpu perioodi ega kustuta CLKPCE-bitti.
Bitid 6: 4 - Res: reserveeritud bitid
Need bitid on ATtiny25 / 45/85 reserveeritud bitid ja loetakse alati nulliks.
Bitid 3: 0 - CLKPS [3: 0]: kella eelkalkulaator valige bitid 3 - 0
Need bitid määravad jaotusteguri valitud kella allika ja süsteemi sisemise kella vahel. Neid bitte saab kirjutada tööajaga, et muuta kella sagedust vastavalt rakenduse nõuetele. Kuna jagaja jagab põhikella sisendi MCU-le, väheneb jagamisteguri kasutamisel kõigi sünkroonsete välisseadmete kiirus. Jaotustegurid on toodud Tabel 6-15.
Tahtmatu taktsageduse muutuste vältimiseks tuleb CLKPS-i bittide muutmiseks järgida spetsiaalset kirjutamisprotseduuri:
Kirjutage bitt Clock Prescaler Change Enable (CLKPCE) ühele ja kõik muud CLKPR-i bittidele null.
Nelja tsükli jooksul kirjutage soovitud väärtus CLKPS-ile, kirjutades samal ajal nulli CLKPCE-le.
Eeskalkeri sätete muutmisel tuleb katkestused keelata, et kirjutamisprotseduur ei katkeks.
CKDIV8 kaitsme määrab CLKPS-i bittide algväärtuse. Kui CKDIV8 on programmeerimata, lähtestatakse CLKPS-i bitid väärtusele 0000. Kui CKDIV8 on programmeeritud, lähtestatakse CLKPS-i bitid väärtusele "0011", mis annab käivitamisel jagamisteguriks kaheksa. Seda funktsiooni tuleks kasutada juhul, kui valitud kellaallika sagedus on kõrgem kui seadme maksimaalne sagedus praegustes töötingimustes. Pange tähele, et CLKPS-i bittidesse saab kirjutada mis tahes väärtuse, olenemata CKDIV8 kaitsme seadistusest. Rakendustarkvara peab tagama piisava jaotusteguri olemasolu
valitud juhul, kui valitud taktiallikal on praegustes töötingimustes kõrgem sagedus kui seadme maksimaalsel sagedusel. Seadet tarnitakse koos programmeeritud CKDIV8 kaitsmega.
Tabel 6-15. Kella eelskaalaja valimine
CLKPS3 | CLKPS2 | CLKPS1 | CLKPS0 | Kellajaotustegur |
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 | Reserveeritud |
1 | 0 | 1 | 0 | Reserveeritud |
1 | 0 | 1 | 1 | Reserveeritud |
1 | 1 | 0 | 0 | Reserveeritud |
1 | 1 | 0 | 1 | Reserveeritud |
1 | 1 | 1 | 0 | Reserveeritud |
1 | 1 | 1 | 1 | Reserveeritud |
Märkus. Eelskaalaja on ATtiny15 ühilduvusrežiimis keelatud ja ei CLKPR-i kirjutamine ega CKDIV8 kaitsme programmeerimine ei mõjuta süsteemi kella (mis on alati 1.6 MHz).
Toitehaldus ja unerežiimid
Kõrge jõudlus ja valdkonna juhtiv kooditõhusus muudavad AVR mikrokontrollerid ideaalseks valikuks väikese energiatarbega rakenduste jaoks. Lisaks võimaldavad unerežiimid rakendusel MCU kasutamata moodulid välja lülitada, säästes seeläbi energiat. AVR pakub erinevaid unerežiime, mis võimaldavad kasutajal kohandada energiatarbimist vastavalt rakenduse nõuetele.
Unerežiimid
Joonis 6-1 lk 23 tutvustab ATtiny25 / 45/85 erinevaid kellasüsteeme ja nende jaotust. Joonis on abiks sobiva unerežiimi valimisel. Tabel 7-1 näitab erinevaid unerežiime ja nende ärkamise allikaid.
Tabel 7-1. Aktiivse kella domeenid ja äratusallikad erinevates puhkerežiimides
Aktiivsed kelladomeenid | Ostsillaatorid | Äratusallikad | ||||||||||
Puhkerežiim | clkCPU | clkFLASH | clkIO | clkADC | clkPCK | Põhikella allikas on lubatud | INT0 ja tihvtivahetus | SPM / EEPROM
Valmis |
USI starditingimus |
ADC | Muu I/O | Valvekoer Katkestada |
Tühikäik | X | X | X | X | X | X | X | X | X | X | ||
ADC müra vähendamine | X | X | X(1) | X | X | X | X | |||||
Väljalülitus | X(1) | X | X |
Märkus: INT0 puhul ainult taseme katkestus.
Kolmest unerežiimist suvalisse režiimi sisenemiseks tuleb MCUCR-i SE-bitt kirjutada loogikaks ja käivitada SLEEP-käsk. MCUCR-i registri SM-i bitid [1: 0] valivad, milline unerežiim (tühikäigul, ADC müra vähendamine või väljalülitamine) SLEEP-käsu abil aktiveeritakse. Vaata Tabel 7-2 kokkuvõtte saamiseks.
Kui lubatud katkestus toimub siis, kui MCU on unerežiimis, ärkab MCU üles. Seejärel peatatakse MCU neljaks tsükliks lisaks käivitusajale, käivitatakse katkestusrutiin ja jätkatakse täitmist vastavalt juhisele SLEEP. Registri sisu File ja SRAM ei muutu, kui seade unest ärkab. Kui unerežiimi ajal lähtestatakse, ärkab MCU ja käivitab selle lähtestusvektorist.
Märkus: kui äratamiseks kasutatakse taseme käivitatud katkestust, tuleb muudetud taset mõnda aega hoida, et MCU äratada (ja MCU sisenemiseks katkestuse teenuse rutiini). Vaata “Välised katkestused” lk 49 üksikasjade saamiseks.
Ooterežiim
Kui SM[1:0] bitid kirjutatakse 00-ks, paneb SLEEP-käsk MCU jõuderežiimi, peatades protsessori, kuid võimaldades analoogkomparaatoril, ADC-l, USI-l, taimeril/loenduril, valvekoeral ja katkestussüsteemil tööd jätkata. söömine. See puhkerežiim peatab põhimõtteliselt clkCPU ja clkFLASHi, võimaldades samal ajal teistel kelladel töötada.
Ooterežiim võimaldab MCU-l ärgata nii välistest käivitatud katkestustest kui ka sisemistest, näiteks taimeri ülevoolust. Kui analoog-komparaatori katkestust ei ole vaja äratada, saab analoog-komparaatori välja lülitada, seadistades ACD-biti “ACSR - analoogvõrdleja juhtimis- ja olekuregister” lk 120. See vähendab energiatarbimist ooterežiimis. Kui ADC on lubatud, algab selle režiimi sisestamisel teisendamine automaatselt.
ADC müra vähendamise režiim
Kui SM[1:0] bitid kirjutatakse väärtusele 01, paneb SLEEP käsk MCU lülituma ADC müravähendusrežiimi, peatades CPU, kuid lubades ADC-l, välistel katkestustel ja valvekoeral tööd jätkata (kui see on lubatud). See puhkerežiim peatab clkI/O, clkCPU ja clkFLASH-i, võimaldades samal ajal teistel kelladel töötada.
See parandab ADC müra keskkonda, võimaldades suurema eraldusvõimega mõõtmisi. Kui ADC on lubatud, algab selle režiimi sisestamisel teisendamine automaatselt. Peale ADC teisendamise täieliku katkestuse võivad MCU ADC müra vähendamisest äratada ainult väline lähtestamine, valvekoera lähtestamine, tühjenemise lähtestamine, SPM / EEPROM-i valmis katkestus, välise taseme katkestus INT0-l või tihvtivahetuse katkestus. režiimis.
Väljalülitusrežiim
Kui SM [1: 0] bitid kirjutatakse kümnesse, paneb SLEEP käsk MCU lülituma väljalülitusrežiimi. Selles režiimis peatatakse ostsillaator, samal ajal kui väline katkestab, USI alustamise tingimuste tuvastamine ja valvekoer töötavad edasi (kui see on lubatud). Ainult väline lähtestamine, valvekoera lähtestamine, tühjenenud lähtestamine, USI käivitamise katkestus, INT10 välise taseme katkestus või tihvtivahetuse katkestus võivad MCU üles äratada. See unerežiim peatab kõik loodud kellad, võimaldades töötada ainult asünkroonseid mooduleid.
Tarkvara BOD keelata
Kui BODLEVELi sulavkaitsed lubavad pruuni anduri (BOD) (vt Tabel 20-4 lk 148), jälgib BOD aktiivselt pakkumise mahtutage uneajal. Mõnes seadmes on võimalik energiat säästa, lülitades BOD välja lülitatud puhkeolekus oleva tarkvara abil. Unerežiimi energiatarve on siis samal tasemel kui siis, kui BOD on üleüldiselt kaitsmetega välja lülitatud.
Kui BOD on tarkvara poolt keelatud, lülitatakse BOD-funktsioon kohe pärast puhkerežiimi sisenemist välja. Unerežiimist ärgates aktiveeritakse BOD automaatselt uuesti. See tagab ohutu töö juhuks, kui VCC tase on uneperioodil langenud.
Kui BOD on keelatud, on unerežiimist ärkamisaeg sama, mis RESET-st ärkamisel. Kasutaja peab käsitsi konfigureerima ärkamisajad nii, et ribalaiuse viitel oleks aega alustada ja BOD töötab õigesti, enne kui MCU jätkab koodi täitmist. Vaadake tabelis SUT [1: 0] ja CKSEL [3: 0] kaitsmebitte “Kaitsme madal bait” lk 149
BOD-i keelamist juhib MCU juhtimisregistri BODS (BOD Sleep) bit, vt „MCUCR - MCU juhtimine Registreeru ”lk 37. Selle biti ühele kirjutamine lülitab BOD Power-Downis välja, nulli kirjutamine aga hoiab BOD-d aktiivsena. Vaikeseade on null, st BOD on aktiivne.
BODS-i kirjutamist juhib ajastatud järjestus ja lubamisbit, vt „MCUCR - MCU juhtimise register ter ”lk 37.
Piirangud
BOD-i keelamise funktsionaalsust on rakendatud ainult järgmistes seadmetes:
ATtiny25, versioon E ja uuem
ATtiny45, versioon D ja uuem
ATtiny85, versioon C ja uuem
Redaktsioonid on märgitud seadme pakendile ja asuvad järgmiselt:
Pakendite 8P3 ja 8S2 alumine külg
Pakendi 20M1 ülemine külg
Võimsuse vähendamise register
Võimsuse vähendamise register (PRR), vt “PRR - toite vähendamise register” lk 38pakub meetodit energiatarbimise vähendamiseks, peatades kella üksikute välisseadmete jaoks. Välisseadme praegune olek on külmunud ja sisend- / väljundregistreid ei saa lugeda ega kirjutada. Ressursid, mida välisseade kella peatamisel kasutab, jäävad hõivatud, mistõttu tuleks välisseade enamasti enne kella peatamist keelata. Mooduli äratamine, mis toimub PRR-is bitti puhastades, paneb mooduli samasse olekusse kui enne väljalülitamist.
Mooduli väljalülitamist saab kasutada ooterežiimis ja aktiivses režiimis, et vähendada üldist energiatarbimist. Kõigis muudes unerežiimides on kell juba peatatud. Vaata “Sisend- / väljundmoodulite toitevool” lk 177 ntampvähem.
Elektritarbimise minimeerimine
AVR-juhitava süsteemi energiatarbimise minimeerimiseks tuleb arvestada mitmete küsimustega. Üldiselt tuleks unerežiime kasutada nii palju kui võimalik ja unerežiim tuleks valida nii, et töötaks võimalikult vähe seadme funktsioone. Kõik funktsioonid, mida pole vaja, tuleks keelata. Eelkõige võivad järgmised moodulid vajada erilist tähelepanu, kui üritate saavutada võimalikult madalat energiatarbimist.
Analoog-digitaalmuundur
Kui see on lubatud, on ADC lubatud kõigis unerežiimides. Energia säästmiseks tuleks ADC enne mis tahes unerežiimi sisenemist keelata. Kui ADC on välja lülitatud ja uuesti sisse lülitatud, on järgmine teisendus laiendatud teisendus. Viitama “Analoog-digitaalmuundur” lk 122 üksikasjad ADC töö kohta.
Analoogvõrdleja
Ooterežiimi sisenemisel tuleks analoogvõrdleja välja lülitada, kui seda ei kasutata. ADC müravähendusrežiimi sisenemisel tuleks analoogvõrdleja keelata. Teistes unerežiimides on analoogvõrdleja automaatselt välja lülitatud. Kui aga analoogvõrdleja on seadistatud kasutama sisemist voltage Sisendina tuleks analoogvõrdleja kõikides unerežiimides välja lülitada. Vastasel juhul ilmub sisemine kdtage Viide on lubatud, sõltumata unerežiimist. Viitama “Analoogvõrdleja” lk 119 üksikasjad analoog-komparaatori seadistamise kohta.
Pruuni värvi detektor
Kui rakenduses pole vaja pruuni andurit, tuleks see moodul välja lülitada. Kui BODLEVEL-kaitsmed on lubanud pruuni anduri, on see lubatud kõigis unerežiimides ja tarbib seega alati energiat. Sügavamates unerežiimides aitab see märkimisväärselt kaasa kogu voolutarbimisele. Vaata “Välja pruun “lk 41 ja „Tarkvara BOD keelamine” lk 35 üksikasjad selle kohta, kuidas konfigureerida Brown-out Detector.
Internal Voltage Viide
The Internal Voltage Viide lubatakse, kui seda nõuab pruunikasvutuvastus, analoogvõrdleja või ADC. Kui need moodulid on välja lülitatud, nagu on kirjeldatud ülaltoodud jaotistes, siis sisemine voltagViide keelatakse ja see ei tarbi energiat. Uuesti sisselülitamisel peab kasutaja lubama viite käivitumise enne väljundi kasutamist. Kui viide jääb unerežiimis sisse, saab väljundit kohe kasutada. Viitama „Sisemine kdtage Viide ”lk 42 üksikasjad käivitamise aja kohta.
Valvekoera taimer
Kui valvekoera taimerit pole rakenduses vaja, tuleks see moodul välja lülitada. Kui valvekoera taimer on lubatud, on see lubatud kõigis unerežiimides ja seepärast tarbige alati energiat. Sügavamates unerežiimides aitab see märkimisväärselt kaasa kogu voolutarbimisele. Viitama “Valvekoera taimer” lk 42 valvekoera taimeri seadistamise üksikasjad.
Sadama tihvtid
Unerežiimi sisenemisel peavad kõik pordi viivad olema konfigureeritud kasutama minimaalset energiat. Kõige tähtsam on siis tagada, et ükski tihvt ei juhiks takistuslikku koormust. Puhkerežiimides, kus nii I/O-kell (clkI/O) kui ka ADC-kell (clkADC) on peatatud, blokeeritakse seadme sisendpuhvrid. See tagab, et elektrit ei tarbita
sisendloogika järgi, kui seda pole vaja. Mõnel juhul on ärkamistingimuste tuvastamiseks vaja sisendloogikat ja
siis see lubatakse. Vaadake jaotist “Digitaalse sisendi lubamine ja unerežiimid” lk 57 üksikasjaliku teabe saamiseks selle kohta, millised tihvtid on lubatud. Kui sisendpuhver on lubatud ja sisendsignaal jäetakse vedelema või selle analoogsignaali tase on VCC/2-le lähedal, kasutab sisendpuhver liigset võimsust.
Analoogsisendi viigude puhul tuleks digitaalsisendi puhver alati välja lülitada. VCC/2-le lähedane analoogsignaali tase sisendviigul võib põhjustada märkimisväärset voolu isegi aktiivses režiimis. Digitaalseid sisendpuhvreid saab keelata, kirjutades digitaalsisendi keelamisregistrisse (DIDR0). Viitama “DIDR0 - digitaalse sisendi keelamise register 0” lk 121 üksikasjade saamiseks.
Registreeri kirjeldus
MCUCR - MCU juhtimisregister
MCU juhtimisregister sisaldab toitehalduse juhtbitte.
Natuke | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | BODS | PUD | SE | SM1 | SM0 | BODSE | ISC01 | ISC00 | MCUCR |
Loe/kirjuta | R | R/W | R/W | R/W | R/W | R | R/W | R/W | |
Algväärtus | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bits 7 - BODS: BOD Sleep
BOD-i keelamise funktsioon on saadaval ainult mõnes seadmes. Vaata “Piirangud” lk 36.
BHT keelamiseks une ajal (vt Tabel 7-1 lk 34) BODS-bit tuleb kirjutada loogiliseks. Seda juhib ajastatud järjestus ja MCUCR-i lubamisbit, BODSE. Esiteks tuleb nii BODS kui ka BODSE seadistada ühele. Teiseks tuleb nelja taktsükli jooksul BODS seada üks ja BODSE nullida. BODS-bit on pärast seadistamist aktiivne kolm taktsüklit. Unerežiim tuleb käivitada, kui BODS on aktiivne, et BOD välja lülitada tegeliku unerežiimi jaoks. BODS-bit kustutatakse pärast kolme taktsüklit automaatselt.
Seadmetes, kus magavat BOD-i pole rakendatud, on see bitt kasutamata ja loeb alati nulli.
Bitt 5 - SE: unerežiimi lubamine
SE-bitt tuleb kirjutada loogikasse, et MCU lülituks SLEEP-käsu täitmisel unerežiimi. Vältimaks MCU lülitumist unerežiimile, välja arvatud juhul, kui see on programmeerija eesmärk, on soovitatav Sleep Enable (SE) bitt kirjutada ühele vahetult enne SLEEP käsu täitmist ja kustutada see kohe pärast ärkamist.
Bitid 4: 3 - SM [1: 0]: Unerežiim Valige bitid 1 ja 0
Need bitid valivad kolme saadaoleva unerežiimi vahel, nagu on näidatud joonisel Tabel 7-2.
Tabel 7-2. Unerežiimi valimine
SM1 | SM0 | Puhkerežiim |
0 | 0 | Tühikäik |
0 | 1 | ADC müra vähendamine |
1 | 0 | Väljalülitus |
1 | 1 | Reserveeritud |
Bits 2 - BODSE: BOD Sleep Enable
BOD-i keelamise funktsioon on saadaval ainult mõnes seadmes. Vaata “Piirangud” lk 36.
BODSE-bitt võimaldab BODS-i juhtbiti seadistamist, nagu on selgitatud BODS-biti kirjelduses. BOD-i keelamist kontrollib ajastatud järjestus.
Seda bitti ei kasutata seadmetes, kus tarkvara BOD-i keelamine pole rakendatud, ja loetakse nendes seadmetes nulliks.
PRR - võimsuse vähendamise register
Võimsuse vähendamise register pakub meetodit energiatarbimise vähendamiseks, lubades perifeersete kellasignaalide keelamise.
Natuke | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x20 | – | – | – | – | PRIM1 | PRIM0 | PRUSI | PRADC | PRR |
Loe/kirjuta | R | R | R | R | R/W | R/W | R/W | R/W | |
Algväärtus | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bitid 7: 4 - Res: reserveeritud bitid
Need bitid on ATtiny25 / 45/85 reserveeritud bitid ja loetakse alati nulliks.
Bitt 3 - PRTIM1: võimsuse vähendamise taimer / loendur1
Sellele bitile loogikakirjutamine lülitab mooduli Taimer / Loendur1 välja. Kui Taimer / Loendur1 on lubatud, jätkub töö nagu enne väljalülitamist.
Bitt 2 - PRTIM0: võimsuse vähendamise taimer / loendur0
Sellele bitile loogikakirjutamine lülitab mooduli Taimer / Loendur0 välja. Kui Taimer / Loendur0 on lubatud, jätkub töö nagu enne väljalülitamist.
Bitt 1 - PRUSI: võimsuse vähendamine USI
Sellele bitile loogika kirjutamine lülitab USI välja, peatades kella mooduli juurde. Uue kasutajaliidese äratamisel tuleks korralik töö tagamiseks taastada.
Bitt 0 - PRADC: võimsuse vähendamise ADC
Sellele bitile loogika kirjutamine lülitab ADC välja. Enne sulgemist tuleb ADC keelata. Pange tähele, et ADC kella kasutatakse ka mõnes analoog-komparaatori osas, mis tähendab, et analoog-komparaatorit ei saa kasutada, kui see bitt on kõrge.
Süsteemi juhtimine ja lähtestamine
AVR-i lähtestamine
Lähtestamise ajal seatakse kõik sisend- / väljundregistrid oma algväärtustele ja programm käivitab lähtestamise lähtestamise abil. Lähtestusvektorile paigutatud käsk peab olema RJMP - suhteline hüpe - lähtestamise käsitsemise rutiin. Kui programm ei võimalda kunagi katkestuse allikat, ei kasutata katkestusvektoreid ja nendesse kohtadesse saab paigutada tavalise programmikoodi. Skeem sisse Joonis 8-1 näitab lähtestamise loogikat. Lähtestusahelate elektrilised parameetrid on toodud punktis “Süsteemi ja lähtestage omadused” lk 165.
Joonis 8-1 Lähtestamise loogika
Kui lähtestusallikas aktiveerub, lähtestatakse AVR-i sisend- / väljundporti kohe algsesse olekusse. See ei nõua kella allika töötamist.
Kui kõik lähtestusallikad on passiivseks muutunud, käivitatakse viivituste loendur, mis venitab sisemist lähtestamist. See võimaldab jõul jõuda stabiilsele tasemele enne normaalse töö alustamist. Viivituse loenduri aegumise perioodi määrab kasutaja SUT- ja CKSEL-kaitsmete kaudu. Viivituse erinevad valikud on esitatud "Kell Allikad ”lk 25.
Lähtete lähtestamine
ATtiny25 / 45/85-l on neli lähtestamise allikat:
Sisselülitamise lähtestamine. MCU lähtestatakse, kui toitepingetage on alla sisselülitamise lähtestamise läve (VPOT).
Väline lähtestamine. MCU lähtestatakse, kui RESET-tihvtil on madalam pulsi pikkusest kauem.
Valvekoera lähtestamine. MCU lähtestatakse, kui valvekoera taimeri periood lõpeb ja valvekoer on lubatud.
Pruunikasutus Lähtesta. MCU lähtestatakse, kui toitepingetage VCC on alla Brown-out lähtestamise läve (VBOT) ja Brown-out detektor on lubatud.
Sisselülitamise lähtestamine
Sisselülitamise lähtestamise (POR) impulss genereeritakse kiibil oleva tuvastusahelaga. Tuvastustase on määratletud punktis „Süsteem- ja lähtestage omadused ”lk 165. POR aktiveeritakse alati, kui VCC on tuvastustasemest madalam. POR-ahelat saab kasutada nii käivitamise lähtestamise käivitamiseks kui ka toitemahu rikke tuvastamisekstage.
Toite sisselülitamise (POR) ahel tagab seadme sisselülitamisest lähtestamise. Power-on Reset künnise saavutamine voltage kutsub esile viivitusloenduri, mis määrab, kui kaua seadet pärast VCC tõusu režiimis RESET hoitakse. RESET-signaal aktiveerub uuesti ilma viivituseta, kui VCC langeb allapoole tuvastamistasemet.
Joonis 8-2. MCU käivitamine, RESET Seotud VCC-ga
SISEMINE RESET
Joonis 8-3. MCU käivitamine, RESET Väliselt laiendatud
Väline lähtestamine
Välise lähtestamise tekitab RESET tihvti madal tase, kui see on lubatud. Lähtestage minimaalsest impulsi laiusest pikemad impulsid (vt “Süsteemi ja lähtestage omadused” lk 165) genereerib lähtestamise, isegi kui kell ei tööta. Lühemate impulsside puhul ei tagata lähtestamist. Kui rakendatud signaal jõuab lähtestusläve voltage – VRST – selle positiivsel serval käivitab viiteloendur MCU pärast Time-out perioodi möödumist.
Joonis 8-4. Väline lähtestamine töötamise ajal
Varjatud tuvastamine
ATtiny25/45/85-l on on-chip Brown-out Detection (BOD) ahel VCC taseme jälgimiseks töö ajal, võrreldes seda fikseeritud käivitustasemega. BOD-i käivitustaseme saab valida BODLEVEL-kaitsmete abil. Käivitustasemel on hüsterees, et tagada piikideta Brown-out tuvastamine. Tuvastamistaseme hüstereesi tuleks tõlgendada kui VBOT+ = VBOT + VHYST/2 ja VBOT- = VBOT – VHYST/2.
Kui BOD on lubatud ja VCC väheneb väärtuseni, mis on alla käivitustaseme (VBOT-in Joonis 8-5), aktiveeritakse koheselt Brown-out Reset. Kui VCC tõuseb üle käivitustaseme (VBOT+ in Joonis 8-5), käivitab viivitusloendur MCU pärast ajalõpuperioodi tTOUT möödumist.
BOD-ahel tuvastab VCC languse ainult siis, kui voltage jääb käivitustasemest allapoole kauem kui tBOD, mis on antud “Süsteemi ja lähtestage omadused” lk 165.
Valvekoera lähtestamine
Kui Watchdog aegub, genereerib see lühikese lähtestusimpulsi ühe CK-tsükli kestusega. Selle impulsi langeval serval hakkab viitetaimer lugema ajalõpuperioodi tTOUT. Viitama “Valvekoera taimer” lk 42 üksikasjad valvekoera taimeri töö kohta.
Voltage Viide Luba signaalid ja käivitusaeg
VoltagViidal on käivitusaeg, mis võib mõjutada selle kasutamist. Käivitamise aeg on antud “Süsteemi ja lähtestage omadused” lk 165. Energia säästmiseks pole viide alati sisse lülitatud. Viide on sisse lülitatud järgmistes olukordades:
Kui BOD on lubatud (programmeerides BODLEVEL [2: 0] kaitsmebitte).
Kui ribalaiuse viide on ühendatud analoog-komparaatoriga (seadistades ACBG-biti ACSR-i).
Kui ADC on lubatud.
Seega, kui BOD pole lubatud, peab kasutaja pärast ACBG-biti seadistamist või ADC-i lubamist alati laskma viitel käivituda enne, kui kasutatakse analoog-komparaatori või ADC väljundit. Tarbimise vähendamiseks väljalülitusrežiimis saab kasutaja vältida kolme ülaltoodud tingimust, et tagada viide välja lülitamine enne väljalülitusrežiimi sisenemist.
Valvekoera taimer
Valvekoera taimer on ajastatud kiibis oleval ostsillaatoril, mis töötab sagedusel 128 kHz. Valvekoera taimeriga eelkalteri juhtimisega saab valvekoera lähtestamise intervalli reguleerida vastavalt joonisele Tabel 8-3 lk 46. WDR - valvekoera lähtestamine - juhised lähtestavad valvekoera taimeri. Valvekoera taimer lähtestatakse ka siis, kui see on keelatud ja kiibi lähtestamine toimub. Lähtestamisperioodi määramiseks saab valida kümme erinevat taktsükli perioodi. Kui lähtestusperiood lõpeb ilma uue valvekoera lähtestamiseta, lähtestab ja käivitab ATtiny25 / 45/85 lähtestusvektori. Valvekoera lähtestamise ajastamise üksikasjad leiate aadressilt Tabel 8-3 lk 46.
Valvekoera taimeri saab konfigureerida lähtestamise asemel katkestuse loomiseks. See võib olla väga kasulik, kui kasutate valvekoera Power-Downist ärkamiseks.
Valvekoera tahtmatu blokeerimise või tahteaja muutmise vältimiseks valitakse kaitsme WDTON poolt kaks erinevat ohutustaset, nagu on näidatud Tabel 8-1 Viidata „Konfiguratsiooni muutmise ajastatud järjestused valvekoera taimeri kujundamine ”lk 43 üksikasjade saamiseks.
Tabel 8-1. WDT konfiguratsioon WDTONi kaitsmeseadete funktsioonina
WDTON | Ohutustase | WDT algolek | Kuidas WDT-d keelata | Kuidas muuta ajalõppu |
Programmeerimata | 1 | Keelatud | Ajastatud järjestus | Piiranguid pole |
Programmeeritud | 2 | Lubatud | Alati lubatud | Ajastatud järjestus |
Joonis 8-7. Valvekoera taimer
Ajastatud järjestused valvekoera taimeri konfiguratsiooni muutmiseks
Konfiguratsiooni muutmise järjestus erineb kahe ohutustaseme vahel veidi. Iga taseme jaoks on kirjeldatud eraldi protseduure.
Ohutustase 1: selles režiimis on Watchdog Timer algselt keelatud, kuid selle saab lubada, kirjutades WDE-biti ühele ilma piiranguteta. Lubatud Watchdog Timeri keelamisel on vaja ajastatud jada. Lubatud Watchdog Timeri keelamiseks tuleb järgida järgmist protseduuri.
Kirjutage samas toimingus loogika WDCE-le ja WDE-le. WDE-le tuleb kirjutada loogika, arvestamata WDE-biti eelmist väärtust.
Järgmise nelja taktsükli jooksul kirjutage samas operatsioonis WDE- ja WDP-bitid vastavalt soovile, kuid WDCE-bit on tühjendatud.
Ohutustase 2: selles režiimis on Watchdog Timer alati lubatud ja WDE bitti loetakse alati ühena. Ajastatud jada on vajalik valvekoera ajalõpu perioodi muutmisel. Watchdog Time-out'i muutmiseks tuleb järgida järgmist protseduuri:
Kirjutage samas toimingus loogiline WDCE-le ja WDE-le. Kuigi WDE on alati seatud, tuleb ajastatud järjestuse alustamiseks kirjutada WDE ühele.
Järgmise nelja taktsükli jooksul kirjutage samas toimingus WDP-bitid vastavalt soovile, kuid WDCE-bit on tühjendatud. WDE-bitile kirjutatud väärtus ei oma tähtsust.
Kood Näideample
Järgmine kood ntample näitab ühte sõlme ja ühte C -funktsiooni WDT väljalülitamiseks. Endineample eeldab, et katkestusi kontrollitakse (nt katkestuste globaalne keelamine), nii et nende funktsioonide täitmise ajal katkestusi ei toimu.
Kokkupanekukood Example(1) |
WDT_väljas:
wdr ; Tühjendage WDRF MCUSR-is ldi r16, (0< välja MCUSR, r16 ; Kirjutage loogiline WDCE ja WDE ; Hoidke vana eelskaala seade, et vältida tahtmatut valvekoera lähtestamist r16-s, WDTCR ori r16, (1< välja WDTCR, r16 ; Lülitage WDT välja ldi r16, (0< välja WDTCR, r16 ret |
C Kood Näideample(1) |
tühine WDT_off(tühine)
{ _WDR (); /* Tühjenda WDRF MCUSR-is */ MCUSR = 0x00 /* Kirjutage loogiline üksus WDCE-sse ja WDE-sse */ WDTCR |= (1< / * Lülita WDT välja * / WDTCR = 0x00; } |
Märkus: 1. Vt “Kood ntamples ”lk 6.
Registreeri kirjeldus
MCUSR - MCU olekuregister
MCU olekuregister annab teavet selle kohta, milline lähtestusallikas põhjustas MCU lähtestamise.
Natuke | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x34 | – | – | – | – | WDRF | BORF | EXTRF | PORF | MCUSR |
Loe/kirjuta | R | R | R | R | R/W | R/W | R/W | R/W |
Algväärtus 0 0 0 0 Vt biti kirjeldust
Bitid 7: 4 - Res: reserveeritud bitid
Need bitid on ATtiny25 / 45/85 reserveeritud bitid ja loetakse alati nulliks.
Bitt 3 - WDRF: valvekoera lähtestamise lipp
See bitt määratakse valvekoera lähtestamise korral. Biti lähtestab sisselülitamise lähtestamine või lipule loogilise nulli kirjutamine.
Bit 2 - BORF: tühjenenud lähtestamise lipp
See bitt on seatud juhul, kui toimub tühjenemine. Biti lähtestab sisselülitamise lähtestamine või lipule loogilise nulli kirjutamine.
Bitt 1 - EXTRF: välise lähtestamise lipp
See bitt määratakse, kui toimub väline lähtestamine. Biti lähtestab sisselülitamise lähtestamine või lipule loogilise nulli kirjutamine.
Bitt 0 - PORF: sisselülitamise lähtestamise lipp
See bitt määratakse, kui toimub sisselülitamise lähtestamine. Biti lähtestamine toimub ainult siis, kui kirjutate lipule loogilise nulli.
Lähtestamistingimuste tuvastamiseks lähtestamislippude kasutamiseks peaks kasutaja MCUSRi võimalikult varakult programmis lugema ja lähtestama. Kui register tühjendatakse enne uue lähtestamise toimumist, saab lähtestamise allika leida lähtestamislippide uurimisel.
WDTCR - valvekoera taimeri juhtimise register
Natuke | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x21 | WDIF | WDIE | WDP3 | WDCE | WDE | WDP2 | WDP1 | WDP0 | WDTCR |
Loe/kirjuta | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Algväärtus | 0 | 0 | 0 | 0 | X | 0 | 0 | 0 |
Bits 7 - WDIF: valvekoera ajalõpu katkestuse lipp
See bitt määratakse siis, kui valvekoera taimeril tekib ajalõpp ja valvuritaimer on konfigureeritud katkestamiseks. WDIF kustutatakse vastava katkestuste käitlemise vektori käivitamisel riistvaraliselt. Teise võimalusena kustutatakse WDIF, kirjutades lipule loogika. Kui I-bit SREG-is ja WDIE-s on seatud, käivitatakse valvekoera ajalõpp.
Bitt 6 - WDIE: valvekoera ajalõpu katkestuse lubamine
Kui see bitt on ühele kirjutatud, tühjendatakse WDE ja olekuregistri I-bitt on seatud, on valvekoera ajalõpu katkestus lubatud. Selles režiimis käivitatakse lähtestamise asemel vastav katkestus, kui valvekoera taimeris on ajalõpp.
Kui WDE on seatud, tühistab WDIE ajalõpu saabudes riistvara automaatselt. See on kasulik Watchdogi lähtestamise turvalisuse säilitamiseks katkestuse kasutamise ajal. Pärast WDIE-biti tühjendamist genereerib järgmine ajalõpp lähtestamise. Valvekoera lähtestamise vältimiseks tuleb pärast iga katkestust seadistada WDIE.
Tabel 8-2. Valvekoera taimeri konfiguratsioon
WDE | WDIE | Valvekoera taimeri olek | Aeg-ajalt toiming |
0 | 0 | Peatatud | Mitte ühtegi |
0 | 1 | Jooksmine | Katkestada |
1 | 0 | Jooksmine | Lähtesta |
1 | 1 | Jooksmine | Katkestada |
Bit 4 - WDCE: valvekoera muutmise lubamine
See bitt tuleb seadistada, kui WDE-bitt kirjutatakse loogika nulli. Vastasel juhul valvekoera ei keelata. Kui ühele on kirjutatud, puhastab riistvara selle natuke pärast nelja taktsüklit. Valvekoera keelamise protseduuri leiate WDE-biti kirjeldusest. See bitt tuleb seadistada ka eelskaala bittide muutmisel. Vaata „Ajastatud järjestused valvekoera taimeri konfiguratsiooni muutmiseks ”lk 43.
Bitt 3 - WDE: valvekoera lubamine
Kui WDE on kirjutatud loogiliseks, on valvekoera taimer lubatud ja kui WDE kirjutatakse loogilisse nulli, siis funktsioon Watchdog Timer keelatakse. WDE saab kustutada ainult siis, kui WDCE-bitil on esimene loogika tase. Lubatud valvekoera taimeri keelamiseks tuleb järgida järgmist protseduuri:
Kirjutage samas toimingus loogika WDCE-le ja WDE-le. WDE-sse tuleb kirjutada loogika, isegi kui see on enne keelamistoimingu alustamist üks.
Järgmise nelja taktsükli jooksul kirjutage WDE-le loogika 0. See keelab valvekoera.
2. ohutustasemel ei ole valvekoera taimerit võimalik keelata isegi ülalkirjeldatud algoritmi abil. Vaata „Valvekoera taimeri konfiguratsiooni muutmise ajastatud järjestused” lk 43.
1. ohutustasemel alistab WDE WDE-ga WUS-i MCUSR-is. Vaata “MCUSR - MCU olekuregister” lk 44 WDRF kirjeldamiseks. See tähendab, et WDRF-i seadistamisel määratakse alati WDE. WDE tühjendamiseks tuleb WDRF enne Watchdogi keelamist ülalkirjeldatud protseduuriga kustutada. See funktsioon tagab mitu lähtestamist rikke põhjustavate tingimuste korral ja turvalise käivitamise pärast rikke.
Märkus. Kui valvekoera taimerit rakenduses ei kasutata, on oluline seadme lähtestamisel läbida valvekoera keelamise protseduur. Kui Watchdog on kogemata lubatud, ntampKui jooksev osuti või pruunikas välja lülitatakse, lähtestatakse seade, mis omakorda viib uue valvekoera lähtestamiseni. Sellise olukorra vältimiseks peaks rakendustarkvara lähtestamisrutiinis alati kustutama WDRF lipu ja WDE juhtbiti.
Bitid 5, 2: 0 - WDP [3: 0]: valvekoera taimeri eelseade 3, 2, 1 ja 0
WDP [3: 0] bitid määravad valvekoera taimeri eelskaleerimise, kui valvekoera taimer on lubatud. Erinevad eelskaleerimise väärtused ja neile vastavad ajalõpu perioodid on näidatud Tabel 8-3.
Tabel 8-3. Watchdog Timer Prescale Select
WDP3 | WDP2 | WDP1 | WDP0 | WDT ostsillaatoritsüklite arv | Tüüpiline ajalõpp VCC juures = 5.0 V |
0 | 0 | 0 | 0 | 2K (2048) tsüklit | 16 ms |
0 | 0 | 0 | 1 | 4K (4096) tsüklit | 32 ms |
0 | 0 | 1 | 0 | 8K (8192) tsüklit | 64 ms |
0 | 0 | 1 | 1 | 16K (16384) tsüklit | 0.125 s |
0 | 1 | 0 | 0 | 32K (32764) tsüklit | 0.25 s |
0 | 1 | 0 | 1 | 64K (65536) tsüklit | 0.5 s |
0 | 1 | 1 | 0 | 128K (131072) tsüklit | 1.0 s |
0 | 1 | 1 | 1 | 256K (262144) tsüklit | 2.0 s |
1 | 0 | 0 | 0 | 512K (524288) tsüklit | 4.0 s |
1 | 0 | 0 | 1 | 1024K (1048576) tsüklit | 8.0 s |
Tabel 8-3. Watchdog Timer Prescale Select (jätkub)
WDP3 | WDP2 | WDP1 | WDP0 | WDT ostsillaatoritsüklite arv | Tüüpiline ajalõpp VCC juures = 5.0 V |
1 | 0 | 1 | 0 | Reserveeritud(1) | |
1 | 0 | 1 | 1 | ||
1 | 1 | 0 | 0 | ||
1 | 1 | 0 | 1 | ||
1 | 1 | 1 | 0 | ||
1 | 1 | 1 | 1 |
Märkus. 1. Kui see on valitud, kasutatakse üht kehtivatest sätetest, mis on allpool 0b1010.
Katkestab
Selles jaotises kirjeldatakse katkestuste käsitlemise spetsiifikat, nagu seda tehakse dokumendis ATtiny25 / 45/85. AVR-i katkestuste käsitlemise üldise selgituse leiate „Lähtestamine ja käsitsemise katkestamine” lk 12.
Katkestavad vektorid seadmes ATtiny25 / 45/85
ATtiny25 / 45/85 katkestusvektoreid on kirjeldatud Tabel 9-1allpool.
Tabel 9-1. Lähtestage ja katkestage vektorid
Vektori nr | Programmi aadress | Allikas | Katkesta määratlus |
1 | 0x0000 | RESET | Väline tihvt, sisselülitamise lähtestamine, tühjenemise lähtestamine, valvekoera lähtestamine |
2 | 0x0001 | INT0 | Väline katkestustaotlus 0 |
3 | 0x0002 | PCINT0 | PIN-koodi muutmise katkestamise taotlus 0 |
4 | 0x0003 | TIMER1_COMPA | Taimer / loendur1 Võrdle mängu A |
5 | 0x0004 | TIMER1_OVF | Taimer / loendur1 ülevool |
6 | 0x0005 | TIMER0_OVF | Taimer / loendur0 ülevool |
7 | 0x0006 | EE_RDY | EEPROM valmis |
8 | 0x0007 | ANA_COMP | Analoogvõrdleja |
9 | 0x0008 | ADC | ADC teisendamine on lõpule viidud |
10 | 0x0009 | TIMER1_COMPB | Taimer / loendur1 Võrdle mängu B |
11 | 0x000A | TIMER0_COMPA | Taimer / loendur0 Võrdle mängu A |
12 | 0x000B | TIMER0_COMPB | Taimer / loendur0 Võrdle mängu B |
13 | 0x000C | WDT | Valvekoera ajalõpp |
14 | 0x000D | USI_START | USI START |
15 | 0x000E | USI_OVF | USI ülevool |
Kui programm ei võimalda kunagi katkestuse allikat, ei kasutata katkestusvektoreid ja nendesse kohtadesse saab paigutada tavalise programmikoodi.
Tüüpiline ja üldine katkestusvektoriaadresside seadistus ATtiny25/45/85 on näidatud programmis example allpool.
Kokkupanekukood Example | ||
.org 0x0000 | ; Määra järgmise aadress | avaldus |
rjmp RESET | ; Aadress 0x0000 | |
rjmp INT0_ISR | ; Aadress 0x0001 | |
rjmp PCINT0_ISR | ; Aadress 0x0002 | |
rjmp TIM1_COMPA_ISR | ; Aadress 0x0003 | |
rjmp TIM1_OVF_ISR | ; Aadress 0x0004 | |
rjmp TIM0_OVF_ISR | ; Aadress 0x0005 | |
rjmp EE_RDY_ISR | ; Aadress 0x0006 | |
rjmp ANA_COMP_ISR | ; Aadress 0x0007 | |
rjmp ADC_ISR | ; Aadress 0x0008 | |
rjmp TIM1_COMPB_ISR | ; Aadress 0x0009 | |
rjmp TIM0_COMPA_ISR | ; Aadress 0x000A | |
rjmp TIM0_COMPB_ISR | ; Aadress 0x000B | |
rjmp WDT_ISR | ; Aadress 0x000C | |
rjmp USI_START_ISR | ; Aadress 0x000D | |
rjmp USI_OVF_ISR | ; Aadress 0x000E | |
Lähtesta: | ; Põhiprogrammi algus | |
; Aadress 0x000F | ||
… |
Märkus: vt “Kood ntamples ”lk 6.
Välised katkestused
Välised katkestused käivitatakse INT0 tihvti või mõne PCINT [5: 0] tihvti abil. Pange tähele, et kui see on lubatud, käivitavad katkestused ka siis, kui väljunditeks on konfigureeritud tihvtid INT0 või PCINT [5: 0]. See funktsioon annab võimaluse tarkvara katkestamiseks. Poldivahetus katkestab PCI, kui mõni lubatud PCINT [5: 0] tihvt vahetab. PCMSK registri juhtimine, millised tihvtid aitavad tihvti vahetada, katkestab. PCINT-i [5: 0] tihvtivahetuse katkestused tuvastatakse asünkroonselt. See tähendab, et neid katkestusi saab kasutada osa äratamiseks ka puhkerežiimidest peale ooterežiimi.
INT0 katkestused võib käivitada langeva või tõusva serva või madala taseme tõttu. See seadistatakse vastavalt MCU juhtimisregistri - MCUCR spetsifikatsioonile. Kui INT0-katkestus on lubatud ja see on konfigureeritud taseme käivitamisena, käivitub katkestus seni, kuni tihvt on madalal. Pange tähele, et langeva või tõusva serva katkestuste tuvastamine INT0-l nõuab I / O-kella olemasolu, mida on kirjeldatud punktis „Kellasüsteemid ja nende levitamine” on sisse lülitatud lehekülg 23.
Madal katkestus
INT0 madala taseme katkestus tuvastatakse asünkroonselt. See tähendab, et seda katkestust saab kasutada osa äratamiseks ka puhkerežiimidest peale ooterežiimi. Sisend- / väljundkell peatatakse kõigis unerežiimides, välja arvatud ooterežiimis.
Pange tähele, et kui väljalülitusest ärkamiseks kasutatakse taseme käivitatud katkestust, tuleb nõutavat taset hoida piisavalt kaua, et MCU jõuaks äratuse lõpule viia ja käivitada tasemekatkestus. Kui tase kaob enne käivitusaja lõppu, ärkab MCU siiski üles, kuid katkestusi ei genereerita. Käivitusaja määravad SUT ja CKSEL kaitsmed, nagu on kirjeldatud punktis “Süsteemi kella ja kella valikud” lk 23.
Kui katkestustihvti madal tase eemaldatakse enne, kui seade on ärganud, ei suunata programmi täitmist katkestusteenuse rutiinile, vaid jätkatakse käsku SLEEP järgides.
Pin Change Interrupt ajastamine
Endineampnööpnõelte vahetamise katkestuse ajastamise aeg on näidatud Joonis 9-1.
Registreeri kirjeldus
MCUCR - MCU juhtimisregister
Väline katkestuste juhtimise register A sisaldab kontrollbitte katkestuse tunde juhtimiseks.
Natuke | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | BODS | PUD | SE | SM1 | SM0 | BODSE | ISC01 | ISC00 | MCUCR |
Loe/kirjuta | R | R/W | R/W | R/W | R/W | R | R/W | R/W | |
Algväärtus | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bitid 1: 0 - ISC0 [1: 0]: katkestustunde juhtimine 0 bitti 1 ja bitti 0
Välise katkestuse 0 aktiveerib väline tihvt INT0, kui SREG I lipp ja vastav katkestusmask on seatud. Välise INT0 tihvti tase ja servad, mis aktiveerivad katkestuse, on määratletud Tabel 9-2. INT0 tihvti väärtus on sampjuhtis enne servade tuvastamist. Kui valitud on serva- või lülituskatkestus, tekitavad katkestused impulssid, mis kestavad kauem kui üks kellaaeg. Lühemad impulsid ei garanteeri katkestust. Kui valite madala taseme katkestuse, tuleb katkestuse genereerimiseks hoida madalat taset kuni hetkel täidetava käsu lõpetamiseni.
Tabel 9-2. Katkesta 0 Sense Control
ISC01 | ISC00 | Kirjeldus |
0 | 0 | INT0 madal tase tekitab katkestustaotluse. |
0 | 1 | Iga INT0 loogiline muudatus genereerib katkestustaotluse. |
1 | 0 | INT0 langev serv genereerib katkestustaotluse. |
1 | 1 | INT0 tõusev serv genereerib katkestustaotluse. |
GIMSK - üldine katkestusmaskide register
Natuke | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3B | – | INT0 | PCIe | – | – | – | – | – | GIMSK |
Loe/kirjuta | R | R/W | R/W | R | R | R | R | R | |
Algväärtus | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bitid 7, 4: 0 - Res: reserveeritud bitid
Need bitid on ATtiny25 / 45/85 reserveeritud bitid ja loetakse alati nulliks.
Bitt 6 - INT0: välise katkestustaotluse 0 lubamine
Kui INT0-bitt on seatud (üks) ja olekuregistri (SREG) I-bitt (üks), on välise tihvti katkestus lubatud. MCU juhtimisregistris (MCUCR) olevad katkestustunde juhtimise 0 bitid 1/0 (ISC01 ja ISC00) määratlevad, kas väline katkestus on aktiveeritud INT0 tihvti tõustes ja / või langedes või tajutava taseme korral. Tegevus tihvtiga põhjustab katkestustaotluse ka siis, kui INT0 on konfigureeritud väljundina. Välise katkestustaotluse 0 vastav katkestus viiakse läbi INT0 katkestusvektorist.
Bit 5 - PCIE: PIN-koodi vahetamise katkestamise lubamine
Kui PCIE-bitt on määratud (üks) ja olekuregistri (SREG) I-bitt (üks), on tihvtivahetuse katkestus lubatud. Kõik muudatused mis tahes lubatud PCINT [5: 0] tihvti korral põhjustavad katkestuse. Pin-i vahetuse katkestustaotluse vastav katkestus viiakse läbi PCI katkestusvektorist. PCINT [5: 0] tihvtid lubab PCMSK0 register eraldi.
GIFR - üldine katkestuste lipuregister
Natuke | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3A | – | INTF0 | PCIF | – | – | – | – | – | GIFR |
Loe/kirjuta | R | R/W | R/W | R | R | R | R | R | |
Algväärtus | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bitid 7, 4: 0 - Res: reserveeritud bitid
Need bitid on ATtiny25 / 45/85 reserveeritud bitid ja loetakse alati nulliks.
Bitt 6 - INTF0: välise katkestuse lipp 0
Kui serva või loogika muutus INT0 tihvtis käivitab katkestustaotluse, saab INTF0 seatud (üks). Kui I-bit SREG-is ja INT0-bit GIMSK-is on seatud (üks), hüppab MCU vastava katkestusvektori juurde. Lipp kustutatakse, kui katkestamise rutiin on täidetud. Teise võimalusena saab lipu kustutada, kirjutades sellele loogilise lipu. See lipp kustutatakse alati, kui INT0 on konfigureeritud taseme katkestusena.
Bitt 5 - PCIF: tihvtivahetuse katkestuse lipp
Kui mis tahes PCINT [5: 0] tihvti loogikamuutus käivitab katkestustaotluse, määratakse PCIF (üks). Kui I-bit SREG-is ja PCIE-bit GIMSK-is on seatud (üks), hüppab MCU vastava katkestusvektori juurde. Lipp kustutatakse, kui katkestusrutiin on täidetud. Teise võimalusena saab lipu kustutada, kirjutades sellele loogilise lipu.
PCMSK - tihvtivahetusmaski register
Natuke | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x15 | – | – | PCINT5 | PCINT4 | PCINT3 | PCINT2 | PCINT1 | PCINT0 | PCMSK |
Loe/kirjuta | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Algväärtus | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bitid 7: 6 - Res: reserveeritud bitid
Need bitid on ATtiny25 / 45/85 reserveeritud bitid ja loetakse alati nulliks.
Bitid 5: 0 - PCINT [5: 0]: Pin Change Enable Mask 5: 0
Iga PCINT [5: 0] bit valib, kas vastava sisend- / väljundtihvti korral on tihvtivahetuse katkestus lubatud. Kui PCINT [5: 0] on seatud ja PCIE-bit GIMSK-is on sisse lülitatud, on vastava I / O-tihvti puhul lubatud tihvtivahetuse katkestus. Kui PCINT [5: 0] tühjendatakse, on vastava I / O-tihvti tihvtivahetuse katkestamine keelatud.
I/O pordid
Sissejuhatus
Kõigil AVR-portidel on tõeline lugemis-muutmis-kirjutamisfunktsioon, kui neid kasutatakse üldiste digitaalsete I/O-portidena. See tähendab, et ühe pordi tihvti suunda saab muuta ilma SBI ja CBI juhistega tahtmatult ühegi teise tihvti suunda muutmata. Sama kehtib ajami väärtuse muutmisel (kui see on konfigureeritud väljundina) või tõmbe takistite lubamisel/keelamisel (kui see on sisendiks konfigureeritud). Igal väljundpuhvril on sümmeetrilised ajamiomadused, millel on nii suur neelamis- kui ka allikavõime. Tihvtidraiver on piisavalt tugev, et juhtida LED -ekraane otse. Kõigil porttihvtidel on individuaalselt valitavad tõmbetakistid koos toitepingegatage muutumatu takistus. Kõigil I/O kontaktidel on kaitsedioodid nii VCC kui ka maanduse jaoks, nagu näidatud Joonis 10-1. Viidata “Elektrilised omadused” lk 161 parameetrite täieliku loendi jaoks.
Joonis 10-1. I/O viigu ekvivalentskeem
Kõik selles jaotises olevad registrid ja bittiviited on kirjutatud üldisel kujul. Väike täht “x” tähistab pordi numeratsioonitähte ja väiketäht “n” tähistab biti numbrit. Kui aga registris või biti määratlusi programmis kasutada, tuleb kasutada täpset vormi. Näiteksample, PORTB3 bitti nr. 3 sadamas B, siin dokumenteeritud üldiselt kui PORTxn. Füüsilised I/O registrid ja bittide asukohad on loetletud „Registreerimise kirjeldus“ on sisse lülitatud lehekülg 64.
Igale pordile eraldatakse kolm sisend- / väljundmälu aadressi asukohta, üks igaüks andmeregistri jaoks - PORTx, andmesuunaregister - DDRx ja pordisisendi tihvtid - PINx. Pordisisendi tihvtide sisend / väljund on kirjutuskaitstud, samas kui andmeregister ja andmesuunaregister on loetavad / kirjutatavad. PINxi registrisse loogika üks-ühele kirjutamine toob aga kaasa andmeregistri vastava bitti vahetamise. Lisaks keelab MCUCR-i Pull-up Disable - PUD-i bittimise funktsioon kõigi sadamate kõigi tihvtide tõmbefunktsiooni, kui see on seatud.
I / O-pordi kasutamist üldise digitaalse sisend- / väljundina kirjeldatakse peatükis „Pordid kui üldine digitaalne I / O” lk 53. Enamik pordi tihvteid multipleksitakse seadme perifeersete funktsioonide jaoks alternatiivsete funktsioonidega. Kuidas iga alternatiivne funktsioon pordi tihvtiga sekkub, on kirjeldatud “Alternatiivsed pordifunktsioonid” lk 57. Alternatiivsete funktsioonide täieliku kirjelduse leiate üksikute moodulite jaotistest.
Pange tähele, et mõne pordi tihvti asendusfunktsiooni lubamine ei mõjuta pordi teiste tihvtide kasutamist üldise digitaalse sisend- / väljundina.
Pordid üldise digitaalse sisend- / väljundina
Pordid on kahesuunalised sisend- / väljundportid, millel on valikulised sisemised tõmbed. Joonis 10-2 näitab ühe I / O-pordi tihvti funktsionaalset kirjeldust, mida siin nimetatakse üldiselt Pxn-ks.
Joonis 10-2. Üldine digitaalne sisend/väljund(1)
PIN-koodi konfigureerimine
Iga pordi tihvt koosneb kolmest registribitist: DDxn, PORTxn ja PINxn. Nagu on näidatud „Registreerimise kirjeldus“ on sisse lülitatud lehekülg 64, DDxn-bittidele pääseb juurde DDRx I / O aadressil, PORTxn bitidel PORTx I / O aadressil ja PINxn bitidel PINx I / O aadressil.
DDRx-registris olev DDxn-bit valib selle tihvti suuna. Kui DDxn on kirjutatud loogiline, on Pxn konfigureeritud väljundnõelaks. Kui DDxn on kirjutatud loogiline null, on Pxn konfigureeritud sisendnõelana.
Kui PORTxn on kirjutatud loogika, kui tihvt on konfigureeritud sisendnõelaks, aktiveeritakse tõmmetakistus. Tõmbetakisti väljalülitamiseks tuleb PORTxnile kirjutada loogiline null või tihvt konfigureerida väljundnõelaks. Pordi tihvtid määratakse kolmekordseks, kui lähtestustingimus muutub aktiivseks, isegi kui kellasid ei tööta.
Kui PORTxn on kirjutatud loogika järgi, kui tihvt on konfigureeritud väljundnõelaks, juhitakse pordi tihvt kõrgele (üks). Kui PORTxn on kirjutatud loogiline null, kui tihvt on konfigureeritud väljundnõelaks, juhitakse pordi tihvt madalale (null).
Tihvti vahetamine
PINxni loogika kirjutamine vahetab PORTxni väärtuse, sõltumata DDRxni väärtusest. Pange tähele, et SBI käsku saab kasutada ühe pordi vahetamiseks pordis.
Sisendi ja väljundi vahetamine
Kui vahetate kolme oleku ({DDxn, PORTxn} = 0b00) ja kõrge väljundi ({DDxn, PORTxn} = 0b11) vahel, on vahepealne olek, kus ülestõmbamine on lubatud {DDxn, PORTxn} = 0b01) või väljund madal ({DDxn, PORTxn} = 0b10) peab toimuma. Tavaliselt on tõmbefunktsioon täielikult vastuvõetav, kuna suure takistusega keskkond ei märka erinevust tugeva kõrge juhi ja tõmbe vahel. Kui see nii ei ole, saab MCUCR-i registri PUD-biti seadistada nii, et see keelaks kõik ülestõmbed kõigis portides.
Üleminek ülestõstetava sisendi ja madala väljundi vahel tekitab sama probleemi. Kasutaja peab vaheetapina kasutama kas kolmeolekut ({DDxn, PORTxn} = 0b00) või väljundi suurt olekut ({DDxn, PORTxn} = 0b10).
Tabel 10-1 võtab kokku pin-väärtuse kontrollsignaalid.
Tabel 10-1. Pordipistiku konfiguratsioonid
DDxn | PORTxn | PUD
(MCUCR-is) |
I/O | Tõmbamine | Kommenteeri |
0 | 0 | X | Sisend | Ei | Kolmriigiline (Hi-Z) |
0 | 1 | 0 | Sisend | Jah | Pxn saab voolu, kui ekst. madalale tõmmatud. |
0 | 1 | 1 | Sisend | Ei | Kolmriigiline (Hi-Z) |
1 | 0 | X | Väljund | Ei | Väljund madal (valamu) |
1 | 1 | X | Väljund | Ei | Väljund kõrge (allikas) |
Pin-väärtuse lugemine
Sõltumata Data Direction bit DDxn seadistamisest saab pordi tihvti lugeda läbi PINxn Register bitti. Nagu on näidatud Joonis 10-2, moodustavad PINxn-i registribitt ja sellele eelnev riiv sünkroonija. Seda on vaja metastabiilsuse vältimiseks, kui füüsiline tihvt muudab väärtust sisemise kella serva lähedal, kuid see viib sisse ka viivituse. Joonis 10-3 näitab sünkroonimise ajastusdiagrammi väliselt rakendatud pin väärtuse lugemisel. Maksimaalne ja minimaalne leviviivitus on tähistatud vastavalt tpd,max ja tpd,min.
Vaatleme kellaajaperioodi, mis algab vahetult pärast süsteemi kella esimest langevat serva. Riiv on suletud, kui kell on madal, ja läheb läbipaistvalt, kui kell on kõrge, nagu näitab signaali “SYNC LATCH” varjutatud piirkond. Signaali väärtus lukustub, kui süsteemi kell läheb madalaks. See sisestatakse PINxn-i registrisse järgneva positiivse kella serva juures. Nagu on näidatud kahe noolega tpd, max ja tpd, min, viivitatakse ühe signaali üleminekul tihvtil vahemikus 1/XNUMX kuni XNUMX süsteemi taktseperioodi, sõltuvalt väite ajast.
Tarkvarale määratud pin-väärtuse tagasilugemisel tuleb sisestada nop-käsk, nagu on näidatud jaotises Joonis 10-4. Out-käsk seab kella positiivsesse serva signaali “SYNC LATCH”. Sellisel juhul on viivitus tpd sünkronisaatori kaudu üks süsteemi kella periood.
Järgmine kood ntample näitab, kuidas seada pordi B viigud 0 ja 1 kõrgeks, 2 ja 3 madalaks ning määratleda pordi viigud vahemikus 4 kuni 5 sisendina pordi viigule 4 määratud ülestõmbe abil. Saadud viigu väärtused loetakse uuesti, kuid nagu eelnevalt mainitud, on lisatud nop-käsk, mis võimaldab mõnele viigule hiljuti määratud väärtust tagasi lugeda.
Kokkupanekukood Example(1) |
…
; Määrake ülestõmbed ja seadke väljundid kõrgeks ; Määrake pordi tihvtide suunad ldi r16,(1<<PB4)|(1<<PB1)|(1<<PB0) ldi r17,(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0) välja PORTB,r16 välja DDRB,r17 ; Sisestage sünkroonimiseks nop nop ; Lugege pordi kontakte in r16,PINB … |
Märkus. Koostamisprogrammis kasutatakse kahte ajutist registrit, et minimeerida aega, mis kulub tihvtidele 0, 1 ja 4, kuni suunabitid on õigesti seatud, määrates bitid 2 ja 3 madalaks ning defineerides uuesti bitid 0 ja 1. XNUMX kui tugevad kõrged juhid.
C Kood Näideample |
unsigned char i;
… /* Määrake ülestõmbed ja seadke väljundid kõrgeks */ /* Määrake pordi viigude suunad */ PORTB = (1< DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0); /* Sisesta sünkroonimiseks nop*/ _NOP (); /* Lugege pordi kontakte */ i = PINB; … |
Digitaalse sisendi lubamine ja unerežiimid
Nagu näidatud Joonis 10-2, digitaalne sisendsignaal võib olla clamped maandatud Schmitt-päästiku sisendis. Joonisel SLEEP tähistatud signaal seadistatakse MCU unekontrolleri poolt väljalülitusrežiimis, et vältida suurt energiatarbimist, kui mõned sisendsignaalid jäetakse vedelema või kui analoogsignaali tase on VCC/2 lähedal.
Väliste katkestustihvtidena lubatud portiihvtide puhul on SLEEP tühistatud. Kui väline katkestustaotlus pole lubatud, on SLEEP aktiivne ka nende tihvtide puhul. SLEEP-i tühistavad ka mitmed muud alternatiivsed funktsioonid, nagu on kirjeldatud jaotises “Alternatiivsed pordifunktsioonid” lk 57.
Kui asünkroonsel välisel katkestustihvtil, mis on konfigureeritud kui "Katkestus tõusval serval, langeval serval või mis tahes loogikamuutus viiul", on loogika kõrge tase (“üks”), samal ajal kui väline katkestus pole lubatud, kuvatakse vastav välise katkestuse lipp. seadistada ülalmainitud puhkerežiimist naasmisel, kuna clampunerežiimis töötamine toob kaasa soovitud loogika muutmise.
Ühendamata tihvtid
Kui mõnda tihvti ei kasutata, on soovitatav veenduda, et nendel tihvtidel on määratletud tase. Isegi kui enamik digitaalsisendeid on eelpool kirjeldatud sügavas unerežiimis keelatud, tuleks voolu tarbimise vähendamiseks kõigis teistes režiimides, kus digitaalsed sisendid on lubatud (lähtestamine, aktiivne režiim ja ooterežiim), ujuvaid sisendeid vältida.
Lihtsaim meetod kasutamata tihvti määratletud taseme tagamiseks on sisemise ülestõmbe lubamine. Sellisel juhul lülitatakse ülestõmbamine lähtestamise ajal välja. Kui lähtestamise ajal on oluline madal energiatarve, on soovitatav kasutada välist üles- või allatõmmet. Kasutamata kontaktide ühendamine otse VCC või GND-ga ei ole soovitatav, kuna see võib põhjustada liigset voolu, kui viik on kogemata väljundiks konfigureeritud.
Alternatiivsed pordifunktsioonid
Enamikul pordi tihvtidel on lisaks üldistele digitaalsetele I / O-dele ka alternatiivsed funktsioonid. Joonis 10-5 näitab, kuidas pordi tihvti juhtimissignaalid on lihtsustatud Joonis 10-2 saab asendusfunktsioonide abil tühistada. Ülekandvaid signaale ei pruugi olla kõigis pordi tihvtides, kuid joonis on üldine kirjeldus, mida saab kasutada kõigi AVR mikrokontrollerite perekonna pordi tihvtide jaoks.
Tabel 10-2. Alternatiivsete funktsioonide ületavate signaalide üldine kirjeldus
Signaali nimi | Täisnimi | Kirjeldus |
PUOE | Pull-up Override Luba | Kui see signaal on seatud, kontrollib sissetõmbamise lubamist PUOV-signaal. Kui see signaal kustutatakse, on sisselülitamine lubatud, kui
{DDxn, PORTxn, PUD} = 0b010. |
PUOV | Tõmbe alistamise väärtus | Kui PUOE on määratud, siis on PUOV-i seadistamisel / tühjendamisel sisselülitamine lubatud / keelatud, olenemata DDxn-, PORTxn- ja PUD-registribittide seadistustest. |
DOOE | Andmesuuna alistamise lubamine | Kui see signaal on seatud, juhib väljunddraiveri lubamist DDOV-signaal. Kui see signaal kustutatakse, lubab väljunddraiveri DDxn register bitt. |
DDOV | Andmete suuna alistamine väärtus | Kui DDOE on seatud, lubatakse väljundraiver pärast DDOV seadistamist / kustutamist, olenemata DDxn register biti seadistusest. |
PVOE | Pordiväärtuse alistamine Luba | Kui see signaal on seatud ja väljunddraiver on lubatud, kontrollib pordi väärtust PVOV-signaal. Kui PVOE on kustutatud ja väljundidraiver on lubatud, juhib pordiväärtust PORTxn Register bitt. |
PVOV | Pordiväärtus alistab väärtuse | Kui PVOE on määratud, määratakse pordiväärtuseks PVOV, olenemata PORTxn Register biti seadistusest. |
PTOE | Pordi sisse- ja väljalülitamise lubamine | Kui PTOE on seatud, pööratakse PORTxn Register bitt ümber. |
DIEOE | Digitaalse sisendi lubamine Alistamise lubamine | Kui see bitt on määratud, juhib digitaalse sisendi lubamist signaal DIEOV. Kui see signaal kustutatakse, määratakse digitaalse sisendi lubamine MCU oleku (tavarežiim, unerežiim) järgi. |
DIEOV | Digitaalne sisend lubab alistada väärtuse | Kui DIEOE on seatud, on digitaalsisend lubatud / keelatud, kui DIEOV on seatud / kustutatud, olenemata MCU olekust (tavarežiim, unerežiim). |
DI | Digitaalne sisend | See on digitaalfunktsioon alternatiivsete funktsioonide jaoks. Joonisel on signaal ühendatud schmitt-trigeri väljundiga, kuid enne sünkroniseerijat. Kui digitaalset sisendit ei kasutata kella allikana, kasutab asendusfunktsiooniga moodul oma sünkroonijat. |
AIO | Analoog sisend / väljund | See on analoogsisend / -väljund alternatiivsetele funktsioonidele. Signaal on ühendatud otse padjaga ja seda saab kasutada kahesuunaliselt. |
Järgmistes alapeatükkides kirjeldatakse lühidalt iga pordi alternatiivseid funktsioone ja seostatakse ülekaalulised signaalid asendusfunktsiooniga. Lisateavet leiate funktsiooni alternatiivsest kirjeldusest.
Pordi B alternatiivsed funktsioonid
Alternatiivse funktsiooniga pordi B tihvtid on näidatud joonisel Tabel 10-3.
Tabel 10-3. B-pordi tihvtid alternatiivsed funktsioonid
Port Pin | Alternatiivne funktsioon |
PB5 | ![]() RESET: lähtestage tihvt dW: silumineWIRE I / O ADC0: ADC sisendkanal 0 PCINT5: tihvtivahetuse katkestus, allikas 5 |
PB4 | XTAL2: kristalloskillaatori väljund CLKO: süsteemikella väljund ADC2: ADC sisendkanal 2
OC1B: Taimer / Loendur1 Võrdle mängu B väljundit PCINT4: tihvtivahetuse katkestus 0, allikas 4 |
PB3 | XTAL1: Kristallostsillaatori sisend CLKI: Välise kella sisend ADC3: ADC sisendkanal 3
OC1B: täiendav taimer / loendur1 Võrdle mängu B väljundit PCINT3: tihvtivahetuse katkestus 0, allikas 3 |
PB2 | SCK: jadakella sisend ADC1: ADC sisendkanal 1
T0: taimer / loendur0 kella allikas USCK: USI kell (kolme juhtmega režiim) SCL: USI kell (kahe juhtmega režiim) INT0: väline katkestus 0 sisend PCINT2: tihvtivahetus katkestus 0, allikas 2 |
PB1 | MISO: SPI põhiandmete sisend / alamandmete väljund AIN1: analoogvõrdleja, negatiivne sisend OC0B: taimer / loendur0 võrrelge mängu B väljundit OC1A: taimer / loendur1 võrrelge mängu A väljundit DO: USI andmejõud 1, allikas 0 |
PB0 | MOSI :: SPI põhiandmete väljund / alamandmete sisend AIN0: analoog-komparaator, positiivne sisend
OC0A: Taimer/loendur0 Võrdle Match A väljundit OC1A: täiendav taimer / loendur1 Võrdle vaste A väljundiga DI: USI andmesisend (kolme juhtmega režiim) SDA: USI andmesisend (kahe juhtmega režiim) AREF: väline analoogviide PCINT0: tihvtivahetuse katkestus 0, allikas 0 |
Port B, bitt 5 - RESET / dW / ADC0 / PCINT5
RESET: Välise lähtestamise sisend on madal ja seda võimaldab RSTDISBL-kaitsme programmeerimine (“1”). Kui tihvti RESET-tihvtina kasutatakse, aktiveeritakse tõmme ja deaktiveeritakse väljundidraiver ja digitaalsisend.
dW: Kui sulavkaitse DebugWIRE Enable (DWEN) on programmeeritud ja lukustusbitid pole programmeeritud, aktiveeritakse sihtseadmes olev silumisWIRE süsteem. RESET-pordi tihvt on konfigureeritud traadiga JA (avatud äravooluga) kahesuunalise I / O-tihvtina, millel on sisselülitamine lubatud, ja see muutub sideväravaks sihtmärgi ja emulaatori vahel.
ADC0: analoog-digitaalmuundur, kanal 0.
PCINT5: tihvtivahetuse katkestuse allikas 5.
Port B, bitt 4 - XTAL2 / CLKO / ADC2 / OC1B / PCINT4
XTAL2: kiibi kella ostsillaatori tihvt 2. Kasutatakse kella tihvtina kõigi kiibikellade allikate jaoks, välja arvatud sisemine kalibreeritav RC-ostsillaator ja väline kell. Kui seda kasutatakse kella tihvtina, ei saa tihvti kasutada sisend- / väljundnõelana. Kui kasutate kiibikelleallikatena sisemist kalibreeritavat RC-ostsillaatorit või välist kella, toimib PB4 tavalise I / O-tihvtina.
CLKO: jagatud süsteemi kella saab väljastada tihvtile PB4. Jaotatud süsteemikell väljastatakse, kui programmeeritakse CKOUT-kaitsme, olenemata PORTB4 ja DDB4 seadetest. See väljastatakse ka lähtestamise ajal.
ADC2: analoog-digitaalmuundur, kanal 2.
OC1B: väljundi võrdlusmängu väljund: PB4-tihvti saab kasutada välise väljundina taimeri / loenduri1 võrdlusmängu B jaoks, kui see on konfigureeritud väljundina (komplekt DDB4). OC1B tihvt on ka PWM-režiimi taimeri väljundnupp.
PCINT4: tihvtivahetuse katkestuse allikas 4.
Port B, bitt 3 - XTAL1 / CLKI / ADC3 / OC1B / PCINT3
XTAL1: kiibikella ostsillaatori tihvt 1. Kasutatakse kõigi kiibikellade allikate jaoks, välja arvatud sisemine kalibreeritav RC-ostsillaator. Kui seda kasutatakse kella tihvtina, ei saa tihvti kasutada sisend- / väljundnõelana.
CLKI: kella sisend välisest kelliallikast, vt “Väline kell” lk 26.
ADC3: analoog-digitaalmuundur, kanal 3.
OC1B: Inverteeritud väljundi võrdlus vaste väljundiga: PB3 tihvt võib olla välise väljundina taimeri / loenduri1 Võrdle vaste B jaoks, kui see on konfigureeritud väljundina (komplekt DDB3). OC1B tihvt on ka PWM-režiimi taimeri funktsiooni ümberpööratud väljundnõel.
PCINT3: tihvtivahetuse katkestuse allikas 3.
Port B, bitt 2 - SCK / ADC1 / T0 / USCK / SCL / INT0 / PCINT2
SCK: peakellaväljund, SPI-kanali jaoks alamkella sisendnõel. Kui SPI on orjana lubatud, konfigureeritakse see tihvt sisendina, olenemata DDB2 seadistusest. Kui SPI on Masterina lubatud, juhib selle tihvti andmesuunda DDPB2. Kui SPI sunnib tihvti sisendiks, saab pull-upi siiski PORTB2-bitiga juhtida.
ADC1: analoog-digitaalmuundur, kanal 1.
T0: taimeri / loenduri0 loenduri allikas.
USCK: kolme juhtmega režiimis universaalne jadaliidese kell.
SCL: kahe juhtmega režiimi jadakell USI kahe juhtmega režiimi jaoks.
INT0: väline katkestuse allikas 0.
PCINT2: tihvtivahetuse katkestuse allikas 2.
Port B, bitt 1 - MISO / AIN1 / OC0B / OC1A / DO / PCINT1
MISO: põhiandmete sisestus, alamandmete väljundnõel SPI kanalile. Kui SPI on Masterina lubatud, konfigureeritakse see tihvt sisendina, olenemata DDB1 seadistusest. Kui SPI on orjana lubatud, juhib selle tihvti andmesuunda DDB1. Kui SPI sunnib tihvti sisendiks, saab pull-upi ikkagi PORTB1-bitiga juhtida.
AIN1: Analoogvõrdleja negatiivne sisend. Konfigureerige pordi tihvt sisendina, kui sisemine tõmme on välja lülitatud, et vältida digitaalse pordi funktsiooni analoog-komparaatori funktsiooni häirimist.
OC0B: väljund Võrdle mängu väljundit. PB1-tihvti saab kasutada välise väljundina taimeri / loenduri0 võrdlusmängu B jaoks. Selle funktsiooni teenimiseks tuleb PB1-tihvt konfigureerida väljundina (DDB1-komplekt (üks)). OC0B tihvt on ka PWM-režiimi taimeri väljundnupp.
OC1A: väljundi võrdlusmängu väljund: PB1-tihvti saab kasutada välise väljundina taimeri / loenduri1 võrdlusmängu B jaoks, kui see on konfigureeritud väljundina (komplekt DDB1). OC1A tihvt on ka PWM-režiimi taimeri väljundnupp.
TEE: Kolme juhtmega režiimis universaalse jadaliidese andmete väljund. Kolme juhtmega režiim Andmete väljund alistab PORTB1 väärtuse ja see suunatakse porti, kui andmesuundibitt DDB1 on seatud (üks). PORTB1 võimaldab endiselt üles tõmmata, kui sisestatakse suund ja PORTB1 on seatud (üks).
PCINT1: tihvtivahetuse katkestuse allikas 1.
Port B, bitt 0 - MOSI / AIN0 / OC0A / OC1A / DI / SDA / AREF / PCINT0
MOSI: SPI põhiandmete väljund, SPI kanali alamandmete sisend. Kui SPI on orjana lubatud, konfigureeritakse see tihvt sisendina, olenemata DDB0 seadistusest. Kui SPI on Masterina lubatud, juhib selle tihvti andmesuunda DDB0. Kui SPI sunnib tihvti sisendiks, saab pull-upi siiski PORTB0-bitiga juhtida.
AIN0: Analoogvõrdleja positiivne sisend. Konfigureerige pordi tihvt sisendina, kui sisemine tõmme on välja lülitatud, et vältida digitaalse pordi funktsiooni analoog-komparaatori funktsiooni häirimist.
OC0A: väljund Võrdle mängu väljundit. PB0-tihvti saab kasutada välise väljundina taimeri / loenduri0 Võrdle vaste A jaoks, kui see on konfigureeritud väljundina (DDB0 komplekt (üks)). OC0A tihvt on ka PWM-režiimi taimerifunktsiooni väljundpistik.
OC1A: Inverteeritud väljundi võrdlus Väljund: PB0-tihvti saab kasutada välise väljundina taimeri / loenduri1 Võrdle vaste B-le, kui see on konfigureeritud väljundina (komplekt DDB0). OC1A tihvt on ka PWM-režiimi taimeri funktsiooni ümberpööratud väljundnõel.
SDA: kahe juhtmega režiimi jadaliidese andmed.
AREF: ADC väline analoogviide. Tõmbamis- ja väljunddraiver on PB0 -s keelatud, kui tihvti kasutatakse välise võrdlusena või sisemisenatage Viide välisele kondensaatorile AREF -i tihvti juures.
DI: andmesisestus USI kolme juhtmega režiimis. USI kolme juhtmega režiim ei alista tavalisi pordifunktsioone, nii et tihvt tuleb konfigureerida DI-funktsiooni sisendina.
PCINT0: tihvtivahetuse katkestuse allikas 0.
Tabel 10-4 ja Tabel 10-5 seostada pordi B asendusfunktsioonid punktis XNUMX näidatud ülimuslike signaalidega Joonis 10-5 edasi lehekülg 58.
Tabel 10-4. PB[5:3] alternatiivsete funktsioonide signaalide alistamine
Signaali nimi | PB5 / RESET / ADC0 / PCINT5 | PB4/ADC2/XTAL2/ OC1B/PCINT4 | PB3/ADC3/XTAL1/ OC1B/PCINT3 |
PUOE | ![]() |
0 | 0 |
PUOV | 1 | 0 | 0 |
DOOE | RSTDISBL(1) • DWEN(1) | 0 | 0 |
DDOV | silumineTraadi edastamine | 0 | 0 |
PVOE | 0 | OC1B Luba | ![]() OC1B Luba |
PVOV | 0 | OC1B | OC1B |
PTOE | 0 | 0 | 0 |
DIEOE | ![]() RSTDISBL(1) + (PCINT5 • PCIE + ADC0D) |
PCINT4 • PCIE + ADC2D | PCINT3 • PCIE + ADC3D |
DIEOV | ADC0D | ADC2D | ADC3D |
DI | PCINT5 sisend | PCINT4 sisend | PCINT3 sisend |
AIO | RESET sisend, ADC0 sisend | ADC2 sisend | ADC3 sisend |
Märkus: kui kaitsme väärtus on "0" (programmeeritud).
Tabel 10-5. PB[2:0] alternatiivsete funktsioonide signaalide alistamine
Signaali nimi | 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 |
DOOE | USI_TWO_WIRE | 0 | USI_TWO_WIRE |
DDOV | (USI_SCL_HOLD + PORTB2) • DDB2 | 0 | ![]() ![]() (SDA + PORTB0) • DDB0 |
PVOE | USI_TWO_WIRE • DDB2 | OC0B Luba + OC1A Luba + USI_THREE_WIRE | ![]() OC0A Luba + OC1A Luba + (USI_TWO_WIRE DDB0) |
PVOV | 0 | OC0B + OC1A + DO | ![]() OC0A + OC1A |
PTOE | USITC | 0 | 0 |
DIEOE | PCINT2 • PCIE + ADC1D + USISIE | PCINT1 • PCIE + AIN1D | PCINT0 • PCIE + AIN0D + USISIE |
DIEOV | ADC1D | AIN1D | AIN0D |
DI | T0 / USCK / SCL / INT0 /
PCINT2 sisend |
PCINT1 sisend | DI / SDA / PCINT0 sisend |
AIO | ADC1 sisend | Analoogvõrdleja negatiivne sisend | Analoogvõrdleja positiivne sisend |
Registreeri kirjeldus
MCUCR - MCU juhtimisregister
Natuke | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | BODS | PUD | SE | SM1 | SM0 | BODSE | ISC01 | ISC00 | MCUCR |
Loe/kirjuta | R | R/W | R/W | R/W | R/W | R | R/W | R/W | |
Algväärtus | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bitt 6 - PUD: Pull-up Keela
Kui see bitt on ühele kirjutatud, keelatakse sisend- / väljundporti ülesvõtmised isegi siis, kui DDxn ja PORTxn registrid on konfigureeritud pull-upide lubamiseks ({DDxn, PORTxn} = 0b01). Vaata “Tihvti konfigureerimine” lk 54 selle funktsiooni kohta lisateavet.
PORTB - sadama B andmeregister
Natuke | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x18 | – | – | SADAM5 | SADAM4 | SADAM3 | SADAM2 | SADAM1 | SADAM0 | SADAM |
Loe/kirjuta | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Algväärtus | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
DDRB - Port B andmesuunaregister
Natuke | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x17 | – | – | DDB5 | DDB4 | DDB3 | DDB2 | DDB1 | DDB0 | DDRB |
Loe/kirjuta | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Algväärtus | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
PINB - pordi B sisendnõelte aadress
Natuke | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x16 | – | – | PINB5 | PINB4 | PINB3 | PINB2 | PINB1 | PINB0 | PINB |
Loe/kirjuta | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Algväärtus | 0 | 0 | Ei kehti | Ei kehti | Ei kehti | Ei kehti | Ei kehti | Ei kehti |
8-bitine taimer / loendur0 PWM-iga
Omadused
Kaks iseseisvat väljundi võrdlusühikut
Topeltpuhverdatud väljundite võrdlusregistrid
Tühjenda taimer võistluse võrdlemisel (automaatne uuesti laadimine)
Glitch Free, faasipõhine impulsi laiuse modulaator (PWM)
Muutuv PWM periood
Sagedusgeneraator
Kolm sõltumatut katkestusallikat (TOV0, OCF0A ja OCF0B)
Läbiview
Taimer / loendur0 on üldotstarbeline 8-bitine taimeri / loenduri moodul, millel on kaks iseseisvat väljundi võrdlusüksust ja PWM-i tugi. See võimaldab programmi täitmise täpset ajastamist (sündmuste haldamist) ja lainete genereerimist.
8-bitise taimeri / loenduri lihtsustatud plokkskeem on näidatud Joonis 11-1. I / O-tihvtide tegeliku paigutuse kohta vaadake „Pinout ATtiny25 / 45/85” lk 2. Protsessoriga ligipääsetavad sisend- / väljundregistrid, sealhulgas sisend- / väljundbitid ja sisend- / väljundnõelad, on esitatud rasvases kirjas. Seadmespetsiifiline I / O register ja bittide asukohad on loetletud jaotises “Registreerimise kirjeldus” lk 77.
Taimer/loendur (TCNT0) ja väljundi võrdlemise registrid (OCR0A ja OCR0B) on 8-bitised registrid. Katkestusnõude (joonisel lühendatult Int.Req.) signaalid on kõik nähtavad Timer Interrupt Flag Register (TIFR) registris. Kõik katkestused maskeeritakse individuaalselt Timer Interrupt Mask Register (TIMSK) abil. TIFR ja TIMSK pole joonisel näidatud.
Taimerit/loendurit saab kellastada sisemiselt, eelskaalaja kaudu või välise kella allika kaudu T0 kontaktil. Kella valimise loogikaplokk juhib, millist kella allikat ja serva taimer/loendur oma väärtuse suurendamiseks (või vähendamiseks) kasutab. Taimer/loendur ei ole aktiivne, kui kella allikat pole valitud. Kella valimise loogika väljundit nimetatakse taimerkellaks (clkT0).
Topeltpuhverdatud väljundi võrdlusregistreid (OCR0A ja OCR0B) võrreldakse alati taimeri / loenduri väärtusega. Võrdluse tulemust saab lainekuju generaator kasutada PWM-i või muutuva sagedusega väljundi genereerimiseks väljundvõrdlusega kontaktidele (OC0A ja OC0B). Vt “Väljundi võrdlemise üksus” lk 69. üksikasjad. Võrdlusmängu sündmus määrab ka võrdluslipu (OCF0A või OCF0B), mida saab kasutada väljundi võrdlemise katkestustaotluse loomiseks.
Definitsioonid
Paljud selles jaotises olevad registri- ja bittiviited on kirjutatud üldises vormis. Väike täht “n” asendab taimeri / loenduri numbrit, antud juhul 0. Väike täht “x” asendab väljundi võrdlemise üksust, antud juhul võrdle üksust A või võrdle üksust B. Registri või biti kasutamisel määratleb aga programmis tuleb kasutada täpset vormi, st TCNT0 Taimeri / Loenduri0 loenduri väärtusele juurdepääsuks ja nii edasi.
Mõisted Tabel 11-1 kasutatakse ka kogu dokumendis laialdaselt.
Tabel 11-1. Definitsioonid
Püsiv | Kirjeldus |
ALUMINE | Loendur jõuab BOTTOMini, kui sellest saab 0x00 |
MAX | Loendur saavutab oma maksimumi, kui sellest saab 0xFF (kümnendkoht 255) |
TOP | Loendur jõuab TOPi, kui see muutub võrdseks loenduse järjestuse kõrgeima väärtusega. TOP-väärtuseks saab määrata püsiväärtuse 0xFF (MAX) või OCR0A registrisse salvestatud väärtuse. Määramine sõltub töörežiimist |
Taimeri / loenduri eelkalkulaator ja kella allikad
Taimerit / loendurit saab ajastada sisemise või välise kella allika abil. Kella allika valib Clock Selecti loogika, mida juhivad Timer / Counter0 juhtimisregistris (TCCR0B) asuvad bittid Clock Select (c).
Sisemine kella allikas koos eskaltsaatoriga
Taimerit/loendurit0 saab kellatada otse süsteemi kellaga (seades CS0[2:0] = 1). See tagab kiireima töö, mille maksimaalne taimeri/loenduri taktsagedus on võrdne süsteemi taktsagedusega (fCLK_I/O). Teise võimalusena saab kellaallikana kasutada ühte neljast eelskaalaja kraanist. Eelskaalatud kella sagedus on kumbki
Eelskaala lähtestamine
Eelskaala töötab vabalt, st töötab sõltumatult taimeri/loenduri0 kellavaliku loogikast. Kuna taimer/loenduri kella valik ei mõjuta eelseadistust, mõjutab eelseadistaja olek olukordi, kus kasutatakse eelseadistatud kella. Üks eksampEelseadistamise artefakt on see, kui taimer/loendur on sisse lülitatud ja taasesitatud eelskaleriga (6> CS0 [2: 0]> 1). Süsteemikellade tsüklite arv alates ajastuse sisselülitamisest kuni esimese loendamiseni võib olla vahemikus 1 kuni N+1 süsteemi kella tsüklit, kus N võrdub eelseadistaja jagajaga (8, 64, 256 või 1024).
Taimer / loenduri sünkroonimiseks programmi käivitamiseks on võimalik kasutada eelseadmiku lähtestamist.
Välise kella allikas
Taimer/loendurkellana (clkT0) saab kasutada T0 viigule rakendatud välist kellaallikat. T0 tihvt on sampjuhib üks kord iga süsteemikella tsüklit tihvtide sünkroonimisloogika järgi. Sünkroonitud (sampLED) signaal edastatakse
läbi servadetektori. Joonis 11-2 näitab T0 sünkroniseerimise ja servadetektori loogika funktsionaalset ekvivalentset plokkskeemi. Registrid kellatakse süsteemi sisemise kella positiivsel serval (clkI/O). Sisemise süsteemi kella kõrgel perioodil on riiv läbipaistev.
Servadetektor genereerib ühe clkT0 impulsi iga tuvastatud positiivse (CS0[2:0] = 7) või negatiivse (CS0[2:0] = 6) serva kohta.
OCR0x registrid on topeltpuhverdatud, kui kasutatakse mis tahes PWM (Pulse Width Modulation) režiimi. Tavalise ja Clear Timer on Compare (CTC) töörežiimide korral on topeltpuhverdamine keelatud. Topeltpuhver sünkroonib OCR0x võrdlusregistrite värskenduse loendamisjärjestuse ülemisse või alumisse ossa. Sünkroniseerimine hoiab ära paaritu pikkusega mittesümmeetriliste PWM-impulsside esinemise, muutes seeläbi väljundi tõrgeteta.
OCR0x registrile juurdepääs võib tunduda keeruline, kuid see pole nii. Kui topeltpuhverdamine on lubatud, on protsessoril juurdepääs OCR0x puhvriregistrile ja kui topeltpuhverdus on keelatud, pääseb protsessor otse OCR0x juurde.
Jõu väljundi võrdlus
Mitte-PWM-i lainekuju genereerimise režiimides saab komparaatori vaste väljundi sundida, kirjutades ühe jõu väljundi võrdlemise (FOC0x) bitile. Võrdlusmängu sundimine ei määra OCF0x lippu ega laadita / tühista taimerit, kuid OC0x tihvti värskendatakse nii, nagu oleks toimunud tõeline võrdlusmõõt (COM0x [1: 0] bitide seaded määravad, kas OC0x tihvt on määratud, kustutatud või sisse lülitatud).
Võrdle vaste blokeerimist TCNT0 kirjutamise järgi
Kõik protsessori kirjutamise toimingud TCNT0 registrisse blokeerivad kõik võrdlusmängud, mis ilmnevad järgmises taimeri taktsüklis, isegi kui taimer on peatatud. See funktsioon võimaldab OCR0x lähtestada samale väärtusele kui TCNT0, ilma et taimer / loenduri kell on sisse lülitatud, katkestust käivitamata.
Väljundi võrdlemise üksuse kasutamine
Kuna TCNT0 kirjutamine mis tahes töörežiimis blokeerib kõik taimeri taktsükli võrdlusmängud, on väljundi võrdlusüksuse kasutamisel TCNT0 muutmisega kaasnevad riskid, olenemata sellest, kas taimer / loendur töötab või mitte. Kui TCNT0-le kirjutatud väärtus võrdub OCR0x-väärtusega, jääb võrdlusmõõt vahele, mille tulemuseks on vale lainekuju genereerimine. Samamoodi ärge kirjutage TCNT0 väärtust, mis võrdub BOTTOM-iga, kui loendurit loendatakse.
OC0x seadistamine tuleks läbi viia enne andmesuunaregistri seadistamist pordi tihvti väljastamiseks. Lihtsaim viis OC0x väärtuse määramiseks on kasutada strobobitte Force Output Compare (FOC0x) tavalises režiimis. OC0x registrid hoiavad oma väärtusi ka siis, kui vahetatakse lainekuju genereerimise režiimide vahel.
Pange tähele, et COM0x [1: 0] bitte pole koos võrdlusväärtusega topeltpuhverdatud. Bittide COM0x [1: 0] muutmine jõustub kohe.
Võrdle vaste väljundühikut
Väljundi võrdlemise (COM0x [1: 0]) bittidel on kaks funktsiooni. Lainekuju generaator kasutab järgmises võrdlusmängus väljundi võrdlemise (OC0x) oleku määratlemiseks bitte COM1x [0: 0]. Samuti juhivad bitid COM0x [1: 0] OC0x tihvti väljundallikat. Joonis 11-6 näitab COM0x [1: 0] bitisätte poolt mõjutatud loogika lihtsustatud skeemi. Joonisel olevad sisend- / väljundregistrid, sisend- / väljundbitid ja sisend- / väljundnõelad on esitatud rasvases kirjas. Kuvatakse ainult üldiste sisend- / väljundjuhtimisregistrite (DDR ja PORT) osad, mida bitid COM0x [1: 0] mõjutavad. OC0x olekule viitamisel on viide sisemisele OC0x registrile, mitte OC0x tihvtile. Süsteemi lähtestamise korral lähtestatakse OC0x register väärtusele 0.
Kui OC0A / OC0B on sisend- / väljundpistikuga ühendatud, sõltub COM0A [1: 0] / COM0B [1: 0] bitide funktsioon WGM0 [2: 0] bitiseadest. Tabel 11-2 näitab COM0x [1: 0] bitifunktsionaalsust, kui WGM0 [2: 0] bitid on seatud tavaliseks või CTC-režiimiks (mitte-PWM).
Tabel 11-2. Võrrelge väljundrežiimi ja mitte-PWM-režiimi
COM0A1 COM0B1 | COM0A0 COM0B0 | Kirjeldus |
0 | 0 | Pordi tavapärane töö, OC0A / OC0B on lahti ühendatud. |
0 | 1 | Lülitage valik OC0A / OC0B võrgus Võrdle |
1 | 0 | Tühjendage OC0A / OC0B võrdlusmängus |
1 | 1 | Määra OC0A / OC0B võrdlusmängus |
Tabel 11-3 näitab COM0x [1: 0] bitifunktsionaalsust, kui WGM0 [2: 0] bitid on seatud kiireks PWM-režiimiks.
Tabel 11-3. Võrrelge väljundrežiimi, kiiret PWM-režiimi(1)
COM0A1 COM0B1 | COM0A0 COM0B0 | Kirjeldus |
0 | 0 | Pordi tavapärane töö, OC0A / OC0B on lahti ühendatud. |
0 | 1 | Reserveeritud |
1 | 0 | Tühjendage OC0A / OC0B võrdlusmängus, määrake OC0A / OC0B olekuks BOTTOM (mitteinverteeriv režiim) |
1 | 1 | Valige OC0A / OC0B võrdlusmängus, tühjendage OC0A / OC0B BOTTOM-is (inverteerimisrežiim) |
Märkus. Erijuhtum esineb siis, kui OCR0A või OCR0B võrdub TOP ja COM0A1/COM0B1 on määratud. Sel juhul eiratakse võrdluse vastet, kuid seadistamine või tühjendamine toimub ALL. Vaata “Kiire PWM-režiim” lk 73 lisateabe saamiseks.
Tabel 11-4 näitab COM0x [1: 0] bitifunktsionaalsust, kui WGM0 [2: 0] bitid on seatud faasipõhiseks PWM-režiimiks.
Tabel 11-4. Võrrelge väljundrežiimi, faasikorrektse PWM-režiimi(1)
COM0A1 COM0B1 | COM0A0 COM0B0 | Kirjeldus |
0 | 0 | Pordi tavapärane töö, OC0A / OC0B on lahti ühendatud. |
0 | 1 | Reserveeritud |
1 | 0 | Tühjendage OC0A / OC0B võrdlusmängus loendamisel. Alamloendamisel määrake OC0A / OC0B võrgus Võrdle vaste. |
1 | 1 | Kui loendate, määrake OC0A / OC0B võrgus Võrdle mängu. Alamloendamisel tühjendage OC0A / OC0B võrdlusmängus. |
Märkus. 1. Erijuhtum esineb siis, kui OCR0A või OCR0B võrdub TOP ja COM0A1/COM0B1 on määratud. Sel juhul eiratakse võrdlemise vastet, kuid seadistamine või tühjendamine toimub TOP-is. Vaata „Faasikorrektne PWM-režiim” lk 74 lisateabe saamiseks.
Bitid 3: 2 - Res: reserveeritud bitid
Need bitid on ATtiny25 / 45/85 reserveeritud bitid ja loetakse alati nulliks.
Bitid 1: 0 - WGM0 [1: 0]: lainekuju genereerimise režiim
Koos TCCR02B registrist leitud bitiga WGM0 kontrollivad need bitid loenduri loenduse järjestust, loenduri maksimaalse (TOP) väärtuse allikat ja seda, millist tüüpi lainekuju genereerida, vt Tabel 11-5. Taimeri / loenduri üksuse toetatavad töörežiimid on: tavaline režiim (loendur), taimerite kustutamine režiimis Võrdle vastavus (CTC) ja kahte tüüpi impulsslaiuse modulatsiooni (PWM) režiimid (vt „Töörežiimid” 71. leheküljel).
Tabel 11-5. Lainekuju genereerimise režiimi biti kirjeldus
Režiim | WGM 02 | WGM 01 | WGM 00 | Taimeri / loenduri töörežiim | TOP | OCRx värskendus aadressil | TOV lipp on sisse lülitatud |
0 | 0 | 0 | 0 | Tavaline | 0xFF | Vahetu | MAX(1) |
1 | 0 | 0 | 1 | PWM, faas õige | 0xFF | TOP | ALUMINE(2) |
2 | 0 | 1 | 0 | CTC | OCRA | Vahetu | MAX(1) |
3 | 0 | 1 | 1 | Kiire PWM | 0xFF | ALUMINE(2) | MAX(1) |
4 | 1 | 0 | 0 | Reserveeritud | – | – | – |
5 | 1 | 0 | 1 | PWM, faas õige | OCRA | TOP | ALUMINE(2) |
6 | 1 | 1 | 0 | Reserveeritud | – | – | – |
7 | 1 | 1 | 1 | Kiire PWM | OCRA | ALUMINE(2) | TOP |
Bitt 7 - FOC0A: jõu väljundi võrdlus A
FOC0A-bit on aktiivne ainult siis, kui WGM-bitid määravad mitte-PWM-režiimi.
Tulevaste seadmetega ühilduvuse tagamiseks peab see bitt olema nullitud, kui TCCR0B kirjutatakse PWM-režiimis töötades. Loogilise kirjutamisel FOC0A-bitti sunnitakse lainekuju genereerimise üksusele viivitamatu võrdlusmäng. OC0A väljundit muudetakse vastavalt selle bittide seadele COM0A [1: 0]. Pange tähele, et bitti FOC0A rakendatakse stroboks. Seetõttu määrab sunniviisilise võrdluse mõju COM0A [1: 0] bitti väärtus.
FOC0A strobe ei tekita katkestusi ega kustuta taimerit CTC-režiimis, kasutades OCR0A-d TOP-na. FOC0A bitti loetakse alati nullina.
Bitt 6 - FOC0B: jõu väljundi võrdlus B.
FOC0B-bit on aktiivne ainult siis, kui WGM-bitid määravad mitte-PWM-režiimi.
Kuid ühilduvuse tagamiseks tulevaste seadmetega tuleb PWM-režiimis töötades TCCR0B kirjutamisel see bitt nullida. Loogilise kirjutamisel FOC0B-bitile sunnitakse lainekuju genereerimise üksusele viivitamatu võrdlusmäng. OC0B väljundit muudetakse vastavalt selle bittide seadele COM0B [1: 0]. Pange tähele, et bitti FOC0B rakendatakse stroboks. Seetõttu määrab sunniviisilise võrdluse mõju COM0B [1: 0] bitti väärtus.
FOC0B strobe ei tekita katkestusi ega kustuta taimerit CTC-režiimis, kasutades OCR0B-d TOP-na.
FOC0B bitti loetakse alati nullina.
Bitid 5: 4 - Res: reserveeritud bitid
Need bitid on ATtiny25 / 45/85 reserveeritud bitid ja loetakse alati nulliks.
Bitt 3 - WGM02: lainekuju genereerimise režiim
Vaadake kirjeldust “TCCR0A - Taimeri / loenduri juhtimise register A” lk 77.
Bitid 2: 0 - CS0 [2: 0]: kella valik
Kolm kella valimise bitti valivad taimeri / loenduri kasutatava kella allika.
Tabel 11-6. Kella valimine Biti kirjeldus
CS02 | CS01 | CS00 | Kirjeldus |
0 | 0 | 0 | Kella allikat pole (taimer / loendur on peatatud) |
0 | 0 | 1 | clkI/O/ (eelskaleerimist pole) |
0 | 1 | 0 | clkI/O/8 (eelskaalajast) |
0 | 1 | 1 | clkI/O/64 (eelskaalajast) |
1 | 0 | 0 | clkI/O/256 (eelskaalajast) |
1 | 0 | 1 | clkI/O/1024 (eelskaalajast) |
1 | 1 | 0 | Väline kella allikas T0 tihvtil. Kell langeval serval. |
1 | 1 | 1 | Väline kella allikas T0 tihvtil. Kell tõusvas servas. |
Kui taimeri / loenduri0 jaoks kasutatakse väliseid tihvtirežiime, siis T0 tihvti üleminekud loendavad loendurit ka siis, kui tihvt on konfigureeritud väljundina. See funktsioon võimaldab loendamist tarkvaraliselt juhtida.
Ühikute loendur ja võrdlus
Taimeri / loenduri1 üldist toimingut kirjeldatakse asünkroonses režiimis ja sünkroonrežiimis toimimist mainitakse ainult siis, kui nende kahe režiimi vahel on erinevusi. Joonis 12-2 näitab taimeri / loenduri 1 sünkroniseerimisregistri plokkskeemi ja sünkroonimise viivitusi registrite vahel. Pange tähele, et kõiki kella avamise üksikasju pole joonisel näidatud. Taimeri / loenduri1 registriväärtused läbivad sisemised sünkroniseerimisregistrid, mis põhjustavad sisendi sünkroonimise viivituse, enne kui mõjutavad loenduri tööd. Registreid TCCR1, GTCCR, OCR1A, OCR1B ja OCR1C saab kohe pärast registri kirjutamist tagasi lugeda. Taimer / loendur1 (TCNT1) registri ja lippude (OCF1A, OCF1B ja TOV1) tagasilugemisväärtused viibivad sisendi ja väljundi sünkroonimise tõttu.
Taimeril / loenduril1 on kõrge eraldusvõime ja kõrge täpsusega kasutamine madalamate eelkaltsineerimisvõimalustega. Samuti saab see toetada kahte täpset, kiiret, 8-bitist pulsilaiuse modulaatorit, kasutades taktsagedust kuni 64 MHz (või 32 MHz madala kiirusega režiimis). Selles režiimis on Taimer / Loendur1 ja väljundite võrdlusregistrid topelt eraldiseisvate PWM-idega, kattumata inverteeritud ja tagurpidi väljunditega. Viitama lehekülg 86 selle funktsiooni üksikasjaliku kirjelduse saamiseks. Samamoodi teevad suured eelskaleerimisvõimalused selle seadme kasulikuks väiksema kiirusega funktsioonide või harva toimuvate täpsete ajastamisfunktsioonide jaoks.
Joonis 12-2. Taimer/loendur 1 sünkroniseerimisregistri plokkskeem.
Taimer / loendur1 ja eelskaal võimaldavad protsessorit käivitada mis tahes kelliallikast, kui eelskaal töötab asünkroonses režiimis kiirel 64 MHz (või 32 MHz madala kiirusega režiimis) PCK kellal.
Pange tähele, et süsteemi taktsagedus peab olema väiksem kui üks kolmandik PCK sagedusest. Asünkroonse taimeri / loenduri1 sünkroniseerimismehhanism vajab süsteemi kella kõrgel ajal vähemalt kahte PCK serva. Kui süsteemikella sagedus on liiga kõrge, on oht, et andmed või kontrollväärtused lähevad kaotsi.
Järgmised Joonis 12-3 näitab taimeri / loenduri1 plokkskeemi.
Tabel 12-1. Võrdle režiim Valige PWM-režiimis
COM1x1 | COM1x0 | Mõju väljundi võrdlusnõeltele |
0 | 0 | OC1x pole ühendatud. OC1x pole ühendatud. |
0 | 1 | OC1x puhastati võrdlusmängus. Määra, kuiTCNT1 = $ 00. OC1x seatud võrdlusmängus. Kustutatakse, kui TCNT1 = $ 00. |
1 | 0 | OC1x puhastati võrdlusmängus. Määra, kui TCNT1 = $ 00. OC1x pole ühendatud. |
1 | 1 | OC1x Määra võrdlusmängus. Kustutatakse, kui TCNT1 = $ 00. OC1x pole ühendatud. |
ADC omadused
Tabel 21-8. ADC omadused, ühe otsaga kanalid. TA = -40°C kuni +85°C
Sümbol | Parameeter | Seisund | Min | Tüüp | Max | Ühikud |
Resolutsioon | 10 | Bitid | ||||
Absoluutne täpsus (sh INL, DNL ja kvantimise, võimenduse ja nihke vead) | VREF = 4 V, VCC = 4 V,
ADC kell = 200 kHz |
2 | LSB | |||
VREF = 4 V, VCC = 4 V,
ADC kell = 1 MHz |
3 | LSB | ||||
VREF = 4 V, VCC = 4 V,
ADC kell = 200 kHz Müra vähendamise režiim |
1.5 | LSB | ||||
VREF = 4 V, VCC = 4 V,
ADC kell = 1 MHz Müra vähendamise režiim |
2.5 | LSB | ||||
Integraalne mittelineaarsus (INL) (täpsus pärast nihet ja võimenduse kalibreerimist) | VREF = 4 V, VCC = 4 V,
ADC kell = 200 kHz |
1 | LSB | |||
Diferentsiaalne mittelineaarsus (DNL) | VREF = 4 V, VCC = 4 V,
ADC kell = 200 kHz |
0.5 | LSB | |||
Võimendi viga | VREF = 4 V, VCC = 4 V,
ADC kell = 200 kHz |
2.5 | LSB | |||
Nihe viga | VREF = 4 V, VCC = 4 V,
ADC kell = 200 kHz |
1.5 | LSB | |||
Konversiooni aeg | Tasuta jooksmine | 14 | 280 | µs | ||
Kella sagedus | 50 | 1000 | kHz | |||
VIN | Sisend Voltage | GND | VREF | V | ||
Sisendi ribalaius | 38.4 | kHz | ||||
AREF | Väline viide Voltage | 2.0 | VCC | V | ||
KRUVI | Internal Voltage Viide | 1.0 | 1.1 | 1.2 | V | |
Sisemine 2.56 V tugi (1) | VCC > 3.0 V | 2.3 | 2.56 | 2.8 | V | |
RREF | 32 | kΩ | ||||
VIHMA | Analoogsisendi takistus | 100 | MΩ | |||
ADC väljund | 0 | 1023 | LSB |
Märkus. 1. Väärtused on ainult juhised.
Tabel 21-9. ADC omadused, diferentsiaalkanalid (unipolaarne režiim). TA = -40°C kuni +85°C
Sümbol | Parameeter | Seisund | Min | Tüüp | Max | Ühikud |
Resolutsioon | Kasum = 1x | 10 | Bitid | |||
Kasum = 20x | 10 | Bitid | ||||
Absoluutne täpsus (sh INL, DNL ja
Kvantimise, võimenduse ja nihke vead) |
Kasum = 1x
VREF = 4 V, VCC = 5 V ADC kell = 50 - 200 kHz |
10.0 | LSB | |||
Kasum = 20x
VREF = 4 V, VCC = 5 V ADC kell = 50 - 200 kHz |
20.0 | LSB | ||||
Integraalne mittelineaarsus (INL) (täpsus pärast nihet ja võimenduse kalibreerimist) | Kasum = 1x
VREF = 4 V, VCC = 5 V ADC kell = 50 - 200 kHz |
4.0 | LSB | |||
Kasum = 20x
VREF = 4 V, VCC = 5 V ADC kell = 50 - 200 kHz |
10.0 | LSB | ||||
Võimendi viga | Kasum = 1x | 10.0 | LSB | |||
Kasum = 20x | 15.0 | LSB | ||||
Nihe viga | Kasum = 1x
VREF = 4 V, VCC = 5 V ADC kell = 50 - 200 kHz |
3.0 | LSB | |||
Kasum = 20x
VREF = 4 V, VCC = 5 V ADC kell = 50 - 200 kHz |
4.0 | LSB | ||||
Konversiooni aeg | Tasuta jooksmine | 70 | 280 | µs | ||
Kella sagedus | 50 | 200 | kHz | |||
VIN | Sisend Voltage | GND | VCC | V | ||
VDIFF | Sisendi diferentsiaal Voltage | VREF/Gain | V | |||
Sisendi ribalaius | 4 | kHz | ||||
AREF | Väline viide Voltage | 2.0 | VCC – 1.0 | V | ||
KRUVI | Internal Voltage Viide | 1.0 | 1.1 | 1.2 | V | |
Sisemine 2.56 V tugi (1) | VCC > 3.0 V | 2.3 | 2.56 | 2.8 | V | |
RREF | Võrdlus sisendtakistus | 32 | kΩ | |||
VIHMA | Analoogsisendi takistus | 100 | MΩ | |||
ADC teisenduse väljund | 0 | 1023 | LSB |
Märkus. Väärtused on ainult juhised.
Tabel 21-10. ADC omadused, diferentsiaalkanalid (bipolaarne režiim). TA = -40°C kuni +85°C
Sümbol | Parameeter | Seisund | Min | Tüüp | Max | Ühikud |
Resolutsioon | Kasum = 1x | 10 | Bitid | |||
Kasum = 20x | 10 | Bitid | ||||
Absoluutne täpsus (sh INL, DNL ja
Kvantimise, võimenduse ja nihke vead) |
Kasum = 1x
VREF = 4 V, VCC = 5 V ADC kell = 50 - 200 kHz |
8.0 | LSB | |||
Kasum = 20x
VREF = 4 V, VCC = 5 V ADC kell = 50 - 200 kHz |
8.0 | LSB | ||||
Integraalne mittelineaarsus (INL) (täpsus pärast nihet ja võimenduse kalibreerimist) | Kasum = 1x
VREF = 4 V, VCC = 5 V ADC kell = 50 - 200 kHz |
4.0 | LSB | |||
Kasum = 20x
VREF = 4 V, VCC = 5 V ADC kell = 50 - 200 kHz |
5.0 | LSB | ||||
Võimendi viga | Kasum = 1x | 4.0 | LSB | |||
Kasum = 20x | 5.0 | LSB | ||||
Nihe viga | Kasum = 1x
VREF = 4 V, VCC = 5 V ADC kell = 50 - 200 kHz |
3.0 | LSB | |||
Kasum = 20x
VREF = 4 V, VCC = 5 V ADC kell = 50 - 200 kHz |
4.0 | LSB | ||||
Konversiooni aeg | Tasuta jooksmine | 70 | 280 | µs | ||
Kella sagedus | 50 | 200 | kHz | |||
VIN | Sisend Voltage | GND | VCC | V | ||
VDIFF | Sisendi diferentsiaal Voltage | VREF/Gain | V | |||
Sisendi ribalaius | 4 | kHz | ||||
AREF | Väline viide Voltage | 2.0 | VCC – 1.0 | V | ||
KRUVI | Internal Voltage Viide | 1.0 | 1.1 | 1.2 | V | |
Sisemine 2.56 V tugi (1) | VCC > 3.0 V | 2.3 | 2.56 | 2.8 | V | |
RREF | Võrdlus sisendtakistus | 32 | kΩ | |||
VIHMA | Analoogsisendi takistus | 100 | MΩ | |||
ADC teisenduse väljund | -512 | 511 | LSB |
Juhiste komplekti kokkuvõte
Mnemoonika | Operandid | Kirjeldus | Operatsioon | Lipud | #Kellad |
ARITMEETIKA- JA LOGIKAJUHISED | |||||
LISA | Rd, Rr | Lisage kaks registrit | Rd ← Rd + Rr | Z, C, N, V, H | 1 |
ADC | Rd, Rr | Lisage koos Carry two Registritega | Rd ← Rd + Rr + C | Z, C, N, V, H | 1 |
ADIW | Rdl, K | Lisage kohe Wordi | Rdh:Rdl ← Rdh:Rdl + K | Z, C, N, V, S | 2 |
SUB | Rd, Rr | Lahutage kaks registrit | Rd ← Rd – Rr | Z, C, N, V, H | 1 |
MA LÄKSIN ÜLES | Rd, K. | Lahutage registrist konstant | Rd ← Rd – K | Z, C, N, V, H | 1 |
SBC | Rd, Rr | Lahutage koos kahe registriga Carry | Rd ← Rd – Rr – C | Z, C, N, V, H | 1 |
SBCI | Rd, K. | Lahutage koos Carry Constantiga reg. | Rd ← Rd – K – C | Z, C, N, V, H | 1 |
SBIW | Rdl, K | Lahutage Wordist kohe | Rdh:Rdl ← Rdh:Rdl – K | Z, C, N, V, S | 2 |
JA | Rd, Rr | Loogilised JA registrid | Rd ← Rd ∙ Rr | Z, N, V | 1 |
ANDI | Rd, K. | Loogiline JA register ja pidev | Rd ← Rd ∙ K | Z, N, V | 1 |
OR | Rd, Rr | Loogilised VÕI registrid | Rd ← Rd v Rr | Z, N, V | 1 |
ORI | Rd, K. | Loogiline VÕI register ja püsiv | Rd ← Rd v K | Z, N, V | 1 |
EOR | Rd, Rr | Eksklusiivsed VÕI registrid | Rd ← Rd ⊕ Rr | Z, N, V | 1 |
KOM | Rd | Üks on täiend | Rd ← 0xFF − Rd | Z, C, N, V | 1 |
NEG | Rd | Kahe komplement | Rd ← 0x00 − Rd | Z, C, N, V, H | 1 |
SBR | Rd, K | Määra bitt (id) registrisse | Rd ← Rd v K | Z, N, V | 1 |
CBR | Rd, K | Kustuta registris bitid | Rd ← Rd ∙ (0xFF – K) | Z, N, V | 1 |
INC | Rd | Kasv | Rd ← Rd + 1 | Z, N, V | 1 |
DEC | Rd | Kahanemine | Rd ← Rd - 1 | Z, N, V | 1 |
TST | Rd | Test null või miinus | Rd ← Rd ∙ Rd | Z, N, V | 1 |
CLR | Rd | Kustuta register | Rd ← Rd ⊕ Rd | Z, N, V | 1 |
SER | Rd | Määra register | Rd ← 0xFF | Mitte ühtegi | 1 |
HARUJUHISED | |||||
RJMP | k | Suhteline hüpe | PC ← PC + k + 1 | Mitte ühtegi | 2 |
IJMP | Kaudne hüpata (Z) | PC ← Z | Mitte ühtegi | 2 | |
HELISTA | k | Suhteline alamprogrammi kõne | PC ← PC + k + 1 | Mitte ühtegi | 3 |
ICALL | Kaudne kõne numbrile (Z) | PC ← Z | Mitte ühtegi | 3 | |
RET | Alamprogrammi tagasipöördumine | PC ← STACK | Mitte ühtegi | 4 | |
Reti | Katkine tagasitulek | PC ← STACK | I | 4 | |
CPSE | Rd, Rr | Võrdle, jätke vahele, kui võrdne | kui (Rd = Rr) PC ← PC + 2 või 3 | Mitte ühtegi | 1 |
CP | Rd, Rr | Võrdle | Rd − Rr | Z, N, V, C, H | 1 |
CPC | Rd, Rr | Võrdle Carryga | Rd - Rr - C | Z, N, V, C, H | 1 |
CPI | Rd, K | Võrrelge registreerumist kohese | Rd - K | Z, N, V, C, H | 1 |
SBRC | Rr, sünd | Jätke vahele, kui bitt registris on kustutatud | kui (Rr(b)=0) PC ← PC + 2 või 3 | Mitte ühtegi | 1 |
SBRS | Rr, sünd | Jätke vahele, kui bitt registris on määratud | kui (Rr(b)=1) PC ← PC + 2 või 3 | Mitte ühtegi | 1 |
SBIC | P, b | Jätke vahele, kui bit on sisend- / väljundregistris kustutatud | kui (P(b)=0) PC ← PC + 2 või 3 | Mitte ühtegi | 1 |
SBIS | P, b | Jätke vahele, kui sisend- / väljundiregistris on bitt määratud | kui (P(b)=1) PC ← PC + 2 või 3 | Mitte ühtegi | 1 |
BRBS | s, k | Haru, kui olekulipp on määratud | kui (SREG(id) = 1), siis PC←PC+k + 1 | Mitte ühtegi | 1/2 |
BRBC | s, k | Haru, kui olekulipp on kustutatud | kui (SREG(id) = 0), siis PC←PC+k + 1 | Mitte ühtegi | 1/2 |
BREQ | k | Filiaal, kui võrdne | kui (Z = 1), siis PC ← PC + k + 1 | Mitte ühtegi | 1/2 |
BRNE | k | Filiaal, kui mitte võrdne | kui (Z = 0), siis PC ← PC + k + 1 | Mitte ühtegi | 1/2 |
BRCS | k | Filiaal, kui kandekomplekt on olemas | kui (C = 1), siis PC ← PC + k + 1 | Mitte ühtegi | 1/2 |
BRCC | k | Filiaal, kui kandmine on tühjendatud | kui (C = 0), siis PC ← PC + k + 1 | Mitte ühtegi | 1/2 |
BRSH | k | Filiaal, kui sama või kõrgem | kui (C = 0), siis PC ← PC + k + 1 | Mitte ühtegi | 1/2 |
BRLO | k | Filiaal, kui madalam | kui (C = 1), siis PC ← PC + k + 1 | Mitte ühtegi | 1/2 |
BRMI | k | Filiaal, kui miinus | kui (N = 1), siis PC ← PC + k + 1 | Mitte ühtegi | 1/2 |
BRPL | k | Filiaal kui Plus | kui (N = 0), siis PC ← PC + k + 1 | Mitte ühtegi | 1/2 |
BRGE | k | Oks, kui suurem või võrdne, allkirjastatud | kui (N ⊕ V= 0), siis PC ← PC + k + 1 | Mitte ühtegi | 1/2 |
BRLT | k | Filiaal, kui vähem kui null, allkirjastatud | kui (N ⊕ V= 1), siis PC ← PC + k + 1 | Mitte ühtegi | 1/2 |
BRHS | k | Oks, kui seatakse poolekandelipp | kui (H = 1), siis PC ← PC + k + 1 | Mitte ühtegi | 1/2 |
BRHC | k | Filiaal, kui pool kandelipp on tühjendatud | kui (H = 0), siis PC ← PC + k + 1 | Mitte ühtegi | 1/2 |
BRTS | k | Filiaal, kui T lipp on seatud | kui (T = 1), siis PC ← PC + k + 1 | Mitte ühtegi | 1/2 |
BRTC | k | Filiaal, kui T lipp on kustutatud | kui (T = 0), siis PC ← PC + k + 1 | Mitte ühtegi | 1/2 |
BRVS | k | Haru, kui ülevoolulipp on seatud | kui (V = 1), siis PC ← PC + k + 1 | Mitte ühtegi | 1/2 |
BRVC | k | Haru, kui ülevoolulipp on kustutatud | kui (V = 0), siis PC ← PC + k + 1 | Mitte ühtegi | 1/2 |
BRIE | k | Haru, kui katkestamine on lubatud | kui ( I = 1), siis PC ← PC + k + 1 | Mitte ühtegi | 1/2 |
BRID | k | Filiaal, kui katkestus on puudega | kui ( I = 0), siis PC ← PC + k + 1 | Mitte ühtegi | 1/2 |
BIT JA BIT-TEST JUHISED | |||||
SBI | P, b | Määra bitt I / O registrisse | I/O (P,b) ← 1 | Mitte ühtegi | 2 |
CBI | P, b | Tühjendage sisend- / väljundregistris natuke | I/O (P,b) ← 0 | Mitte ühtegi | 2 |
LSL | Rd | Loogiline nihe vasakule | Rd(n+1) ← Rd(n), Rd(0) ← 0 | Z, C, N, V | 1 |
LSR | Rd | Loogiline nihe paremale | Rd(n) ← Rd(n+1), Rd(7) ← 0 | Z, C, N, V | 1 |
Rol | Rd | Pöörake läbi kandmise vasakule | Rd(0)←C,Rd(n+1)← Rd(n),C←Rd(7) | Z, C, N, V | 1 |
ROR | Rd | Pöörake läbi kandmise paremale | Rd(7)←C,Rd(n)← Rd(n+1),C←Rd(0) | Z, C, N, V | 1 |
ASR | Rd | Aritmeetiline nihe paremale | Rd(n) ← Rd(n+1), n=0..6 | Z, C, N, V | 1 |
Mnemoonika | Operandid | Kirjeldus | Operatsioon | Lipud | #Kellad |
VAHETA | Rd | Vaheta Nibbles | Rd(3..0)←Rd(7..4),Rd(7..4)←Rd(3..0) | Mitte ühtegi | 1 |
BSET | s | Lippude komplekt | SREG(id) ← 1 | SREG (id) | 1 |
BCLR | s | Lipp selge | SREG(id) ← 0 | SREG (id) | 1 |
BST | Rr, sünd | Bitipood registrist T-ni | T ← Rr(b) | T | 1 |
BLD | Rd, sünd | Biti koormus T-st registrisse | Rd(b) ← T | Mitte ühtegi | 1 |
SEC | Määra Carry | C ← 1 | C | 1 | |
CLC | Selge Kandke | C ← 0 | C | 1 | |
HEV | Määra negatiivne lipp | N ← 1 | N | 1 | |
CLN | Selge negatiivne lipp | N ← 0 | N | 1 | |
SEZ | Määra nulllipp | Z ← 1 | Z | 1 | |
CLZ | Selge nulllipp | Z ← 0 | Z | 1 | |
SEI | Globaalse katkestuse lubamine | mina ← 1 | I | 1 | |
CLI | Globaalne katkestus keelatud | mina ← 0 | I | 1 | |
SES | Määra allkirjastatud testlipp | S ← 1 | S | 1 | |
CLS | Kustuta allkirjastatud testlipp | S ← 0 | S | 1 | |
SEV | Määra kaks komplemendi ülevoolu. | V ← 1 | V | 1 | |
CLV | Selge kaks täiendava ülevoolu | V ← 0 | V | 1 | |
SET | Määrake SREG-is T | T ← 1 | T | 1 | |
CLT | Tühjendage T SREG-is | T ← 0 | T | 1 | |
VAATA | Määra SREGis pool kandelipp | H ← 1 | H | 1 | |
CLH | Selge pool kandelipp SREG-is | H ← 0 | H | 1 | |
ANDMETE EDASTAMISJUHEND | |||||
MOV | Rd, Rr | Registrite vahel liikumine | Rd ← Rr | Mitte ühtegi | 1 |
MOVW | Rd, Rr | Kopeeri Registreerige Word | Rd+1:Rd ← Rr+1:Rr | Mitte ühtegi | 1 |
LDI | Rd, K. | Laadige kohe | Rd ← K | Mitte ühtegi | 1 |
LD | Rd, X | Kaudne laadimine | Rd ← (X) | Mitte ühtegi | 2 |
LD | Rd, X + | Laadi kaudselt ja post-inc. | Rd ← (X), X ← X + 1 | Mitte ühtegi | 2 |
LD | Rd, - X | Laadi kaudselt ja enne dets. | X ← X – 1, Rd ← (X) | Mitte ühtegi | 2 |
LD | Rd, Y | Kaudne laadimine | Rd ← (Y) | Mitte ühtegi | 2 |
LD | Rd, Y + | Laadi kaudselt ja post-inc. | Rd ← (Y), Y ← Y + 1 | Mitte ühtegi | 2 |
LD | Rd, - Y | Laadi kaudselt ja enne dets. | Y ← Y – 1, Rd ← (Y) | Mitte ühtegi | 2 |
LDD | Rd, Y + q | Kaudne koormus nihkega | Rd ← (Y + q) | Mitte ühtegi | 2 |
LD | Rd, Z | Kaudne laadimine | Rd ← (Z) | Mitte ühtegi | 2 |
LD | Rd, Z + | Laadi kaudselt ja post-inc. | Rd ← (Z), Z ← Z+1 | Mitte ühtegi | 2 |
LD | Rd, -Z | Laadi kaudselt ja enne dets. | Z ← Z – 1, Rd ← (Z) | Mitte ühtegi | 2 |
LDD | Rd, Z + q | Kaudne koormus nihkega | Rd ← (Z + q) | Mitte ühtegi | 2 |
LDS | Rd, k | Laadige otse SRAM-ist | Rd ← (k) | Mitte ühtegi | 2 |
ST | X, Rr | Salvesta kaudne | (X) ← Rr | Mitte ühtegi | 2 |
ST | X +, Rr | Kauplus ja post-Inc. | (X) ← Rr, X ← X + 1 | Mitte ühtegi | 2 |
ST | - X, Rr | Salvesta kaudne ja eel dets. | X ← X – 1, (X) ← Rr | Mitte ühtegi | 2 |
ST | Y, Rr | Salvesta kaudne | (Y) ← Rr | Mitte ühtegi | 2 |
ST | Y +, Rr | Kauplus ja post-Inc. | (Y) ← Rr, Y ← Y + 1 | Mitte ühtegi | 2 |
ST | - Y, Rr | Salvesta kaudne ja eel dets. | Y ← Y – 1, (Y) ← Rr | Mitte ühtegi | 2 |
STD | Y + q, Rr | Salvesta kaudne koos nihkega | (Y + q) ← Rr | Mitte ühtegi | 2 |
ST | Z, Rr | Salvesta kaudne | (Z) ← Rr | Mitte ühtegi | 2 |
ST | Z +, Rr | Kauplus ja post-Inc. | (Z) ← Rr, Z ← Z + 1 | Mitte ühtegi | 2 |
ST | -Z, Rr | Salvesta kaudne ja eel dets. | Z ← Z – 1, (Z) ← Rr | Mitte ühtegi | 2 |
STD | Z + q, Rr | Salvesta kaudne koos nihkega | (Z + q) ← Rr | Mitte ühtegi | 2 |
STS | k, Rr | Säilitage otse SRAM-i | (k) ← Rr | Mitte ühtegi | 2 |
LPM | Laadige programmi mälu | R0 ← (Z) | Mitte ühtegi | 3 | |
LPM | Rd, Z | Laadige programmi mälu | Rd ← (Z) | Mitte ühtegi | 3 |
LPM | Rd, Z + | Laadige programmi mälu ja post-inc | Rd ← (Z), Z ← Z+1 | Mitte ühtegi | 3 |
SPM | Programmimälu salvestamine | (z) ← R1:R0 | Mitte ühtegi | ||
IN | Rd, P. | Sadamas | Rd ← P | Mitte ühtegi | 1 |
VÄLJAS | P, Rr | Välja sadamast | P ← Rr | Mitte ühtegi | 1 |
PUSH | Rr | Push Register registreeru | STACK ← Rr | Mitte ühtegi | 2 |
POP | Rd | Popregister Stackist | Rd ← STACK | Mitte ühtegi | 2 |
MCU KONTROLLI JUHISED | |||||
NOP | Ei mingit operatsiooni | Mitte ühtegi | 1 | ||
MAGA | Magama | (vaadake unefunktsiooni konkreetset kirjeldust) | Mitte ühtegi | 1 | |
WDR | Valvekoera lähtestamine | (vt WDR / taimeri konkreetset kirjeldust) | Mitte ühtegi | 1 | |
PAUS | Katkesta |
Kiirus (MHz) (1) | Supply Voltage (V) | Temperatuurivahemik | pakett (2) | Tellimiskood (3) |
10 | 1.8-5.5 | Tööstuslik
(-40 ° C kuni + 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 | Tööstuslik
(-40 ° C kuni + 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 |
Märkused: 1. Kiiruse ja toite mahu kohtatage, vaadake jaotist 21.3 “Kiirus” lk 163.
Kõik pakendid on Pb-, halogeniidivabad ja täiesti rohelised ning vastavad Euroopa ohtlike ainete piiramise direktiivile (RoHS).
Koodi indikaatorid
H: NiPdAu plii viimistlus
U: matt tina
R: lint ja rull
Neid seadmeid saab tarnida ka vahvel kujul. Täpsema tellimisteabe ja miinimumkoguste saamiseks pöörduge palun kohaliku Atmeli müügiesinduse poole.
Viga
Viga ATtiny25
Selle jaotise redaktsioonikiri viitab seadme ATtiny25 redaktsioonile.
Rev D - F
Pole teada vigu.
Rev B - C
EEPROM -i lugemine võib ebaõnnestuda madala voolutugevuse korraltage / madal taktsagedus
EEPROM -i lugemine võib ebaõnnestuda madala voolutugevuse korraltage / madal taktsagedus
Proovin lugeda EEPROM -i madalate taktsageduste ja/või väikese voolutugevusegatagSee võib põhjustada kehtetuid andmeid.
Probleemi lahendamine / lahendus
Ärge kasutage EEPROM -i, kui taktsagedus on alla 1 MHz ja toitepingetage on alla 2V. Kui töösagedust ei saa tõsta üle 1 MHz, siis toitepingetage peaks olema üle 2V. Samamoodi, kui tarne voltage ei saa tõsta üle 2 V, siis peaks töösagedus olema üle 1 MHz.
See funktsioon on teadaolevalt sõltuv temperatuurist, kuid seda pole iseloomustatud. Suunised antakse ainult toatemperatuuri kohta.
Rev A
Mitte sampjuhitud.
Viga ATtiny45
Selle jaotise redaktsioonikiri viitab seadme ATtiny45 redaktsioonile.
Rev F - G
Pole teada vigu
Rev D - E
EEPROM -i lugemine võib ebaõnnestuda madala voolutugevuse korraltage / madal taktsagedus
EEPROM -i lugemine võib ebaõnnestuda madala voolutugevuse korraltage / madal taktsagedus
Proovin lugeda EEPROM -i madalate taktsageduste ja/või väikese voolutugevusegatagSee võib põhjustada kehtetuid andmeid.
Probleemi lahendamine / lahendus
Ärge kasutage EEPROM -i, kui taktsagedus on alla 1 MHz ja toitepingetage on alla 2V. Kui töösagedust ei saa tõsta üle 1 MHz, siis toitepingetage peaks olema üle 2V. Samamoodi, kui tarne voltage ei saa tõsta üle 2 V, siis peaks töösagedus olema üle 1 MHz.
See funktsioon on teadaolevalt sõltuv temperatuurist, kuid seda pole iseloomustatud. Suunised antakse ainult toatemperatuuri kohta.
Rev B - C
PLL ei lukustu
Rakenduse koodilt loetud EEPROM ei tööta lukustusbiti režiimis 3
EEPROM -i lugemine võib ebaõnnestuda madala voolutugevuse korraltage / madal taktsagedus
Taimeri loenduri 1 PWM-väljundi genereerimine OC1B-XOC1B-l ei tööta korralikult
PLL ei lukustu
Kui sagedus on alla 6.0 MHz, PLL ei lukustu
Probleemi lahendamine / lahendus
PLL-i kasutamisel töötage sagedusel 6.0 MHz või rohkem.
Rakenduse koodilt loetud EEPROM ei tööta lukustusbiti režiimis 3
Kui mäluluku bitid LB2 ja LB1 on programmeeritud režiimi 3, ei tööta EEPROM-i lugemine rakenduse koodist.
Probleemi lahendamine / probleemide lahendamine
Ärge määrake lukustusbiti kaitserežiimi 3, kui rakenduse kood peab EEPROM-ist lugema.
EEPROM -i lugemine võib ebaõnnestuda madala voolutugevuse korraltage / madal taktsagedus
Proovin lugeda EEPROM -i madalate taktsageduste ja/või väikese voolutugevusegatagSee võib põhjustada kehtetuid andmeid.
Probleemi lahendamine / lahendus
Ärge kasutage EEPROM -i, kui taktsagedus on alla 1 MHz ja toitepingetage on alla 2V. Kui töösagedust ei saa tõsta üle 1 MHz, siis toitepingetage peaks olema üle 2V. Samamoodi, kui tarne voltage ei saa tõsta üle 2 V, siis peaks töösagedus olema üle 1 MHz.
See funktsioon on teadaolevalt sõltuv temperatuurist, kuid seda pole iseloomustatud. Suunised antakse ainult toatemperatuuri kohta.
Taimeri loenduri 1 PWM-väljundi genereerimine OC1B-l - XOC1B-l ei tööta korralikult
Taimeri loenduri1 PWM-väljund OC1B-XOC1B ei tööta korralikult. Ainult juhul, kui juhtbitid, COM1B1 ja COM1B0 on samas režiimis kui vastavalt COM1A1 ja COM1A0, töötavad OC1B-XOC1B väljund õigesti.
Probleemi lahendamine / probleemide lahendamine
Ainus lahendus on sama juhtimissätte kasutamine juhtbittidel COM1A [1: 0] ja COM1B [1: 0], vt tabelit 14–4. Tiny45 rev D puhul on probleem lahendatud.
Rev A
Liiga suur voolutarve
DebugWIRE kaotab suhtluse, kui üksik astub katkestustesse
PLL ei lukustu
Rakenduse koodilt loetud EEPROM ei tööta lukustusbiti režiimis 3
EEPROM -i lugemine võib ebaõnnestuda madala voolutugevuse korraltage / madal taktsagedus
Liiga suur voolutarve
Kolm olukorda toovad kaasa liiga suure voolutarbimise. Need on:
Väline kell valitakse kaitsmete abil, kuid I / O PORT on endiselt väljundina lubatud.
EEPROM loetakse enne toite väljalülitamist.
VCC on 4.5 volti või rohkem.
Kohustustest loobumine: selles dokumendis sisalduv teave on esitatud seoses Atmeli toodetega. Selle dokumendiga ega seoses Atmeli toodete müügiga ei anta intellektuaalomandi õigusele otsest ega kaudset litsentsi, tõkestamise või muul viisil. VÄLJA arvatud ATMELI ATMELI MÜÜGI TINGIMUSTES ESITATUD ATMELIS WEBSAIT, ATMEL EI VASTUTA MISKIGI VASTUTUST NING LAHTUB OMA TOODETEGA SEOTUD SELGEST, KAUDSELT VÕI KOHUSTUSLIKUst GARANTIIST, SEALHULGAS, KUID MITTE PIIRATUD, KAUBANDUSVÕIME, P-KOHTUVUSEGA KUIDAS VÕI KAUDSEERITUD GARANTIID. MITTE JUHUL EI VASTUTA ATMEL MITTE OTSESE, KAUDSE, TAGAJÄRGSETE, KARISTUSLIKU, ERILISTE VÕI JUHUSLIKKE KAHJU EEST (SEALHULGAS PIIRANGUTA KAHJUD JA KASUMI KAHJUD, ÄRIVÕI KASUTAMISE VÕI KASUTAMISE KATKEMISE SEE DOKUMENT, ISEGI KUI ATMELIT ON SELLISTE KAHJUDE VÕIMALUSEST TEATUD.
Atmel ei anna mingeid kinnitusi ega garantiisid selle dokumendi sisu täpsuse või täielikkuse kohta ning jätab endale õiguse teha tehnilisi andmeid ja tootekirjeldusi igal ajal ilma ette teatamata. Atmel ei võta endale kohustust uuendada siin sisalduvat teavet. Kui ei ole konkreetselt sätestatud teisiti, ei sobi Atmeli tooted ega tohi kasutada autotööstuses. Atmeli tooted ei ole ette nähtud, volitatud ega garanteeritud kasutamiseks komponentidena rakendustes, mis on mõeldud eluea säilitamiseks.