Atmel

Atmel 8-bittinen AVR-mikro-ohjain 2/4/8K tavulla järjestelmän ohjelmoitavalla salamallasiru

 

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 Kokoonpano

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 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 Arkkitehtuuri

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. Yleiskäyttöinen

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.

Rekisteröidy

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

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ö

Kuva 4.5

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 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 Muistikartta 2

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 Sirutiedoissa 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

Kellojen 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ä. PCK-kello

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. Kellojärjestelmä

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

Kuva 6.4

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 Reset-logiikka

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 Kuva 8.4

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. Kuva 8.5

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 Vahtikoira

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

Kuva 10

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)

Kuva 10

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

RSTDISBL(1) • DWEN(1)

0 0
PUOV 1 0 0
DDOE RSTDISBL(1) • DWEN(1) 0 0
DDOV debugWire Transmit 0 0
PVOE 0 OC1B 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
SADE Analogisen tulon vastus 100
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
SADE Analogisen tulon vastus 100
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
SADE Analogisen tulon vastus 100
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ää.

Viitteet

Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *