Atmel 8-bittinen AVR-mikro-ohjain 2/4/8K tavulla järjestelmän ohjelmoitavalla salamalla
Ominaisuudet
- Tehokas, pienitehoinen 8-bittinen AVR®-mikro-ohjain
- Edistynyt RISC-arkkitehtuuri
- 120 tehokasta ohjetta - useimpien yksittäisten kellojaksojen suorittaminen
- 32 x 8 yleiskäyttöistä työrekisteriä
- Täysin staattinen käyttö
- Haihtumattomat ohjelma- ja datamuistit
- 2/4/8K tavua järjestelmän sisäistä ohjelmoitavaa ohjelmamuistia
- Kestävyys: 10,000 XNUMX kirjoitus-/poistosykliä
- 128/256/512 tavua järjestelmässä ohjelmoitava EEPROM
- Kestävyys: 100,000 XNUMX kirjoitus-/poistosykliä
- 128/256/512 tavua sisäinen SRAM
- Ohjelmointilukko itseohjelmoivaa Flash-ohjelmaa ja EEPROM-tietoturvaa varten
Oheislaitteiden ominaisuudet
- 8-bittinen ajastin/laskuri esiskaalaimella ja kahdella PWM-kanavalla
- 8-bittinen nopea ajastin/laskuri erillisellä esiskaalaimella
- 2 korkeataajuista PWM-lähtöä erillisillä lähtövertailurekistereillä
- Ohjelmoitava kuolleen ajan generaattori
- USI – Universal Serial Interface ja käynnistystilan ilmaisin
- 10-bittinen ADC
4 yksipäistä kanavaa
2 differentiaalista ADC-kanavaparia ohjelmoitavalla vahvistuksella (1x, 20x)
Lämpötilan mittaus
Ohjelmoitava Watchdog-ajastin erillisellä siruoskillaattorilla
Piirissä oleva analoginen vertailija
Mikrokontrollerin erityisominaisuudet
debugWIRE On-chip Debug System
Järjestelmässä ohjelmoitavissa SPI-portin kautta
Ulkoiset ja sisäiset keskeytyslähteet
Pienitehoiset joutokäynti-, ADC-kohinanvaimennus- ja virrankatkaisutilat
Enhanced Power-on Reset Circuit
Ohjelmoitava Brown-out-tunnistuspiiri
Sisäinen kalibroitu oskillaattori
I / O ja paketit
Kuusi ohjelmoitavaa I/O-linjaa
8-nastainen PDIP, 8-nastainen SOIC, 20-nastainen QFN/MLF ja 8-nastainen TSSOP (vain ATtiny45/V)
Käyttö Voltage
– 1.8 – 5.5 V malleille ATtiny25V/45V/85V
– 2.7 – 5.5 V mallille ATtiny25/45/85
Nopeusaste
– 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
Teollisuuden lämpötila-alue
Alhainen virrankulutus
Aktiivinen tila:
1 MHz, 1.8 V: 300 uA
Virrankatkaisutila:
Pin-määritykset
Pinout ATtiny25/45/85
Pin-kuvaukset
VCC: Supply voltage.
GND: Maa.
Portti B (PB5:PB0): Portti B on 6-bittinen kaksisuuntainen I/O-portti, jossa on sisäiset vetovastukset (valitaan jokaiselle bitille). Portin B lähtöpuskureissa on symmetriset taajuusmuuttajaominaisuudet sekä korkea nielu- että lähdekapasiteetti. Sisääntulona portin B nastat, jotka on vedetty ulkoisesti matalaksi, saavat virtaa, jos vetovastukset aktivoidaan. Portin B nastat ovat kolminkertaisia, kun nollaustila tulee aktiiviseksi, vaikka kello ei olisi käynnissä.
Portti B palvelee myös ATtiny25/45/85:n erilaisten erikoisominaisuuksien toimintoja luettelon mukaisesti
ATtiny25:ssä ohjelmoitavat I/O-portit PB3 ja PB4 (nastat 2 ja 3) vaihdetaan ATtiny15-yhteensopivuustilassa tukemaan taaksepäin yhteensopivuutta ATtiny15:n kanssa.
RESET: Nollaa tulo. Tämän nastan matala taso pidempään kuin pulssin vähimmäispituus aiheuttaa nollauksen, vaikka kello ei olisi käynnissä ja jos nollausnastaa ei ole poistettu käytöstä. Pulssin minimipituus on annettu Taulukko 21-4 sivulla 165. Lyhyemmät pulssit eivät takaa palautusta.
Nollausnastaa voidaan käyttää myös (heikkona) I/O-nastana.
Yliview
ATtiny25/45/85 on pienitehoinen 8-bittinen CMOS-mikro-ohjain, joka perustuu AVR:n parannettuun RISC-arkkitehtuuriin. Suorittamalla tehokkaat käskyt yhdellä kellojaksolla ATtiny25/45/85 saavuttaa lähetysnopeuden, joka on lähes 1 MIPS/MH, jolloin järjestelmän suunnittelija voi optimoida virrankulutuksen käsittelynopeuteen verrattuna.
Lohkokaavio
AVR-ydin yhdistää rikkaan käskysarjan 32 yleiskäyttöiseen työrekisteriin. Kaikki 32 rekisteriä on kytketty suoraan aritmeettiseen logiikkayksikköön (ALU), mikä mahdollistaa kahden itsenäisen rekisterin käytön yhdellä käskyllä, joka suoritetaan yhdessä kellosyklissä. Tuloksena oleva arkkitehtuuri on koodia tehokkaampi ja saavuttaa jopa kymmenen kertaa nopeammat suoritukset kuin perinteiset CISC-mikrokontrollerit.
ATtiny25/45/85 tarjoaa seuraavat ominaisuudet: 2/4/8K tavua In-System Programmable Flash, 128/256/512 tavua EEPROM, 128/256/256 tavua SRAM, 6 yleiskäyttöistä I/O-linjaa, 32 yleistä käyttörekisterit, yksi 8-bittinen ajastin/laskuri vertailutiloilla, yksi 8-bittinen nopea ajastin/laskuri, universaali sarjaliitäntä, sisäiset ja ulkoiset keskeytykset, 4-kanavainen, 10-bittinen ADC, ohjelmoitava Watchdog-ajastin sisäisellä Oskillaattori ja kolme ohjelmistolla valittavaa virransäästötilaa. Idle-tila pysäyttää CPU:n ja antaa SRAM-, ajastin/laskuri-, ADC-, analogivertailija- ja keskeytysjärjestelmän jatkaa toimintaansa. Sammutustila tallentaa rekisterin sisällön ja poistaa kaikki sirun toiminnot käytöstä seuraavaan keskeytykseen tai laitteiston nollaukseen asti. ADC-kohinanvaimennustila pysäyttää CPU:n ja kaikki I/O-moduulit paitsi ADC, minimoimaan kytkentäkohinaa ADC-muunnoksen aikana.
Laite on valmistettu Atmelin korkeatiheyksisellä haihtumattomalla muistitekniikalla. On-chip ISP Flash mahdollistaa ohjelman muistin ohjelmoinnin uudelleen järjestelmän sisäisen SPI-sarjaliitännän kautta, tavanomaisen haihtumattoman muistin ohjelmoijan tai AVR-ytimessä olevan on-chip-käynnistyskoodin avulla.
ATtiny25/45/85 AVR on tuettu täydellä sarjalla ohjelmien ja järjestelmien kehitystyökaluja, mukaan lukien: C-kääntäjät, makrokokoajat, ohjelman virheenkorjaus/simulaattorit ja arviointisarjat.
Tietoja resursseista
Ladattavissa on kattava joukko kehitystyökaluja, sovellushuomautuksia ja tietosivuja http://www.atmel.com/avr.
Koodi Esimamples
Tämä dokumentaatio sisältää yksinkertaisen koodin esimampjotka esittävät lyhyesti laitteen eri osien käytön. Nämä koodit esimamples olettaa, että osakohtainen otsikko file sisältyy ennen kokoamista. Huomaa, että kaikki C -kääntäjien toimittajat eivät sisällä bittimääritelmiä otsikossa files ja keskeytyksen käsittely C: ssä on kääntäjäriippuvainen. Vahvista C -kääntäjän dokumentaatiosta saadaksesi lisätietoja.
Laajennetussa I/O-kartassa sijaitsevien I/O-rekisterien kohdalla “IN”, “OUT”, “SBIS”, “SBIC”, “CBI” ja “SBI” ohjeet on korvattava ohjeilla, jotka mahdollistavat pääsyn laajennettuun I:hen. /O. Tyypillisesti tämä tarkoittaa "LDS" ja "STS" yhdistettynä "SBRS", "SBRC", "SBR" ja "CBR". Huomaa, että kaikissa AVR-laitteissa ei ole laajennettua I/O-korttia.
Kapasitiivinen kosketustunnistus
Atmel QTouch Library tarjoaa helppokäyttöisen ratkaisun Atmel AVR -mikroohjaimien kosketusherkkiin liitäntöihin. QTouch-kirjasto sisältää tuen QTouch®- ja QMatrix®-hankintamenetelmille.
Kosketustunnistin on helppo lisätä mihin tahansa sovellukseen linkittämällä QTouch-kirjasto ja käyttämällä kirjaston sovellusohjelmointirajapintaa (API) kosketuskanavien ja -anturien määrittämiseen. Sovellus kutsuu sitten API:ta hakemaan kanavatiedot ja määrittämään kosketusanturin tilan.
QTouch-kirjasto on ilmainen ja sen voi ladata Atmelista websivusto. Lisätietoja ja yksityiskohtia toteutuksesta on QTouch Library User Guide -oppaassa – saatavana myös Atmelista websivusto.
Tietojen säilyttäminen
Luotettavuus Kvalifiointitulokset osoittavat, että arvioitu tietojen säilyttämisen epäonnistumisaste on paljon pienempi kuin 1 PPM 20 vuoden aikana 85 °C:ssa tai 100 vuodessa 25 °C:ssa.
AVR CPU Core
Johdanto
Tässä osiossa käsitellään AVR-ydinarkkitehtuuria yleisesti. CPU-ytimen päätehtävä on varmistaa ohjelman oikea suoritus. CPU:n on siksi voitava käyttää muisteja, suorittaa laskelmia, ohjata oheislaitteita ja käsitellä keskeytyksiä.
Arkkitehtoninen ohiview
Suorituskyvyn ja rinnakkaisuuden maksimoimiseksi AVR käyttää Harvardin arkkitehtuuria – erillisillä muisteilla ja väylillä ohjelmille ja datalle. Ohjelmamuistissa olevat ohjeet suoritetaan yksitasoisella liukuhihnalla. Kun yhtä käskyä suoritetaan, seuraava käsky esihaetaan ohjelman muistista. Tämä konsepti mahdollistaa käskyjen suorittamisen jokaisella kellojaksolla. Ohjelmamuisti on In-System Re Programmable Flash-muisti.
Pikarekisteri File sisältää 32 x 8-bittistä yleiskäyttöistä työrekisteriä yhdellä kellojaksolla. Tämä mahdollistaa yhden syklin aritmeettisen logiikkayksikön (ALU) toiminnan. Tyypillisessä ALU-operaatiossa kaksi operandia tulostetaan rekisteristä File, toiminto suoritetaan ja tulos tallennetaan takaisin rekisteriin File– yhdellä kellojaksolla.
Kuutta 32:sta rekisteristä voidaan käyttää kolmena 16-bittisenä epäsuorana osoiterekisteriosoittimena Data Space -osoitteita varten – mikä mahdollistaa tehokkaan osoitelaskelman. Yhtä näistä osoiteosoittimista voidaan käyttää myös osoiteosoittimena etsimään taulukoita Flash-ohjelman muistista. Nämä lisätyt funktiorekisterit ovat 16-bittinen X-, Y- ja Z-rekisteri, jotka kuvataan myöhemmin tässä osassa.
ALU tukee aritmeettisia ja loogisia operaatioita rekisterien välillä tai vakion ja rekisterin välillä. ALU:ssa voidaan suorittaa myös yhden rekisterin operaatioita. Aritmeettisen operaation jälkeen tilarekisteri päivitetään kuvaamaan operaatiosta tietoa.
Ohjelmakulun tarjoavat ehdolliset ja ehdottomat hyppy- ja kutsukäskyt, jotka pystyvät suoraan osoittamaan koko osoiteavaruuden. Useimmissa AVR-käskyissä on yksi 16-bittinen sanamuoto, mutta on myös 32-bittisiä ohjeita.
Keskeytysten ja alirutiinikutsujen aikana paluuosoite Program Counter (PC) tallennetaan pinoon. Pino on tehokkaasti allokoitu yleiseen data-SRAM:iin, ja näin ollen pinon kokoa rajoittaa vain SRAM:n kokonaiskoko ja SRAM:n käyttö. Kaikkien käyttäjäohjelmien on alustettava SP Reset-rutiinissa (ennen kuin alirutiineja tai keskeytyksiä suoritetaan). Pinoosoitin (SP) on luettavissa/kirjoitettavissa I/O-tilassa. Data-SRAM-muistiin pääsee helposti AVR-arkkitehtuurin tukeman viiden eri osoitusmoodin kautta.
AVR-arkkitehtuurin muistitilat ovat kaikki lineaarisia ja tavallisia muistikarttoja.
Joustavan keskeytysmoduulin ohjausrekisterit ovat I/O-tilassa, ja tilarekisterissä on ylimääräinen Global Interrupt Enable -bitti. Kaikilla keskeytyksillä on erillinen keskeytysvektori keskeytysvektoritaulukossa. Keskeytykset ovat etusijalla niiden keskeytysvektoriaseman mukaisesti. Mitä pienempi keskeytysvektoriosoite, sitä korkeampi prioriteetti.
I/O-muistitila sisältää 64 osoitetta suorittimen oheistoiminnoille, kuten ohjausrekistereille, SPI:lle ja muille I/O-toiminnoille. I/O-muistiin pääsee suoraan tai tietotilan sijainneina rekisterin sijainteja File, 0x20 – 0x5F.
ALU – Aritmeettinen logiikkayksikkö
Tehokas AVR ALU toimii suoraan yhteydessä kaikkiin 32 yleiskäyttöiseen työrekisteriin. Yhden kellojakson sisällä suoritetaan aritmeettisia operaatioita yleiskäyttöisten rekisterien välillä tai rekisterin ja välittömän välillä. ALU-operaatiot on jaettu kolmeen pääluokkaan – aritmeettisiin, loogisiin ja bittifunktioihin. Jotkin arkkitehtuurin toteutukset tarjoavat myös tehokkaan kertoimen, joka tukee sekä etumerkillistä/et-merkkitonta kertolaskua että murtolukumuotoa. Katso "Ohjesarja"-osiosta yksityiskohtainen kuvaus.
Tilarekisteri
Tilarekisteri sisältää tiedot viimeksi suoritetun aritmeettisen käskyn tuloksesta. Näitä tietoja voidaan käyttää muuttamaan ohjelmakulkua ehdollisten toimintojen suorittamiseksi. Huomaa, että tilarekisteri päivitetään kaikkien ALU-toimintojen jälkeen ohjesarjaviitteen mukaisesti. Tämä poistaa monissa tapauksissa tarpeen käyttää erityisiä vertailuohjeita, mikä johtaa nopeampaan ja kompaktimpaan koodiin.
Tilarekisteriä ei tallenneta automaattisesti keskeytysrutiiniin tullessa, eikä sitä palauteta keskeytyksestä palatessa. Tämä on käsiteltävä ohjelmistolla.
SREG – AVR-tilarekisteri
AVR-tilarekisteri – SREG – määritellään seuraavasti:
Bitti | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3F | I | T | H | S | V | N | Z | C | SREG |
Lue/kirjoita | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Alkuarvo | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bitti 7 – I: Global Interrupt Enable
Global Interrupt Enable -bitti on asetettava, jotta keskeytykset voidaan ottaa käyttöön. Yksittäisen keskeytyksen sallimisen ohjaus suoritetaan sitten erillisissä ohjausrekistereissä. Jos Global Interrupt Enable -rekisteri tyhjennetään, mikään keskeytyksistä ei ole käytössä yksittäisistä keskeytyksen sallimisasetuksista riippumatta. Laitteisto tyhjentää I-bitin keskeytyksen jälkeen, ja RETI-käsky asettaa sen mahdollistamaan myöhemmät keskeytykset. Sovellus voi myös asettaa ja tyhjentää I-bitin SEI- ja CLI-käskyillä ohjesarjaviitteen mukaisesti.
Bitti 6 – T: Bit Copy Storage
Bittikopiointiohjeet BLD (Bit LoaD) ja BST (Bit STore) käyttävät T-bittiä operoidun bitin lähteenä tai kohteena. Hieman rekisteristä File voidaan kopioida T:hen BST-käskyllä ja T:n bitti voidaan kopioida rekisterin rekisterin bitiksi File BLD-ohjeen mukaan.
Bitti 5 – H: Half Carry Flag
Half Carry -lippu H osoittaa Half Carry -liikettä joissakin aritmeettisissa operaatioissa. Half Carry on hyödyllinen BCD-aritmetiikassa. Katso lisätietoja "Ohjesarjan kuvauksesta".
Bitti 4 – S: Merkkibitti, S = N ⊕ V
S-bitti on aina poissulkeva tai negatiivisen lipun N ja kahden komplementin ylivuotolipun V välissä. Katso "Ohjesarjan kuvaus" saadaksesi lisätietoja.
Bitti 3 – V: Kahden komplementin ylivuotolippu
Two's Complement Overflow Flag V tukee kahden komplementin aritmetiikkaa. Katso lisätietoja "Ohjesarjan kuvauksesta".
Bitti 2 – N: Negatiivinen lippu
Negatiivinen lippu N osoittaa negatiivisen tuloksen aritmeettisessa tai loogisessa operaatiossa. Katso lisätietoja "Ohjesarjan kuvauksesta".
Bitti 1 – Z: Nollalippu
Nollalippu Z osoittaa nollatulosta aritmeettisessa tai loogisessa operaatiossa. Katso lisätietoja "Ohjesarjan kuvauksesta".
Bitti 0 – C: Kanna lippua
Kantolippu C osoittaa siirtoa aritmeettisessa tai loogisessa operaatiossa. Katso lisätietoja "Ohjesarjan kuvauksesta".
Yleiskäyttöinen rekisteri File
Rekisteri File on optimoitu AVR Enhanced RISC -käskysarjalle. Vaaditun suorituskyvyn ja joustavuuden saavuttamiseksi rekisteri tukee seuraavia syöttö-/tulostusmalleja File:
Yksi 8-bittinen lähtöoperandi ja yksi 8-bittinen tulostulo
Kaksi 8-bittistä lähtöoperandia ja yksi 8-bittinen tulostulo
Kaksi 8-bittistä lähtöoperandia ja yksi 16-bittinen tulostulo
Yksi 16-bittinen lähtöoperandi ja yksi 16-bittinen tulostulo
Kuva 4-2 näyttää CPU:n 32 yleiskäyttöisen työrekisterin rakenteen.
Kuten näkyy Kuva 4-2, jokaiselle rekisterille on myös määritetty datamuistiosoite, joka yhdistää ne suoraan käyttäjän tietotilan 32 ensimmäiseen sijaintiin. Vaikka tämä muistijärjestely ei ole fyysisesti toteutettu SRAM-sijainteina, se tarjoaa suuren joustavuuden rekistereihin pääsyssä, koska X-, Y- ja Z-osoitinrekisterit voidaan asettaa indeksoimaan mikä tahansa rekisterissä oleva rekisteri. file.Suurin osa rekisterissä toimivista ohjeista File Niillä on suora pääsy kaikkiin rekistereihin, ja suurin osa niistä on yksijaksoisia ohjeita.
X-rekisteri, Y-rekisteri ja Z-rekisteri
Rekistereissä R26..R31 on joitain lisätoimintoja yleiskäyttöön. Nämä rekisterit ovat 16-bittisiä osoiteosoittimia tietoavaruuden epäsuoraan osoitteeseen. Kolme epäsuoraa osoiterekisteriä X, Y ja Z on määritelty kohdassa kuvatulla tavalla Kuva 4-3.
Näillä osoiterekistereillä on eri osoitustiloissa kiinteä siirtymä, automaattinen lisäys ja automaattinen vähennys (katso lisätietoja ohjesarjaviitteestä).
Pinoosoitin
Pinoa käytetään pääasiassa tilapäisten tietojen tallentamiseen, paikallisten muuttujien tallentamiseen sekä paluuosoitteiden tallentamiseen keskeytysten ja alirutiinikutsujen jälkeen. Pinoosoitinrekisteri osoittaa aina pinon yläosaan. Huomaa, että pino on toteutettu kasvavana korkeammista muistipaikoista pienempiin muistipaikkoihin. Tämä tarkoittaa, että Pino PUSH -komento pienentää pino-osoitinta.
Pinoosoitin osoittaa data-SRAM-pinoalueelle, jossa alirutiini- ja keskeytyspinot sijaitsevat. Ohjelman on määriteltävä tämä pinotila data-SRAM:ssa ennen kuin aliohjelmakutsut suoritetaan tai keskeytykset otetaan käyttöön. Pinoosoitin on asetettava osoittamaan yli 0x60. Pinoosoitin pienenee yhdellä, kun dataa työnnetään pinoon PUSH-käskyllä, ja se pienenee kahdella, kun paluuosoite työnnetään pinoon aliohjelman kutsulla tai keskeytyksellä. Pinoosoitin kasvaa yhdellä, kun dataa ponnataan pinosta POP-käskyn avulla, ja se kasvaa kahdella, kun tietoja pompataan pinosta paluuohjelmassa RET tai paluu keskeytyksestä RETI.
AVR Stack Pointer on toteutettu kahtena 8-bittisenä rekisterinä I/O-tilassa. Tosiasiallisesti käytettyjen bittien määrä riippuu toteutuksesta. Huomaa, että joissakin AVR-arkkitehtuurin toteutuksissa datatila on niin pieni, että tarvitaan vain SPL. Tässä tapauksessa SPH-rekisteri ei ole läsnä.
SPH ja SPL — Stack Pointer Register
Bitti | 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 | ||
Lue/kirjoita | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Lue/kirjoita | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Alkuarvo | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | |
Alkuarvo | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND |
Ohjeiden suorittamisen ajoitus
Tässä osassa kuvataan yleiset pääsyn ajoituksen käsitteet käskyjen suorittamiseen. AVR-suoritinta ohjaa CPU-kello clkCPU, joka on generoitu suoraan valitusta sirun kellolähteestä. Sisäistä kellojakoa ei käytetä.
Kuva 4-4 näyttää Harvardin arkkitehtuurin ja nopean pääsyn rekisterin mahdollistamat rinnakkaiset käskyhaut ja käskyjen suoritukset File konsepti. Tämä on liukuhihnan peruskonsepti, jolla saavutetaan jopa 1 MIPS/MH vastaavalla ainutlaatuisella tuloksella toimintojen, kellojen ja tehoyksikkökohtaisten toimintojen osalta.
Kuva 4-5. Yksisyklinen ALU-käyttö
Nollaus ja keskeytyskäsittely
AVR tarjoaa useita erilaisia keskeytyslähteitä. Näillä keskeytyksillä ja erillisellä Reset Vectorilla on jokaisella oma ohjelmavektori ohjelman muistitilassa. Kaikille keskeytyksille on määritetty yksittäiset aktivointibitit, jotka on kirjoitettava loogisesti yhdessä Global Interrupt Enable -bitin kanssa tilarekisteriin keskeytyksen mahdollistamiseksi.
Ohjelmamuistitilan pienimmät osoitteet määritellään oletusarvoisesti nollaus- ja keskeytysvektoriksi. Täydellinen luettelo vektoreista näkyy kohdassa "Keskeytykset" sivulla 48. Lista määrittää myös eri keskeytysten prioriteettitasot. Mitä pienempi osoite, sitä korkeampi on prioriteettitaso. RESETillä on korkein prioriteetti, ja seuraava on INT0 – ulkoinen keskeytyspyyntö 0.
Kun keskeytys tapahtuu, Global Interrupt Enable I-bitti tyhjennetään ja kaikki keskeytykset poistetaan käytöstä. Käyttäjäohjelmisto voi kirjoittaa I-bitille loogisen yhden mahdollistaakseen sisäkkäiset keskeytykset. Kaikki sallitut keskeytykset voivat sitten keskeyttää nykyisen keskeytysrutiinin. I-bitti asetetaan automaattisesti, kun Return from Interrupt -käsky - RETI - suoritetaan.
Keskeytyksiä on periaatteessa kahdenlaisia. Ensimmäisen tyypin laukaisee tapahtuma, joka asettaa keskeytyslipun. Näitä keskeytyksiä varten ohjelmalaskuri vektoroidaan todelliseen keskeytysvektoriin keskeytyksen käsittelyrutiinin suorittamiseksi, ja laitteisto tyhjentää vastaavan keskeytyslipun. Keskeytysliput voidaan myös tyhjentää kirjoittamalla looginen ykkönen tyhjennettäviin lippubittipaikkoihin. Jos keskeytystila ilmenee, kun vastaava keskeytyksen salliva bitti tyhjennetään, keskeytyslippu asetetaan ja muistetaan, kunnes keskeytys otetaan käyttöön tai lippu tyhjennetään ohjelmistolla. Vastaavasti, jos yksi tai useampi keskeytysehto ilmenee, kun Global Interrupt Enable -bitti tyhjennetään, vastaavat keskeytysliput asetetaan ja muistetaan, kunnes Global Interrupt Enable -bitti on asetettu, ja suoritetaan sitten prioriteettijärjestyksessä.
Toisen tyyppiset keskeytykset laukeavat niin kauan kuin keskeytysehto on olemassa. Näillä keskeytyksillä ei välttämättä ole keskeytyslippuja. Jos keskeytystila katoaa ennen kuin keskeytys on otettu käyttöön, keskeytystä ei laukaistu.
Kun AVR poistuu keskeytyksestä, se palaa aina pääohjelmaan ja suorittaa vielä yhden käskyn ennen odottavaa keskeytystä.
Huomaa, että tilarekisteriä ei tallenneta automaattisesti keskeytysrutiiniin tullessa, eikä sitä palauteta keskeytysrutiinista palatessa. Tämä on käsiteltävä ohjelmistolla.
Käytettäessä CLI-käskyä keskeytysten poistamiseen käytöstä, keskeytykset poistetaan välittömästi käytöstä. CLI-käskyn jälkeen ei suoriteta keskeytystä, vaikka se tapahtuisi samanaikaisesti CLI-käskyn kanssa. Seuraava example näyttää, kuinka tätä voidaan käyttää keskeytusten välttämiseen ajastetun EEPROM-kirjoitusjakson aikana.
Kokoonpanokoodi Example |
r16:ssa SREG; tallentaa SREG-arvon
cli ; poistaa keskeytykset ajastetun sekvenssin aikana sbi EECR, EEMPE ; aloita EEPROM-kirjoitus sbi EECR, EEPE ulos SREG, r16; palauta SREG-arvo (I-bittinen) |
C-koodi esimample |
char cSREG;
cSREG = SREG; /* tallenna SREG-arvo */ /* poistaa keskeytykset ajastetun sarjan aikana */ _CLI(); EECR |= (1< EECR |= (1< SREG = cSREG; /* palauta SREG-arvo (I-bitti) */ |
Käytettäessä SEI-käskyä keskeytysten mahdollistamiseen, SEI:tä seuraavat käskyt suoritetaan ennen odottavia keskeytyksiä, kuten tässä ex.ample.
Kokoonpanokoodi Example |
sei ; aseta Global Interrupt Enable
nukkua; mene nukkumaan odottaen keskeytystä ; huomautus: siirtyy nukkumaan ennen vireillä olevia ; keskeytä(t) |
C-koodi esimample |
_SEI(); /* aseta Global Interrupt Enable */
_NUKKUA(); /* mene nukkumaan odottaen keskeytystä */ /* huomautus: siirtyy nukkumaan ennen odottavia keskeytyksiä */ |
Keskeytä vasteaika
Keskeytyksen suoritusvaste kaikille käytössä oleville AVR-keskeytyksille on vähintään neljä kellojaksoa. Neljän kellojakson jälkeen varsinaisen keskeytyksen käsittelyrutiinin ohjelmavektoriosoite suoritetaan. Tämän neljän kellon jakson aikana ohjelmalaskuri työnnetään pinoon. Vektori on normaalisti hyppy keskeytysrutiiniin, ja tämä hyppy kestää kolme kellojaksoa. Jos keskeytys tapahtuu monijaksoisen käskyn suorittamisen aikana, tämä käsky on valmis ennen keskeytyksen palvelemista. Jos keskeytys tapahtuu MCU:n ollessa lepotilassa, keskeytyksen suorittamisen vasteaika kasvaa neljällä kellojaksolla. Tämä lisäys tulee valitusta lepotilasta käynnistysajan lisäksi.
Paluu keskeytyksen käsittelyrutiinista kestää neljä kellojaksoa. Näiden neljän kellojakson aikana ohjelmalaskuri (kaksi tavua) ponnahtaa takaisin pinosta, pinoosoitinta kasvatetaan kahdella ja SREG:n I-bitti asetetaan.
AVR-muistoja
Tässä osiossa kuvataan ATtiny25/45/85:n eri muisteja. AVR-arkkitehtuurissa on kaksi päämuistitilaa, Datamuisti ja ohjelmamuistitila. Lisäksi ATtiny25/45/85 sisältää EEPROM-muistin tietojen tallentamista varten. Kaikki kolme muistitilaa ovat lineaarisia ja säännöllisiä.
Järjestelmän sisäinen uudelleenohjelmoitava Flash-ohjelmamuisti
ATtiny25/45/85 sisältää 2/4/8K tavua on-chip In-System Uudelleenohjelmoitava Flash-muisti ohjelmien tallentamista varten. Koska kaikki AVR-käskyt ovat 16 tai 32 bitin leveitä, Flash on järjestetty muotoon 1024/2048/4096 x 16.
Flash-muisti kestää vähintään 10,000 25 kirjoitus-/poistojaksoa. ATtiny45/85/10-ohjelmalaskuri (PC) on 11/12/1024 bittiä leveä, mikä osoittaa 2048/4096/XNUMX-ohjelman muistipaikat. "Muistiohjelma- ming” sivulla 147 sisältää yksityiskohtaisen kuvauksen Flash-tietojen sarjalatauksesta SPI-nastalla.
Vakiotaulukoita voidaan allokoida koko ohjelman muistin osoiteavaruuteen (katso LPM – Load Program memory -ohjekuvaus).
Kuva 5-1. Ohjelma Muistikartta
SRAM-tietomuisti
Kuva 5-2 näyttää, kuinka ATtiny25/45/85 SRAM-muisti on järjestetty.
Alemmat 224/352/607 Datamuistipaikat osoittavat molemmat rekisterin File, I/O-muisti ja sisäinen data-SRAM. Ensimmäiset 32 paikkaa osoittavat rekisterin File, seuraavat 64 sijaintia ovat vakio-I/O-muisti ja viimeiset 128/256/512 paikkaa koskevat sisäistä data-SRAM-muistia.
Viisi erilaista osoitustilaa Data-muistin kannelle: Suora, Epäsuora siirrolla, Epäsuora, Epäsuora esivähennyksellä ja Epäsuora jälkilisäyksellä. Rekisterissä File, rekisterit R26 - R31 sisältävät epäsuoran osoittimen rekisterit.
Suora osoitus tavoittaa koko tietotilan.
Indirect with Displacement -tila saavuttaa 63 osoitepaikkaa Y- tai Z-rekisterin antamasta perusosoitteesta.
Käytettäessä rekisterin epäsuoraa osoitemoodia automaattisella esivähennyksellä ja jälkilisäyksellä osoiterekistereitä X, Y ja Z pienennetään tai lisätään.
32 yleiskäyttöistä työrekisteriä, 64 I/O-rekisteriä ja 128/256/512 tavua sisäistä dataa SRAM-muistissa ATtiny25/45/85:ssä ovat kaikki käytettävissä kaikkien näiden osoitustilojen kautta. Rekisteri File on kuvattu kohdassa "Gen- Eral Purpose Register File”Sivulla 10.
Kuva 5-2. Tietomuistin kartta
Tietomuistin käyttö kertaa
Tässä osassa kuvataan sisäisen muistin käytön yleiset käyttöajoituksen käsitteet. Sisäisten tietojen SRAM-käyttö suoritetaan kahdessa clkCPU-jaksossa, kuten kuvataan kohdassa Kuva 5-3.
Kuva 5-3. On-chip Data SRAM Access Cycles EEPROM-tietomuisti
ATtiny25/45/85 sisältää 128/256/512 tavua data-EEPROM-muistia. Se on järjestetty erilliseksi tietotilaksi, johon voidaan lukea ja kirjoittaa yksittäisiä tavuja. EEPROM kestää vähintään 100,000 XNUMX kirjoitus/tyhjennysjaksoa. Pääsy EEPROM:n ja CPU:n välillä kuvataan seuraavassa määrittelemällä EEPROM-osoiterekisterit, EEPROM-datarekisterin ja EEPROM-ohjausrekisterin. Katso lisätietoja "Sarjalataus" sivulla 151.
EEPROM-luku/kirjoitusoikeus
EEPROM-käyttörekisterit ovat käytettävissä I/O-tilassa.
EEPROMin kirjoituskäyttöajat on ilmoitettu Taulukko 5-1 sivulla 21. Itseajoitustoiminnon avulla käyttäjäohjelmisto kuitenkin havaitsee, milloin seuraava tavu voidaan kirjoittaa. Jos käyttäjäkoodi sisältää EEPROM-muistiin kirjoittavia ohjeita, on ryhdyttävä joihinkin varotoimiin. Voimakkaasti suodatetuissa virtalähteissä VCC todennäköisesti nousee tai laskee hitaasti päälle
Virta ylös/alas. Tämä saa laitteen käymään jonkin aikaa volyymillatage pienempi kuin käytetylle kellotaajuudelle määritetty minimi. Katso "EEPROM-korruption estäminen" sivulla 19 saadaksesi lisätietoja ongelmien välttämisestä näissä tilanteissa.
Tahattoman EEPROM-kirjoituksen estämiseksi on noudatettava erityistä kirjoitusmenettelyä. Viitata "Atomi Tavuohjelmointi” sivulla 17 ja "Jaetun tavun ohjelmointi" sivulla 17 lisätietoja tästä.
Kun EEPROM luetaan, CPU pysähtyy neljäksi kellojaksoksi ennen kuin seuraava käsky suoritetaan. Kun EEPROM kirjoitetaan, CPU pysähtyy kahdeksi kellojaksoksi ennen kuin seuraava käsky suoritetaan.
Atomic Byte ohjelmointi
Atomic Byte -ohjelmoinnin käyttäminen on yksinkertaisin tila. Kirjoittaessaan tavun EEPROMiin käyttäjän tulee kirjoittaa osoite EEAR-rekisteriin ja tiedot EEDR-rekisteriin. Jos EEPMn-bitit ovat nolla, EEPE:n kirjoittaminen (neljän jakson sisällä EEMPE:n kirjoittamisen jälkeen) käynnistää poisto-/kirjoitustoiminnon. Sekä tyhjennys- että kirjoitusjakso suoritetaan yhdellä toimenpiteellä ja ohjelmoinnin kokonaisaika ilmoitetaan Taulukko 5-1 sivulla 21. EEPE-bitti pysyy asetettuna, kunnes poisto- ja kirjoitustoiminnot on suoritettu. Kun laite on varattu ohjelmoinnin parissa, muita EEPROM-toimintoja ei voi tehdä.
Jaetun tavun ohjelmointi
On mahdollista jakaa poisto- ja kirjoitusjakso kahteen eri toimintoon. Tämä voi olla hyödyllistä, jos järjestelmä vaatii lyhyttä pääsyaikaa rajoitetun ajan (tyypillisesti jos virtalähde voltage putoaa). Saadakseen etua tagTässä menetelmässä edellytetään, että kirjoitettavat paikat on pyyhitty ennen kirjoitustoimintoa. Mutta koska poisto- ja kirjoitustoiminnot on jaettu, on mahdollista tehdä poistotoimintoja, kun järjestelmä sallii aikakriittisten toimintojen suorittamisen (tyypillisesti käynnistyksen jälkeen).
Poista
Tavun pyyhkimiseksi osoite on kirjoitettava EEAR:iin. Jos EEPMn-bitit ovat 0b01, EEPE:n kirjoittaminen (neljän jakson sisällä EEMPE:n kirjoittamisen jälkeen) käynnistää vain poistotoiminnon (ohjelmointiaika on annettu kohdassa Taulukko 5-1 päällä sivu 21). EEPE-bitti pysyy asetettuna, kunnes poistotoiminto on valmis. Kun laite on varattu ohjelmoinnissa, muita EEPROM-toimintoja ei voi tehdä.
Kirjoittaa
Sijainnin kirjoittamista varten käyttäjän on kirjoitettava osoite EEAR:iin ja tiedot EEDR:iin. Jos EEPMn-bitit ovat 0b10, EEPE:n kirjoittaminen (neljän jakson sisällä EEMPE:n kirjoittamisen jälkeen) laukaisee vain kirjoitustoiminnon (ohjelmointiaika on annettu kohdassa Taulukko 5-1 sivulla 21). EEPE-bitti pysyy asetettuna, kunnes kirjoitustoiminto on valmis. Jos kirjoitettavaa sijaintia ei ole poistettu ennen kirjoitusta, tallennetut tiedot on katsottava kadonneiksi. Kun laite on varattu ohjelmoinnin parissa, muita EEPROM-toimintoja ei voi tehdä.
Kalibroitua oskillaattoria käytetään EEPROM-hakujen ajoittamiseen. Varmista, että oskillaattorin taajuus on kohdassa kuvattujen vaatimusten sisällä "OSCCAL – Oskillaattorin kalibrointirekisteri" sivulla 31.
Seuraava koodi esimamples näyttää yhden kokoonpanon ja yhden C-toiminnon EEPROMin pyyhkimiseen, kirjoittamiseen tai atomikirjoitukseen. ExampOletetaan, että keskeytyksiä ohjataan (esim. estämällä keskeytykset maailmanlaajuisesti) niin, että keskeytyksiä ei tapahdu näiden toimintojen suorittamisen aikana.
Kokoonpanokoodi Example |
EEPROM_write:
; Odota edellisen kirjoituksen valmistumista sbic EECR,EEPE rjmp EEPROM_write ; Aseta ohjelmointitila ldi r16, (0<<EEPM1)|(0<<EEPM0) ulos EECR, r16 ; Aseta osoite (r18:r17) osoiterekisteriin ulos EEARH, r18 ulos EEARL, r17 ; Kirjoita tiedot (r19) tietorekisteriin ulos EEDR, r19 ; Kirjoita looginen EEMPE sbi EECR, EEMPE ; Aloita eeprom-kirjoitus asettamalla EEPE sbi EECR,EEPE ret |
C-koodi esimample |
void EEPROM_write(signed char ucAddress, unsigned char ucData)
{ /* Odota edellisen kirjoituksen valmistumista */ while(EECR & (1< ; /* Aseta ohjelmointitila */ EECR = (0< /* Määritä osoite- ja tietorekisterit */ EEAR = ucAddress; EEDR = ucData; /* Kirjoita looginen yksi EEMPElle */ EECR |= (1< /* Aloita eeprom-kirjoitus asettamalla EEPE */ EECR |= (1< } |
Seuraava koodi esimamples näyttää kokoonpano- ja C-toiminnot EEPROMin lukemista varten. ExampOletetaan, että keskeytyksiä ohjataan siten, että keskeytyksiä ei tapahdu näiden toimintojen suorittamisen aikana.
Kokoonpanokoodi Example |
EEPROM_read:
; Odota edellisen kirjoituksen valmistumista sbic EECR,EEPE rjmp EEPROM_read ; Aseta osoite (r18:r17) osoiterekisteriin ulos EEARH, r18 ulos EEARL, r17 ; Aloita eeprom-luku kirjoittamalla EERE sbi EECR,EERE ; Lue tiedot tietorekisteristä r16, EEDR ret |
C-koodi esimample |
allekirjoittamaton merkki EEPROM_read(allekirjoittamaton merkki ucAddress)
{ /* Odota edellisen kirjoituksen valmistumista */ while(EECR & (1< ; /* Määritä osoiterekisteri */ EEAR = ucAddress; /* Aloita eeprom-luku kirjoittamalla EERE */ EECR |= (1< /* Palauta tiedot tietorekisteristä */ palauttaa EEDR; } |
EEPROM-korruption estäminen
Alhaisen VCC:n aikana EEPROM-tiedot voivat vioittua, koska syöttötilavuustage on liian alhainen, jotta CPU ja EEPROM toimisivat kunnolla. Nämä ongelmat ovat samat kuin EEPROM-levytason järjestelmissä, ja samoja suunnitteluratkaisuja tulisi soveltaa.
EEPROM-tietojen vioittumisen voi aiheuttaa kaksi tilannetta, kun voltage on liian alhainen. Ensinnäkin tavallinen kirjoitussekvenssi EEPROMiin vaatii vähimmäistilavuudentage toimiakseen oikein. Toiseksi CPU itse voi suorittaa käskyjä väärin, jos syöttötilavuustage on liian alhainen.
EEPROM-tietojen korruptio voidaan helposti välttää noudattamalla tätä suunnittelusuositusta:
Pidä AVR RESET aktiivisena (matala) silloin, kun virtalähde on riittämätöntage. Tämä voidaan tehdä ottamalla käyttöön sisäinen Brown-out Detector (BOD). Jos sisäisen BOD:n tunnistustaso ei vastaa
Tarvittava tunnistustaso, ulkoista alhaista VCC-nollaussuojapiiriä voidaan käyttää. Jos nollaus tapahtuu kirjoitustoiminnon aikana, kirjoitustoiminto suoritetaan loppuun edellyttäen, että virtalähde voltage riittää.
I/O-muisti
ATtiny25/45/85:n I/O-tilan määritelmä on esitetty kohdassa "Rekisteröinnin yhteenveto" sivulla 200.
Kaikki ATtiny25/45/85 I/O:t ja oheislaitteet sijoitetaan I/O-tilaan. Kaikkiin I/O-paikkoihin voidaan päästä käsiksi LD/LDS/LDD- ja ST/STS/STD-käskyillä siirtäen tietoja 32 yleiskäyttöisen työrekisterin ja I/O-tilan välillä. I/O-rekisterit osoitealueella 0x00 – 0x1F ovat suoraan bittikäyttöön SBI- ja CBI-ohjeiden avulla. Näissä rekistereissä yksittäisten bittien arvo voidaan tarkistaa SBIS- ja SBIC-käskyjen avulla. Katso lisätietoja ohjesarja-osiosta. Käytettäessä I/O-kohtaisia komentoja IN ja OUT, on käytettävä I/O-osoitteita 0x00 – 0x3F. Kun I/O-rekisterit osoitetaan tietotilaksi LD- ja ST-käskyjen avulla, näihin osoitteisiin on lisättävä 0x20.
Yhteensopivuus tulevaisuuden laitteiden kanssa varattu bitti tulee kirjoittaa nollaan, jos sitä käytetään. Varattuja I / O-muistiosoitteita ei tule koskaan kirjoittaa.
Jotkut tilaliput tyhjennetään kirjoittamalla niille looginen. Huomaa, että CBI- ja SBI-käskyt toimivat vain määritetyllä bitillä, ja siksi niitä voidaan käyttää rekistereissä, jotka sisältävät tällaisia tilalippuja. CBI- ja SBI-ohjeet toimivat vain rekistereissä 0x00 - 0x1F.
I/O- ja oheislaitteiden ohjausrekisterit selitetään myöhemmissä osissa.
Rekisterikuvaus
EEARH – EEPROM-osoiterekisteri
Bitti | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x1F | – | – | – | – | – | – | – | EEAR8 | EEARH |
Lue/kirjoita | R | R | R | R | R | R | R | R/W | |
Alkuarvo | 0 | 0 | 0 | 0 | 0 | 0 | 0 | X/0 |
Bitit 7:1 – Res: Varatut bitit
Nämä bitit on varattu tulevaa käyttöä varten ja ne luetaan aina nolliksi.
Bitit 0 – EEAR8: EEPROM-osoite
Tämä on ATtiny85:n merkittävin EEPROM-osoitebitti. Laitteissa, joissa on vähemmän EEPROMia, eli ATtiny25/ATtiny45, tämä bitti on varattu ja lukee aina nollaa. EEPROM-osoiterekisterin (EEAR) alkuarvo on määrittelemätön, ja siksi oikea arvo on kirjoitettava ennen EEPROMin käyttöä.
EEARL – EEPROM-osoiterekisteri
Bitti
0x1E | EEAR7 | EEAR6 | EEAR5 | EEAR4 | EEAR3 | EEAR2 | EEAR1 | EEAR0 | EEARL |
Taka/kirjoitus | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Alkuarvo | X | X | X | X | X | X | X | X |
Bitti 7 – EEAR7: EEPROM-osoite
Tämä on ATtiny45:n merkittävin EEPROM-osoitebitti. Laitteissa, joissa on vähemmän EEPROMia, eli ATtiny25, tämä bitti on varattu ja lukee aina nollan. EEPROM-osoiterekisterin (EEAR) alkuarvo on määrittelemätön, ja siksi oikea arvo on kirjoitettava ennen EEPROMin käyttöä.
Bitit 6:0 – EEAR[6:0]: EEPROM-osoite
Nämä ovat EEPROM-osoiterekisterin (matalat) bitit. EEPROM-datatavut osoitetaan lineaarisesti alueella 0…(128/256/512-1). EEAR:n alkuarvoa ei ole määritelty, ja siksi oikea arvo on kirjoitettava ennen kuin EEPROMiin voidaan päästä.
EEDR – EEPROM-tietorekisteri
Bitti | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x1D | EEDR7 | EEDR6 | EEDR5 | EEDR4 | EEDR3 | EEDR2 | EEDR1 | EEDR0 | EEDR |
Lue/kirjoita | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Alkuarvo | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
EEPROM-kirjoitustoimintoa varten EEDR-rekisteri sisältää EEPROMiin kirjoitettavat tiedot EEAR-rekisterin antamaan osoitteeseen. EEPROM-lukutoimintoa varten EEDR sisältää tiedot luettuna
EEPROM EEAR:n antamaan osoitteeseen.
5.5.4 EECR – EEPROM-valvontarekisteri |
|||||||||
Bitti 7 6 5 | 4 | 3 | 2 | 1 | 0 | ||||
0x1C – | – | EEPM1 | EEPM0 | AAVEMAINEN | EEMPE | EEPE | EERE | EECR | |
Lue/kirjoita R R R/W | R/W | R/W | R/W | R/W | R/W | ||||
Alkuarvo 0 0 X | X | 0 | 0 | X | 0 |
Bitti 7 – Res: Varattu bitti
Tämä bitti on varattu tulevaa käyttöä varten ja lukee aina 0:na ATtiny25/45/85:ssä. Kirjoita tämä bitti aina nollaan, jotta se on yhteensopiva tulevien AVR-laitteiden kanssa. Peitä tämä osa lukemisen jälkeen.
Bitti 6 – Res: Varattu bitti
Tämä bitti on varattu ATtiny25/45/85:ssä ja se luetaan aina nollana.
Bitit 5:4 – EEPM[1:0]: EEPROM-ohjelmointitilan bitit
EEPROM-ohjelmointitilan bittien asetus määrittää, mikä ohjelmointitoiminto käynnistyy EEPE:tä kirjoitettaessa. On mahdollista ohjelmoida tiedot yhdellä atomioperaatiolla (poistaa vanha arvo ja ohjelmoida uusi arvo) tai jakaa Erase- ja Write-operaatiot kahteen eri operaatioon. Eri tilojen ohjelmointiajat näkyvät kohdassa Taulukko 5-1. Kun EEPE on asetettu, kaikki EEPMn-kirjoitukset ohitetaan. Nollauksen aikana EEPMn-bitit palautetaan arvoon 0b00, ellei EEPROM ole varattu ohjelmointiin.
Taulukko 5-1. EEPROM-tilan bitit
EEPM1 | EEPM0 | Ohjelmointiaika | Toiminta |
0 | 0 | 3.4 ms | Pyyhi ja kirjoita yhdellä toiminnolla (atomioperaatio) |
0 | 1 | 1.8 ms | Vain tyhjennys |
1 | 0 | 1.8 ms | Vain kirjoitus |
1 | 1 | – | Varattu tulevaa käyttöä varten |
Bitti 3 – EERIE: EEPROM Ready Interrupt Enable
EERIE:n kirjoittaminen yhteen ottaa käyttöön EEPROM-valmiuskeskeytyksen, jos SREG:n I-bitti on asetettu. EERIE:n kirjoittaminen nollaan poistaa keskeytyksen käytöstä. EEPROM Ready Interrupt generoi jatkuvan keskeytyksen, kun haihtumaton muisti on valmis ohjelmointia varten.
Bitti 2 – EEMPE: EEPROM Master Program Enable
EEMPE-bitti määrittää, vaikuttaako EEPE:n kirjoittaminen yhteen vai ei.
Kun EEMPE on asetettu, EEPE:n asettaminen neljän kellojakson sisällä ohjelmoi EEPROMin valittuun osoitteeseen. Jos EEMPE on nolla, EEPE:n asetuksella ei ole vaikutusta. Kun EEMPE on kirjoitettu yhdeksi ohjelmistolla, laitteisto tyhjentää bitin nollaan neljän kellojakson jälkeen.
Bitti 1 – EEPE: EEPROM-ohjelma käytössä
EEPROM-ohjelman käynnistyssignaali EEPE on ohjelmoinnin aktivointisignaali EEPROM-muistiin. Kun EEPE kirjoitetaan, EEPROM ohjelmoidaan EEPMn-bittiasetuksen mukaisesti. EEMPE-bitti on kirjoitettava yhteen ennen kuin looginen bitti kirjoitetaan EEPE:hen, muuten EEPROM-kirjoitusta ei tapahdu. Kun kirjoitusaika on kulunut, EEPE-bitti tyhjennetään laitteistolla. Kun EEPE on asetettu, CPU pysäytetään kahdeksi jaksoksi ennen kuin seuraava käsky suoritetaan.
Bitti 0 – EERE: EEPROM-luku käytössä
EEPROM-lukusignaali – EERE – on EEPROMin lukuvalo. Kun oikea osoite on asetettu EEAR-rekisteriin, EERE-bitti on kirjoitettava yhteen, jotta EEPROM-luku käynnistyy. EEPROM-lukuoikeus kestää yhden käskyn, ja pyydetyt tiedot ovat heti saatavilla. Kun EEPROM luetaan, CPU pysähtyy neljäksi jaksoksi ennen kuin seuraava käsky suoritetaan. Käyttäjän tulee pollata EEPE-bitti ennen lukutoiminnon aloittamista. Jos kirjoitustoiminto on käynnissä, ei ole mahdollista lukea EEPROMia tai muuttaa EEAR-rekisteriä.
Järjestelmän kello ja kellon asetukset
Kellojärjestelmät ja niiden jakelu
CPU-kello
CPU:n kello reititetään AVR-ytimen toimintaan liittyviin järjestelmän osiin. EsimampTällaisia moduuleja ovat yleisrekisteri File, tilarekisteri ja tietomuisti, joka sisältää pinoosoittimen. CPU:n kellon pysäyttäminen estää ydintä suorittamasta yleisiä toimintoja ja laskelmia.
I/O-kello – clkI/O
Suurin osa I/O-moduuleista, kuten ajastin/laskuri, käyttää I/O-kelloa. Ulkoinen keskeytysmoduuli käyttää myös I/O-kelloa, mutta huomioi, että jotkin ulkoiset keskeytykset havaitaan asynkronisella logiikalla, jolloin tällaiset keskeytykset voidaan havaita, vaikka I/O-kello pysäytetään.
Flash Clock – clkFLASH
Flash-kello ohjaa Flash-liitännän toimintaa. Flash-kello on yleensä aktiivinen samanaikaisesti suorittimen kellon kanssa.
ADC-kello – clkADC
ADC:ssä on oma kelloalue. Tämä mahdollistaa CPU- ja I/O-kellojen pysäyttämisen digitaalisten piirien tuottaman kohinan vähentämiseksi. Tämä antaa tarkemmat ADC-muunnostulokset.
Sisäinen PLL nopeaan oheiskellon luomiseen – clkPCK
ATtiny25/45/85:n sisäinen PLL luo kellotaajuuden, joka kerrotaan 8x lähdetulosta. Oletusarvoisesti PLL käyttää lähteenä sisäisen 8.0 MHz RC-oskillaattorin lähtöä. Vaihtoehtoisesti, jos PLLCSR:n bitti LSM on asetettu, PLL käyttää RC-oskillaattorin lähtöä jaettuna kahdella. Siten PLL:n, nopean oheiskellon lähtö on 64 MHz. Nopea oheiskello tai siitä esiskaalattu kello voidaan valita Timer/Counter1:n kellolähteeksi tai järjestelmäkelloksi. Katso Kuva 6-2. Nopean oheiskellon taajuus jaetaan kahdella, kun PLLCSR:n LSM on asetettu, mikä johtaa 32 MHz:n kellotaajuuteen. Huomaa, että LSM:ää ei voi asettaa, jos PLLCLK:ta käytetään järjestelmän kellona.
Kuva 6-2. PCK-kellojärjestelmä.
PLL on lukittu RC-oskillaattoriin ja RC-oskillaattorin säätäminen OSCCAL-rekisterin kautta säätää nopeaa oheiskelloa samanaikaisesti. Kuitenkin vaikka RC-oskillaattori viedään korkeammalle taajuudelle kuin 8 MHz, nopea oheiskellotaajuus kyllästyy 85 MHz:ssä (pahimmassa tapauksessa) ja jää värähtelemään maksimitaajuudella. On huomattava, että PLL:tä ei tässä tapauksessa enää lukita RC-oskillaattorikellolla. Siksi on suositeltavaa olla tekemättä OSCCAL-säätöjä korkeammalle taajuudelle kuin 8 MHz, jotta PLL pysyy oikealla toiminta-alueella.
Sisäinen PLL on käytössä, kun:
PLLE-bitti rekisterissä PLLCSR on asetettu.
CKSEL-sulake on ohjelmoitu arvoon '0001'.
CKSEL-sulake on ohjelmoitu arvoon '0011'.
PLLCSR-bitti PLOCK asetetaan, kun PLL on lukittu. Sekä sisäinen RC-oskillaattori että PLL ovat pois päältä virrankatkaisu- ja valmiustilassa.
Sisäinen PLL ATtiny15-yhteensopivuustilassa
Koska ATtiny25/45/85 on siirtolaite ATtiny15-käyttäjille, on olemassa ATtiny15-yhteensopivuustila taaksepäin yhteensopivuutta varten. ATtiny15-yhteensopivuustila valitaan ohjelmoimalla CKSEL-sulakkeet arvoon '0011'.
ATtiny15-yhteensopivuustilassa sisäisen RC-oskillaattorin taajuus on kalibroitu 6.4 MHz:iin ja PLL:n kertoimeksi on asetettu 4x. Katso Kuva 6-3. Näillä säädöillä kellojärjestelmä on ATtiny15-yhteensopiva ja tuloksena olevan nopean oheiskellon taajuus on 25.6 MHz (sama kuin ATtiny15:ssä).
Kuva 6-3. PCK-kellojärjestelmä ATtiny15-yhteensopivuustilassa.
Kellolähteet
Laitteessa on seuraavat kellolähdevaihtoehdot, jotka voidaan valita Flash Fuse -bittien avulla alla olevan kuvan mukaisesti. Kello valitusta lähteestä syötetään AVR-kellogeneraattoriin ja reititetään asianmukaisiin moduuleihin.
Taulukko 6-1. Laitteen kelloasetukset Valitse
Laitteen kellovaihtoehto | CKSEL[3:0](1) |
Ulkoinen kello (katso sivu 26) | 0000 |
Korkeataajuinen PLL-kello (katso sivu 26) | 0001 |
Kalibroitu sisäinen oskillaattori (katso sivu 27) | 0010(2) |
Kalibroitu sisäinen oskillaattori (katso sivu 27) | 0011(3) |
Sisäinen 128 kHz oskillaattori (katso sivu 28) | 0100 |
Matalataajuinen kristallioskillaattori (katso sivu 29) | 0110 |
Kristallioskillaattori / keraaminen resonaattori (katso sivu 29) | 1000-1111 |
Varattu | 0101, 0111 |
Kaikille sulakkeille "1" tarkoittaa ohjelmoimatonta, kun taas "0" tarkoittaa ohjelmoitua.
Laite toimitetaan tämän vaihtoehdon ollessa valittuna.
Tämä valitsee ATtiny15-yhteensopivuustilan, jossa järjestelmän kello jaetaan neljällä, mikä johtaa 1.6 MHz:n kellotaajuuteen. Lisää ohjeita, katso "Kalibroitu sisäinen oskillaattori" sivulla 27.
Eri kellotusvaihtoehdot on esitetty seuraavissa osissa. Kun prosessori herää virrankatkaisusta, valittua kellolähdettä käytetään käynnistyksen ajoittamiseen, mikä varmistaa oskillaattorin vakaan toiminnan ennen käskyn suorittamisen alkamista. Kun CPU käynnistyy nollauksesta, on lisäviive, jonka ansiosta teho saavuttaa vakaan tason ennen normaalin toiminnan aloittamista. Watchdog-oskillaattoria käytetään tämän käynnistysajan reaaliaikaisen osan ajoittamiseen. Kussakin aikakatkaisussa käytettyjen WDT-oskillaattorin jaksojen määrä näytetään Taulukko 6-2.
Taulukko 6-2. Watchdog-oskillaattorisyklien määrä
Kirjoita Aikakatkaisu | Syklien lukumäärä |
4 ms | 512 |
64 ms | 8K (8,192) |
Ulkoinen kello
Jos haluat ohjata laitetta ulkoisesta kellolähteestä, CLKI:tä tulee ohjata kuvan osoittamalla tavalla Kuva 6-4. Jotta laitetta voidaan käyttää ulkoisella kellolla, CKSEL-sulakkeet on ohjelmoitava arvoon "00".
Kuva 6-4. Ulkoisen kelloaseman kokoonpano
Kun tämä kellolähde valitaan, SUT-sulakkeet määrittävät käynnistysajat kuvan osoittamalla tavalla Taulukko 6-3.
Taulukko 6-3. Ulkoisen kellon valinnan käynnistysajat
SUT[1:0] | Käynnistysaika virrankatkaisusta | Lisäviive nollauksesta | Suositeltu käyttö |
00 | 6 CK | 14CK | BOD käytössä |
01 | 6 CK | 14CK + 4 ms | Nopeasti kasvava teho |
10 | 6 CK | 14CK + 64 ms | Hitaasti nouseva teho |
11 | Varattu |
Ulkoista kelloa käytettäessä on vältettävä äkillisiä muutoksia käytetyssä kellotaajuudessa MCU:n vakaan toiminnan varmistamiseksi. Yli 2 %:n taajuuden vaihtelu kellojaksosta toiseen voi johtaa arvaamattomaan käyttäytymiseen. On varmistettava, että MCU pysyy Reset-tilassa tällaisten kellotaajuuden muutosten aikana.
Huomaa, että System Clock Presale -toimintoa voidaan käyttää sisäisen kellotaajuuden ajonaikaisten muutosten toteuttamiseen samalla, kun varmistetaan vakaa toiminta. Viitata "Järjestelmän kellon esiskaalaaja" sivulla 31 lisätietoja.
Korkeataajuinen PLL-kello
Siinä on sisäinen PLL, joka tarjoaa nimellisesti 64 MHz:n kellotaajuuden lukittuna RC-oskillaattoriin oheisajastimen/laskurin1 käyttöä ja järjestelmän kellolähdettä varten. Kun se on valittu järjestelmän kellolähteeksi ohjelmoimalla CKSEL-sulakkeet arvoon '0001', se jaetaan neljällä, kuten kuvassa näkyy. Taulukko 6-4.
Taulukko 6-4. Korkean taajuuden PLL-kellon toimintatilat
CKSEL[3:0] | Nimellistaajuus |
0001 | 16 MHz |
Kun tämä kellolähde valitaan, käynnistysajat määräytyvät SUT-sulakkeiden avulla kuvan osoittamalla tavalla Taulukko 6-5.
Taulukko 6-5. Korkeataajuisen PLL-kellon käynnistysajat
SUT[1:0] | Käynnistysaika virrankatkaisusta | Lisäviive käynnistyksen nollauksesta (VCC = 5.0 V) | Suositeltu käyttö |
00 | 14CK + 1K (1024) CK + 4 ms | 4 ms | BOD käytössä |
Taulukko 6-5. Korkeataajuisen PLL-kellon käynnistysajat
SUT[1:0] | Käynnistysaika virrankatkaisusta | Lisäviive käynnistyksen nollauksesta (VCC = 5.0 V) | Suositeltu käyttö |
01 | 14CK + 16K (16384) CK + 4 ms | 4 ms | Nopeasti kasvava teho |
10 | 14CK + 1K (1024) CK + 64 ms | 4 ms | Hitaasti nouseva teho |
11 | 14CK + 16K (16384) CK + 64 ms | 4 ms | Hitaasti nouseva teho |
Kalibroitu sisäinen oskillaattori
Oletuksena sisäinen RC-oskillaattori tarjoaa noin 8.0 MHz kellon. Vaikka voltage ja lämpötilasta riippuen käyttäjä voi kalibroida tämän kellon erittäin tarkasti. Katso "Kalibroitu sisäinen RC-oskillaattoriakku racy” sivulla 164 ja "Sisäinen oskillaattorin nopeus" sivulla 192 Lisätietoja. Laitteen mukana toimitetaan ohjelmoitu CKDIV8 Fuse. Katso "Järjestelmän kellon esiskaalaaja" sivulla 31 saadaksesi lisätietoja.
Tämä kello voidaan valita järjestelmän kelloksi ohjelmoimalla CKSEL-sulakkeet kuvan osoittamalla tavalla Taulukko 6-6 sivulla
27. Jos se valitaan, se toimii ilman ulkoisia komponentteja. Nollauksen aikana laitteisto lataa esiohjelmoidun kalibrointiarvon OSCCAL-rekisteriin ja kalibroi siten automaattisesti RC-oskillaattorin. Tämän kalibroinnin tarkkuus näkyy tehdaskalibrointina Taulukko 21-2 sivulla 164.
Jos vaihdat OSCCAL-rekisterin SW:stä, katso "OSCCAL – Oskillaattorin kalibrointirekisteri" sivulla 31, on mahdollista saada suurempi kalibrointitarkkuus kuin tehdaskalibrointia käyttämällä. Tämän kalibroinnin tarkkuus näkyy kohdassa Käyttäjän kalibrointi Taulukko 21-2 sivulla 164.
Kun tätä oskillaattoria käytetään sirukellona, Watchdog-oskillaattoria käytetään edelleen Watchdog-ajastimeen ja nollausaikakatkaisuun. Lisätietoja esiohjelmoidusta kalibrointiarvosta on kohdassa "Kali- bration Bytes” sivulla 150.
Sisäinen oskillaattori voidaan myös asettaa tuottamaan 6.4 MHz:n kello kirjoittamalla CKSEL-sulakkeet "0011", kuten kuvassa Taulukko 6-6 alla. Tätä asetusta kutsutaan ATtiny15-yhteensopivuustilaksi, ja se on tarkoitettu tarjoamaan kalibroitu kellolähde 6.4 MHz:ssä, kuten ATtiny15:ssä. ATtiny15-yhteensopivuustilassa PLL käyttää 6.4 MHz:n taajuudella toimivaa sisäistä oskillaattoria generoidakseen 25.6 MHz:n oheiskellosignaalin Timer/Counter1:lle (katso "8-bittinen ajastin/laskuri1 tuumaa ATtiny15-tila” sivulla 95). Huomaa, että tässä toimintatilassa 6.4 MHz kellosignaali jaetaan aina neljällä, jolloin saadaan 1.6 MHz järjestelmäkello.
Taulukko 6-6. Sisäiset kalibroidut RC-oskillaattorin toimintatilat
CKSEL[3:0] | Nimellistaajuus |
0010(1) | 8.0 MHz |
0011(2) | 6.4 MHz |
Laite toimitetaan tämän vaihtoehdon ollessa valittuna.
Tämä asetus valitsee ATtiny15-yhteensopivuustilan, jossa järjestelmän kello jaetaan neljällä, mikä johtaa 1.6 MHz:n kellotaajuuteen.
Kun kalibroitu 8 MHz:n sisäinen oskillaattori on valittu kellolähteeksi, käynnistysajat määrittävät SUT-sulakkeet, kuten kohdassa Taulukko 6-7 alla.
Taulukko 6-7. Sisäisen kalibroidun RC-oskillaattorikellon käynnistysajat
SUT[1:0] | Käynnistysaika virrankatkaisusta | Lisäviive nollauksesta (VCC = 5.0 V) | Suositeltu käyttö |
00 | 6 CK | 14CK(1) | BOD käytössä |
01 | 6 CK | 14CK + 4 ms | Nopeasti kasvava teho |
10(2) | 6 CK | 14CK + 64 ms | Hitaasti nouseva teho |
11 | Varattu |
1. Jos RSTDISBL-sulake on ohjelmoitu, tätä käynnistysaikaa pidennetään arvoon 14CK + 4 ms, jotta ohjelmointitilaan voidaan siirtyä.
2. Laite toimitetaan tämän vaihtoehdon ollessa valittuna.
ATtiny15-yhteensopivuustilassa käynnistysajat määräytyvät SUT-sulakkeilla kuvan osoittamalla tavalla Taulukko 6-8 alla.
Taulukko 6-8. Sisäisen kalibroidun RC-oskillaattorikellon käynnistysajat (ATtiny15-tilassa)
SUT[1:0] | Käynnistysaika virrankatkaisusta | Lisäviive nollauksesta (VCC = 5.0 V) | Suositeltu käyttö |
00 | 6 CK | 14CK + 64 ms | |
01 | 6 CK | 14CK + 64 ms | |
10 | 6 CK | 14CK + 4 ms | |
11 | 1 CK | 14CK(1) |
Huomautus: Jos RSTDISBL-sulake on ohjelmoitu, tämä käynnistysaika kasvaa arvoon 14CK + 4 ms, jotta ohjelmointitilaan voidaan siirtyä.
Yhteenvetona, lisätietoja ATtiny15-yhteensopivuustilasta löytyy osioista "Portti B (PB5:PB0)" päällä sivu 2, "Sisäinen PLL ATtiny15-yhteensopivuustilassa" sivulla 24, "8-bittinen ajastin/laskuri1 ATtiny15-tilassa" päällä sivu 95, "DebugWIREn rajoitukset" sivulla 140, "Kalibrointitavut" sivulla 150 ja taulukossa "Kellon esiskaalaaja Valitse” sivulla 33.
Sisäinen 128 kHz oskillaattori
128 kHz:n sisäinen oskillaattori on pienitehoinen oskillaattori, jonka kellotaajuus on 128 kHz. Taajuus on nimellisjännitteellä 3V ja 25°C. Tämä kello voidaan valita järjestelmän kelloksi ohjelmoimalla CKSEL-sulakkeet arvoon "0100".
Kun tämä kellolähde valitaan, SUT-sulakkeet määrittävät käynnistysajat kuvan osoittamalla tavalla Taulukko 6-9.
Taulukko 6-9. 128 kHz:n sisäisen oskillaattorin käynnistysajat
SUT[1:0] | Käynnistysaika virrankatkaisusta | Lisäviive nollauksesta | Suositeltu käyttö |
00 | 6 CK | 14CK(1) | BOD käytössä |
01 | 6 CK | 14CK + 4 ms | Nopeasti kasvava teho |
10 | 6 CK | 14CK + 64 ms | Hitaasti nouseva teho |
11 | Varattu |
Huomautus: Jos RSTDISBL-sulake on ohjelmoitu, tämä käynnistysaika kasvaa arvoon 14CK + 4 ms, jotta ohjelmointitilaan voidaan siirtyä.
Matalataajuinen kristallioskillaattori
Jos haluat käyttää 32.768 kHz:n kellokidettä laitteen kellolähteenä, matalataajuinen kristallioskillaattori on valittava asettamalla CKSEL-sulakkeet arvoon '0110'. Kristalli tulee kytkeä kuvan osoittamalla tavalla Kuva 6-5. Löydät sopivan kuormituskapasitanssin 32.768 kHz:n crysaalille valmistajan teknisistä tiedoista.
Kun tämä oskillaattori valitaan, SUT-sulakkeet määrittävät käynnistysajat kuvan osoittamalla tavalla Taulukko 6-10.
Taulukko 6-10. Matalataajuisen kristallioskillaattorikellon käynnistysajat
SUT[1:0] | Käynnistysaika virrankatkaisusta | Lisäviive nollauksesta (VCC = 5.0 V) | Suositeltu käyttö |
00 | 1K (1024) CK(1) | 4 ms | Nopeasti kasvava teho tai BOD käytössä |
01 | 1K (1024) CK(1) | 64 ms | Hitaasti nouseva teho |
10 | 32K (32768) CK | 64 ms | Vakaa taajuus käynnistyksen yhteydessä |
11 | Varattu |
Huomautus: Näitä vaihtoehtoja tulee käyttää vain, jos taajuuden vakaus käynnistyksen yhteydessä ei ole tärkeää.
Matalataajuinen kristallioskillaattori tarjoaa sisäisen kuormituskapasitanssin, katso Taulukko 6-11 jokaisessa TOSC-nastassa.
Taulukko 6-11. Matalataajuisen kristallioskillaattorin kapasitanssi
Laite | 32 kHz Osc. Tyyppi | Korkki (Xtal1/Tosc1) | Korkki (Xtal2/Tosc2) |
ATtiny25/45/85 | System Osc. | 16 pF | 6 pF |
Kristallioskillaattori / keraaminen resonaattori
XTAL1 ja XTAL2 ovat invertoinnin tulo ja lähtö ampvahvistin, joka voidaan konfiguroida käytettäväksi on-chip-oskillaattorina kuvan osoittamalla tavalla Kuva 6-5. Voidaan käyttää joko kvartsikidettä tai keraamista resonaattoria.
C1:n ja C2:n tulee aina olla yhtä suuria sekä kiteille että resonaattoreille. Kondensaattorien optimaalinen arvo riippuu käytössä olevasta kiteestä tai resonaattorista, hajakapasitanssin määrästä ja ympäristön sähkömagneettisesta kohinasta. Joitakin alkuohjeita kiteiden kanssa käytettävien kondensaattoreiden valitsemiseksi on annettu Taulukko 6-12 alla. Keraamisissa resonaattoreissa tulee käyttää valmistajan ilmoittamia kondensaattoriarvoja.
Taulukko 6-12. Kristallioskillaattorin toimintatilat
CKSEL[3:1] | Taajuusalue (MHz) | Suositeltu alue kondensaattoreille C1 ja C2 käytettäväksi kiteiden kanssa (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 |
Huomautuksia: Tätä vaihtoehtoa ei tule käyttää kiteiden kanssa, vaan vain keraamisten resonaattoreiden kanssa.
Oskillaattori voi toimia kolmessa eri tilassa, joista jokainen on optimoitu tietylle taajuusalueelle. Toimintatapa valitaan sulakkeilla CKSEL[3:1] kuvan osoittamalla tavalla Taulukko 6-12.
CKSEL0-sulake yhdessä SUT[1:0]-sulakkeiden kanssa valitsee käynnistysajat kuvan osoittamalla tavalla. Taulukko 6-13.
Taulukko 6-13. Crystal Oscillator Clock -valinnan käynnistysajat
CKSEL0 | SUT[1:0] | Käynnistysaika virrankatkaisusta | Lisäviive nollauksesta | Suositeltu käyttö |
0 | 00 | 258 CK(1) | 14CK + 4 ms | Keraaminen resonaattori, nopeasti nouseva teho |
0 | 01 | 258 CK(1) | 14CK + 64 ms | Keraaminen resonaattori, hitaasti nouseva teho |
0 | 10 | 1K (1024) CK(2) | 14CK | Keraaminen resonaattori, BOD käytössä |
0 | 11 | 1K (1024) CK(2) | 14CK + 4 ms | Keraaminen resonaattori, nopeasti nouseva teho |
1 | 00 | 1K (1024) CK(2) | 14CK + 64 ms | Keraaminen resonaattori, hitaasti nouseva teho |
1 | 01 | 16K (16384) CK | 14CK | Crystal Oscillator, BOD käytössä |
1 | 10 | 16K (16384) CK | 14CK + 4 ms | Crystal Oscillator, nopeasti kasvava teho |
1 | 11 | 16K (16384) CK | 14CK + 64 ms | Crystal Oscillator, hitaasti kasvava teho |
Huomautuksia
Näitä vaihtoehtoja tulee käyttää vain silloin, kun laite ei toimi lähellä laitteen maksimitaajuutta, ja vain jos taajuuden vakaus käynnistyksen yhteydessä ei ole sovelluksen kannalta tärkeää. Nämä vaihtoehdot eivät sovellu kiteille.
Nämä vaihtoehdot on tarkoitettu käytettäviksi keraamisten resonaattoreiden kanssa ja varmistavat taajuuden vakauden käynnistyksen yhteydessä. Niitä voidaan käyttää myös kiteiden kanssa, kun ne eivät toimi lähellä laitteen maksimitaajuutta ja jos taajuuden vakaus käynnistyksen yhteydessä ei ole sovelluksen kannalta tärkeää.
Kellon oletuslähde
Laite toimitetaan ohjelmoituna CKSEL = "0010", SUT = "10" ja CKDIV8. Oletuskellolähdeasetus on siksi sisäinen RC-oskillaattori, joka toimii 8 MHz:llä pisimmällä käynnistysajalla ja järjestelmän kellon esiskaalauksella 8, jolloin järjestelmäkello on 1.0 MHz. Tämä oletusasetus varmistaa, että kaikki käyttäjät voivat tehdä haluamansa kellolähdeasetuksensa käyttämällä In-System- tai High-volumiatage Ohjelmoija.
Järjestelmän kellon esiskaalaaja
Järjestelmän ATtiny25/45/85 kello voidaan jakaa asettamalla “CLKPR – Kellon esiasteikkorekisteri” sivulla 32. Tätä ominaisuutta voidaan käyttää vähentämään virrankulutusta, kun prosessointitehon tarve on alhainen. Tätä voidaan käyttää kaikkien kellolähdevaihtoehtojen kanssa, ja se vaikuttaa CPU:n ja kaikkien synkronisten oheislaitteiden kellotaajuuteen. clkI/O, clkADC, clkCPU ja clkFLASH jaetaan kertoimella kuten kuvassa Taulukko 6-15 sivulla 33.
Vaihtoaika
Vaihdettaessa esiskaalaimen asetusten välillä System Clock Prescaler varmistaa, ettei kellojärjestelmässä tapahdu häiriöitä ja ettei mikään välitaajuus ole korkeampi kuin edellistä asetusta vastaava kellotaajuus tai uutta asetusta vastaava kellotaajuus.
Esiskaalaimen toteuttava aaltoilulaskuri toimii jakamattoman kellon taajuudella, joka voi olla nopeampi kuin CPU:n kellotaajuus. Näin ollen esiskaalaimen tilaa ei voida määrittää – vaikka se olisikin luettavissa, eikä tarkkaa aikaa, joka kuluu kellonjaosta toiseen siirtymiseen, ei voida tarkasti ennustaa.
CLKPS-arvojen kirjoitushetkestä lähtien kuluu T1 + T2 ja T1 + 2*T2 välillä, ennen kuin uusi kellotaajuus on aktiivinen. Tällä aikavälillä tuotetaan 2 aktiivista kelloreunaa. Tässä T1 on edellinen kellojakso ja T2 on uutta esiskaalaimen asetusta vastaava jakso.
Kellon lähtöpuskuri
Laite voi lähettää järjestelmäkellon CLKO-nastalle (jos sitä ei käytetä XTAL2-nastana). Ulostulon mahdollistamiseksi CKOUT-sulake on ohjelmoitava. Tämä tila sopii, kun sirukelloa käytetään ohjaamaan muita järjestelmän piirejä. Huomaa, että kelloa ei lähetetä nollauksen aikana ja että I/O-nastan normaali toiminta ohitetaan, kun sulake ohjelmoidaan. Sisäinen RC-oskillaattori, WDT-oskillaattori, PLL ja ulkoinen kello (CLKI) voidaan valita, kun kello lähetetään CLKO:ssa. Kristallioskillaattoria (XTAL1, XTAL2) ei voida käyttää kellolähtöön CLKO:ssa. Jos käytetään System Clock Prescaler -toimintoa, jaettu järjestelmän kello tulostetaan.
Rekisterikuvaus
OSCCAL – Oskillaattorin kalibrointirekisteri
Bitti | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x31 | CAL7 | CAL6 | CAL5 | CAL4 | CAL3 | CAL2 | CAL1 | CAL0 | OSCCAL |
Lue/kirjoita | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
Bitit 7:0 – CAL[7:0]: Oskillaattorin kalibrointiarvo
Oskillaattorin kalibrointirekisteriä käytetään kalibroidun sisäisen RC-oskillaattorin trimmaamiseen prosessin vaihteluiden poistamiseksi oskillaattorin taajuudesta. Esiohjelmoitu kalibrointiarvo kirjoitetaan automaattisesti tähän rekisteriin sirun nollauksen aikana, jolloin saadaan tehdaskalibroitu taajuus, joka on määritelty Taulukko 21-2 sivulla 164. Sovellusohjelmisto voi kirjoittaa tämän rekisterin muuttaakseen oskillaattorin taajuutta. Oskillaattori voidaan kalibroida kohdassa määritellyille taajuuksille Taulukko 21-2 sivulla 164. Kalibrointia tämän alueen ulkopuolella ei taata.
Huomaa, että tätä oskillaattoria käytetään ajastamaan EEPROM- ja Flash-kirjoituspääsyjä, ja tämä vaikuttaa vastaavasti näihin kirjoitusaikoihin. Jos EEPROM tai Flash on kirjoitettu, älä kalibroi taajuudeksi yli 8.8 MHz. Muuten EEPROM- tai Flash-kirjoitus saattaa epäonnistua.
CAL7-bitti määrittää oskillaattorin toiminta-alueen. Tämän bitin asettaminen arvoon 0 antaa alimman taajuusalueen, ja tämän bitin asettaminen arvoon 1 antaa suurimman taajuusalueen. Nämä kaksi taajuusaluetta menevät päällekkäin, toisin sanoen asetus OSCCAL = 0x7F antaa korkeamman taajuuden kuin OSCCAL = 0x80.
CAL[6:0]-bittejä käytetään taajuuden virittämiseen valitulla alueella. Asetus 0x00 antaa alueen alimman taajuuden, ja asetus 0x7F antaa alueen korkeimman taajuuden.
MCU:n vakaan toiminnan varmistamiseksi kalibrointiarvoa tulee muuttaa pieneksi. Yli 2 %:n taajuuden vaihtelu syklistä toiseen voi johtaa arvaamattomaan käyttäytymiseen. OSCCALin muutokset eivät saa ylittää arvoa 0x20 jokaisessa kalibroinnissa. On varmistettava, että MCU pysyy Reset-tilassa tällaisten kellotaajuuden muutosten aikana
Taulukko 6-14. Sisäinen RC-oskillaattorin taajuusalue
OSCCAL-arvo | Tyypillinen alin taajuus suhteessa nimellistaajuuteen | Tyypillinen korkein taajuus nimellistaajuuden suhteen |
0x00 | 50 % | 100 % |
0x3F | 75 % | 150 % |
0x7F | 100 % | 200 % |
CLKPR – Kellon esiasteikkorekisteri
Bitti | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x26 | CLKPCE | – | – | – | CLKPS3 | CLKPS2 | CLKPS1 | CLKPS0 | CLKPR |
Lue/kirjoita | R/W | R | R | R | R/W | R/W | R/W | R/W |
Alkuarvo 0 0 0 0 Katso bitin kuvaus
Bitti 7 – CLKPCE: Kellon esiskaalauksen muutos käytössä
CLKPCE-bitti on kirjoitettava logiikaksi, jotta CLKPS-bitit voidaan muuttaa. CLKPCE-bitti päivitetään vain, kun muut CLKPR:n bitit kirjoitetaan samanaikaisesti nollaan. Laitteisto tyhjentää CLKPCE:n neljä jaksoa sen kirjoittamisen tai CLKPS-bittien kirjoittamisen jälkeen. CLKPCE-bitin uudelleen kirjoittaminen tämän aikakatkaisujakson sisällä ei pidennä aikakatkaisujaksoa eikä tyhjennä CLKPCE-bittiä.
Bitit 6:4 – Res: Varatut bitit
Nämä bitit ovat varattuja bittejä ATtiny25/45/85:ssä ja ne luetaan aina nollana.
Bitit 3:0 – CLKPS[3:0]: Kellon esiskaalaimen valinta bitit 3 – 0
Nämä bitit määrittelevät jakotekijän valitun kellolähteen ja sisäisen järjestelmän kellon välillä. Nämä bitit voidaan kirjoittaa ajon aikana vaihtelemaan kellotaajuutta sovellusvaatimusten mukaan. Kun jakaja jakaa pääkellon tulon MCU:lle, kaikkien synkronisten oheislaitteiden nopeus pienenee, kun käytetään jakokerrointa. Jakokertoimet on annettu Taulukko 6-15.
Kellotaajuuden tahattomien muutosten välttämiseksi CLKPS-bittien muuttamiseksi on noudatettava erityistä kirjoitusmenettelyä:
Kirjoita Clock Prescaler Change Enable (CLKPCE) -bitti yhdeksi ja kaikki muut CLKPR:n bitit nollaan.
Kirjoita haluttu arvo CLKPS:ään neljän jakson aikana ja kirjoita nolla CLKPCE:hen.
Keskeytykset on poistettava käytöstä, kun esiskaalaimen asetusta muutetaan, jotta kirjoitusprosessi ei keskeydy.
CKDIV8 Fuse määrittää CLKPS-bittien alkuarvon. Jos CKDIV8 on ohjelmoimaton, CLKPS-bitit palautetaan arvoon "0000". Jos CKDIV8 on ohjelmoitu, CLKPS-bitit palautetaan arvoon "0011", jolloin jakotekijä on kahdeksan käynnistyksen yhteydessä. Tätä ominaisuutta tulee käyttää, jos valitulla kellolähteellä on korkeampi taajuus kuin laitteen maksimitaajuus nykyisissä käyttöolosuhteissa. Huomaa, että CLKPS-bitteihin voidaan kirjoittaa mikä tahansa arvo riippumatta CKDIV8 Fuse -asetuksesta. Sovellusohjelmiston tulee varmistaa riittävä jakokerroin
valitaan, jos valitulla kellolähteellä on korkeampi taajuus kuin laitteen maksimitaajuus nykyisissä käyttöolosuhteissa. Laitteen mukana toimitetaan ohjelmoitu CKDIV8 Fuse.
Taulukko 6-15. Kellon esiskaalaimen valinta
CLKPS3 | CLKPS2 | CLKPS1 | CLKPS0 | Kellon jakokerroin |
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 | Varattu |
1 | 0 | 1 | 0 | Varattu |
1 | 0 | 1 | 1 | Varattu |
1 | 1 | 0 | 0 | Varattu |
1 | 1 | 0 | 1 | Varattu |
1 | 1 | 1 | 0 | Varattu |
1 | 1 | 1 | 1 | Varattu |
Huomautus: Esiskaalaaja on poissa käytöstä ATtiny15-yhteensopivuustilassa, eikä CLKPR:ään kirjoittaminen tai CKDIV8-sulakkeen ohjelmoiminen vaikuta järjestelmän kelloon (joka on aina 1.6 MHz).
Virranhallinta ja lepotilat
Korkea suorituskyky ja alan johtava kooditehokkuus tekevät AVR-mikro-ohjaimista ihanteellisen valinnan pienitehoisiin sovelluksiin. Lisäksi lepotilan avulla sovellus voi sammuttaa MCU:n käyttämättömät moduulit, mikä säästää virtaa. AVR tarjoaa erilaisia lepotilatiloja, joiden avulla käyttäjä voi räätälöidä virrankulutuksen sovelluksen vaatimusten mukaan.
Lepotilat
Kuva 6-1 sivulla 23 esittelee erilaiset kellojärjestelmät ja niiden jakautumisen ATtiny25/45/85:ssä. Kuvasta on apua sopivan lepotilan valinnassa. Taulukko 7-1 näyttää eri lepotilat ja niiden herätyslähteet.
Taulukko 7-1. Aktiiviset kelloalueet ja herätyslähteet eri lepotilassa
Aktiiviset kellon verkkotunnukset | Oskillaattorit | Herätyslähteet | ||||||||||
Lepotila | clkCPU | clkFLASH | clkIO | clkADC | clkPCK | Pääkellon lähde käytössä | INT0 ja Pin Change | SPM/EEPROM
Valmis |
USI-aloitusehto |
ADC | Muut I/O | Vahtikoira Keskeyttää |
Tyhjäkäynti | X | X | X | X | X | X | X | X | X | X | ||
ADC kohinanvaimennus | X | X | X(1) | X | X | X | X | |||||
Sammuta virta | X(1) | X | X |
Huomautus: INT0:ssa vain tasokeskeytys.
Jos haluat siirtyä johonkin kolmesta lepotilasta, MCUCR:n SE-bitti on kirjoitettava loogiseen ykköseen ja SLEEP-käsky on suoritettava. MCUCR-rekisterin SM[1:0]-bitit valitsevat lepotilan (Idle, ADC Noise Reduction tai Powerdown) SLEEP-käskyn avulla. Katso Taulukko 7-2 yhteenvetoa varten.
Jos käytössä oleva keskeytys tapahtuu MCU:n ollessa lepotilassa, MCU herää. MCU pysäytetään sitten neljäksi jaksoksi käynnistysajan lisäksi, se suorittaa keskeytysrutiinin ja jatkaa suorittamista SLEEP-toimintoa seuraavasta käskystä. Rekisterin sisältö File ja SRAM eivät muutu, kun laite herää lepotilasta. Jos nollaus tapahtuu lepotilan aikana, MCU herää ja suorittaa nollausvektorin.
Huomaa: jos tason laukaista keskeytystä käytetään heräämiseen, muutettua tasoa on pidettävä jonkin aikaa, jotta MCU herää (ja jotta MCU pääsee keskeytyspalvelurutiiniin). Katso "Ulkoiset keskeytykset" sivulla 49 lisätietoja.
Valmiustila
Kun SM[1:0]-bitit kirjoitetaan arvoon 00, SLEEP-käsky saa MCU:n siirtymään lepotilaan pysäyttäen CPU:n, mutta sallien analogisen vertailulaitteen, ADC:n, USI:n, ajastimen/laskurin, vahtikoiran ja keskeytysjärjestelmän jatkaa toimintaansa. syöminen. Tämä lepotila pysäyttää periaatteessa clkCPU:n ja clkFLASH:n ja sallii muiden kellojen toimia.
Valmiustila mahdollistaa MCU:n heräämisen ulkoisista laukaisuista sekä sisäisistä keskeytyksistä, kuten ajastimen ylivuoto. Jos herätystä Analog Comparator -keskeytyksestä ei tarvita, Analog Comparator voidaan sammuttaa asettamalla ACD-bitti “ACSR – Analogisen vertailulaitteen ohjaus- ja tilarekisteri” sivulla 120. Tämä vähentää virrankulutusta perustilassa. Jos ADC on käytössä, muunnos alkaa automaattisesti, kun tähän tilaan siirrytään.
ADC:n kohinanvaimennustila
Kun SM[1:0]-bitit kirjoitetaan arvoon 01, SLEEP-käsky saa MCU:n siirtymään ADC-kohinanvaimennustilaan pysäyttäen CPU:n mutta sallien ADC:n, ulkoisten keskeytysten ja Watchdogin jatkaa toimintaansa (jos käytössä). Tämä lepotila pysäyttää clkI/O:n, clkCPU:n ja clkFLASHin samalla kun muut kellot voivat toimia.
Tämä parantaa ADC:n kohinaympäristöä ja mahdollistaa korkeamman resoluution mittaukset. Jos ADC on käytössä, muunnos alkaa automaattisesti, kun tähän tilaan siirrytään. ADC Conversion Complete -keskeytyksen lisäksi vain External Reset, Watchdog Reset, Brown-out Reset, SPM/EEPROM-valmis keskeytys, ulkoinen tason keskeytys INT0:ssa tai nastanvaihtokeskeytys voi herättää MCU:n ADC:n kohinanvaimennusta. -tilassa.
Sammutustila
Kun SM[1:0]-bitit kirjoitetaan arvoon 10, SLEEP-käsky saa MCU:n siirtymään virrankatkaisutilaan. Tässä tilassa oskillaattori pysähtyy, kun ulkoiset keskeytykset, USI-käynnistystilan tunnistus ja Watchdog jatkavat toimintaansa (jos käytössä). Vain ulkoinen nollaus, Watchdog Reset, Brown-out Reset, USI-käynnistysehtokeskeytys, ulkoinen tason keskeytys INT0:ssa tai nastanvaihtokeskeytys voivat herättää MCU:n. Tämä lepotila pysäyttää kaikki generoidut kellot ja sallii vain asynkronisten moduulien käytön.
Ohjelmisto BOD Disable
Kun Brown-out Detector (BOD) on otettu käyttöön BODLEVEL-sulakkeilla (katso Taulukko 20-4 sivulla 148), BOD seuraa aktiivisesti toimitustilavuuttatage unijakson aikana. Joissakin laitteissa on mahdollista säästää virtaa poistamalla BOD käytöstä ohjelmistolla Power-Down-lepotilassa. Lepotilan virrankulutus on tällöin samalla tasolla kuin silloin, kun BOD on globaalisti estetty sulakkeilla.
Jos BOD on poistettu käytöstä ohjelmiston avulla, BOD-toiminto kytkeytyy pois päältä välittömästi lepotilaan siirtymisen jälkeen. Kun heräät unesta, BOD otetaan automaattisesti uudelleen käyttöön. Tämä varmistaa turvallisen toiminnan, jos VCC-taso on laskenut lepotilan aikana.
Kun BOD on poistettu käytöstä, heräämisaika lepotilasta on sama kuin RESET-tilasta herätyksen aika. Käyttäjän on määritettävä heräämisajat manuaalisesti siten, että bandgap-viittauksella on aikaa alkaa ja BOD toimii oikein, ennen kuin MCU jatkaa koodin suorittamista. Katso SUT[1:0] ja CKSEL[3:0] sulakebitit taulukosta "Fuse Low Byte" sivulla 149
BOD-estoa ohjaa MCU-ohjausrekisterin BODS (BOD Sleep) -bitti, katso "MCUCR – MCU-ohjaus Rekisteröidy" sivulla 37. Tämän bitin kirjoittaminen ykköseksi kytkee BOD:n pois päältä Power-Downissa, kun taas nollan kirjoittaminen pitää BOD:n aktiivisena. Oletusasetus on nolla, eli BOD aktiivinen.
BODS-bittiin kirjoittamista ohjaa ajastettu sekvenssi ja aktivointibitti, katso "MCUCR – MCU Control Regis- ter” sivulla 37.
Rajoitukset
BOD-estotoiminto on otettu käyttöön vain seuraavissa laitteissa:
ATtiny25, versio E ja uudemmat
ATtiny45, versio D ja uudemmat
ATtiny85, versio C ja uudemmat
Versiot on merkitty laitepakkaukseen ja ne löytyvät seuraavasti:
Pakkausten 8P3 ja 8S2 alapuoli
Pakkauksen yläpuoli 20M1
Tehon vähennysrekisteri
Power Reduction Register (PRR), katso "PRR – tehonvähennysrekisteri" sivulla 38, tarjoaa menetelmän vähentää virrankulutusta pysäyttämällä kellon yksittäisille oheislaitteille. Oheislaitteen nykyinen tila on jäätynyt, eikä I/O-rekistereitä voida lukea tai kirjoittaa. Oheislaitteen käyttämät resurssit kellon pysäyttämiseen jäävät varattuiksi, joten oheislaite tulee useimmissa tapauksissa kytkeä pois päältä ennen kellon pysäyttämistä. Moduulin herättäminen, joka tehdään tyhjentämällä bitti PRR:ssä, asettaa moduulin samaan tilaan kuin ennen sammutusta.
Moduulin sammuttamista voidaan käyttää lepotilassa ja aktiivisessa tilassa vähentämään merkittävästi kokonaisvirrankulutusta. Kaikissa muissa lepotilassa kello on jo pysäytetty. Katso "I/O-moduulien syöttövirta" sivulla 177 esimamples.
Virrankulutuksen minimoiminen
On useita asioita, jotka on otettava huomioon, kun yritetään minimoida virrankulutus AVR-ohjatussa järjestelmässä. Yleensä lepotilaa tulee käyttää mahdollisimman paljon ja lepotila tulee valita siten, että laitteen toiminnoista on toiminnassa mahdollisimman vähän. Kaikki tarpeettomat toiminnot tulee poistaa käytöstä. Erityisesti seuraavat moduulit saattavat vaatia erityistä huomiota, kun yritetään saavuttaa pienin mahdollinen virrankulutus.
Analogi-digitaalimuunnin
Jos tämä on käytössä, ADC on käytössä kaikissa lepotilassa. Virran säästämiseksi ADC on poistettava käytöstä ennen lepotilaan siirtymistä. Kun ADC kytketään pois päältä ja uudelleen päälle, seuraava muunnos on laajennettu muunnos. Viitata "Analogi-digitaalimuunnin" sivulla 122 lisätietoja ADC:n toiminnasta.
Analoginen vertailu
Kun siirryt lepotilaan, Analog Comparator on poistettava käytöstä, jos sitä ei käytetä. Kun siirryt ADC-kohinanvaimennustilaan, Analog Comparator on poistettava käytöstä. Muissa lepotilassa Analog Comparator poistetaan automaattisesti käytöstä. Kuitenkin, jos Analog Comparator on asetettu käyttämään sisäistä voltage Viittaus tuloksi, Analog Comparator on poistettava käytöstä kaikissa lepotilassa. Muuten Internal Voltage Reference on käytössä lepotilasta riippumatta. Viitata "Analoginen vertailu" sivulla 119 saadaksesi lisätietoja Analog Comparatorin määrittämisestä.
Brown-out ilmaisin
Jos Brown-out Detectoria ei tarvita sovelluksessa, tämä moduuli tulee sammuttaa. Jos Brown-out Detector on otettu käyttöön BODLEVEL-sulakkeiden avulla, se on käytössä kaikissa lepotilassa ja kuluttaa siten aina virtaa. Syvemmissä lepotilassa tämä vaikuttaa merkittävästi kokonaisvirrankulutukseen. Katso "Ruskeanpoistunut tunnistus- sivulta 41 ja "Ohjelmiston BOD Disable" sivulla 35 saadaksesi lisätietoja Brown-out Detectorin määrittämisestä.
Internal Voitage Viite
The Internal Voltage Reference otetaan käyttöön, kun Brown-out Detection, Analog Comparator tai ADC sitä tarvitaan. Jos nämä moduulit poistetaan käytöstä yllä olevissa kohdissa kuvatulla tavalla, sisäinen voltagViittaus poistetaan käytöstä, eikä se kuluta virtaa. Kun se käynnistetään uudelleen, käyttäjän on annettava viitteen käynnistyä ennen kuin lähtöä käytetään. Jos ohje pidetään päällä lepotilassa, lähtöä voidaan käyttää välittömästi. Viitata "Sisäinen osatage Viite” sivulla 42 lisätietoja käynnistysajasta.
Watchdog Ajastin
Jos Watchdog Timeria ei tarvita sovelluksessa, tämä moduuli tulee sammuttaa. Jos Watchdog Timer on käytössä, se on käytössä kaikissa lepotilassa ja kuluttaa siten aina virtaa. Syvemmissä lepotilassa tämä vaikuttaa merkittävästi kokonaisvirrankulutukseen. Viitata "Watchdog Timer" sivulla 42 saadaksesi lisätietoja Watchdog-ajastimen määrittämisestä.
Portin nastat
Kun siirryt lepotilaan, kaikki portin nastat tulee määrittää käyttämään mahdollisimman vähän tehoa. Tärkeintä on silloin varmistaa, että mitkään nastat eivät aiheuta resistiivisiä kuormia. Lepotilassa, jossa sekä I/O-kello (clkI/O) että ADC-kello (clkADC) on pysäytetty, laitteen syöttöpuskurit poistetaan käytöstä. Tämä varmistaa, että virtaa ei kuluteta
syöttölogiikalla, kun sitä ei tarvita. Joissakin tapauksissa syöttölogiikkaa tarvitaan heräämisolosuhteiden havaitsemiseen ja
se otetaan sitten käyttöön. Katso kohta "Digitaalitulon käyttöönotto ja lepotilat" sivulla 57 saadaksesi lisätietoja siitä, mitkä nastat ovat käytössä. Jos tulopuskuri on käytössä ja tulosignaali jätetään kellumaan tai sen analoginen signaalitaso on lähellä VCC/2:ta, tulopuskuri käyttää liikaa tehoa.
Analogisten tulonastojen tapauksessa digitaalinen tulopuskuri on aina poistettava käytöstä. Analoginen signaalitaso lähellä VCC/2:ta tulonastassa voi aiheuttaa merkittävää virtaa myös aktiivisessa tilassa. Digitaaliset tulopuskurit voidaan poistaa käytöstä kirjoittamalla Digital Input Disable Register (DIDR0) -rekisteriin. Viitata "DIDR0 – digitaalisen tulon eston rekisteri 0" sivulla 121 lisätietoja.
Rekisterikuvaus
MCUCR – MCU-ohjausrekisteri
MCU-ohjausrekisteri sisältää ohjausbittejä tehonhallintaa varten.
Bitti | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | BODS | PUURO | SE | SM1 | SM0 | BODSE | ISC01 | ISC00 | MCUCR |
Lue/kirjoita | R | R/W | R/W | R/W | R/W | R | R/W | R/W | |
Alkuarvo | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bitti 7 – BODS: BOD Sleep
BOD-estotoiminto on saatavilla vain joissakin laitteissa. Katso "Rajoitukset" sivulla 36.
BOD:n poistamiseksi käytöstä unen aikana (katso Taulukko 7-1 sivulla 34) BODS-bitti on kirjoitettava logiikaksi. Tätä ohjaa ajastettu sekvenssi ja aktivointibitti, BODSE MCUCR:ssä. Ensinnäkin sekä BODS että BODSE on asetettava yhdeksi. Toiseksi neljän kellojakson aikana BODS on asetettava yhdeksi ja BODSE on asetettava nollaan. BODS-bitti on aktiivinen kolme kellojaksoa sen jälkeen, kun se on asetettu. Nukkumiskäsky on suoritettava, kun BODS on aktiivinen, jotta BOD voidaan sammuttaa varsinaisessa lepotilassa. BODS-bitti tyhjennetään automaattisesti kolmen kellojakson jälkeen.
Laitteissa, joissa Sleeping BOD:ta ei ole toteutettu, tämä bitti on käyttämätön ja lukee aina nollan.
Bitti 5 – SE: Lepotila käytössä
SE-bitti on kirjoitettava loogiseen ykköseen, jotta MCU siirtyy lepotilaan, kun SLEEP-käsky suoritetaan. Jotta MCU ei menisi lepotilaan, ellei se ole ohjelmoijan tarkoitus, on suositeltavaa kirjoittaa Sleep Enable (SE) -bitti yhdeksi juuri ennen SLEEP-käskyn suorittamista ja tyhjentää se heti heräämisen jälkeen.
Bitit 4:3 – SM[1:0]: Valitse lepotilan bitit 1 ja 0
Nämä bitit valitsevat kolmen käytettävissä olevan lepotilan välillä kuvan osoittamalla tavalla Taulukko 7-2.
Taulukko 7-2. Lepotilan valinta
SM1 | SM0 | Lepotila |
0 | 0 | Tyhjäkäynti |
0 | 1 | ADC kohinanvaimennus |
1 | 0 | Sammuta virta |
1 | 1 | Varattu |
Bitti 2 – BODSE: BOD Sleep Enable
BOD-estotoiminto on saatavilla vain joissakin laitteissa. Katso "Rajoitukset" sivulla 36.
BODSE-bitti mahdollistaa BODS-ohjausbitin asettamisen, kuten BODS-bitin kuvauksessa selitetään. BOD-estoa ohjataan ajastetulla sekvenssillä.
Tämä bitti on käyttämätön laitteissa, joissa BOD-estoa ei ole otettu käyttöön, ja se lukee nollana näissä laitteissa.
PRR – Power Reduction Register
Power Reduction Register tarjoaa tavan vähentää virrankulutusta sallimalla oheislaitteiden kellosignaalien poistamisen käytöstä.
Bitti | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x20 | – | – | – | – | PRTIM1 | PRTIM0 | PRUSI | PRADC | PRR |
Lue/kirjoita | R | R | R | R | R/W | R/W | R/W | R/W | |
Alkuarvo | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bitit 7:4 – Res: Varatut bitit
Nämä bitit ovat varattuja bittejä ATtiny25/45/85:ssä ja ne luetaan aina nollana.
Bitti 3 – PRTIM1: Tehon vähennysajastin/laskuri1
Logiikkaluvun kirjoittaminen tälle bitille sulkee Timer/Counter1-moduulin. Kun ajastin/laskuri1 on käytössä, toiminta jatkuu kuten ennen sammutusta.
Bitti 2 – PRTIM0: Tehon vähennysajastin/laskuri0
Logiikkaluvun kirjoittaminen tälle bitille sulkee Timer/Counter0-moduulin. Kun ajastin/laskuri0 on käytössä, toiminta jatkuu kuten ennen sammutusta.
Bitti 1 – PRUSI: Power Reduction USI
Logiikkaluvun kirjoittaminen tälle bitille sammuttaa USI:n pysäyttämällä moduulin kellon. Kun USI herätetään uudelleen, USI on alustettava uudelleen oikean toiminnan varmistamiseksi.
Bitti 0 – PRADC: Tehon vähennys ADC
Logiikkaluvun kirjoittaminen tälle bitille sammuttaa ADC:n. ADC on poistettava käytöstä ennen sammuttamista. Huomaa, että jotkin analogisen komparaattorin osat käyttävät myös ADC-kelloa, mikä tarkoittaa, että analogista komparaattoria ei voi käyttää, kun tämä bitti on korkea.
Järjestelmän ohjaus ja palautus
AVR:n nollaus
Nollauksen aikana kaikki I/O-rekisterit asetetaan alkuperäisiin arvoihinsa ja ohjelma aloittaa suorituksen nollausvektorista. Reset Vectoriin sijoitetun ohjeen on oltava RJMP – Relative Jump – ohje nollauksen käsittelyrutiinille. Jos ohjelma ei koskaan ota käyttöön keskeytyslähdettä, keskeytysvektoreita ei käytetä, ja tavallinen ohjelmakoodi voidaan sijoittaa näihin paikkoihin. Kytkentäkaavio sisään Kuva 8-1 näyttää nollauslogiikan. Nollauspiirin sähköiset parametrit on annettu kohdassa "Järjestelmä- ja nollausominaisuudet" sivulla 165.
Kuva 8-1 Nollauslogiikka
AVR:n I/O-portit palautetaan välittömästi alkutilaansa, kun nollauslähde aktivoituu. Tämä ei vaadi kellolähteen olevan käynnissä.
Kun kaikki nollauslähteet ovat menneet epäaktiivisiksi, viivelaskuri kutsutaan, mikä venyttää sisäistä nollausta. Näin teho saavuttaa vakaan tason ennen normaalin toiminnan alkamista. Viivelaskurin aikakatkaisujakson määrittää käyttäjä SUT- ja CKSEL-sulakkeiden kautta. Viiveajan eri valinnat on esitetty kohdassa "Kello Lähteet” sivulla 25.
Nollaa lähteet
ATtiny25/45/85:ssä on neljä nollauslähdettä:
Käynnistyksen nollaus. MCU nollataan, kun syöttötilavuustage on VPOT-kynnyksen (Power-on Reset) alapuolella.
Ulkoinen nollaus. MCU nollataan, kun RESET-nastassa on alhainen taso pidempään kuin pulssin vähimmäispituus.
Watchdog Reset. MCU nollataan, kun Watchdog Timer -aika päättyy ja Watchdog on käytössä.
Brown-out Reset. MCU nollataan, kun syöttötilavuustage VCC on Brown-out Reset Threshold (VBOT) -rajan alapuolella ja Brown-out Detector on käytössä.
Käynnistyksen nollaus
On-chip-tunnistuspiiri tuottaa Power-on Reset (POR) -pulssin. Tunnistustaso on määritelty kohdassa "Sys- tem ja Nollaa ominaisuudet” sivulla 165. POR aktivoituu aina, kun VCC on tunnistustason alapuolella. POR-piiriä voidaan käyttää käynnistämään käynnistyksen nollaus sekä havaitsemaan syöttöhäiriöntage.
Power-on Reset (POR) -piiri varmistaa, että laite nollataan käynnistystilasta. Saavuttaa Power-on Reset -kynnyksen voltage kutsuu viivelaskurin, joka määrittää, kuinka kauan laite on RESET-tilassa VCC:n nousun jälkeen. RESET-signaali aktivoituu uudelleen ilman viivettä, kun VCC laskee tunnistustason alapuolelle.
Kuva 8-2. MCU:n käynnistys, RESET Sidottu VCC:hen
SISÄINEN NOLLAUS
Kuva 8-3. MCU:n käynnistys, RESET Laajennettu ulkoisesti
Ulkoinen nollaus
Ulkoinen nollaus syntyy RESET-nastan matalasta tasosta, jos se on käytössä. Nollaa pulssit, jotka ovat pidemmät kuin minimipulssin leveys (katso "Järjestelmä- ja nollausominaisuudet" sivulla 165) luo nollauksen, vaikka kello ei olisi käynnissä. Lyhyemmät pulssit eivät takaa palautusta. Kun käytetty signaali saavuttaa Reset Threshold Voltage – VRST – positiivisella reunallaan viivelaskuri käynnistää MCU:n, kun aikakatkaisujakso on kulunut umpeen.
Kuva 8-4. Ulkoinen nollaus käytön aikana
Rusketuksen tunnistus
ATtiny25/45/85:ssä on on-chip Brown-out Detection (BOD) -piiri VCC-tason tarkkailemiseksi käytön aikana vertaamalla sitä kiinteään liipaisutasoon. BOD:n laukaisutaso voidaan valita BODLEVEL-sulakkeilla. Liipaisutasossa on hystereesi, joka varmistaa piikkittömän Brown-out-tunnistuksen. Havaintotason hystereesi tulee tulkita seuraavasti: VBOT+ = VBOT + VHYST/2 ja VBOT- = VBOT – VHYST/2.
Kun BOD on käytössä ja VCC laskee liipaisutason alapuolelle (VBOT-in Kuva 8-5), Brown-out Reset aktivoituu välittömästi. Kun VCC nousee liipaisutason yläpuolelle (VBOT+ in Kuva 8-5), viivelaskuri käynnistää MCU:n, kun aikakatkaisujakso tTOUT on kulunut umpeen.
BOD-piiri havaitsee VCC:n pudotuksen vain, jos voltage pysyy liipaisutason alapuolella pidempään kuin kohdassa annettu tBOD "Järjestelmä- ja nollausominaisuudet" sivulla 165.
Watchdog Reset
Kun Watchdog aikakatkaisee, se tuottaa lyhyen nollauspulssin yhden CK-jakson keston. Tämän pulssin laskevalla reunalla viiveajastin alkaa laskea aikakatkaisujaksoa tTOUT. Viitata "Watchdog Timer" sivulla 42 lisätietoja Watchdog-ajastimen toiminnasta.
Voitage Viite Ota käyttöön signaalit ja käynnistysaika
VoitagViitteellä on käynnistysaika, joka voi vaikuttaa tapaan, jolla sitä tulisi käyttää. Käynnistysaika ilmoitetaan "Järjestelmä- ja nollausominaisuudet" sivulla 165. Virran säästämiseksi referenssi ei ole aina päällä. Viittaus on päällä seuraavissa tilanteissa:
Kun BOD on käytössä (ohjelmoimalla BODLEVEL[2:0] sulakebitit).
Kun bandgap-viite on kytketty Analog Comparator -laitteeseen (asettamalla ACBG-bitti ACSR:ssä).
Kun ADC on käytössä.
Siten, kun BOD ei ole käytössä, ACBG-bitin asettamisen tai ADC:n käyttöönoton jälkeen käyttäjän on aina sallittava viittauksen käynnistyminen ennen kuin Analog Comparatorin tai ADC:n lähtöä käytetään. Vähentääkseen virrankulutusta virrankatkaisutilassa käyttäjä voi välttää kolmea yllä olevaa ehtoa varmistaakseen, että referenssi on kytketty pois päältä ennen virrankatkaisutilaan siirtymistä.
Watchdog Ajastin
Watchdog-ajastin kellotetaan on-chip-oskillaattorista, joka toimii 128 kHz:llä. Ohjaamalla Watchdog Timer -esiskaalainta Watchdog Reset -väliä voidaan säätää kuvan mukaisesti Taulukko 8-3 sivulla 46. WDR – Watchdog Reset – ohje nollaa Watchdog Timerin. Watchdog-ajastin nollataan myös, kun se poistetaan käytöstä ja kun sirun nollaus tapahtuu. Kymmenen eri kellojaksojaksoa voidaan valita nollausjakson määrittämiseksi. Jos nollausaika päättyy ilman uutta Watchdog Reset -toimintoa, ATtiny25/45/85 nollautuu ja suoritetaan Reset Vectorista. Katso Watchdog Resetin ajoitustiedot kohdasta Taulukko 8-3 sivulla 46.
Watchdog Timer voidaan myös määrittää luomaan keskeytys nollauksen sijaan. Tämä voi olla erittäin hyödyllistä, kun käytät Watchdogia heräämiseen virrankatkaisusta.
Watchdogin tahattoman poiskytkemisen tai aikakatkaisujakson tahattoman muuttamisen estämiseksi WDTON-sulakkeella valitaan kaksi erilaista turvatasoa kuvan osoittamalla tavalla. Taulukko 8-1 Katso "Ajastetut sekvenssit vaikutuksen muuttamiseen kuva Watchdog Timerista” sivulla 43 lisätietoja.
Taulukko 8-1. WDT-konfigurointi WDTONin sulakeasetusten toimintona
WDTON | Turvallisuustaso | WDT:n alkutila | Kuinka poistaa WDT käytöstä | Kuinka muuttaa aikakatkaisua |
Ohjelmoimaton | 1 | Ei käytössä | Ajastettu sarja | Ei rajoituksia |
Ohjelmoitu | 2 | Käytössä | Aina käytössä | Ajastettu sarja |
Kuva 8-7. Watchdog Ajastin
Ajastetut sekvenssit Watchdog-ajastimen kokoonpanon muuttamiseen
Konfiguroinnin muuttamisjärjestys vaihtelee hieman kahden turvallisuustason välillä. Jokaiselle tasolle kuvataan erilliset menettelyt.
Turvataso 1: Tässä tilassa Watchdog Timer on aluksi pois käytöstä, mutta se voidaan ottaa käyttöön kirjoittamalla WDE-bitti yhteen ilman rajoituksia. Ajastettu sarja tarvitaan, kun käytössä oleva Watchdog-ajastin poistetaan käytöstä. Käytössä olevan Watchdog-ajastimen poistamiseksi käytöstä on noudatettava seuraavaa menettelyä:
Kirjoita samalla toiminnolla looginen yksi WDCE:hen ja WDE:hen. Logiikka on kirjoitettava WDE:hen WDE-bitin edellisestä arvosta riippumatta.
Kirjoita seuraavien neljän kellojakson aikana samalla toiminnolla WDE- ja WDP-bitit haluamallasi tavalla, mutta WDCE-bitti tyhjennettynä.
Turvataso 2: Tässä tilassa Watchdog Timer on aina käytössä, ja WDE-bitti lukee aina yhtenä. Ajastettu sekvenssi tarvitaan, kun Watchdog-aikakatkaisujaksoa muutetaan. Watchdog-aikakatkaisun muuttaminen edellyttää seuraavaa menettelyä:
Kirjoita samalla toiminnolla looginen ykkönen WDCE:hen ja WDE:hen. Vaikka WDE on aina asetettu, WDE on kirjoitettava yhteen, jotta ajastettu sekvenssi alkaa.
Kirjoita seuraavien neljän kellojakson aikana samassa toiminnossa WDP-bitit haluamallasi tavalla, mutta WDCE-bitti tyhjennettynä. WDE-bittiin kirjoitetulla arvolla ei ole merkitystä.
Koodi Esimample
Seuraava koodi esimample näyttää yhden kokoonpanon ja yhden C-toiminnon WDT:n sammuttamiseksi. Example olettaa, että keskeytyksiä ohjataan (esim. estämällä keskeytykset maailmanlaajuisesti), joten keskeytyksiä ei tapahdu näiden toimintojen suorittamisen aikana.
Kokoonpanokoodi Example(1) |
WDT_off:
wdr ; Tyhjennä WDRF MCUSR:ssä ldi r16, (0< ulos MCUSR, r16 ; Kirjoita looginen yksi WDCE:hen ja WDE:hen ; Säilytä vanha esiskaalaimen asetus estääksesi tahattoman Watchdog Resetin r16:ssa, WDTCR ori r16, (1< ulos WDTCR, r16 ; Sammuta WDT ldi r16, (0< ulos WDTCR, r16 ret |
C-koodi esimample(1) |
void WDT_off(void)
{ _WDR(); /* Tyhjennä WDRF MCUSR:ssä */ MCUSR = 0x00 /* Kirjoita looginen yksi WDCE:hen ja WDE:hen */ WDTCR |= (1< /* Sammuta WDT */ WDTCR = 0x00; } |
Huomautus: 1. Katso "Koodi Examples ”sivulla 6.
Rekisterikuvaus
MCUSR – MCU-tilarekisteri
MCU-tilarekisteri tarjoaa tietoa siitä, mikä nollauslähde aiheutti MCU-nollauksen.
Bitti | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x34 | – | – | – | – | WDRF | BORF | EXTRF | PORF | MCUSR |
Lue/kirjoita | R | R | R | R | R/W | R/W | R/W | R/W |
Alkuarvo 0 0 0 0 Katso bitin kuvaus
Bitit 7:4 – Res: Varatut bitit
Nämä bitit ovat varattuja bittejä ATtiny25/45/85:ssä ja ne luetaan aina nollana.
Bitti 3 – WDRF: Watchdog Reset Flag
Tämä bitti asetetaan, jos Watchdog Reset tapahtuu. Bitti nollataan Power-on Resetillä tai kirjoittamalla looginen nolla lippuun.
Bitti 2 – BORF: ruskea nollauslippu
Tämä bitti asetetaan, jos Brown-out Reset tapahtuu. Bitti nollataan Power-on Resetillä tai kirjoittamalla looginen nolla lippuun.
Bitti 1 – EXTRF: Ulkoinen nollauslippu
Tämä bitti asetetaan, jos tapahtuu ulkoinen nollaus. Bitti nollataan Power-on Resetillä tai kirjoittamalla looginen nolla lippuun.
Bitti 0 – PORF: Käynnistyksen nollauslippu
Tämä bitti asetetaan, jos käynnistyspalautus tapahtuu. Bitti nollataan vain kirjoittamalla looginen nolla lippuun.
Käyttääkseen nollauslippuja nollaustilan tunnistamiseen, käyttäjän tulee lukea ja sitten nollata MCUSR mahdollisimman aikaisessa ohjelmassa. Jos rekisteri tyhjennetään ennen kuin uusi nollaus tapahtuu, nollauksen lähde voidaan löytää tarkastelemalla nollauslippuja.
WDTCR – Watchdog Timer Control Register
Bitti | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x21 | WDIF | WDIE | WDP3 | WDCE | WDE | WDP2 | WDP1 | WDP0 | WDTCR |
Lue/kirjoita | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Alkuarvo | 0 | 0 | 0 | 0 | X | 0 | 0 | 0 |
Bitti 7 – WDIF: Watchdog Timeout Interrupt Flag
Tämä bitti asetetaan, kun Watchdog-ajastimessa tapahtuu aikakatkaisu ja Watchdog-ajastin on määritetty keskeyttämään. Laitteisto tyhjentää WDIF:n, kun vastaava keskeytyksenkäsittelyvektori suoritetaan. Vaihtoehtoisesti WDIF tyhjennetään kirjoittamalla lippuun logiikka. Kun SREG:n ja WDIE:n I-bitti on asetettu, Watchdog Time-out Interrupt suoritetaan.
Bitti 6 – WDIE: Watchdog Timeout Interrupt Enable
Kun tämä bitti kirjoitetaan yhdeksi, WDE tyhjennetään ja tilarekisterin I-bitti asetetaan, Watchdog-aikakatkaisu on käytössä. Tässä tilassa vastaava keskeytys suoritetaan nollauksen sijaan, jos Watchdog-ajastimessa tapahtuu aikakatkaisu.
Jos WDE on asetettu, laitteisto tyhjentää WDIE:n automaattisesti, kun aikakatkaisu tapahtuu. Tämä on hyödyllistä Watchdog Reset -suojauksen säilyttämiseksi keskeytyksen käytön aikana. Kun WDIE-bitti on tyhjennetty, seuraava aikakatkaisu luo nollauksen. Watchdog Resetin välttämiseksi WDIE on asetettava jokaisen keskeytyksen jälkeen.
Taulukko 8-2. Watchdog-ajastimen asetukset
WDE | WDIE | Watchdog Timer State | Toimenpide aikakatkaisun yhteydessä |
0 | 0 | Pysähtynyt | Ei mitään |
0 | 1 | Juoksemassa | Keskeyttää |
1 | 0 | Juoksemassa | Nollaa |
1 | 1 | Juoksemassa | Keskeyttää |
Bitti 4 – WDCE: Watchdog Change Enable
Tämä bitti on asetettava, kun WDE-bitti kirjoitetaan logiikkanollaksi. Muuten vahtikoiraa ei poisteta käytöstä. Kun laitteisto on kirjoitettu yhteen, se tyhjentää tämän bitin neljän kellojakson jälkeen. Katso WDE-bitin kuvauksesta Watchdog-poistoiminto. Tämä bitti on asetettava myös esiskaalaajan bittejä vaihdettaessa. Katso "Ajastetut sekvenssit Watchdog-ajastimen asetusten muuttamiseen” sivulla 43.
Bitti 3 – WDE: Watchdog Enable
Kun WDE kirjoitetaan loogiseen ykköseen, Watchdog Timer on käytössä, ja jos WDE on kirjoitettu logiikka nollaksi, Watchdog Timer -toiminto ei ole käytössä. WDE voidaan tyhjentää vain, jos WDCE-bitillä on logiikkataso yksi. Käytössä olevan Watchdog-ajastimen poistamiseksi käytöstä on noudatettava seuraavaa menettelyä:
Kirjoita samalla toiminnolla looginen yksi WDCE:hen ja WDE:hen. Looginen yksi on kirjoitettava WDE:hen, vaikka se on asetettu ykköseksi ennen poistotoiminnon alkamista.
Kirjoita seuraavan neljän kellojakson aikana looginen 0 WDE:hen. Tämä poistaa vahtikoiran käytöstä.
Turvatasolla 2 ei ole mahdollista poistaa Watchdog-ajastinta käytöstä edes yllä kuvatulla algoritmilla. Katso "Ajastetut sekvenssit Watchdog-ajastimen konfiguraation muuttamiseen" sivulla 43.
Turvatasolla 1 WDRF ohittaa WDE:n MCUSR:ssä. Katso “MCUSR – MCU-tilarekisteri” sivulla 44 WDRF:n kuvaukseen. Tämä tarkoittaa, että WDE on aina asetettu, kun WDRF on asetettu. WDE:n tyhjentämiseksi WDRF on tyhjennettävä ennen kuin Watchdog poistetaan käytöstä yllä kuvatulla tavalla. Tämä ominaisuus varmistaa useita nollauksia vikoja aiheuttavien olosuhteiden aikana ja turvallisen käynnistyksen vian jälkeen.
Huomautus: Jos vahtikoiran ajastinta ei aiota käyttää sovelluksessa, on tärkeää käydä läpi vahtikoiran poistotoiminto laitteen alustuksessa. Jos Watchdog otetaan vahingossa käyttöön, esimampJos osoitin on karannut tai sammunut, laite nollataan, mikä puolestaan johtaa uuteen vahtikoiran nollaukseen. Tämän tilanteen välttämiseksi sovellusohjelmiston tulee aina tyhjentää WDRF-lippu ja WDE-ohjausbitti alustusrutiinissa.
Bitit 5, 2:0 – WDP[3:0]: Watchdog Timer Prescaler 3, 2, 1 ja 0
WDP[3:0]-bitit määrittävät Watchdog-ajastimen esiskaalauksen, kun Watchdog-ajastin on käytössä. Eri esiskaalausarvot ja niitä vastaavat aikakatkaisujaksot näytetään Taulukko 8-3.
Taulukko 8-3. Watchdog Timer Prescale Select
WDP3 | WDP2 | WDP1 | WDP0 | WDT-oskillaattorisyklien lukumäärä | Tyypillinen aikakatkaisu VCC:ssä = 5.0 V |
0 | 0 | 0 | 0 | 2K (2048) sykliä | 16 ms |
0 | 0 | 0 | 1 | 4K (4096) sykliä | 32 ms |
0 | 0 | 1 | 0 | 8K (8192) sykliä | 64 ms |
0 | 0 | 1 | 1 | 16K (16384) sykliä | 0.125 s |
0 | 1 | 0 | 0 | 32K (32764) sykliä | 0.25 s |
0 | 1 | 0 | 1 | 64K (65536) sykliä | 0.5 s |
0 | 1 | 1 | 0 | 128K (131072) sykliä | 1.0 s |
0 | 1 | 1 | 1 | 256K (262144) sykliä | 2.0 s |
1 | 0 | 0 | 0 | 512K (524288) sykliä | 4.0 s |
1 | 0 | 0 | 1 | 1024K (1048576) sykliä | 8.0 s |
Taulukko 8-3. Watchdog Timer Prescale Select (jatkuu)
WDP3 | WDP2 | WDP1 | WDP0 | WDT-oskillaattorisyklien lukumäärä | Tyypillinen aikakatkaisu VCC:ssä = 5.0 V |
1 | 0 | 1 | 0 | Varattu(1) | |
1 | 0 | 1 | 1 | ||
1 | 1 | 0 | 0 | ||
1 | 1 | 0 | 1 | ||
1 | 1 | 1 | 0 | ||
1 | 1 | 1 | 1 |
Huomautus: 1. Jos tämä valitaan, käytetään yhtä arvon 0b1010 alapuolella olevista kelvollisista asetuksista.
keskeytykset
Tässä osiossa kuvataan ATtiny25/45/85:ssä suoritetun keskeytyksen käsittelyn erityispiirteet. Katso yleinen selitys AVR-keskeytyksen käsittelystä "Nollaus ja keskeytyskäsittely" sivulla 12.
Keskeytysvektorit kohteessa ATtiny25/45/85
ATtiny25/45/85:n keskeytysvektorit on kuvattu julkaisussa Taulukko 9-1alla.
Taulukko 9-1. Nollaa ja keskeytä vektorit
Vektori nro | Ohjelman osoite | Lähde | Keskeytyksen määritelmä |
1 | 0x0000 | RESET | Ulkoinen nasta, käynnistyksen nollaus, ruskean poiston nollaus, vahtikoiran nollaus |
2 | 0x0001 | INT0 | Ulkoinen keskeytyspyyntö 0 |
3 | 0x0002 | PCINT0 | Pin Change Interrupt Request 0 |
4 | 0x0003 | TIMER1_COMPA | Ajastin/laskuri1 Vertaa ottelua A |
5 | 0x0004 | TIMER1_OVF | Ajastin/laskuri1 ylivuoto |
6 | 0x0005 | TIMER0_OVF | Ajastin/laskuri0 ylivuoto |
7 | 0x0006 | EE_RDY | EEPROM valmis |
8 | 0x0007 | ANA_COMP | Analoginen vertailu |
9 | 0x0008 | ADC | ADC-muunnos valmis |
10 | 0x0009 | TIMER1_COMPB | Ajastin/laskuri1 Vertaa ottelua B |
11 | 0x000A | TIMER0_COMPA | Ajastin/laskuri0 Vertaa ottelua A |
12 | 0x000B | TIMER0_COMPB | Ajastin/laskuri0 Vertaa ottelua B |
13 | 0x000C | WDT | Watchdog-aikakatkaisu |
14 | 0x000D | USI_START | USI START |
15 | 0x000E | USI_OVF | USI ylivuoto |
Jos ohjelma ei koskaan ota käyttöön keskeytyslähdettä, keskeytysvektoreita ei käytetä, ja tavallinen ohjelmakoodi voidaan sijoittaa näihin paikkoihin.
Tyypillinen ja yleinen asetus keskeytysvektoriosoitteille ATtiny25/45/85:ssä on esitetty ohjelmassa esim.ample alla.
Kokoonpanokoodi Example | ||
.org 0x0000 | ;Aseta seuraavan osoite | lausunto |
rjmp RESET | ; Osoite 0x0000 | |
rjmp INT0_ISR | ; Osoite 0x0001 | |
rjmp PCINT0_ISR | ; Osoite 0x0002 | |
rjmp TIM1_COMPA_ISR | ; Osoite 0x0003 | |
rjmp TIM1_OVF_ISR | ; Osoite 0x0004 | |
rjmp TIM0_OVF_ISR | ; Osoite 0x0005 | |
rjmp EE_RDY_ISR | ; Osoite 0x0006 | |
rjmp ANA_COMP_ISR | ; Osoite 0x0007 | |
rjmp ADC_ISR | ; Osoite 0x0008 | |
rjmp TIM1_COMPB_ISR | ; Osoite 0x0009 | |
rjmp TIM0_COMPA_ISR | ; Osoite 0x000A | |
rjmp TIM0_COMPB_ISR | ; Osoite 0x000B | |
rjmp WDT_ISR | ; Osoite 0x000C | |
rjmp USI_START_ISR | ; Osoite 0x000D | |
rjmp USI_OVF_ISR | ; Osoite 0x000E | |
PALAUTA: | ; Pääohjelman aloitus | |
; Osoite 0x000F | ||
… |
Huomautus: Katso "Koodi Examples ”sivulla 6.
Ulkoiset keskeytykset
Ulkoiset keskeytykset laukaisevat INT0-nasta tai mikä tahansa PCINT[5:0]-nasta. Huomaa, että jos se on käytössä, keskeytykset laukeavat, vaikka INT0- tai PCINT[5:0]-nastat on määritetty lähdöiksi. Tämä ominaisuus tarjoaa tavan luoda ohjelmistokeskeytys. Pin vaihto keskeyttää PCI laukaisee, jos jokin käytössä olevista PCINT[5:0]-nasta vaihtuu. PCMSK-rekisteri ohjaa, mitkä nastat vaikuttavat nastanvaihdon keskeytyksiin. PCINT[5:0] -nastan vaihtokeskeytykset havaitaan asynkronisesti. Tämä tarkoittaa, että näitä keskeytyksiä voidaan käyttää osan herättämiseen myös muista lepotilasta kuin Idle-tilasta.
INT0-keskeytykset voidaan laukaista laskevalla tai nousevalla reunalla tai matalalla tasolla. Tämä on asetettu MCU-ohjausrekisterin (MCUCR) spesifikaatioiden mukaisesti. Kun INT0-keskeytys on käytössä ja se on konfiguroitu tason laukaisuksi, keskeytys laukeaa niin kauan kuin nastaa pidetään matalana. Huomaa, että laskevien tai nousevien reunojen keskeytysten tunnistaminen INT0:ssa edellyttää I/O-kellon läsnäoloa, kuten kuvataan kohdassa "Kellojärjestelmät ja niiden jakelu" päällä sivu 23.
Matalan tason keskeytys
Matalan tason keskeytys INT0:ssa havaitaan asynkronisesti. Tämä tarkoittaa, että tätä keskeytystä voidaan käyttää osan herättämiseen myös muista lepotilasta kuin Idle-tilasta. I/O-kello pysähtyy kaikissa lepotilassa paitsi Idle-tilassa.
Huomaa, että jos tason laukaisevaa keskeytystä käytetään virrankatkaisun herättämiseen, vaadittua tasoa on pidettävä yllä tarpeeksi kauan, jotta MCU voi suorittaa herätyksen loppuun tasokeskeytyksen laukaisemiseksi. Jos taso katoaa ennen käynnistysajan päättymistä, MCU herää edelleen, mutta keskeytystä ei synny. Käynnistysajan määrittelevät SUT- ja CKSEL-sulakkeet kohdassa kuvatulla tavalla "Järjestelmän kello ja kelloasetukset" sivulla 23.
Jos keskeytysnastan matala taso poistetaan ennen kuin laite on herännyt, ohjelman suoritusta ei ohjata keskeytyspalvelurutiiniin, vaan jatketaan SLEEP-komennon jälkeisestä käskystä.
Pin Change Interrupt Ajoitus
Exampnastan vaihtokeskeytyksen ajoitus on esitetty kohdassa Kuva 9-1.
Rekisterikuvaus
MCUCR – MCU-ohjausrekisteri
Ulkoinen keskeytysohjausrekisteri A sisältää ohjausbittejä keskeytystuntemusta varten.
Bitti | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | BODS | PUURO | SE | SM1 | SM0 | BODSE | ISC01 | ISC00 | MCUCR |
Lue/kirjoita | R | R/W | R/W | R/W | R/W | R | R/W | R/W | |
Alkuarvo | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bitit 1:0 – ISC0[1:0]: Keskeytystunnistuksen ohjaus 0, bitti 1 ja bitti 0
Ulkoinen keskeytys 0 aktivoidaan ulkoisella nastalla INT0, jos SREG I-lippu ja vastaava keskeytysmaski on asetettu. Ulkoisen INT0-nastan taso ja reunat, jotka aktivoivat keskeytyksen, on määritelty Taulukko 9-2. INT0-nastan arvo on sampled ennen reunojen havaitsemista. Jos reuna- tai vaihtokeskeytys valitaan, pulssit, jotka kestävät yli yhden kellojakson, synnyttävät keskeytyksen. Lyhyemmät pulssit eivät luo keskeytyksiä. Jos valitaan matalan tason keskeytys, alhainen taso on säilytettävä, kunnes parhaillaan suoritettava käsky on valmis keskeytyksen muodostamiseksi.
Taulukko 9-2. Keskeytä 0 Sense Control
ISC01 | ISC00 | Kuvaus |
0 | 0 | INT0:n alhainen taso luo keskeytyspyynnön. |
0 | 1 | Mikä tahansa INT0:n looginen muutos luo keskeytyspyynnön. |
1 | 0 | INT0:n laskeva reuna luo keskeytyspyynnön. |
1 | 1 | INT0:n nouseva reuna luo keskeytyspyynnön. |
GIMSK – yleinen keskeytysmaskirekisteri
Bitti | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3B | – | INT0 | PCIE | – | – | – | – | – | GIMSK |
Lue/kirjoita | R | R/W | R/W | R | R | R | R | R | |
Alkuarvo | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bitit 7, 4:0 – Res: Varatut bitit
Nämä bitit ovat varattuja bittejä ATtiny25/45/85:ssä ja ne luetaan aina nollana.
Bitti 6 – INT0: Ulkoinen keskeytyspyyntö 0 käytössä
Kun INT0-bitti on asetettu (yksi) ja I-bitti tilarekisterissä (SREG) on asetettu (yksi), ulkoinen nastan keskeytys on käytössä. Interrupt Sense Control0 -bitit 1/0 (ISC01 ja ISC00) MCU-ohjausrekisterissä (MCUCR) määrittävät, aktivoidaanko ulkoinen keskeytys INT0-nastan nousevan ja/tai laskevan reunan tai tason havaitessa. Pintaan kohdistuva toiminta aiheuttaa keskeytyspyynnön, vaikka INT0 olisi määritetty lähdöksi. Vastaava External Interrupt Request 0 -keskeytys suoritetaan INT0-keskeytysvektorista.
Bitti 5 – PCIE: Pin Change Interrupt Enable
Kun PCIE-bitti on asetettu (yksi) ja I-bitti tilarekisterissä (SREG) on asetettu (yksi), nastanvaihdon keskeytys on käytössä. Kaikki muutokset käytössä oleviin PCINT[5:0]-nastaihin aiheuttavat keskeytyksen. Pin Change Interrupt Request -pyynnön vastaava keskeytys suoritetaan PCI-keskeytysvektorista. PCMSK5-rekisteri ottaa käyttöön PCINT[0:0]-nastat yksitellen.
GIFR - General Interrupt Flag Register
Bitti | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3A | – | INTF0 | PCIF | – | – | – | – | – | GIFR |
Lue/kirjoita | R | R/W | R/W | R | R | R | R | R | |
Alkuarvo | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bitit 7, 4:0 – Res: Varatut bitit
Nämä bitit ovat varattuja bittejä ATtiny25/45/85:ssä ja ne luetaan aina nollana.
Bitti 6 – INTF0: Ulkoinen keskeytyslippu 0
Kun reuna- tai logiikkamuutos INT0-nastassa laukaisee keskeytyspyynnön, INTF0:sta tulee asetettu (yksi). Jos SREG:n I-bitti ja GIMSK:n INT0-bitti on asetettu (yksi), MCU hyppää vastaavaan keskeytysvektoriin. Lippu tyhjennetään, kun keskeytysrutiini suoritetaan. Vaihtoehtoisesti lippu voidaan tyhjentää kirjoittamalla siihen looginen. Tämä lippu tyhjennetään aina, kun INT0 on määritetty tasokeskeytyksi.
Bitti 5 – PCIF: Pin Change Interrupt Flag
Kun logiikkamuutos missä tahansa PCINT[5:0]-nastassa laukaisee keskeytyspyynnön, PCIF:stä tulee asetettu (yksi). Jos SREG:n I-bitti ja GIMSK:n PCIE-bitti on asetettu (yksi), MCU hyppää vastaavaan keskeytysvektoriin. Lippu tyhjennetään, kun keskeytysrutiini suoritetaan. Vaihtoehtoisesti lippu voidaan tyhjentää kirjoittamalla siihen looginen.
PCMSK – Pin Change Mask -rekisteri
Bitti | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x15 | – | – | PCINT5 | PCINT4 | PCINT3 | PCINT2 | PCINT1 | PCINT0 | PCMSK |
Lue/kirjoita | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Alkuarvo | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bitit 7:6 – Res: Varatut bitit
Nämä bitit ovat varattuja bittejä ATtiny25/45/85:ssä ja ne luetaan aina nollana.
Bitit 5:0 – PCINT[5:0]: Pin Change Enable Mask 5:0
Jokainen PCINT[5:0]-bitti valitsee, onko nastanvaihdon keskeytys sallittu vastaavassa I/O-nastassa. Jos PCINT[5:0] on asetettu ja PCIE-bitti GIMSKissa on asetettu, nastanvaihdon keskeytys on käytössä vastaavassa I/O-nastassa. Jos PCINT[5:0] tyhjennetään, nastanvaihdon keskeytys vastaavassa I/O-nastassa on poistettu käytöstä.
I/O-portit
Johdanto
Kaikissa AVR-porteissa on todellinen Read-Modify-Write-toiminto, kun niitä käytetään yleisinä digitaalisina I/O-portteina. Tämä tarkoittaa, että yhden portin nastan suuntaa voidaan muuttaa muuttamatta tahattomasti minkään muun nastan suuntaa SBI- ja CBI-käskyjen avulla. Sama pätee vaihdettaessa taajuusmuuttajan arvoa (jos se on määritetty ulostuloksi) tai otettaessa käyttöön/poistaessa vetovastuksia (jos ne on määritetty tuloksi). Jokaisella lähtöpuskurilla on symmetriset käyttöominaisuudet sekä korkea nielu- että lähdekapasiteetti. Pin-ohjain on tarpeeksi vahva ohjaamaan LED-näyttöjä suoraan. Kaikissa portin nastoissa on erikseen valittavat vetovastukset, joissa on syöttötilavuustage invariantti vastus. Kaikissa I/O-nastoissa on suojadiodit sekä VCC:tä että maadoitusta varten, kuten kohdassa on osoitettu Kuva 10-1. Katso "Sähköiset ominaisuudet" sivulla 161 saadaksesi täydellisen luettelon parametreista.
Kuva 10-1. I/O Pin Equivalent Schematic
Kaikki rekisterit ja bittiviittaukset tässä osiossa on kirjoitettu yleisessä muodossa. Pienet kirjaimet "x" edustavat portin numerointikirjainta ja pienet "n" bittinumeroa. Kuitenkin, kun käytetään rekisteriä tai bittimäärityksiä ohjelmassa, on käytettävä tarkkaa muotoa. esimample, PORTB3 bitille nro. 3 portissa B, tässä dokumentoitu yleisesti nimellä PORTxn. Fyysiset I/O-rekisterit ja bittien sijainnit on lueteltu kohdassa "Rekisteröinnin kuvaus" päällä sivu 64.
Kullekin portille on varattu kolme I/O-muistiosoitepaikkaa, yksi datarekisterille – PORTx, Data Direction Register – DDRx ja portin tulonastalle – PINx. Portin tulonastat I/O-sijainti on vain luku, kun taas tietorekisteri ja tiedonsuuntarekisteri luetaan/kirjoitetaan. Logiikka ykkösestä bittiin kirjoittaminen PINx-rekisteriin johtaa kuitenkin vastaavan bitin vaihtoon tietorekisterissä. Lisäksi MCUCR:n Pull-up Disable – PUD-bitti poistaa kaikkien porttien kaikkien nastojen vetotoiminnon käytöstä, kun se on asetettu.
I/O-portin käyttäminen yleisenä digitaalisena I/O:na kuvataan kohdassa "Portit yleisenä digitaalisena I/O-tulona" sivulla 53. Useimmat portin nastat on multipleksoitu vaihtoehtoisilla toiminnoilla laitteen oheisominaisuuksia varten. Miten kukin vaihtoehtoinen toiminto häiritsee portin nastaa, kuvataan kohdassa "Vaihtoehtoiset porttitoiminnot" sivulla 57. Katso yksittäisten moduulien osioista täydellinen kuvaus vaihtoehtoisista toiminnoista.
Huomaa, että joidenkin portin nastojen vaihtoehtoisen toiminnon käyttöönotto ei vaikuta portin muiden nastojen käyttöön yleisinä digitaalisina I/O:ina.
Portit yleisenä digitaalisena I/O:na
Portit ovat kaksisuuntaisia I/O-portteja, joissa on valinnaiset sisäiset vedot. Kuva 10-2 näyttää toiminnallisen kuvauksen yhdestä I/O-portin nastasta, jota tässä yleisesti kutsutaan nimellä Pxn.
Kuva 10-2. Yleinen digitaalinen I/O(1)
Pin-koodin määrittäminen
Jokainen porttipinta koostuu kolmesta rekisteribitistä: DDxn, PORTxn ja PINxn. Kuten näkyy "Rekisteröinnin kuvaus" päällä sivu 64DDxn-bittejä käytetään DDRx I/O -osoitteessa, PORTxn-bittejä PORTx I/O -osoitteessa ja PINxn-bittejä PINx I/O -osoitteessa.
DDRx-rekisterin DDxn-bitti valitsee tämän nastan suunnan. Jos DDxn on kirjoitettu logiikka, Pxn on määritetty lähtönastaksi. Jos DDxn on kirjoitettu logiikkanollaksi, Pxn konfiguroidaan tulonastaksi.
Jos PORTxn on kirjoitettu logiikka, kun nasta on määritetty tulonastaksi, vetovastus aktivoituu. Vetovastuksen kytkemiseksi pois päältä PORTxn on kirjoitettava logiikkanollaksi tai nasta on konfiguroitava lähtönastaksi. Portin nastat ovat kolminkertaisia, kun nollaustila aktivoituu, vaikka kellot eivät olisi käynnissä.
Jos PORTxn on kirjoitettu logiikka, kun nasta on määritetty lähtönastaksi, portin nastaa ohjataan korkealle (yksi). Jos PORTxn on kirjoitettu logiikkanollaksi, kun nasta on määritetty lähtönastaksi, portin nastaa ohjataan matalaksi (nolla).
Pin-näppäimen vaihtaminen
Logiikkaluvun kirjoittaminen PINxn:ään vaihtaa PORTxn:n arvon, riippumatta DDRxn:n arvosta. Huomaa, että SBI-käskyä voidaan käyttää yhden bitin vaihtamiseen portissa.
Vaihto tulon ja lähdön välillä
Kun vaihdetaan kolmitilan ({DDxn, PORTxn} = 0b00) ja korkean lähdön ({DDxn, PORTxn} = 0b11) välillä, välitila, jossa joko veto on käytössä {DDxn, PORTxn} = 0b01) tai lähtö matala. ({DDxn, PORTxn} = 0b10) täytyy tapahtua. Normaalisti ylösveto sallittu tila on täysin hyväksyttävä, koska korkean impedanssin ympäristö ei huomaa eroa voimakkaan korkean ohjaimen ja vedon välillä. Jos näin ei ole, MCUCR-rekisterin PUD-bitti voidaan asettaa estämään kaikki vedot kaikissa porteissa.
Vaihtaminen sisäänvedon ja ulostulon matalan välillä aiheuttaa saman ongelman. Käyttäjän on käytettävä välivaiheena joko kolmitilaa ({DDxn, PORTxn} = 0b00) tai ulostulon ylätilaa ({DDxn, PORTxn} = 0b10).
Taulukko 10-1 yhteenvedon ohjaussignaalit pin arvon.
Taulukko 10-1. Portin pin-kokoonpanot
DDxn | PORTxn | PUURO
(MCUCR:ssä) |
I/O | Veto ylös | Kommentti |
0 | 0 | X | Syöte | Ei | Kolmitila (Hi-Z) |
0 | 1 | 0 | Syöte | Kyllä | Pxn lähtee virtaa, jos ext. vedetty alas. |
0 | 1 | 1 | Syöte | Ei | Kolmitila (Hi-Z) |
1 | 0 | X | Lähtö | Ei | Lähtö alhainen (nielu) |
1 | 1 | X | Lähtö | Ei | Tuotos korkea (lähde) |
Pin-arvon lukeminen
Data Direction bitin DDxn asetuksesta riippumatta portin pin voidaan lukea PINxn rekisteribitin kautta. Kuten näkyy Kuva 10-2, PINxn-rekisteribitti ja sitä edeltävä salpa muodostavat synkronoijan. Tämä on tarpeen metastabilisuuden välttämiseksi, jos fyysinen nasta muuttaa arvoa lähellä sisäisen kellon reunaa, mutta se aiheuttaa myös viiveen. Kuva 10-3 näyttää synkronoinnin ajoituskaavion luettaessa ulkoisesti käytettyä pin-arvoa. Suurin ja pienin etenemisviive on merkitty tpd,max ja tpd,min vastaavasti.
Tarkastellaan kellojaksoa, joka alkaa pian järjestelmän kellon ensimmäisen laskevan reunan jälkeen. Salpa sulkeutuu, kun kello on matala, ja menee läpinäkyväksi, kun kello on korkea, kuten "SYNC LATCH" -signaalin varjostettu alue osoittaa. Signaalin arvo lukittuu, kun järjestelmän kello laskee alhaiseksi. Se kellotetaan PINxn-rekisteriin seuraavassa positiivisessa kelloreunassa. Kuten kahdella nuolella tpd,max ja tpd,min osoittavat, yksi signaalin siirtymä nastassa viivästyy ½ ja 1½ järjestelmän kellojakson välillä väittämisajankohdasta riippuen.
Kun luetaan takaisin ohjelmistolle määritettyä pin-arvoa, nop-käsky on lisättävä kohdan mukaisesti Kuva 10-4. Out-käsky asettaa "SYNC LATCH" -signaalin kellon positiiviseen reunaan. Tässä tapauksessa viive tpd synkronoinnin läpi on yksi järjestelmän kellojakso.
Seuraava koodi esimample näyttää, kuinka portin B nastat 0 ja 1 asetetaan korkealle, 2 ja 3 matalalle ja portin nastat 4 - 5 määritetään tuloksi portin nastalle 4 määritetyllä vedolla. Tuloksena saadut pin-arvot luetaan uudelleen, mutta Kuten aiemmin mainittiin, mukana on nop-käsky, jonka avulla voidaan lukea takaisin joillekin nasteille äskettäin annettu arvo.
Kokoonpanokoodi Example(1) |
…
; Määrittele vedot ja aseta lähdöt korkealle ; Määritä portin nastojen ohjeet ldi r16,(1<<PB4)|(1<<PB1)|(1<<PB0) ldi r17,(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0) ulos PORTB,r16 ulos DDRB,r17 ; Lisää nop synkronointia varten nop ; Lue portin nastat r16, PINB … |
Huomautus: Kokoonpanoohjelmassa käytetään kahta väliaikaista rekisteriä minimoimaan ajan, joka kuluu siitä, että vedot asetetaan nastoihin 0, 1 ja 4, kunnes suuntabitit on asetettu oikein, määrittämällä bitit 2 ja 3 alhaisiksi ja määrittelemällä uudelleen bitit 0 ja 1. XNUMX vahvoina korkeakuljettajina.
C-koodi esimample |
allekirjoittamaton char i;
… /* Määrittele vedot ja aseta lähdöt korkeaksi */ /* Määritä portin nastat */ PORTB = (1< DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0); /* Lisää nop synkronointia varten*/ _NOP(); /* Lue portin nastat */ i = PINB; … |
Digitaalitulon käyttöönotto ja lepotilat
Kuten näkyy Kuva 10-2, digitaalinen tulosignaali voi olla clamped maadoitettuun schmitt-liipaisimen tuloon. Kuvassa SLEEP-merkitty signaali on asetettu MCU:n lepotilasäätimellä virrankatkaisutilassa suuren virrankulutuksen välttämiseksi, jos jotkin tulosignaalit jätetään kellumaan tai niiden analoginen signaalitaso on lähellä VCC/2:ta.
SLEEP ohitetaan portin nastoissa, jotka on otettu käyttöön ulkoisina keskeytysnastaina. Jos ulkoinen keskeytyspyyntö ei ole käytössä, SLEEP on aktiivinen myös näille pinnoille. SLEEP ohitetaan myös useilla muilla vaihtoehtoisilla toiminnoilla, kuten kohdassa on kuvattu "Vaihtoehtoiset porttitoiminnot" sivulla 57.
Jos looginen korkea taso ("yksi") on asynkronisessa ulkoisessa keskeytysnastassa, joka on määritetty "keskeytys nousevalla reunalla, laskeva reuna tai mikä tahansa logiikkamuutos pinnässä", kun ulkoinen keskeytys ei ole käytössä, vastaava ulkoinen keskeytyslippu asetetaan, kun palataan yllä mainitusta lepotilasta, koska clampnäissä lepotilassa tuottaa pyydetyn logiikan muutoksen.
Liittämättömät pinssit
Jos jotkut nastat ovat käyttämättömiä, on suositeltavaa varmistaa, että näillä nastoilla on määritetty taso. Vaikka useimmat digitaaliset tulot on poistettu käytöstä syvässä lepotilassa, kuten edellä on kuvattu, kelluvia tuloja tulee välttää virrankulutuksen vähentämiseksi kaikissa muissa tiloissa, joissa digitaalitulot ovat käytössä (Reset, Active mode ja Idle mode).
Yksinkertaisin tapa varmistaa käyttämättömän tapin määrätty taso on ottaa käyttöön sisäinen ylösveto. Tässä tapauksessa ylösveto poistetaan käytöstä nollauksen aikana. Jos alhainen virrankulutus nollauksen aikana on tärkeää, on suositeltavaa käyttää ulkoista ylös- tai alasvetoa. Käyttämättömien nastojen liittämistä suoraan VCC:hen tai GND:hen ei suositella, koska tämä voi aiheuttaa liiallisia virtoja, jos nasta on vahingossa määritetty ulostuloksi.
Vaihtoehtoiset porttitoiminnot
Useimmilla portin nastoilla on vaihtoehtoisia toimintoja yleisten digitaalisten I/O:iden lisäksi. Kuva 10-5 näyttää kuinka porttipin ohjaussignaalit yksinkertaistetusta Kuva 10-2 voidaan ohittaa vaihtoehtoisilla toiminnoilla. Ohittavat signaalit eivät välttämättä ole kaikissa portin nastoissa, mutta kuva toimii yleiskuvauksena, joka soveltuu kaikkiin AVR-mikro-ohjainperheen portin nastoihin.
Taulukko 10-2. Yleinen kuvaus vaihtoehtoisten toimintojen ohitussignaaleista
Signaalin nimi | Koko nimi | Kuvaus |
PUOE | Pull-up Override Ota käyttöön | Jos tämä signaali on asetettu, PUOV-signaali ohjaa ylösvetotoimintoa. Jos tämä signaali tyhjennetään, ylösveto on käytössä, kun
{DDxn, PORTxn, PUD} = 0b010. |
PUOV | Pull-up Override Value | Jos PUOE on asetettu, ylösveto on käytössä/pois käytöstä, kun PUOV on asetettu/tyhjennetty, riippumatta DDxn-, PORTxn- ja PUD-rekisteribittien asetuksista. |
DDOE | Tietojen suunnan ohitus Ota käyttöön | Jos tämä signaali on asetettu, Output Driver Enable -toimintoa ohjataan DDOV-signaalilla. Jos tämä signaali tyhjennetään, lähtöohjain otetaan käyttöön DDxn-rekisteribitillä. |
DDOV | Tietojen suunnan ohitusarvo | Jos DDOE on asetettu, Output Driver otetaan käyttöön/poistetaan käytöstä, kun DDOV asetetaan/tyhjennetään, riippumatta DDxn-rekisteribitin asetuksesta. |
PVOE | Portin arvon ohitus Ota käyttöön | Jos tämä signaali on asetettu ja Output Driver on käytössä, portin arvoa ohjaa PVOV-signaali. Jos PVOE on tyhjennetty ja Output Driver on käytössä, portin arvoa ohjaa PORTxn-rekisteribitti. |
PVOV | Portin arvon ohitusarvo | Jos PVOE on asetettu, portin arvoksi asetetaan PVOV riippumatta PORTxn-rekisteribitin asetuksesta. |
PTOE | Port Toggle Override Ota käyttöön | Jos PTOE on asetettu, PORTxn-rekisteribitti käännetään. |
DIEOE | Digital Input Enable Override Enable | Jos tämä bitti on asetettu, digitaalisen tulon käyttöönottoa ohjataan DIEOV-signaalilla. Jos tämä signaali tyhjennetään, digitaalisen tulon salliminen määräytyy MCU:n tilan mukaan (normaali tila, lepotila). |
DIEOV | Digitaalitulo sallii ohitusarvon | Jos DIEOE on asetettu, digitaalinen tulo otetaan käyttöön/pois käytöstä, kun DIEOV on asetettu/tyhjennetty, riippumatta MCU:n tilasta (normaali tila, lepotila). |
DI | Digitaalitulo | Tämä on vaihtoehtoisten toimintojen digitaalinen tulo. Kuvassa signaali on kytketty schmitt-triggerin lähtöön, mutta ennen synkronointia. Ellei digitaalista tuloa käytetä kellolähteenä, vaihtoehtoisella toiminnolla varustettu moduuli käyttää omaa synkronointiaan. |
AIO | Analoginen tulo / lähtö | Tämä on analoginen tulo/lähtö vaihtoehtoisiin toimintoihin tai niistä. Signaali on kytketty suoraan tyynyyn ja sitä voidaan käyttää kaksisuuntaisesti. |
Seuraavissa alaosissa kuvataan lyhyesti kunkin portin vaihtoehtoiset toiminnot ja liitetään ohittavat signaalit vaihtoehtoiseen toimintoon. Katso lisätietoja vaihtoehtoisen toiminnon kuvauksesta.
Portin B vaihtoehtoiset toiminnot
Portin B nastat vaihtoehtoisella toiminnolla näkyvät kuvassa Taulukko 10-3.
Taulukko 10-3. Portti B Nastat Vaihtoehtoiset toiminnot
Portin Pin | Vaihtoehtoinen toiminto |
PB5 | ![]() RESET: Reset Pin dW: debugWIRE I/O ADC0: ADC:n tulokanava 0 PCINT5: Pin Change Interrupt, Source 5 |
PB4 | XTAL2: Crystal Oscillator Output CLKO: Järjestelmän kellolähtö ADC2: ADC-tulokanava 2
OC1B: Ajastin/Laskuri1 Vertaa ottelua B lähtö PCINT4: Pin Change Interrupt 0, Source 4 |
PB3 | XTAL1: Crystal Oscillator Input CLKI: Ulkoinen kellotulo ADC3: ADC-tulokanava 3
OC1B: Täydentävä ajastin/laskuri1 Vertaa ottelun B lähtö PCINT3: Pin Change Interrupt 0, Source 3 |
PB2 | SCK: Sarjakellotulo ADC1: ADC-tulokanava 1
T0: Ajastin/laskuri0 Kellon lähde USCK: USI-kello (kolmijohtotila) SCL : USI-kello (kaksijohtiminen tila) INT0: Ulkoinen keskeytys 0 Tulo PCINT2: Pin Change Interrupt 0, Source 2 |
PB1 | MISO: SPI-päätietotulo / orjadatan lähtö AIN1: Analoginen komparaattori, negatiivinen tulo OC0B: Ajastin/laskuri0 Vertaa Match B -lähtö OC1A: Ajastin/Laskuri1 Vertaa Match A -lähtö DO: USI-datalähtö (kolmijohtiminen tila) PCINT1:Pin Change Interrupt 0, lähde 1 |
PB0 | MOSI:: SPI-perusdatan lähtö / orjadatan tulo AIN0: analoginen komparaattori, positiivinen tulo
OC0A: Timer/Counter0 Vertaa Match A -lähtöä OC1A: Täydentävä ajastin/laskuri1 Vertaa Match A -lähtö DI: USI-datatulo (kolmijohtiminen tila) SDA: USI-datatulo (kaksijohtiminen tila) AREF: Ulkoinen analoginen viite PCINT0: Pin Change Interrupt 0, Source 0 |
Portti B, bitti 5 – RESET/dW/ADC0/PCINT5
RESET: Ulkoinen nollaustulo on aktiivinen alhainen ja otetaan käyttöön poistamalla RSTDISBL-sulake ohjelmointi ("1"). Pullup aktivoidaan ja lähtöohjain ja digitaalitulo poistetaan käytöstä, kun nastaa käytetään RESET-nastana.
dW: Kun debugWIRE Enable (DWEN) -sulake on ohjelmoitu ja lukitusbittejä ei ole ohjelmoitu, kohdelaitteen debugWIRE-järjestelmä aktivoituu. RESET-portin nasta on konfiguroitu lanka-AND (open-drain) kaksisuuntaiseksi I/O-nastaksi, joka on otettu käyttöön, ja siitä tulee tiedonsiirtoyhdyskäytävä kohteen ja emulaattorin välillä.
ADC0: Analogi-digitaalimuunnin, kanava 0.
PCINT5: Pin Change Interrupt lähde 5.
Portti B, bitti 4 – XTAL2/CLKO/ADC2/OC1B/PCINT4
XTAL2: Chip Clock Oscillator pin 2. Käytetään kellon nastana kaikille sirukellolähteille paitsi sisäiselle kalibroitavalle RC-oskillaattorille ja ulkoiselle kellolle. Kellon nastana käytettäessä nastaa ei voi käyttää I/O-nastana. Käytettäessä sisäistä kalibroitavaa RC-oskillaattoria tai ulkoista kelloa Chip-kellolähteenä, PB4 toimii tavallisena I/O-nastana.
CLKO: Jaettu järjestelmäkello voidaan lähettää nastalle PB4. Jaettu järjestelmän kello lähetetään, jos CKOUT Fuse on ohjelmoitu, riippumatta PORTB4- ja DDB4-asetuksista. Se lähetetään myös nollauksen aikana.
ADC2: Analogi-digitaalimuunnin, kanava 2.
OC1B: Output Compare Match -lähtö: PB4-nasta voi toimia ulkoisena lähtönä Timer/Counter1 Compare Match B:lle, kun se on määritetty lähdöksi (DDB4-sarja). OC1B-nasta on myös lähtönasta PWM-tilan ajastintoiminnolle.
PCINT4: Pin Change Interrupt lähde 4.
Portti B, bitti 3 – XTAL1/CLKI/ADC3/OC1B/PCINT3
XTAL1: Chip Clock Oscillator pin 1. Käytetään kaikille sirukellolähteille paitsi sisäiselle kalibroitavalle RC-oskillaattorille. Kellon nastana käytettäessä nastaa ei voi käyttää I/O-nastana.
CLKI: Kellotulo ulkoisesta kellolähteestä, katso "Ulkoinen kello" sivulla 26.
ADC3: Analogi-digitaalimuunnin, kanava 3.
OC1B: Inverted Output Compare Match -lähtö: PB3-nasta voi toimia ulkoisena lähtönä Timer/Counter1 Compare Match B:lle, kun se on määritetty lähdöksi (DDB3-sarja). OC1B-nasta on myös käänteinen lähtönasta PWM-tilan ajastintoiminnolle.
PCINT3: Pin Change Interrupt lähde 3.
Portti B, bitti 2 – SCK/ADC1/T0/USCK/SCL/INT0/PCINT2
SCK: Master Clock -lähtö, orjakellon tulonasta SPI-kanavalle. Kun SPI on otettu käyttöön orjana, tämä nasta on määritetty tuloksi riippumatta DDB2:n asetuksista. Kun SPI on käytössä isäntänä, tämän nastan datasuuntaa ohjaa DDPB2. Kun SPI pakottaa nastan tuloksi, ylösvetoa voidaan silti ohjata PORTB2-bitillä.
ADC1: Analogi-digitaalimuunnin, kanava 1.
T0: Ajastin/Laskuri0 laskurin lähde.
USCK: Kolmijohdintila Universal Serial Interface Clock.
SCL: Kaksijohtiminen Serial Clock USI-kaksijohtimistilaa varten.
INT0: Ulkoinen keskeytyslähde 0.
PCINT2: Pin Change Interrupt lähde 2.
Portti B, bitti 1 – MISO/AIN1/OC0B/OC1A/DO/PCINT1
MISO: Master Data -tulo, SPI-kanavan orjadatan lähtönasta. Kun SPI on käytössä isäntänä, tämä nasta on määritetty tuloksi riippumatta DDB1:n asetuksista. Kun SPI on otettu käyttöön orjana, tämän nastan datasuuntaa ohjaa DDB1. Kun SPI pakottaa nastan tuloksi, ylösvetoa voidaan silti ohjata PORTB1-bitillä.
AIN1: Analogisen vertailulaitteen negatiivinen tulo. Määritä portin nasta tuloksi sisäisen vedon ollessa pois päältä, jotta digitaalinen porttitoiminto ei häiritse analogisen vertailulaitteen toimintaa.
OC0B: Output Compare Match output. PB1-nasta voi toimia ulkoisena lähtönä Timer/Counter0 Compare Match B:lle. PB1-nasta on konfiguroitava lähdöksi (DDB1 set (yksi)) palvelemaan tätä toimintoa. OC0B-nasta on myös lähtönasta PWM-tilan ajastintoiminnolle.
OC1A: Output Compare Match -lähtö: PB1-nasta voi toimia ulkoisena lähtönä Timer/Counter1 Compare Match B:lle, kun se on määritetty lähdöksi (DDB1-sarja). OC1A-nasta on myös lähtönasta PWM-tilan ajastintoiminnolle.
DO: Kolmijohdintila Universal Serial Interface Datalähtö. Kolmijohdintila Datalähtö ohittaa PORTB1-arvon ja se ohjataan porttiin, kun datan suuntabitti DDB1 on asetettu (yksi). PORTB1 mahdollistaa edelleen vedon, jos suunta on syötetty ja PORTB1 on asetettu (yksi).
PCINT1: Pin Change Interrupt lähde 1.
Portti B, bitti 0 – MOSI/AIN0/OC0A/OC1A/DI/SDA/AREF/PCINT0
MOSI: SPI Master Data -lähtö, SPI-kanavan orjadatatulo. Kun SPI on otettu käyttöön orjana, tämä nasta on määritetty tuloksi riippumatta DDB0-asetuksesta. Kun SPI on käytössä isäntänä, tämän nastan datasuuntaa ohjaa DDB0. Kun SPI pakottaa nastan tuloksi, ylösvetoa voidaan silti ohjata PORTB0-bitillä.
AIN0: Analogisen komparaattorin positiivinen tulo. Määritä portin nasta tuloksi sisäisen vedon ollessa pois päältä, jotta digitaalinen porttitoiminto ei häiritse analogisen vertailulaitteen toimintaa.
OC0A: Output Compare Match output. PB0-nasta voi toimia ulkoisena lähtönä Timer/Counter0 Compare Match A:lle, kun se on määritetty lähdöksi (DDB0-sarja (yksi)). OC0A-nasta on myös lähtönasta PWM-tilan ajastintoiminnolle.
OC1A: Inverted Output Compare Match -lähtö: PB0-nasta voi toimia ulkoisena lähtönä Timer/Counter1 Compare Match B:lle, kun se on määritetty lähdöksi (DDB0-sarja). OC1A-nasta on myös käänteinen lähtönasta PWM-tilan ajastintoiminnolle.
SDA: Kaksijohdintila Serial Interface Data.
AREF: Ulkoinen analoginen viite ADC:lle. Pullup ja lähtöohjain ovat pois käytöstä PB0:ssa, kun nastaa käytetään ulkoisena referenssinä tai Internal Voltage Ohjearvo ulkoisen kondensaattorin kanssa AREF-nastassa.
DI: Tietojen syöttö USI-kolmijohtimistilassa. USI Kolmijohdintila ei ohita normaaleja porttitoimintoja, joten pin on määritettävä tuloksi DI-toimintoa varten.
PCINT0: Pin Change Interrupt lähde 0.
Taulukko 10-4 ja Taulukko 10-5 yhdistä portin B vaihtoehtoiset toiminnot kohdassa esitettyihin ohitussignaaleihin Kuva 10-5 päällä sivu 58.
Taulukko 10-4. Ohitussignaalit vaihtoehtoisille toiminnoille PB:ssä[5:3]
Signaalin nimi | PB5/RESET/ ADC0/PCINT5 | PB4/ADC2/XTAL2/ OC1B/PCINT4 | PB3/ADC3/XTAL1/ OC1B/PCINT3 |
PUOE | ![]() |
0 | 0 |
PUOV | 1 | 0 | 0 |
DDOE | RSTDISBL(1) • DWEN(1) | 0 | 0 |
DDOV | debugWire Transmit | 0 | 0 |
PVOE | 0 | OC1B käyttöön | ![]() OC1B käyttöön |
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-tulo | PCINT4-tulo | PCINT3-tulo |
AIO | RESET-tulo, ADC0-tulo | ADC2-tulo | ADC3-tulo |
Huomautus: kun sulake on “0” (ohjelmoitu).
Taulukko 10-5. Ohitussignaalit vaihtoehtoisille toiminnoille PB:ssä[2:0]
Signaalin 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 |
DDOE | USI_TWO_WIRE | 0 | USI_TWO_WIRE |
DDOV | (USI_SCL_HOLD + PORTB2) • DDB2 | 0 | ![]() ![]() (SDA + PORTB0) • DDB0 |
PVOE | USI_TWO_WIRE • DDB2 | OC0B Enable + OC1A Enable + USI_THREE_WIRE | ![]() OC0A Enable + OC1A Enable + (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-tulo |
PCINT1-tulo | DI/SDA/PCINT0-tulo |
AIO | ADC1-tulo | Analogisen vertailulaitteen negatiivinen tulo | Analogisen vertailulaitteen positiivinen tulo |
Rekisterikuvaus
MCUCR – MCU-ohjausrekisteri
Bitti | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | BODS | PUURO | SE | SM1 | SM0 | BODSE | ISC01 | ISC00 | MCUCR |
Lue/kirjoita | R | R/W | R/W | R/W | R/W | R | R/W | R/W | |
Alkuarvo | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bitti 6 – PUD: Pull-up Disable
Kun tämä bitti kirjoitetaan yhdeksi, I/O-porttien vedot poistetaan käytöstä, vaikka DDxn- ja PORTxn-rekisterit on määritetty sallimaan vedot ({DDxn, PORTxn} = 0b01). Katso "Pinn määrittäminen" sivulla 54 saadaksesi lisätietoja tästä ominaisuudesta.
PORTB – Portin B tietorekisteri
Bitti | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x18 | – | – | PORTB5 | PORTB4 | PORTB3 | PORTB2 | PORTB1 | PORTB0 | PORTB |
Lue/kirjoita | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Alkuarvo | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
DDRB – Portin B tiedonsuuntarekisteri
Bitti | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x17 | – | – | DDB5 | DDB4 | DDB3 | DDB2 | DDB1 | DDB0 | DDRB |
Lue/kirjoita | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Alkuarvo | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
PINB – Portin B tulonastan osoite
Bitti | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x16 | – | – | PINB5 | PINB4 | PINB3 | PINB2 | PINB1 | PINB0 | PINB |
Lue/kirjoita | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Alkuarvo | 0 | 0 | Ei käytössä | Ei käytössä | Ei käytössä | Ei käytössä | Ei käytössä | Ei käytössä |
8-bittinen ajastin/laskuri0 PWM:llä
Ominaisuudet
Kaksi itsenäistä lähtövertailuyksikköä
Kaksinkertainen puskuroitu lähtö Vertaa rekistereitä
Tyhjennä ajastin vertailuottelussa (automaattinen uudelleenlataus)
Glitch Free, Phase Correct Pulse Width Modulator (PWM)
Muuttuva PWM-jakso
Taajuusgeneraattori
Kolme itsenäistä keskeytyslähdettä (TOV0, OCF0A ja OCF0B)
Yliview
Timer/Counter0 on yleiskäyttöinen 8-bittinen ajastin/laskurimoduuli, jossa on kaksi itsenäistä lähtövertailuyksikköä ja PWM-tuki. Se mahdollistaa tarkan ohjelman suoritusajoituksen (tapahtumanhallinnan) ja aallonmuodostuksen.
8-bittisen ajastimen/laskurin yksinkertaistettu lohkokaavio on esitetty Kuva 11-1. Katso I/O-nastojen todellinen sijoitus kohdasta "Pinout ATtiny25/45/85" sivulla 2. CPU:n käytettävissä olevat I/O-rekisterit, mukaan lukien I/O-bitit ja I/O-nastat, on lihavoitu. Laitekohtaiset I/O-rekisterit ja bittien sijainnit on lueteltu kohdassa "Rekisteröinnin kuvaus" sivulla 77.
Ajastin/laskuri (TCNT0) ja lähtövertailurekisterit (OCR0A ja OCR0B) ovat 8-bittisiä rekistereitä. Keskeytyspyyntö (kuvassa lyhennetty Int.Req.) -signaalit ovat kaikki näkyvissä Timer Interrupt Flag Registerissä (TIFR). Kaikki keskeytykset peitetään yksilöllisesti ajastimen keskeytysmaskirekisterillä (TIMSK). TIFR ja TIMSK eivät näy kuvassa.
Ajastin/laskuri voidaan kellottaa sisäisesti, esiskaalaimen kautta tai ulkoisella kellolähteellä T0-nastassa. Kellon valinta -logiikkalohko ohjaa, mitä kellon lähdettä ja reunaa ajastin/laskuri käyttää arvon lisäämiseen (tai pienentämiseen). Ajastin/laskuri ei ole aktiivinen, kun kellolähdettä ei ole valittu. Kellonvalintalogiikan lähtöä kutsutaan ajastinkelloksi (clkT0).
Kaksoispuskuroituja lähtövertailurekisterejä (OCR0A ja OCR0B) verrataan aina ajastin/laskuri-arvoon. Waveform Generator voi käyttää vertailun tulosta PWM- tai vaihtuvataajuisen lähdön generoimiseen Output Compare -nastoihin (OC0A ja OC0B). Katso "Tulosten vertailuyksikkö" sivulla 69. lisätietoja. Compare Match -tapahtuma asettaa myös vertailulipun (OCF0A tai OCF0B), jota voidaan käyttää Output Compare -keskeytyspyynnön luomiseen.
Määritelmät
Monet rekisteri- ja bittiviittaukset tässä osiossa on kirjoitettu yleisessä muodossa. Pieni kirjain "n" korvaa ajastimen/laskurin numeron, tässä tapauksessa 0. Pienet kirjaimet "x" korvaa lähtövertailuyksikön, tässä tapauksessa vertailuyksikön A tai vertailuyksikön B. Rekisteriä tai bittiä käytettäessä määritetään kuitenkin Ohjelmassa on käytettävä tarkkaa muotoa, eli TCNT0 Ajastin/Laskuri0-laskuriarvon saamiseksi ja niin edelleen.
Määritelmät sisällä Taulukko 11-1 niitä käytetään myös laajasti koko asiakirjassa.
Taulukko 11-1. Määritelmät
Jatkuva | Kuvaus |
ALALLA | Laskuri saavuttaa BOTTOM, kun se on 0x00 |
MAX | Laskuri saavuttaa maksimiarvonsa, kun se on 0xFF (desimaali 255) |
TOP | Laskuri saavuttaa TOP:n, kun se on yhtä suuri kuin laskentajakson suurin arvo. TOP-arvoksi voidaan määrittää kiinteä arvo 0xFF (MAX) tai OCR0A-rekisteriin tallennettu arvo. Tehtävä riippuu toimintatavasta |
Ajastin/laskuri esiskaalaaja ja kellon lähteet
Ajastin/laskuri voidaan kellottaa sisäisellä tai ulkoisella kellolähteellä. Kellon lähde valitaan Clock Select -logiikalla, jota ohjataan Timer/Counter0 Control Registerissä (TCCR0B) sijaitsevilla Clock Select (c) -biteillä.
Sisäinen kellolähde esiskaalaimella
Ajastin/laskuri0 voidaan kellottaa suoraan järjestelmän kellolla (asettamalla CS0[2:0] = 1). Tämä tarjoaa nopeimman toiminnan, jolloin ajastimen/laskurin maksimikellotaajuus on yhtä suuri kuin järjestelmän kellotaajuus (fCLK_I/O). Vaihtoehtoisesti yhtä neljästä esiskaalaimen kosketuksesta voidaan käyttää kellon lähteenä. Esiskaalatussa kellossa on jommankumman taajuus
Esiskaalaimen nollaus
Esiskaalaaja toimii vapaasti, eli se toimii ajastimen/laskurin 0:n kellonvalintalogiikasta riippumatta. Koska ajastimen/laskurin kellon valinta ei vaikuta esiskaalaajaan, esiskaalaimen tila vaikuttaa tilanteisiin, joissa käytetään esiskaalattua kelloa. Yksi exampesiskaalauksen artefaktin le on, kun ajastin/laskuri on käytössä ja kellotaa esiskaalaajalla (6 > CS0[2:0] > 1). Järjestelmän kellojaksojen määrä ajastimen käyttöönotosta ensimmäiseen laskuriin voi olla 1 - N+1 järjestelmän kellojaksoa, jossa N on yhtä suuri kuin esiskaalaajan jakaja (8, 64, 256 tai 1024).
On mahdollista käyttää Prescaler Reset -toimintoa ajastimen/laskurin synkronoimiseen ohjelman suorittamiseen.
Ulkoinen kellolähde
T0-nastan ulkoista kellolähdettä voidaan käyttää ajastimena/laskurikellona (clkT0). T0-nasta on sampjohdetaan kerran jokaisessa järjestelmän kellojaksossa pin-synkronointilogiikan avulla. Synkronoitu (sampled) signaali välitetään sitten
reunatunnistimen kautta. Kuva 11-2 esittää toiminnallisen vastaavan lohkokaavion T0-synkronointi- ja reunatunnistinlogiikasta. Rekisterit kellotetaan sisäisen järjestelmän kellon (clkI/O) positiiviseen reunaan. Salpa on läpinäkyvä sisäisen järjestelmän kellon yläjaksossa.
Reunatunnistin generoi yhden clkT0-pulssin jokaista havaitsemansa positiivista (CS0[2:0] = 7) tai negatiivista (CS0[2:0] = 6) reunaa kohden.
OCR0x-rekisterit puskuroidaan kaksinkertaisesti, kun käytetään mitä tahansa pulssinleveysmodulaatiotilaa (PWM). Normaalissa ja Clear Timer on Compare (CTC) -toimintatiloissa kaksoispuskurointi on poistettu käytöstä. Kaksoispuskurointi synkronoi OCR0x Compare -rekisterien päivityksen joko laskentajakson ylä- tai alaosaan. Synkronointi estää parittoman pituisten, epäsymmetristen PWM-pulssien esiintymisen, mikä tekee lähdöstä häiriöttömän.
OCR0x-rekisterin käyttö saattaa tuntua monimutkaiselta, mutta näin ei ole. Kun kaksoispuskurointi on käytössä, suorittimella on pääsy OCR0x-puskurirekisteriin, ja jos kaksoispuskurointi on poistettu käytöstä, CPU pääsee suoraan OCR0x:ään.
Force Output Vertaa
Ei-PWM-aaltomuodon generointitiloissa vertailijan sovituslähtö voidaan pakottaa kirjoittamalla yksi FOC0x-bittiin. Compare Matchin pakottaminen ei aseta OCF0x-lippua tai lataa/tyhjennä ajastinta, mutta OC0x-nasta päivitetään ikään kuin todellinen vertailusovitus olisi tapahtunut (COM0x[1:0]-bittiasetukset määrittävät, onko OC0x-nasta asetettu, tyhjennetty tai vaihdettu).
Vertaa ottelun estämistä TCNT0 Write -sovelluksella
Kaikki CPU:n kirjoitustoiminnot TCNT0-rekisteriin estävät kaikki vertailusovitukset, jotka tapahtuvat seuraavassa ajastimen kellojaksossa, vaikka ajastin olisi pysäytetty. Tämän ominaisuuden avulla OCR0x voidaan alustaa samaan arvoon kuin TCNT0 ilman keskeytystä, kun ajastin/laskuri kello on käytössä.
Output Compare Unit -yksikön käyttäminen
Koska TCNT0:n kirjoittaminen missä tahansa toimintatilassa estää kaikki vertailuosumat yhdelle ajastinkellojaksolle, TCNT0:n vaihtamiseen liittyy riskejä käytettäessä Output Compare Unit -yksikköä riippumatta siitä, onko ajastin/laskuri käynnissä vai ei. Jos TCNT0:aan kirjoitettu arvo on yhtä suuri kuin OCR0x-arvo, Compare Match puuttuu, mikä johtaa väärään aaltomuodon luomiseen. Älä myöskään kirjoita TCNT0-arvoa yhtä suureksi kuin BOTTOM, kun laskuri laskee alaspäin.
OC0x:n asetukset on suoritettava ennen kuin asetat datan suuntarekisterin portin nastalle lähtöön. Helpoin tapa asettaa OC0x-arvo on käyttää Force Output Compare (FOC0x) -strobobittejä normaalitilassa. OC0x-rekisterit säilyttävät arvonsa myös vaihdettaessa aaltomuodon generointitilojen välillä.
Huomaa, että COM0x[1:0]-bittejä ei ole kaksoispuskuroitu vertailuarvon kanssa. COM0x[1:0]-bittien muuttaminen tulee voimaan välittömästi.
Vertaa Match Output Unit
Compare Output mode (COM0x[1:0]) -biteillä on kaksi toimintoa. Waveform Generator käyttää COM0x[1:0]-bittejä määrittämään Output Compare (OC0x) -tilan seuraavassa vertailussa. Myös COM0x[1:0]-bitit ohjaavat OC0x-nastaisen lähtölähdettä. Kuva 11-6 näyttää yksinkertaistetun kaavion logiikasta, johon COM0x[1:0] bittiasetus vaikuttaa. Kuvan I/O-rekisterit, I/O-bitit ja I/O-nastat on lihavoitu. Vain yleisten I/O-porttien ohjausrekisterien (DDR ja PORT) osat, joihin COM0x[1:0]-bitit vaikuttavat, näytetään. Kun viitataan OC0x-tilaan, viittaus koskee sisäistä OC0x-rekisteriä, ei OC0x-nastaa. Jos järjestelmä nollataan, OC0x-rekisteri palautetaan arvoon "0".
Kun OC0A/OC0B on kytketty I/O-nastan, COM0A[1:0]/COM0B[1:0]-bittien toiminta riippuu WGM0[2:0]-bittiasetuksesta. Taulukko 11-2 näyttää COM0x[1:0]-bitin toiminnallisuuden, kun WGM0[2:0]-bitit on asetettu normaaliin tai CTC-tilaan (ei-PWM).
Taulukko 11-2. Vertaa lähtötilaa ei-PWM-tilaan
COM0A1 COM0B1 | COM0A0 COM0B0 | Kuvaus |
0 | 0 | Normaali porttitoiminta, OC0A/OC0B irrotettu. |
0 | 1 | Vaihda OC0A/OC0B Vertaa-ottelussa |
1 | 0 | Tyhjennä OC0A/OC0B vertailuottelussa |
1 | 1 | Aseta OC0A/OC0B Vertaile-otteluun |
Taulukko 11-3 näyttää COM0x[1:0]-bittitoiminnallisuuden, kun WGM0[2:0]-bitit on asetettu nopeaan PWM-tilaan.
Taulukko 11-3. Vertaa Output Mode, Fast PWM Mode(1)
COM0A1 COM0B1 | COM0A0 COM0B0 | Kuvaus |
0 | 0 | Normaali porttitoiminta, OC0A/OC0B irrotettu. |
0 | 1 | Varattu |
1 | 0 | Tyhjennä OC0A/OC0B Vertaa-matchissa, aseta OC0A/OC0B ALALLA (ei-invertoiva tila) |
1 | 1 | Aseta OC0A/OC0B Compare Matchille, tyhjennä OC0A/OC0B ALALLA (käänteinen tila) |
Huomautus: Erikoistapaus tapahtuu, kun OCR0A tai OCR0B on yhtä kuin TOP ja COM0A1/COM0B1 on asetettu. Tässä tapauksessa vertailusovitus jätetään huomioimatta, mutta asetus tai tyhjennys tehdään ALALLA. Katso "Nopea PWM-tila" sivulla 73 saadaksesi lisätietoja.
Taulukko 11-4 näyttää COM0x[1:0]-bitin toiminnallisuuden, kun WGM0[2:0]-bitit on asetettu vaiheen oikeaan PWM-tilaan.
Taulukko 11-4. Vertaa Output Mode, Phase Correct PWM Mode(1)
COM0A1 COM0B1 | COM0A0 COM0B0 | Kuvaus |
0 | 0 | Normaali porttitoiminta, OC0A/OC0B irrotettu. |
0 | 1 | Varattu |
1 | 0 | Tyhjennä OC0A/OC0B Compare Matchista, kun lasketaan ylös. Aseta OC0A/OC0B Vertaa Match -kohtaan laskettaessa. |
1 | 1 | Aseta OC0A/OC0B Vertaile Match -kohtaan, kun lasketaan ylös. Tyhjennä OC0A/OC0B Compare Matchista alaslaskettaessa. |
Huomautus: 1. Erikoistapaus tapahtuu, kun OCR0A tai OCR0B on yhtä kuin TOP ja COM0A1/COM0B1 on asetettu. Tässä tapauksessa Compare Match ohitetaan, mutta asetus tai tyhjennys tehdään TOP:ssa. Katso "Phase Correct PWM Mode" sivulla 74 saadaksesi lisätietoja.
Bitit 3:2 – Res: Varatut bitit
Nämä bitit ovat varattuja bittejä ATtiny25/45/85:ssä ja ne luetaan aina nollana.
Bitit 1:0 – WGM0[1:0]: Aaltomuodon luontitila
Yhdessä TCCR02B-rekisteristä löytyvän WGM0-bitin kanssa nämä bitit ohjaavat laskurin laskentasekvenssiä, maksimilaskurin (TOP) arvon lähdettä ja käytettävän aaltomuodon generointia, ks. Taulukko 11-5. Ajastin/laskuriyksikön tukemat toimintatilat ovat: Normaali tila (laskuri), Clear Timer on Compare Match (CTC) -tila ja kahden tyyppiset pulssinleveysmodulaatiotilat (PWM) (katso "Toimintatavat" sivulla 71).
Taulukko 11-5. Aaltomuodon luontitilan bitin kuvaus
tila | WGM 02 | WGM 01 | WGM 00 | Ajastin/laskuri toimintatila | TOP | OCRx:n päivitys osoitteessa | TOV-lippu päällä |
0 | 0 | 0 | 0 | Normaali | 0xFF | Välitön | MAX(1) |
1 | 0 | 0 | 1 | PWM, vaihe oikein | 0xFF | TOP | ALALLA(2) |
2 | 0 | 1 | 0 | CTC | OCRA | Välitön | MAX(1) |
3 | 0 | 1 | 1 | Nopea PWM | 0xFF | ALALLA(2) | MAX(1) |
4 | 1 | 0 | 0 | Varattu | – | – | – |
5 | 1 | 0 | 1 | PWM, vaihe oikein | OCRA | TOP | ALALLA(2) |
6 | 1 | 1 | 0 | Varattu | – | – | – |
7 | 1 | 1 | 1 | Nopea PWM | OCRA | ALALLA(2) | TOP |
Bitti 7 – FOC0A: Pakota ulostulo, vertaa A
FOC0A-bitti on aktiivinen vain, kun WGM-bitit määrittävät ei-PWM-tilan.
Yhteensopivuuden varmistamiseksi tulevien laitteiden kanssa tämä bitti on kuitenkin asetettava nollaan, kun TCCR0B kirjoitetaan PWM-tilassa. Kun kirjoitetaan loogista FOC0A-bittiin, aaltomuodon generointiyksikköön pakotetaan välitön vertailusovitus. OC0A-lähtöä muutetaan sen COM0A[1:0]-bittiasetuksen mukaan. Huomaa, että FOC0A-bitti on toteutettu vilkkuvana. Siksi COM0A[1:0]-bittien arvo määrittää pakotetun vertailun vaikutuksen.
FOC0A-vilkkuvalo ei aiheuta keskeytyksiä, eikä se tyhjennä ajastinta CTC-tilassa käyttämällä OCR0A:ta TOP:na. FOC0A-bitti luetaan aina nollaksi.
Bitti 6 – FOC0B: Pakota ulostulo, vertaa B
FOC0B-bitti on aktiivinen vain, kun WGM-bitit määrittävät ei-PWM-tilan.
Yhteensopivuuden varmistamiseksi tulevien laitteiden kanssa tämä bitti on kuitenkin asetettava nollaan, kun TCCR0B kirjoitetaan PWM-tilassa. Kun kirjoitetaan loogista FOC0B-bittiin, aaltomuodon generointiyksikköön pakotetaan välitön vertailusovitus. OC0B-lähtöä muutetaan sen COM0B[1:0]-bittiasetuksen mukaan. Huomaa, että FOC0B-bitti on toteutettu vilkkuvana. Siksi COM0B[1:0]-bittien arvo määrittää pakotetun vertailun vaikutuksen.
FOC0B-vilkkuvalo ei aiheuta keskeytyksiä, eikä se tyhjennä ajastinta CTC-tilassa käyttämällä OCR0B:tä TOP:na.
FOC0B-bitti luetaan aina nollaksi.
Bitit 5:4 – Res: Varatut bitit
Nämä bitit ovat varattuja bittejä ATtiny25/45/85:ssä ja ne luetaan aina nollana.
Bitti 3 – WGM02: Aaltomuodon generointitila
Katso kuvaus kohdasta "TCCR0A – Ajastin/laskurin ohjausrekisteri A" sivulla 77.
Bitit 2:0 – CS0[2:0]: Kellon valinta
Kolme Clock Select -bittiä valitsevat kellolähteen, jota ajastin/laskuri käyttää.
Taulukko 11-6. Kello Valitse Bitti Kuvaus
CS02 | CS01 | CS00 | Kuvaus |
0 | 0 | 0 | Ei kellolähdettä (ajastin/laskuri pysäytetty) |
0 | 0 | 1 | clkI/O/(Ei esiskaalausta) |
0 | 1 | 0 | clkI/O/8 (esiskaalaimesta) |
0 | 1 | 1 | clkI/O/64 (esiskaalaimesta) |
1 | 0 | 0 | clkI/O/256 (esiskaalaimesta) |
1 | 0 | 1 | clkI/O/1024 (esiskaalaimesta) |
1 | 1 | 0 | Ulkoinen kellolähde T0-nastassa. Kello laskevalla reunalla. |
1 | 1 | 1 | Ulkoinen kellolähde T0-nastassa. Kello nousevalla reunalla. |
Jos Timer/Counter0:lle käytetään ulkoisia pin-tiloja, T0-nastan siirtymät kellottavat laskurin, vaikka nasta on määritetty ulostuloksi. Tämä ominaisuus mahdollistaa laskennan ohjelmistoohjauksen.
Laske ja vertaa yksiköitä
Ajastin/laskuri1:n yleinen toiminta on kuvattu asynkronisessa tilassa ja toiminta synkronisessa tilassa mainitaan vain, jos näiden kahden tilan välillä on eroja. Kuva 12-2 näyttää Timer/Counter 1 -synkronointirekisterin lohkokaavion ja synkronointiviiveet rekisterien välillä. Huomaa, että kaikkia kellon porttitietoja ei näytetä kuvassa. Ajastin/Laskuri1-rekisteriarvot kulkevat sisäisten synkronointirekisterien läpi, mikä aiheuttaa tulon synkronointiviiveen, ennen kuin ne vaikuttavat laskurin toimintaan. Rekisterit TCCR1, GTCCR, OCR1A, OCR1B ja OCR1C voidaan lukea takaisin heti rekisterin kirjoittamisen jälkeen. Takaisinlukuarvot viivästyvät Ajastin/Counter1 (TCNT1) -rekisterille ja lippuille (OCF1A, OCF1B ja TOV1) tulon ja lähdön synkronoinnin vuoksi.
Timer/Counter1:ssä on korkea resoluutio ja korkea käyttötarkkuus pienemmillä esiskaalausmahdollisuuksilla. Se voi myös tukea kahta tarkkaa, nopeaa, 8-bittistä pulssinleveysmodulaattoria, jotka käyttävät jopa 64 MHz:n kellotaajuutta (tai 32 MHz hitaalla nopeudella). Tässä tilassa Timer/Counter1 ja lähtövertailurekisterit toimivat kahtena erillisenä PWM:nä, joissa on ei-päällekkäiset ei-invertoidut ja käänteiset lähdöt. Katso sivu 86 saadaksesi yksityiskohtaisen kuvauksen tästä toiminnosta. Samoin suuret esiskaalausmahdollisuudet tekevät tästä laitteesta hyödyllisen hitaampiin toimintoihin tai tarkkoihin ajoitustoimintoihin, joissa toimintoja on harvoin.
Kuva 12-2. Ajastin/laskuri 1 Synkronointirekisterin lohkokaavio.
Ajastin/laskuri1 ja esiskaalaaja mahdollistavat CPU:n käytön mistä tahansa kellolähteestä, kun esiskaalaaja toimii nopealla 64 MHz (tai 32 MHz hitaalla nopeudella) PCK-kellolla asynkronisessa tilassa.
Huomaa, että järjestelmän kellotaajuuden on oltava pienempi kuin kolmasosa PCK-taajuudesta. Asynkronisen Timer/Counter1:n synkronointimekanismi tarvitsee vähintään kaksi PCK:n reunaa, kun järjestelmän kello on korkea. Jos järjestelmän kellon taajuus on liian korkea, on vaara, että tiedot tai ohjausarvot menetetään.
Seuraavat Kuva 12-3 näyttää Ajastin/Laskuri1:n lohkokaavion.
Taulukko 12-1. Vertaa tila Valitse PWM-tilassa
COM1x1 | COM1x0 | Vaikutus ulostuloon Vertaa nastat |
0 | 0 | OC1x ei kytketty. OC1x ei kytketty. |
0 | 1 | OC1x tyhjennettiin vertailuottelussa. Aseta kunTCNT1 = 00 $. OC1x asetettu vertailuotteluun. Tyhjennetään, kun TCNT1 = 00 $. |
1 | 0 | OC1x tyhjennettiin vertailuottelussa. Aseta kun TCNT1 = 00 $. OC1x ei kytketty. |
1 | 1 | OC1x asetettu vertailuotteluun. Tyhjennetään, kun TCNT1 = 00 $. OC1x ei kytketty. |
ADC-ominaisuudet
Taulukko 21-8. ADC:n ominaisuudet, yksipäiset kanavat. TA = -40 °C - +85 °C
Symboli | Parametri | Kunto | Min | Typ | Max | Yksiköt |
Resoluutio | 10 | Bittiä | ||||
Absoluuttinen tarkkuus (mukaan lukien INL-, DNL- ja kvantisointi-, vahvistus- ja offset-virheet) | VREF = 4 V, VCC = 4 V,
ADC-kello = 200 kHz |
2 | LSB | |||
VREF = 4 V, VCC = 4 V,
ADC-kello = 1 MHz |
3 | LSB | ||||
VREF = 4 V, VCC = 4 V,
ADC-kello = 200 kHz Melunvaimennustila |
1.5 | LSB | ||||
VREF = 4 V, VCC = 4 V,
ADC-kello = 1 MHz Melunvaimennustila |
2.5 | LSB | ||||
Integraalinen epälineaarisuus (INL) (tarkkuus offsetin ja vahvistuksen kalibroinnin jälkeen) | VREF = 4 V, VCC = 4 V,
ADC-kello = 200 kHz |
1 | LSB | |||
Differentiaalinen epälineaarisuus (DNL) | VREF = 4 V, VCC = 4 V,
ADC-kello = 200 kHz |
0.5 | LSB | |||
Vahvistusvirhe | VREF = 4 V, VCC = 4 V,
ADC-kello = 200 kHz |
2.5 | LSB | |||
Siirtymävirhe | VREF = 4 V, VCC = 4 V,
ADC-kello = 200 kHz |
1.5 | LSB | |||
Muunnosaika | Ilmainen juoksumuunnos | 14 | 280 | ps | ||
Kellotaajuus | 50 | 1000 | kHz | |||
VIN | Tulo Voltage | GND | VREF | V | ||
Tulon kaistanleveys | 38.4 | kHz | ||||
AREF | Ulkoinen viite Voltage | 2.0 | VCC | V | ||
VINT | Internal Voitage Viite | 1.0 | 1.1 | 1.2 | V | |
Sisäinen 2.56 V viite (1) | VCC > 3.0V | 2.3 | 2.56 | 2.8 | V | |
RREF | 32 | kΩ | ||||
SADE | Analogisen tulon vastus | 100 | MΩ | |||
ADC-lähtö | 0 | 1023 | LSB |
Huomautus: 1. Arvot ovat vain suuntaa antavia.
Taulukko 21-9. ADC:n ominaisuudet, differentiaalikanavat (yksinapainen tila). TA = -40 °C - +85 °C
Symboli | Parametri | Kunto | Min | Typ | Max | Yksiköt |
Resoluutio | Voitto = 1x | 10 | Bittiä | |||
Voitto = 20x | 10 | Bittiä | ||||
Absoluuttinen tarkkuus (mukaan lukien INL, DNL ja
Kvantisointi-, vahvistus- ja offset-virheet) |
Voitto = 1x
VREF = 4V, VCC = 5V ADC-kello = 50-200 kHz |
10.0 | LSB | |||
Voitto = 20x
VREF = 4V, VCC = 5V ADC-kello = 50-200 kHz |
20.0 | LSB | ||||
Integraalinen epälineaarisuus (INL) (tarkkuus offset- ja vahvistuskalibroinnin jälkeen) | Voitto = 1x
VREF = 4V, VCC = 5V ADC-kello = 50-200 kHz |
4.0 | LSB | |||
Voitto = 20x
VREF = 4V, VCC = 5V ADC-kello = 50-200 kHz |
10.0 | LSB | ||||
Vahvistusvirhe | Voitto = 1x | 10.0 | LSB | |||
Voitto = 20x | 15.0 | LSB | ||||
Siirtymävirhe | Voitto = 1x
VREF = 4V, VCC = 5V ADC-kello = 50-200 kHz |
3.0 | LSB | |||
Voitto = 20x
VREF = 4V, VCC = 5V ADC-kello = 50-200 kHz |
4.0 | LSB | ||||
Muunnosaika | Ilmainen juoksumuunnos | 70 | 280 | ps | ||
Kellotaajuus | 50 | 200 | kHz | |||
VIN | Tulo Voltage | GND | VCC | V | ||
VDIFF | Input Differential Voltage | VREF/Gain | V | |||
Tulon kaistanleveys | 4 | kHz | ||||
AREF | Ulkoinen viite Voltage | 2.0 | VCC – 1.0 | V | ||
VINT | Internal Voitage Viite | 1.0 | 1.1 | 1.2 | V | |
Sisäinen 2.56 V viite (1) | VCC > 3.0V | 2.3 | 2.56 | 2.8 | V | |
RREF | Referenssitulovastus | 32 | kΩ | |||
SADE | Analogisen tulon vastus | 100 | MΩ | |||
ADC-muunnoslähtö | 0 | 1023 | LSB |
Huomautus: Arvot ovat vain ohjeellisia.
Taulukko 21-10. ADC:n ominaisuudet, differentiaalikanavat (kaksinapainen tila). TA = -40 °C - +85 °C
Symboli | Parametri | Kunto | Min | Typ | Max | Yksiköt |
Resoluutio | Voitto = 1x | 10 | Bittiä | |||
Voitto = 20x | 10 | Bittiä | ||||
Absoluuttinen tarkkuus (mukaan lukien INL, DNL ja
Kvantisointi-, vahvistus- ja offset-virheet) |
Voitto = 1x
VREF = 4V, VCC = 5V ADC-kello = 50-200 kHz |
8.0 | LSB | |||
Voitto = 20x
VREF = 4V, VCC = 5V ADC-kello = 50-200 kHz |
8.0 | LSB | ||||
Integraalinen epälineaarisuus (INL) (tarkkuus offset- ja vahvistuskalibroinnin jälkeen) | Voitto = 1x
VREF = 4V, VCC = 5V ADC-kello = 50-200 kHz |
4.0 | LSB | |||
Voitto = 20x
VREF = 4V, VCC = 5V ADC-kello = 50-200 kHz |
5.0 | LSB | ||||
Vahvistusvirhe | Voitto = 1x | 4.0 | LSB | |||
Voitto = 20x | 5.0 | LSB | ||||
Siirtymävirhe | Voitto = 1x
VREF = 4V, VCC = 5V ADC-kello = 50-200 kHz |
3.0 | LSB | |||
Voitto = 20x
VREF = 4V, VCC = 5V ADC-kello = 50-200 kHz |
4.0 | LSB | ||||
Muunnosaika | Ilmainen juoksumuunnos | 70 | 280 | ps | ||
Kellotaajuus | 50 | 200 | kHz | |||
VIN | Tulo Voltage | GND | VCC | V | ||
VDIFF | Input Differential Voltage | VREF/Gain | V | |||
Tulon kaistanleveys | 4 | kHz | ||||
AREF | Ulkoinen viite Voltage | 2.0 | VCC – 1.0 | V | ||
VINT | Internal Voitage Viite | 1.0 | 1.1 | 1.2 | V | |
Sisäinen 2.56 V viite (1) | VCC > 3.0V | 2.3 | 2.56 | 2.8 | V | |
RREF | Referenssitulovastus | 32 | kΩ | |||
SADE | Analogisen tulon vastus | 100 | MΩ | |||
ADC-muunnoslähtö | -512 | 511 | LSB |
Ohjejoukon yhteenveto
Muistitekniikka | operandit | Kuvaus | Toiminta | Liput | #Kellot |
Aritmeettiset ja logiikkaohjeet | |||||
LISÄTÄ | Rd, Rr | Lisää kaksi rekisteriä | Rd ← Rd + Rr | Z, C, N, V, H | 1 |
ADC | Rd, Rr | Lisää Carry two Registers -sovelluksella | Rd ← Rd + Rr + C | Z, C, N, V, H | 1 |
ADIW | Rdl, K | Lisää välitön Wordiin | Rdh:Rdl ← Rdh:Rdl + K | Z,C,N,V,S | 2 |
SUB | Rd, Rr | Vähennä kaksi rekisteriä | Rd ← Rd – Rr | Z, C, N, V, H | 1 |
YLÖS | Rd, K. | Vähennä vakio rekisteristä | Rd ← Rd – K | Z, C, N, V, H | 1 |
SBC | Rd, Rr | Vähennä Carry kaksi rekisteriä | Rd ← Rd – Rr – C | Z, C, N, V, H | 1 |
SBCI | Rd, K. | Vähennä Carry Constantilla rekisteristä. | Rd ← Rd – K – C | Z, C, N, V, H | 1 |
SBIW | Rdl, K | Vähennä Wordista välitön | Rdh:Rdl ← Rdh:Rdl – K | Z,C,N,V,S | 2 |
JA | Rd, Rr | Loogiset JA rekisterit | Rd ← Rd ∙ Rr | Z, N, V | 1 |
ANDI | Rd, K. | Looginen JA Rekisteröi ja vakio | Rd ← Rd ∙ K | Z, N, V | 1 |
OR | Rd, Rr | Loogiset TAI rekisterit | Rd ← Rd v Rr | Z, N, V | 1 |
ORI | Rd, K. | Looginen TAI Rekisteröi ja vakio | Rd ← Rd v K | Z, N, V | 1 |
EOR | Rd, Rr | Yksinoikeus TAI rekisterit | Rd ← Rd ⊕ Rr | Z, N, V | 1 |
COM | Rd | Yksi on täydennys | Rd ← 0xFF − Rd | Z, C, N, V | 1 |
NEG | Rd | Kahden täydennys | Rd ← 0x00 − Rd | Z, C, N, V, H | 1 |
SBR | Rd, K | Aseta bitti (t) rekisteriin | Rd ← Rd v K | Z, N, V | 1 |
CBR | Rd, K | Tyhjennä bitti (t) rekisteristä | Rd ← Rd ∙ (0xFF – K) | Z, N, V | 1 |
INC | Rd | Lisäys | Rd ← Rd + 1 | Z, N, V | 1 |
DEC | Rd | vähenemä | Rd ← Rd − 1 | Z, N, V | 1 |
TST | Rd | Testaa nolla tai miinus | Rd ← Rd ∙ Rd | Z, N, V | 1 |
CLR | Rd | Tyhjennä rekisteri | Rd ← Rd ⊕ Rd | Z, N, V | 1 |
SER | Rd | Aseta rekisteri | Rd ← 0xFF | Ei mitään | 1 |
HAARAOHJEET | |||||
RJMP | k | Suhteellinen hyppy | PC ← PC + k + 1 | Ei mitään | 2 |
IJMP | Epäsuora hyppy (Z) | PC ← Z | Ei mitään | 2 | |
SOITA | k | Suhteellinen alirutiinin kutsu | PC ← PC + k + 1 | Ei mitään | 3 |
ICALL | Epäsuora puhelu numeroon (Z) | PC ← Z | Ei mitään | 3 | |
RET | Alirutiinin paluu | PC ← pino | Ei mitään | 4 | |
VERKOSTOT | Keskeytä paluu | PC ← pino | I | 4 | |
CPSE | Rd, Rr | Vertaa, ohita, jos yhtäsuuri | jos (Rd = Rr) PC ← PC + 2 tai 3 | Ei mitään | 1 |
CP | Rd, Rr | Vertaa | Rd − Rr | Z, N, V, C, H | 1 |
CPC | Rd, Rr | Vertaa Carryyn | Rd - Rr - C | Z, N, V, C, H | 1 |
CPI | Rd, K | Vertaa rekisteröintiä välittömään | Rd - K | Z, N, V, C, H | 1 |
SBRC | Rr, s | Ohita, jos bitti rekisterissä poistettu | jos (Rr(b)=0) PC ← PC + 2 tai 3 | Ei mitään | 1 |
SBRS | Rr, s | Ohita, jos rekisterissä oleva bitti on asetettu | jos (Rr(b)=1) PC ← PC + 2 tai 3 | Ei mitään | 1 |
SBIC | P, b | Ohita, jos bitti I / O-rekisterissä tyhjennetty | jos (P(b)=0) PC ← PC + 2 tai 3 | Ei mitään | 1 |
SBIS | P, b | Ohita, jos I / O-rekisterissä oleva bitti on asetettu | jos (P(b)=1) PC ← PC + 2 tai 3 | Ei mitään | 1 |
BRBS | s, k | Haara, jos tilalippu on asetettu | jos (SREG(s) = 1) niin PC←PC+k + 1 | Ei mitään | 1/2 |
BRBC | s, k | Haara, jos tilalippu on tyhjennetty | jos (SREG(s) = 0) niin PC←PC+k + 1 | Ei mitään | 1/2 |
BREQ | k | Haara, jos yhtä suuri | jos (Z = 1) niin PC ← PC + k + 1 | Ei mitään | 1/2 |
Brně | k | Haara, jos ei ole tasa-arvoinen | jos (Z = 0) niin PC ← PC + k + 1 | Ei mitään | 1/2 |
BRCS | k | Haara, jos kantosetti | jos (C = 1), niin PC ← PC + k + 1 | Ei mitään | 1/2 |
BRCC | k | Haara, jos kuljetus on tyhjennetty | jos (C = 0), niin PC ← PC + k + 1 | Ei mitään | 1/2 |
BRSH | k | Haara, jos sama tai korkeampi | jos (C = 0), niin PC ← PC + k + 1 | Ei mitään | 1/2 |
BRLO | k | Haara, jos alempi | jos (C = 1), niin PC ← PC + k + 1 | Ei mitään | 1/2 |
BRMI | k | Haara, jos miinus | jos (N = 1), niin PC ← PC + k + 1 | Ei mitään | 1/2 |
BRPL | k | Haara, jos Plus | jos (N = 0), niin PC ← PC + k + 1 | Ei mitään | 1/2 |
BRGE | k | Haara suurempi tai tasa-arvoinen, allekirjoitettu | jos (N ⊕ V = 0) niin PC ← PC + k + 1 | Ei mitään | 1/2 |
BRLT | k | Haara, jos vähemmän kuin nolla, allekirjoitettu | jos (N ⊕ V = 1) niin PC ← PC + k + 1 | Ei mitään | 1/2 |
BRHS | k | Haara, jos puolikantolippu asetettu | jos (H = 1) niin PC ← PC + k + 1 | Ei mitään | 1/2 |
BRHC | k | Haara, jos puolikantolippu on tyhjennetty | jos (H = 0) niin PC ← PC + k + 1 | Ei mitään | 1/2 |
BRTS | k | Haara, jos T-lippu asetettu | jos (T = 1) niin PC ← PC + k + 1 | Ei mitään | 1/2 |
BRTC | k | Haara, jos T-lippu on tyhjennetty | jos (T = 0) niin PC ← PC + k + 1 | Ei mitään | 1/2 |
BRVS | k | Haara, jos ylivuotolippu on asetettu | jos (V = 1) niin PC ← PC + k + 1 | Ei mitään | 1/2 |
BRVC | k | Haara, jos ylivuotolippu on poistettu | jos (V = 0) niin PC ← PC + k + 1 | Ei mitään | 1/2 |
BRIE | k | Haara, jos keskeytys käytössä | jos ( I = 1) niin PC ← PC + k + 1 | Ei mitään | 1/2 |
BRID | k | Haara, jos keskeytys on pois käytöstä | jos ( I = 0) niin PC ← PC + k + 1 | Ei mitään | 1/2 |
BIT- JA BIT-TEST-OHJEET | |||||
SBI | P, b | Aseta bitti I / O-rekisteriin | I/O(P,b) ← 1 | Ei mitään | 2 |
CBI | P, b | Tyhjennä bitti I / O-rekisterissä | I/O(P,b) ← 0 | Ei mitään | 2 |
LSL | Rd | Looginen siirto vasemmalle | Rd(n+1) ← Rd(n), Rd(0) ← 0 | Z, C, N, V | 1 |
LSR | Rd | Looginen siirto oikealle | Rd(n) ← Rd(n+1), Rd(7) ← 0 | Z, C, N, V | 1 |
ASEMA | Rd | Kierrä kantokahva vasemmalle | Rd(0)←C,Rd(n+1)← Rd(n),C←Rd(7) | Z, C, N, V | 1 |
ROR | Rd | Kierrä kantokahvan läpi | Rd(7)←C,Rd(n)← Rd(n+1),C←Rd(0) | Z, C, N, V | 1 |
ASR | Rd | Aritmeettinen muutos oikealle | Rd(n) ← Rd(n+1), n=0..6 | Z, C, N, V | 1 |
Muistitekniikka | operandit | Kuvaus | Toiminta | Liput | #Kellot |
VAIHTAA | Rd | Vaihda Nibbles | Rd(3..0)←Rd(7..4),Rd(7..4)←Rd(3..0) | Ei mitään | 1 |
BSET | s | Lippusetti | SREG(t) ← 1 | SREG (t) | 1 |
BCLR | s | Lippu selkeä | SREG(t) ← 0 | SREG (t) | 1 |
BST | Rr, s | Bit Store rekisteröinnistä T: hen | T ← Rr(b) | T | 1 |
BLD | Rd, b | Bittikuorma T: stä rekisteriin | Rd(b) ← T | Ei mitään | 1 |
SEC | Aseta Carry | C ← 1 | C | 1 | |
CLC | Selkeä kantaminen | C ← 0 | C | 1 | |
SEN | Aseta negatiivinen lippu | N ← 1 | N | 1 | |
CLN | Selkeä negatiivinen lippu | N ← 0 | N | 1 | |
SEZ | Aseta Zero Flag | Z ← 1 | Z | 1 | |
CLZ | Selkeä nollalippu | Z ← 0 | Z | 1 | |
SEI | Globaali keskeytys käytössä | Minä ← 1 | I | 1 | |
CLI | Globaali keskeytys pois käytöstä | Minä ← 0 | I | 1 | |
SES | Aseta allekirjoitettu testilippu | S ← 1 | S | 1 | |
CLS | Tyhjennä allekirjoitettu testilippu | S ← 0 | S | 1 | |
SEV | Aseta Twos Complement Overflow. | V ← 1 | V | 1 | |
CLV | Tyhjennä kaksinkertainen täydentävä ylivuoto | V ← 0 | V | 1 | |
SARJA | Aseta T SREG: ssä | T ← 1 | T | 1 | |
CLT | Selkeä T SREG: ssä | T ← 0 | T | 1 | |
SEH | Aseta puolikantolippu SREG: ssä | H ← 1 | H | 1 | |
CLH | Selkeä puolikantolippu SREG: ssä | H ← 0 | H | 1 | |
TIEDONSIIRTO-OHJEET | |||||
MOV | Rd, Rr | Siirtyminen rekisterien välillä | Rd ← Rr | Ei mitään | 1 |
MOVW | Rd, Rr | Kopioi Rekisteröi Word | Rd+1:Rd ← Rr+1:Rr | Ei mitään | 1 |
LDI | Rd, K. | Lataa välitön | Rd ← K | Ei mitään | 1 |
LD | Rd, X | Lataa epäsuora | Rd ← (X) | Ei mitään | 2 |
LD | Rd, X+ | Lataa Epäsuora ja Post-Inc. | Rd ← (X), X ← X + 1 | Ei mitään | 2 |
LD | Rd, – X | Lataa epäsuora ja ennen joulukuuta | X ← X – 1, Rd ← (X) | Ei mitään | 2 |
LD | Rd, Y | Lataa epäsuora | Rd ← (Y) | Ei mitään | 2 |
LD | Rd, Y+ | Lataa Epäsuora ja Post-Inc. | Rd ← (Y), Y ← Y + 1 | Ei mitään | 2 |
LD | Rd, – Y | Lataa epäsuora ja ennen joulukuuta | Y ← K – 1, Rd ← (Y) | Ei mitään | 2 |
LDD | Rd,Y+q | Epäsuora kuormitus siirtymällä | Rd ← (Y + q) | Ei mitään | 2 |
LD | Rd, Z | Lataa epäsuora | Rd ← (Z) | Ei mitään | 2 |
LD | Rd, Z+ | Lataa Epäsuora ja Post-Inc. | Rd ← (Z), Z ← Z+1 | Ei mitään | 2 |
LD | Rd, -Z | Lataa epäsuora ja ennen joulukuuta | Z ← Z – 1, Rd ← (Z) | Ei mitään | 2 |
LDD | Rd, Z+q | Epäsuora kuormitus siirtymällä | Rd ← (Z + q) | Ei mitään | 2 |
LDS | Rd, k | Lataa suoraan SRAM:sta | Rd ← (k) | Ei mitään | 2 |
ST | X, Rr | Store Epäsuora | (X) ← Rr | Ei mitään | 2 |
ST | X+, Rr | Store Indirect and Post-Inc. | (X) ← Rr, X ← X + 1 | Ei mitään | 2 |
ST | – X, Rr | Store epäsuora ja ennen joulukuuta | X ← X – 1, (X) ← Rr | Ei mitään | 2 |
ST | Y, Rr | Store Epäsuora | (Y) ← Rr | Ei mitään | 2 |
ST | Y+, Rr | Store Indirect and Post-Inc. | (Y) ← Rr, Y ← Y + 1 | Ei mitään | 2 |
ST | – Y, Rr | Store epäsuora ja ennen joulukuuta | Y ← K – 1, (Y) ← Rr | Ei mitään | 2 |
STD | Y+q, Rr | Varastoi epäsuorasti siirtymällä | (Y + q) ← Rr | Ei mitään | 2 |
ST | Z, Rr | Store Epäsuora | (Z) ← Rr | Ei mitään | 2 |
ST | Z+, Rr | Store Indirect and Post-Inc. | (Z) ← Rr, Z ← Z + 1 | Ei mitään | 2 |
ST | -Z, Rr | Store epäsuora ja ennen joulukuuta | Z ← Z - 1, (Z) ← Rr | Ei mitään | 2 |
STD | Z+q,Rr | Varastoi epäsuorasti siirtymällä | (Z + q) ← Rr | Ei mitään | 2 |
STS | k, Rr | Tallenna suoraan SRAM-muistiin | (k) ← Rr | Ei mitään | 2 |
LPM | Lataa ohjelmamuisti | R0 ← (Z) | Ei mitään | 3 | |
LPM | Rd, Z | Lataa ohjelmamuisti | Rd ← (Z) | Ei mitään | 3 |
LPM | Rd, Z+ | Lataa ohjelmamuisti ja Post-Inc | Rd ← (Z), Z ← Z+1 | Ei mitään | 3 |
SPM | Tallenna ohjelmamuisti | (z) ← R1:R0 | Ei mitään | ||
IN | Rd, P. | Satamassa | Rd ← P | Ei mitään | 1 |
OUT | P, Rr | Lähtösatama | P ← Rr | Ei mitään | 1 |
TYÖNNÄ | Rr | Paina rekisteriä pinossa | PINO ← Rr | Ei mitään | 2 |
POP | Rd | Pop Register Stackista | Rd ← PINO | Ei mitään | 2 |
MCU-OHJAUSOHJEET | |||||
NOP | Ei operaatiota | Ei mitään | 1 | ||
NUKKUA | Nukkua | (katso nukkumistoiminnon kuvaus) | Ei mitään | 1 | |
WDR | Watchdog Reset | (katso WDR/ajastimen erityinen kuvaus) | Ei mitään | 1 | |
TAUKO | Tauko |
Nopeus (MHz) (1) | Supply Voltage (V) | Lämpötila-alue | Paketti (2) | Tilauskoodi (3) |
10 | 1.8-5.5 | Teollinen
(-40 ° C - + 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 | Teollinen
(-40 ° C - + 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 |
Huomautuksia: 1. Nopeus vs. syöttötilavuustage, katso kohta 21.3 "Nopeus" sivulla 163.
Kaikki pakkaukset ovat Pb-vapaita, halogenidittomia ja täysin vihreitä ja täyttävät EU:n vaarallisten aineiden rajoittamista koskevan direktiivin (RoHS).
Koodiindikaattorit
H: NiPdAu-lyijyviimeistely
U: matta tina
R: nauha ja kela
Nämä laitteet voidaan toimittaa myös kiekkoina. Ota yhteyttä paikalliseen Atmel-myyntitoimistoon saadaksesi yksityiskohtaiset tilaustiedot ja vähimmäismäärät.
painovirhe
Errata ATtiny25
Tämän osan versiokirje viittaa ATtiny25-laitteen versioon.
Rev D-F
Ei tiedossa virheitä.
Rev B-C
EEPROM-luku saattaa epäonnistua alhaisella syöttötilavuudellatage / alhainen kellotaajuus
EEPROM-luku saattaa epäonnistua alhaisella syöttötilavuudellatage / alhainen kellotaajuus
Yritetään lukea EEPROM-levyä matalilla kellotaajuuksilla ja/tai alhaisella syöttötilavuudellatage voi johtaa virheellisiin tietoihin.
Ongelman korjaus/kiertotapa
Älä käytä EEPROM-muistia, kun kellotaajuus on alle 1 MHz ja syöttötilavuustage on alle 2V. Jos käyttötaajuutta ei voida nostaa yli 1 MHz:n, syötä voltage:n pitäisi olla yli 2V. Vastaavasti, jos toimitustilavuustage ei voida nostaa yli 2V, jolloin toimintataajuuden tulee olla yli 1 MHz.
Tämän ominaisuuden tiedetään olevan lämpötilariippuvainen, mutta sitä ei ole karakterisoitu. Ohjeet on annettu vain huoneenlämpötilalle.
Rev A
Ei sampjohti.
Errata ATtiny45
Tämän osan versiokirje viittaa ATtiny45-laitteen versioon.
Rev F – G
Ei tiedossa olevaa virhettä
Rev D-E
EEPROM-luku saattaa epäonnistua alhaisella syöttötilavuudellatage / alhainen kellotaajuus
EEPROM-luku saattaa epäonnistua alhaisella syöttötilavuudellatage / alhainen kellotaajuus
Yritetään lukea EEPROM-levyä matalilla kellotaajuuksilla ja/tai alhaisella syöttötilavuudellatage voi johtaa virheellisiin tietoihin.
Ongelman korjaus/kiertotapa
Älä käytä EEPROM-muistia, kun kellotaajuus on alle 1 MHz ja syöttötilavuustage on alle 2V. Jos käyttötaajuutta ei voida nostaa yli 1 MHz:n, syötä voltage:n pitäisi olla yli 2V. Vastaavasti, jos toimitustilavuustage ei voida nostaa yli 2V, jolloin toimintataajuuden tulee olla yli 1 MHz.
Tämän ominaisuuden tiedetään olevan lämpötilariippuvainen, mutta sitä ei ole karakterisoitu. Ohjeet on annettu vain huoneenlämpötilalle.
Rev B-C
PLL ei lukittu
Sovelluskoodista luettu EEPROM ei toimi lukitusbittitilassa 3
EEPROM-luku saattaa epäonnistua alhaisella syöttötilavuudellatage / alhainen kellotaajuus
Ajastinlaskurin 1 PWM-lähdön generointi OC1B-XOC1B:ssä ei toimi oikein
PLL ei lukittu
Kun taajuudet ovat alle 6.0 MHz, PLL ei lukkiudu
Ongelman korjaus / Ratkaisu
Kun käytät PLL:tä, käytä 6.0 MHz tai korkeammalla taajuudella.
Sovelluskoodista luettu EEPROM ei toimi lukitusbittitilassa 3
Kun muistilukkobitit LB2 ja LB1 on ohjelmoitu tilaan 3, EEPROM-luku ei toimi sovelluskoodista.
Ongelma Korjaa/Kierrä
Älä aseta Lock Bit Protection Mode 3 -tilaa, kun sovelluskoodin on luettava EEPROM-muisti.
EEPROM-luku saattaa epäonnistua alhaisella syöttötilavuudellatage / alhainen kellotaajuus
Yritetään lukea EEPROM-levyä matalilla kellotaajuuksilla ja/tai alhaisella syöttötilavuudellatage voi johtaa virheellisiin tietoihin.
Ongelman korjaus/kiertotapa
Älä käytä EEPROM-muistia, kun kellotaajuus on alle 1 MHz ja syöttötilavuustage on alle 2V. Jos käyttötaajuutta ei voida nostaa yli 1 MHz:n, syötä voltage:n pitäisi olla yli 2V. Vastaavasti, jos toimitustilavuustage ei voida nostaa yli 2V, jolloin toimintataajuuden tulee olla yli 1 MHz.
Tämän ominaisuuden tiedetään olevan lämpötilariippuvainen, mutta sitä ei ole karakterisoitu. Ohjeet on annettu vain huoneenlämpötilalle.
Ajastinlaskurin 1 PWM-lähdön generointi OC1B – XOC1B:ssä ei toimi oikein
Timer Counter1 PWM-lähtö OC1B-XOC1B ei toimi oikein. Vain siinä tapauksessa, että ohjausbitit COM1B1 ja COM1B0 ovat samassa tilassa kuin COM1A1 ja COM1A0, OC1B-XOC1B lähtö toimii oikein.
Ongelma Korjaa/Kierrä
Ainoa ratkaisu on käyttää samaa ohjausasetusta COM1A[1:0]- ja COM1B[1:0]-ohjausbiteissä, katso tietosivun taulukko 14-4. Ongelma on korjattu Tiny45 rev D:lle.
Rev A
Liian suuri virrankulutus pois päältä
DebugWIRE menettää tiedonsiirron, kun yksittäinen astuu keskeytyksiin
PLL ei lukittu
Sovelluskoodista luettu EEPROM ei toimi lukitusbittitilassa 3
EEPROM-luku saattaa epäonnistua alhaisella syöttötilavuudellatage / alhainen kellotaajuus
Liian suuri virrankulutus pois päältä
Kolme tilannetta johtaa liian suureen virrankatkaisun virrankulutukseen. Nämä ovat:
Ulkoinen kello valitaan sulakkeilla, mutta I/O-PORTTI on edelleen käytössä lähtönä.
EEPROM luetaan ennen virran katkaisua.
VCC on 4.5 volttia tai enemmän.
Vastuuvapauslauseke: Tämän asiakirjan tiedot on annettu Atmelin tuotteiden yhteydessä. Tällä asiakirjalla tai Atmelin tuotteiden myynnin yhteydessä ei myönnetä mitään nimenomaista tai epäsuoraa lisenssiä, estoppelilla tai muuten, immateriaalioikeuksiin. PAITSI ATMELIN ATMELIN MYYNTIEHDOSSA EHDOTETTUIN WEBSIVUSTO, ATMEL EI OTA VASTUUTTA MISSÄÄN, JA KIISTÄÄ KAIKISTA NIMENOMAISISTA, OLETETTUISTA TAI LAINSÄÄTEISTÄ TAKUISTA TUOTTEIHAN LIITTYVÄSTÄ TAKUISTA, MUKAAN LUKIEN MUUTTA MUKAAN MYYNTIKELPOISUUDEN, KUITTAVUUSOSAKKUJEN OLOSUHTEEN TAKUUTA. ATMEL EI OLE MISSÄÄN TAPAUKSESSA VASTUUSSA MISTÄÄN SUORISTA, EPÄSUORISTA, SEURAUKSISTA, RANGAISTUSISTA, ERITYISISTÄ TAI SATUNNAISISTA VAHINGOISTA (MUKAANMUKAAN RAJOITTAMATTA VAHINGOISTA, JOTKA SYNTYVÄT TAI LIIKETOIMINNAN KESKEYTYMISESTÄ KÄYTTÖÖN TÄMÄ ASIAKIRJA, VAIKKA ATMELILLE ON ILMOITETTU TÄLLAISTEN VAHINGON MAHDOLLISUUDESTA.
Atmel ei takaa tämän asiakirjan sisällön tarkkuutta tai täydellisyyttä ja varaa oikeuden muuttaa teknisiä tietoja ja tuotekuvauksia milloin tahansa ilman erillistä ilmoitusta. Atmel ei sitoudu päivittämään tässä olevia tietoja. Ellei erikseen toisin mainita, Atmelin tuotteet eivät sovellu eivätkä niitä saa käyttää autosovelluksiin. Atmelin tuotteita ei ole tarkoitettu, valtuutettu tai taattu käytettäväksi komponentteina sovelluksissa, joiden tarkoituksena on tukea tai ylläpitää elämää.