Atmel

Atmel 8 bitų AVR mikrovaldiklis su 2/4/8K baitų sistemoje programuojama blykstelustas

 

Savybės

  • Didelio našumo, mažos galios AVR® 8 bitų mikrovaldiklis
  • Pažangi RISC architektūra
  • 120 galingų instrukcijų - dauguma vieno laikrodžio ciklo vykdymo
  • 32 x 8 bendrosios paskirties darbo registrai
  • Visiškai statinis veikimas
  • Nepastovi programa ir duomenų atmintys
  • 2/4 / 8K baitų sistemoje programuojamos programos atminties „Flash“
  • Ištvermė: 10,000 XNUMX rašymo / trynimo ciklų
  • 128/256/512 baitų sistemoje programuojamas EEPROM
  • Ištvermė: 100,000 XNUMX rašymo / trynimo ciklų
  • 128/256/512 baitų vidinis SRAM
  • Programavimo užraktas savarankiškai programuojančiai „Flash“ programai ir EEPROM duomenų saugumui

Periferinės savybės

  • 8 bitų laikmatis / skaitiklis su preskaleriu ir dviem PWM kanalais
  • 8 bitų didelės spartos laikmatis / skaitiklis su atskiru išankstinio skalavimo prietaisu
  • 2 aukšto dažnio PWM išėjimai su atskirais išėjimų palyginimo registrais
  • Programuojamas „Dead Time Generator“
  • USI - universali nuoseklioji sąsaja su paleidimo būsenos detektoriumi
  • 10 bitų ADC

4 vienkartiniai kanalai

2 diferencialinės ADC kanalų poros su programuojamu stiprinimu (1x, 20x)

Temperatūros matavimas

Programuojamas „Watchdog“ laikmatis su atskiru lusto osciliatoriumi

Lusto analoginis palygintuvas

Specialios mikrovaldiklio savybės

debugWIRE lustų derinimo sistema

Sistemoje programuojama per SPI prievadą

Išoriniai ir vidiniai pertraukimo šaltiniai

Mažos galios tuščiosios eigos, ADC triukšmo mažinimo ir išjungimo režimai

Patobulinta įjungimo atstatymo grandinė

Programuojama „Brown-out“ aptikimo grandinė

Vidinis kalibruotas osciliatorius

I / O ir paketai

Šešios programuojamos įvesties / išvesties linijos

8 kontaktų PDIP, 8 kontaktų SOIC, 20 blokelių QFN / MLF ir 8 kontaktų TSSOP (tik „ATtiny45 / V“)

Veiklos ttage
- 1.8 - 5.5 V, naudojant „ATtiny25V / 45V / 85V“
- 2.7 - 5.5 V, naudojant „ATtiny25 / 45/85“

Greičio klasė
- 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

Pramoninis temperatūros diapazonas

Mažas energijos suvartojimas

Aktyvusis režimas:

1 MHz, 1.8 V: 300 µA

Išjungimo režimas:

Smeigtukų konfigūracijos

Pinout ATtiny25 / 45/85 Konfigūracija

Smeigtukų aprašymai

VCC: Tiekimo ttage.
GND: Žemė.
Prievadas B (PB5:PB0): Prievadas B yra 6 bitų dvikryptis įvesties / išvesties prievadas su vidiniais ištraukiamaisiais rezistoriais (pasirenkama kiekvienam bitui). Prievado B išvesties buferiai pasižymi simetriškomis pavaros charakteristikomis su dideliu kriauklės ir šaltinio pajėgumu. Kaip įvestis, prievado B kaiščiai, kurie išorėje yra žemai ištraukti, tieks srovę, jei suaktyvinami traukimo rezistoriai. Prievado B kontaktai yra trijų būsenų, kai suaktyvėja atstatymo sąlyga, net jei laikrodis neveikia.

Uostas B taip pat atlieka įvairių specialių „ATtiny25 / 45/85“ funkcijų, išvardytų, funkcijas
„ATtiny25“ programuojamieji įvesties / išvesties prievadai PB3 ir PB4 (2 ir 3 kaiščiai) keičiami „ATtiny15“ suderinamumo režimu, kad būtų palaikomas atgalinis suderinamumas su „ATtiny15“.

RESET: iš naujo nustatykite įvestį. Žemas šio kaiščio lygis ilgiau nei minimalus impulso ilgis sugeneruos atstatymą, net jei laikrodis neveikia ir su sąlyga, kad atstatymo kaištis nebuvo išjungtas. Minimalus impulso ilgis nurodytas 21-4 lentelė 165 puslapyje. Trumpesni impulsai negarantuoja atstatymo.

Atstatymo kaištis taip pat gali būti naudojamas kaip (silpnas) įvesties / išvesties kaištis.

Baigėsiview

„ATtiny25 / 45/85“ yra mažos galios CMOS 8 bitų mikrovaldiklis, pagrįstas AVR patobulinta RISC architektūra. Vykdydamas galingas instrukcijas per vieną laikrodžio ciklą, „ATtiny25 / 45/85“ pasiekia pralaidumą, artėjantį 1 MIPS / MHz, leidžiant sistemos dizaineriui optimizuoti energijos suvartojimą, palyginti su apdorojimo greičiu.

Blokuoti schemą Blokinė schema

AVR šerdis sujungia turtingą instrukcijų rinkinį su 32 bendrosios paskirties darbo registrais. Visi 32 registrai yra tiesiogiai prijungti prie aritmetinės logikos bloko (ALU), leidžiančio pasiekti du nepriklausomus registrus vienu nurodymu, vykdomu per vieną laikrodžio ciklą. Gauta architektūra yra efektyvesnė kodo atžvilgiu, tuo pačiu pasiekdama iki dešimties kartų spartesnę spartą nei įprasti CISC mikrovaldikliai.

„ATtiny25 / 45/85“ suteikia šias funkcijas: 2/4 / 8K baitų sistemoje programuojamos „Flash“, 128/256/512 baitų EEPROM, 128/256/256 baitų SRAM, 6 bendrosios paskirties įvesties / išvesties linijas, 32 bendrąsias tiksliniai darbo registrai, vienas 8 bitų laikmatis / skaitiklis su palyginimo režimais, vienas 8 bitų didelės spartos laikmatis / skaitiklis, universali nuoseklioji sąsaja, vidiniai ir išoriniai pertraukikliai, 4 kanalų, 10 bitų ADC, programuojamas „Watchdog“ laikmatis su vidiniu Osciliatorius ir trys programinės įrangos pasirenkami energijos taupymo režimai. Laukimo režimu sustabdomas procesorius, o SRAM, laikmatis / skaitiklis, ADC, analoginis komparatorius ir pertraukimo sistema gali toliau veikti. Išjungimo režimas išsaugo registro turinį ir išjungia visas lusto funkcijas iki kito pertraukimo arba aparatinės įrangos atstatymo. ADC triukšmo mažinimo režimu sustabdomas procesorius ir visi įvesties / išvesties moduliai, išskyrus ADC, siekiant sumažinti perjungimo triukšmą ADC konversijų metu.

Prietaisas gaminamas naudojant „Atmel“ didelio tankio nepastovios atminties technologiją. „On-chip ISP Flash“ leidžia programuoti programos atmintį sistemoje per SPI nuosekliąją sąsają, naudojant įprastą nepastovios atminties programuotoją arba naudojant „On-chip“ įkrovos kodą, veikiantį AVR šerdyje.

„ATtiny25 / 45/85 AVR“ palaiko visas programų ir sistemos kūrimo įrankių rinkinys, įskaitant: „C“ kompiliatorius, makrokomandų surinkėjus, programų derintuvą / simuliatorius ir vertinimo rinkinius.

Apie išteklius

Išsamų kūrimo įrankių rinkinį, programų pastabas ir duomenų lapus galite atsisiųsti iš http://www.atmel.com/avr.

Kodas Pvzamples

Šioje dokumentacijoje yra paprastas kodas, pvzamples, kurios trumpai parodo, kaip naudotis įvairiomis įrenginio dalimis. Šie kodai, pvzampdarykime prielaidą, kad konkrečios dalies antraštė file yra įtrauktas prieš kompiliavimą. Atminkite, kad ne visi C kompiliatoriaus pardavėjai į antraštę įtraukia bitų apibrėžimus fileir pertraukimo valdymas C priklauso nuo kompiliatoriaus. Norėdami gauti daugiau informacijos, patvirtinkite tai naudodami C kompiliatoriaus dokumentus.

I / O registrų, esančių išplėstiniame įvesties / išvesties žemėlapyje, instrukcijos „IN“, „OUT“, „SBIS“, „SBIC“, „CBI“ ir „SBI“ turi būti pakeistos instrukcijomis, leidžiančiomis prieigą prie išplėstinio I / O. Paprastai tai reiškia „LDS“ ir „STS“ kartu su „SBRS“, „SBRC“, „SBR“ ir „CBR“. Atminkite, kad ne visuose AVR įrenginiuose yra išplėstinis įvesties / išvesties žemėlapis.

Talpinis jutiklinis jutiklis

Atmel QTouch Library yra paprastas naudoti sprendimas jautrioms Atmel AVR mikrovaldiklių sąsajoms. QTouch biblioteka apima QTouch® ir QMatrix® gavimo metodų palaikymą.

Jutiklinis jutimas lengvai pridedamas prie bet kurios programos susiejant „QTouch Library“ ir naudojant bibliotekos „Application Programming Interface“ (API) jutiklinius kanalus ir jutiklius. Tada programa paskambina API, kad gautų kanalo informaciją ir nustatytų jutiklinio jutiklio būseną.

„QTouch Library“ yra nemokama ir ją galima atsisiųsti iš „Atmel“. websvetainėje. Norėdami gauti daugiau informacijos ir išsamios informacijos apie įgyvendinimą, žr. QTouch bibliotekos vartotojo vadovą, kurį taip pat rasite iš Atmel websvetainę.

Duomenų saugojimas

Patikimumas Kvalifikacijos rezultatai rodo, kad numatomas duomenų išsaugojimo gedimų dažnis yra daug mažesnis nei 1 PPM per 20 metų 85 ° C temperatūroje arba 100 metų 25 ° C temperatūroje.

AVR procesoriaus branduolys

Įvadas

Šiame skyriuje apskritai aptariama AVR pagrindinė architektūra. Pagrindinė procesoriaus šerdies funkcija yra užtikrinti tinkamą programos vykdymą. Todėl centrinis procesorius turi turėti galimybę naudotis atmintimis, atlikti skaičiavimus, valdyti periferinius įrenginius ir valdyti pertraukimus.

Architektūrinisview Architektūra

Kad maksimaliai padidintų našumą ir lygiagretumą, AVR naudoja Harvardo architektūrą - su atskiromis atmintimis ir magistralėmis programai ir duomenims. Instrukcijos programos atmintyje vykdomos naudojant vieno lygio vamzdynus. Kol vykdoma viena instrukcija, kita instrukcija iš anksto gaunama iš programos atminties. Ši koncepcija leidžia vykdyti instrukcijas kiekviename laikrodžio cikle. Programos atmintis yra sistemoje perprogramuojama „Flash“ atmintis.

Greitos prieigos registras File yra 32 x 8 bitų bendrosios paskirties darbo registrai su vienu laikrodžio ciklo prieigos laiku. Tai leidžia vieno ciklo aritmetinio loginio vieneto (ALU) veikimą. Įprastoje ALU operacijoje iš registro išvedami du operandai File, operacija vykdoma, o rezultatas išsaugomas registre File- per vieną laikrodžio ciklą.

Šeši iš 32 registrų gali būti naudojami kaip trys 16 bitų netiesioginių adresų registro rodyklės duomenų erdvės adresavimui - tai leidžia efektyviai apskaičiuoti adresą. Vienas iš šių adreso rodyklių taip pat gali būti naudojamas kaip adreso rodyklė ieškant lentelių „Flash“ programos atmintyje. Šie pridėtų funkcijų registrai yra 16 bitų X-, Y- ir Z-registrai, aprašyti toliau šiame skyriuje.

ALU palaiko aritmetines ir logines operacijas tarp registrų arba tarp konstantos ir registro. ALU taip pat gali būti atliekamos vieno registro operacijos. Atlikus aritmetinę operaciją, būsenos registras atnaujinamas, kad atspindėtų informaciją apie operacijos rezultatą.

Programos srautą teikia sąlyginės ir besąlyginės šuolio ir skambučio instrukcijos, galinčios tiesiogiai nukreipti visą adreso erdvę. Dauguma AVR instrukcijų turi vieną 16 bitų žodžių formatą, tačiau yra ir 32 bitų instrukcijos.

Pertraukimų ir paprogramių skambučių metu grąžinimo adresas Programos skaitiklis (PC) saugomas „Stack“. „Stack“ yra efektyviai paskirstytas bendruose duomenyse SRAM, todėl „Stack“ dydį riboja tik bendras SRAM dydis ir SRAM naudojimas. Visos vartotojo programos turi inicializuoti SP „Reset“ rutinoje (prieš vykdant potvarkius ar pertraukimus). „Stack Pointer“ (SP) yra skaitymo / rašymo prieinamas įvesties / išvesties erdvėje. Prie duomenų SRAM galima lengvai pasiekti per penkis skirtingus adresavimo režimus, palaikomus AVR architektūroje.

Atminties vietos AVR architektūroje yra linijiniai ir įprasti atminties žemėlapiai.

Lankstus pertraukimo modulis turi savo valdymo registrus įvesties / išvesties erdvėje su papildomu visuotinio pertraukimo įgalinimo bitu būsenos registre. Visi pertraukimai turi atskirą pertraukimo vektorių lentelėje „Nutraukti vektorių“. Pertraukiamieji turi prioritetą pagal savo pertraukimo vektoriaus padėtį. Kuo žemesnis „Interrupt Vector“ adresas, tuo didesnis prioritetas.

Įvesties / išvesties atminties erdvėje yra 64 adresai procesoriaus periferinėms funkcijoms, kaip valdymo registrai, SPI ir kitos įvesties / išvesties funkcijos. Įvesties/išvesties atmintį galima pasiekti tiesiogiai arba kaip duomenų erdvės vietas, esančias po registro File, 0x20 - 0x5F.

ALU - aritmetinės logikos vienetas

Didelio našumo AVR ALU veikia tiesiogiai su visais 32 bendrosios paskirties darbo registrais. Per vieną laikrodžio ciklą atliekamos aritmetinės operacijos tarp bendrosios paskirties registrų arba tarp registro ir tiesioginio. ALU operacijos skirstomos į tris pagrindines kategorijas - aritmetines, logines ir bitų funkcijas. Kai kurie architektūros variantai taip pat suteikia galingą daugiklį, palaikantį tiek pasirašytą / nepasirašytą dauginimą, tiek dalinį formatą. Išsamų aprašymą rasite skyriuje „Instrukcijų rinkinys“.

Būsenos registras

Būsenos registre yra informacija apie paskutinį kartą atlikto aritmetinio nurodymo rezultatą. Ši informacija gali būti naudojama programos srautui keisti, norint atlikti sąlygines operacijas. Atkreipkite dėmesį, kad būsenos registras atnaujinamas atlikus visas ALU operacijas, kaip nurodyta instrukcijų rinkinio informacijoje. Tai daugeliu atvejų pašalins poreikį naudoti specialias palyginimo instrukcijas, todėl bus gaunamas greitesnis ir kompaktiškesnis kodas.

Būsenos registras nėra automatiškai saugomas įvedant pertraukimo režimą ir atkuriamas grįžus po pertraukos. Tai turi spręsti programinė įranga.

SREG - AVR būsenos registras

AVR būsenos registras - SREG - apibrėžiamas taip:

Bit 7 6 5 4 3 2 1 0
0x3F I T H S V N Z C SREG
Skaityti/Rašyti R/W R/W R/W R/W R/W R/W R/W R/W
Pradinė vertė 0 0 0 0 0 0 0 0

7 bitas - I: Visuotinio pertraukimo įgalinimas

Norėdami įjungti pertraukimus, turi būti nustatytas visuotinis pertraukimo įgalinimo bitas. Tada atskirų pertraukimų įjungimo valdymas atliekamas atskiruose valdymo registruose. Jei visuotinis pertraukimų įgalinimo registras išvalomas, nė vienas iš pertraukimų neįjungiamas, neatsižvelgiant į individualius pertraukimo įgalinimo nustatymus. I bitą išvalo aparatūra po to, kai įvyko pertraukimas, ir nustato RETI instrukcija, kad įjungtų vėlesnius pertraukimus. I bitą taip pat galima nustatyti ir išvalyti taikant SEI ir CLI instrukcijas, kaip aprašyta instrukcijų rinkinio nuorodoje.

6 bitai - T: bitų kopijų saugojimas

Bitų kopijavimo instrukcijos BLD (Bit LoaD) ir BST (Bit STore) naudoja T bitą kaip valdomo bitų šaltinį arba paskirtį. Šiek tiek iš registro registre File gali būti nukopijuotas į T naudojant BST instrukciją, o šiek tiek T gali būti nukopijuotas į bitą registro registre. File pagal BLD instrukciją.

5 bitai - H: pusės nešimo vėliava

„Half Carry“ vėliava H žymi „Half Carry“ kai kuriose aritmetinėse operacijose. „Half Carry“ naudinga atliekant BCD aritmetiką. Išsamios informacijos ieškokite „Instrukcijų rinkinio apraše“.

4 bitas – S: ženklo bitas, S = N ⊕ V

S bitas visada yra išskirtinis arba yra tarp neigiamos žymos N ir dviejų papildomos perpildymo vėliavos V. Išsamios informacijos ieškokite instrukcijų rinkinio aprašyme.

3 bitas - V: Dviejų papildomų perpildymo vėliava

Dviejų komplemento perpildymo vėliava V palaiko dviejų komplemento aritmetiką. Išsamios informacijos ieškokite „Instrukcijų rinkinio aprašyme“.

2 bitas - N: neigiama vėliava

Neigiama vėliava N rodo neigiamą rezultatą atliekant aritmetinę ar loginę operaciją. Išsamios informacijos ieškokite „Instrukcijų rinkinio apraše“.

1 bitas - Z: Nulinė vėliava

Nulinė vėliava Z rodo nulinį rezultatą atliekant aritmetinę ar loginę operaciją. Išsamios informacijos ieškokite „Instrukcijų rinkinio apraše“.

0 bitas - C: nešiojimo vėliava

Nešiojimo vėliava C nurodo aritmetinės ar loginės operacijos nešimą. Išsamios informacijos ieškokite „Instrukcijų rinkinio apraše“.

Bendrosios paskirties registras File

Registras File yra optimizuotas AVR Enhanced RISC instrukcijų rinkiniui. Norint pasiekti reikiamą našumą ir lankstumą, registras palaiko šias įvesties/išvesties schemas File:

Vienas 8 bitų išvesties operandas ir vienas 8 bitų rezultato įvestis

Du 8 bitų išvesties operandai ir vienas 8 bitų rezultatų įvestis

Du 8 bitų išvesties operandai ir vienas 16 bitų rezultatų įvestis

Vienas 16 bitų išvesties operandas ir vienas 16 bitų rezultato įvestis

4-2 pav parodo 32 bendrosios paskirties darbo registrų struktūrą CPU. Bendroji paskirtis

Kaip parodyta 4-2 pav, kiekvienam registrui taip pat priskiriamas duomenų atminties adresas, susiejantis juos tiesiai į pirmąsias 32 vartotojo duomenų erdvės vietas. Nors ši atminties struktūra nėra fiziškai įdiegta kaip SRAM vietos, ji suteikia didelį lankstumą prieigai prie registrų, nes X, Y ir Z žymeklio registrai gali būti nustatyti taip, kad indeksuotų bet kurį registrą. file.Dauguma registre veikiančių instrukcijų File turi tiesioginę prieigą prie visų registrų, o dauguma jų yra vieno ciklo instrukcijos.

X registras, Y registras ir Z registras

Registrai R26..R31 turi keletą papildomų funkcijų prie jų bendrosios paskirties. Šie registrai yra 16 bitų adresų rodikliai, skirti netiesiogiai adresuoti duomenų erdvę. Trys netiesioginiai adresų registrai X, Y ir Z apibrėžiami taip, kaip aprašyta 4-3 pav.

Registruotis

Skirtingais adresavimo režimais šie adresų registrai turi fiksuoto poslinkio, automatinio didinimo ir automatinio mažinimo funkcijas (daugiau informacijos žr. Instrukcijų rinkinio nuorodoje).

„Stack Pointer“

„Stack“ daugiausia naudojamas laikiniems duomenims saugoti, vietiniams kintamiesiems ir grąžinimo adresams po pertraukų ir paprogramių skambučių. „Stack Pointer Register“ visada rodo į „Stack“ viršų. Atminkite, kad „Stack“ yra įgyvendinamas kaip augantis iš didesnės atminties vietų į mažesnės atminties vietas. Tai reiškia, kad komanda „Stack PUSH“ sumažina „Stack Pointer“.

„Stack Pointer“ rodo į duomenų SRAM „Stack“ sritį, kurioje yra paprogramės ir „Interrupt Stacks“. Šią duomenų kaupimo vietą duomenų SRAM turi nustatyti programa, prieš vykdant bet kokius paprogramės iškvietimus arba įjungiant pertraukimus. „Stack Pointer“ turi būti nustatytas virš 0x60. „Stack Pointer“ mažinamas vienu, kai duomenys stumiami į „Stack“ su PUSH instrukcija, ir mažinami dviem, kai grąžinimo adresas yra stumiamas į „Stack“ su paprograminiu skambučiu ar pertraukimu. „Stack Pointer“ padidinamas vienu, kai duomenys pateikiami iš „Stack“ su POP instrukcija, ir jis yra padidinamas dviem, kai duomenys yra rodomi iš „Stack“ grįžtant iš paprogramės RET arba grįžtant po pertraukimo RETI.

AVR „Stack Pointer“ yra įgyvendinamas kaip du 8 bitų registrai įvesties / išvesties erdvėje. Faktiškai naudojamų bitų skaičius priklauso nuo įgyvendinimo. Atkreipkite dėmesį, kad kai kuriose AVR architektūros versijose duomenų erdvė yra tokia maža, kad reikia tik SPL. Tokiu atveju SPH registro nebus.

SPH ir SPL - „Stack Pointer Register“

Bit 15 14 13 12 11 10 9 8
0x3E SP15 SP14 SP13 SP12 SP11 SP10 SP9 SP8 SPH
0x3D SP7 SP6 SP5 SP4 SP3 SP2 SP1 SP0 SPL
7 6 5 4 3 2 1 0
Skaityti/Rašyti R/W R/W R/W R/W R/W R/W R/W R/W
Skaityti/Rašyti R/W R/W R/W R/W R/W R/W R/W R/W
Pradinė vertė RAMENDAS RAMENDAS RAMENDAS RAMENDAS RAMENDAS RAMENDAS RAMENDAS RAMENDAS
Pradinė vertė RAMENDAS RAMENDAS RAMENDAS RAMENDAS RAMENDAS RAMENDAS RAMENDAS RAMENDAS

Nurodymų vykdymo laikas

Šiame skyriuje aprašomos bendrosios prieigos laiko sąvokos, skirtos komandų vykdymui. AVR CPU valdo CPU laikrodis clkCPU, tiesiogiai generuojamas iš pasirinkto lusto laikrodžio šaltinio. Vidinis laikrodžio skirstymas nenaudojamas.

4.4 pav

4-4 pav parodytas lygiagretus instrukcijų gavimas ir instrukcijų vykdymas, įgalintas Harvardo architektūros ir greitos prieigos registro File koncepcija. Tai yra pagrindinė konvejerių koncepcija, skirta gauti iki 1 MIPS per MHz su atitinkamais unikaliais funkcijų pagal kainą, funkcijų pagal laikrodžius ir funkcijas vienam galios vienetui.

4-5 pav. Vieno ciklo ALU veikimas

4.5 pav

Atstatyti ir pertraukti tvarkymą

AVR teikia kelis skirtingus pertraukimo šaltinius. Šie pertraukimai ir atskiras „Reset Vector“ turi atskirą programos vektorių programos atminties vietoje. Visiems pertraukimams priskiriami individualūs įgalinimo bitai, kurie turi būti parašyti logiškai ir kartu su visuotiniu pertraukimo įjungimo bitu būsenos registre, kad būtų įjungtas pertraukimas.

Mažiausi programos atminties adresai pagal numatytuosius nustatymus apibrėžiami kaip „Reset“ ir „Interrupt Vectors“. Visas vektorių sąrašas parodytas „Pertraukimai“, 48 psl. Sąraše taip pat nustatomi skirtingų pertraukimų prioritetiniai lygiai. Kuo žemesnis adresas, tuo didesnis yra prioriteto lygis. RESET turi aukščiausią prioritetą, o kitas yra INT0 - išorinio pertraukimo užklausa 0.

Atsiradus pertraukai, visuotinio pertraukimo įgalinimo I bitai išvalomi ir visi pertraukimai išjungiami. Vartotojo programinė įranga gali įrašyti logiką į I bitą, kad įgalintų įdėtus pertraukimus. Visi įjungti pertraukimai gali nutraukti dabartinę pertraukimo tvarką. I bitas automatiškai nustatomas, kai vykdoma „Return from Interrupt“ instrukcija - RETI.

Iš esmės yra dviejų tipų pertraukimai. Pirmąjį tipą sukelia įvykis, nustatantis pertraukimo žymę. Šių pertraukimų atveju programos skaitiklis vektoriuojamas prie faktinio pertraukimo vektoriaus, kad būtų įvykdyta pertraukimų tvarkymo rutina, o aparatinė įranga išvalo atitinkamą pertraukimo žymą. Pertraukiamąsias vėliavas taip pat galima išvalyti užrašant loginę žymos bitų poziciją (-as), kurią reikia išvalyti. Jei pertraukimo sąlyga įvyksta išvalius atitinkamą pertraukimo įgalinimo bitą, bus nustatyta pertraukimo vėliava ir ji bus prisiminta tol, kol bus įjungtas pertraukimas arba žymėjimas bus išvalytas programine įranga. Panašiai, jei viena ar daugiau pertraukimo sąlygų įvyksta išvalius visuotinio pertraukimo įgalinimo bitą, bus nustatyta atitinkama (-os) pertraukimo vėliava (-os) ir jos bus įsimenamos, kol bus nustatytas visuotinio pertraukimo įgalinimo bitas, ir bus vykdomos prioriteto tvarka.

Antrojo tipo pertraukimai suveiks tol, kol bus nutraukimo sąlyga. Šie pertraukikliai nebūtinai turi pertraukimo vėliavas. Jei pertraukimo sąlyga išnyksta prieš įjungiant pertraukimą, pertraukimas nebus suaktyvintas.

Kai AVR išeis iš pertraukimo, jis visada grįš į pagrindinę programą ir atliks dar vieną nurodymą prieš atliekant bet kokį laukiantį pertraukimą.

Atminkite, kad būsenos registras nėra automatiškai saugomas įvedant pertraukimo tvarką ir nėra atkuriamas grįžus iš pertraukimo. Tai turi spręsti programinė įranga.

Naudojant CLI instrukciją pertraukoms išjungti, pertraukos bus nedelsiant išjungtos. Po CLI nurodymo pertraukimas nebus vykdomas, net jei jis įvyks kartu su CLI instrukcija. Šis buvęsample parodo, kaip tai gali būti naudojama siekiant išvengti pertraukų per EEPROM įrašymo laiką.

Surinkimo kodas Example
r16, SREG; išsaugoti SREG vertę

cli ; išjungti pertraukimus laiko seka

sbi EECR, EEMPE ; pradėti EEPROM rašymą

sbi EECR, EEPE

iš SREG, r16 ; atkurti SREG reikšmę (I bitas)

C kodas Pvzample
char cSREG;

cSREG = SREG; /* saugoti SREG reikšmę */

/* išjungti pertraukimus laiko sekoje */

_CLI ();

EECR |= (1<

EEBR | = (1 <

SREG = cSREG; /* atkurti SREG reikšmę (I bitas) */

Naudojant SEI instrukciją pertraukoms įjungti, instrukcija po SEI bus vykdoma prieš bet kokius nepertraukiamus pertraukimus, kaip parodyta šiameample.

Surinkimo kodas Example
sei ; nustatykite Global Interrupt Enable

miegoti; įeikite į miegą, laukdami pertraukimo

; pastaba: įsijungs miego būsena prieš laukiant

; pertraukti

C kodas Pvzample
_SEI(); /* nustatyti visuotinio pertraukimo įgalinimą */

_SLEEP(); /* įeikite į miegą, laukite pertraukimo */

/ * pastaba: įsijungs miego režimas prieš laukiantį pertraukimą (-us) * /

Pertraukiamas atsakymo laikas

Visų įjungtų AVR pertraukimų vykdymo atsakymas yra mažiausiai keturi laikrodžio ciklai. Po keturių laikrodžio ciklų yra vykdomas programos Vector Vector adresas, skirtas faktinei pertraukimų tvarkymo rutinai. Per šį keturių laikrodžių ciklo laikotarpį Programos skaitiklis stumiamas ant kamino. Vektorius paprastai yra šuolis į pertraukimo rutiną, ir šiam šuoliui reikia trijų laikrodžio ciklų. Jei vykdant kelių ciklų komandą įvyksta pertrauka, ši instrukcija baigiama prieš įteikiant pertraukimą. Jei pertraukimas įvyksta, kai MCU veikia miego režimu, pertraukimo vykdymo atsako laikas pailgėja keturiais laikrodžio ciklais. Šis padidėjimas pridedamas prie paleidimo laiko iš pasirinkto miego režimo.

Grįžimas nuo pertraukimo valdymo trunka keturis laikrodžio ciklus. Per šiuos keturis laikrodžio ciklus programos skaitiklis (du baitai) iššoka atgal iš „Stack“, „Stack Pointer“ padidinamas dviem ir nustatomas „I-bit“ SREG.

AVR prisiminimai

Šiame skyriuje aprašomi skirtingi „ATtiny25 / 45/85“ prisiminimai. AVR architektūroje yra dvi pagrindinės atminties vietos: duomenų atmintis ir programos atminties vieta. Be to, „ATtiny25 / 45/85“ yra duomenų saugojimui skirta „EEPROM“ atmintis. Visos trys atminties erdvės yra tiesinės ir taisyklingos.

Sistemoje perprogramuojama „Flash“ programos atmintis

„ATtiny25 / 45/85“ yra 2/4 / 8K baitų „On-chip“ sistemoje perprogramuojama „Flash“ atmintis programoms saugoti. Kadangi visos AVR instrukcijos yra 16 arba 32 bitų pločio, „Flash“ yra sutvarkyta kaip 1024/2048/4096 x 16.

„Flash“ atmintis turi ne mažiau kaip 10,000 25 rašymo / ištrynimo ciklų. „ATtiny45 / 85/10“ programos skaitiklis (PC) yra 11/12/1024 bitų pločio, taip sprendžiant programos „2048/4096/XNUMX“ atminties vietas. „Atminties programa- ming “147 puslapyje yra išsamus „Flash“ duomenų serijinio atsisiuntimo naudojant SPI kaiščius aprašymas.

Nuolatinės lentelės gali būti priskirtos visoje programos atminties adreso erdvėje (žr. LPM - programos programos atminties nurodymų aprašymas).

5-1 pav. Programos atminties žemėlapis Atminties žemėlapis

SRAM duomenų atmintis

5-2 pav parodo, kaip organizuota „ATtiny25 / 45/85 SRAM“ atmintis.

Apatinės 224/352/607 duomenų atminties vietos adresuoja ir registrui File, įvesties/išvesties atminties ir vidinių duomenų SRAM. Pirmosios 32 vietos yra skirtos registrui File, kitos 64 vietos yra standartinė įvesties/išvesties atmintis, o paskutinės 128/256/512 vietos - vidiniai SRAM duomenys.

Penki skirtingi duomenų atminties adresavimo režimai: tiesioginis, netiesioginis su poslinkiu, netiesioginis, netiesioginis su išankstiniu sumažėjimu ir netiesioginis su padidėjimu. Registre File, registrai R26 - R31 turi netiesioginio adresavimo rodyklių registrus.

Tiesioginis adresavimas pasiekia visą duomenų erdvę.

„Netiesioginis su poslinkiu“ režimas pasiekia 63 adresų vietas nuo pagrindinio adreso, nurodyto Y- arba Z- registre.

Naudojant registro netiesioginio adresavimo režimus su automatiniu išankstiniu mažinimu ir padidinimu, adresų registrai X, Y ir Z mažinami arba didinami.

32 bendrosios paskirties darbiniai registrai, 64 I/O registrai ir 128/256/512 baitų vidinių duomenų SRAM ATtiny25/45/85 yra pasiekiami visais šiais adresavimo režimais. Registras File yra aprašytas „Gen- eralinis paskirties registras File“10 puslapyje.

5-2 pav. Duomenų atminties žemėlapis Atminties žemėlapis 2

Prieiga prie duomenų atminties Laikai

Šiame skyriuje aprašomos bendrosios prieigos prie vidinės atminties laiko sąvokos. Prieiga prie vidinių duomenų SRAM atliekama dviem clkCPU ciklais, kaip aprašyta 5-3 pav.

5-3 pav. Lusto duomenų SRAM prieigos ciklai Dėl lusto duomenų EEPROM duomenų atmintis

ATtiny25 / 45/85 yra 128/256/512 baitų duomenų EEPROM atmintis. Jis sutvarkytas kaip atskira duomenų erdvė, kurioje galima skaityti ir rašyti pavienius baitus. EEPROM patvarumas yra mažiausiai 100,000 XNUMX rašymo / ištrynimo ciklų. Prieiga tarp EEPROM ir procesoriaus aprašyta toliau, nurodant EEPROM adresų registrus, EEPROM duomenų registrą ir EEPROM valdymo registrą. Išsamesnės informacijos žr „Nuoseklus atsisiuntimas“ 151 puslapyje.

EEPROM skaitymo / rašymo prieiga

EEPROM prieigos registrus galima pasiekti įvesties / išvesties erdvėje.

EEPROM rašymo prieigos laikas nurodytas 5-1 lentelė 21 puslapyje. Tačiau automatinio laiko funkcija leidžia vartotojo programinei įrangai aptikti, kada galima įrašyti kitą baitą. Jei vartotojo kode yra instrukcijos, kurios įrašo EEPROM, reikia imtis tam tikrų atsargumo priemonių. Tikėtina, kad stipriai filtruotuose maitinimo šaltiniuose VCC kils arba lėtai įsijungs

Maitinimas aukštyn/žemyn. Dėl to prietaisas tam tikrą laiką veikia esant tūriuitage mažesnis nei nurodytas kaip minimalus naudojamas laikrodžio dažnis. Pamatyti „EEPROM korupcijos prevencija“, 19 psl informacijos, kaip išvengti problemų šiose situacijose.

Norint išvengti netyčinio EEPROM rašymo, reikia laikytis specialios rašymo procedūros. Atsižvelgti į „Atominė Baitų programavimas “17 puslapyje ir „Padalinto baito programavimas“ 17 puslapyje išsamesnės informacijos apie tai.

Perskaičius EEPROM, procesorius sustabdomas keturiems laikrodžio ciklams, kol bus vykdoma kita instrukcija. Parašius EEPROM, procesorius sustabdomas dviem laikrodžio ciklais, kol bus vykdoma kita instrukcija.

Atominio baito programavimas

Atominio baito programavimo naudojimas yra paprasčiausias režimas. Rašydamas baitą EEPROM, vartotojas turi įrašyti adresą į EEAR registrą ir duomenis į EEDR registrą. Jei EEPMn bitai lygūs nuliui, parašius EEPE (per keturis ciklus po to, kai parašyta EEMPE), bus ištrinta / įrašyta. Tiek ištrinimo, tiek įrašymo ciklas atliekamas vienu veiksmu, o bendras programavimo laikas nurodomas 5-1 lentelė 21 puslapyje. EEPE bitas lieka nustatytas tol, kol bus baigtos ištrynimo ir įrašymo operacijos. Kol įrenginys užimtas programavimu, kitų EEPROM operacijų atlikti negalima.

Padalinto baito programavimas

Ištrynimo ir rašymo ciklą galima padalyti į dvi skirtingas operacijas. Tai gali būti naudinga, jei sistemai reikalingas trumpas prieigos laikas tam tikrą ribotą laiką (paprastai, jei maitinimo šaltinio ttage krinta). Norėdami pasinaudoti tagTaikant šį metodą, reikalaujama, kad įrašytos vietos būtų ištrintos prieš atliekant rašymo operaciją. Bet kadangi ištrynimo ir rašymo operacijos yra padalytos, tai galima atlikti, kai sistema leidžia atlikti svarbias laiko operacijas (paprastai po įjungimo).

Ištrinti

Norėdami ištrinti baitą, adresas turi būti parašytas EEAR. Jei EEPMn bitai yra 0b01, parašius EEPE (per keturis ciklus po to, kai parašyta EEMPE), bus suaktyvinta tik trynimo operacija (programavimo laikas nurodytas 5-1 lentelė 21 psl). EEPE bitai lieka nustatyti tol, kol baigsis ištrynimo operacija. Kol įrenginys užimtas programavimu, negalima atlikti jokių kitų EEPROM operacijų.

Rašyti

Norėdami parašyti vietą, vartotojas turi įrašyti adresą į EEAR ir duomenis į EEDR. Jei EEPMn bitai yra 0b10, parašius EEPE (per keturis ciklus po EEMPE parašymo) bus suaktyvinta tik rašymo operacija (programavimo laikas nurodytas 5-1 lentelė 21 puslapyje). EEPE bitai lieka nustatyti tol, kol baigsis rašymo operacija. Jei įrašymo vieta nebuvo ištrinta prieš rašant, saugomi duomenys turi būti laikomi prarastais. Kol įrenginys užimtas programavimu, jokių kitų EEPROM operacijų atlikti negalima.

Kalibruotas osciliatorius naudojamas EEPROM prieigoms nustatyti. Įsitikinkite, kad osciliatoriaus dažnis atitinka reikalavimus, aprašytus XNUMX skyriuje „OSCCAL - osciliatorių kalibravimo registras“ 31 puslapyje.

Šis kodas, pvzamples rodo vieną rinkinį ir vieną C funkciją, skirtą EEPROM ištrinti, įrašyti arba atominiu būdu įrašyti. Buvęsampdaroma prielaida, kad pertraukimai yra valdomi (pvz., išjungiant pertraukimus visame pasaulyje), kad vykdant šias funkcijas nebūtų jokių pertraukimų.

Surinkimo kodas Example
EEPROM_write:

; Palaukite, kol baigsis ankstesnis rašymas

sbic EECR,EEPE

rjmp EEPROM_write

; Nustatykite programavimo režimą

ldi        r16, (0<<EEPM1)|(0<<EEPM0)

iš EECR, r16

; Nustatykite adresą (r18: r17) adresų registre

iš EEARH, r18

iš EEARL, r17

; Parašykite duomenis (r19) į duomenų registrą

iš EEDR, r19

; Parašykite logišką EEMPE

sbi EECR, EEMPE

; Pradėkite „eeprom“ rašymą nustatydami EEPE

sbi EECR,EEPE

ret

C kodas Pvzample
void EEPROM_write (nepasirašytas char ucAddress, nepasirašytas simbolis ucData)

{

/* Palaukite, kol bus baigtas ankstesnis rašymas */ while(EECR & (1<

;

/* Nustatyti programavimo režimą */

EEBR = (0 <

/ * Sukurkite adresų ir duomenų registrus * / EEAR = ucAddress;

EEDR = ucData;

/* Parašykite loginį į EEMPE */

EEBR | = (1 <

/ * Pradėkite „eeprom“ rašymą nustatydami EEPE * /

EEBR | = (1 <

}

Kitas kodas, pvzampparodytos EEPROM skaitymo surinkimo ir C funkcijos. Buvęsampdaroma prielaida, kad pertraukimai yra valdomi taip, kad šių funkcijų vykdymo metu nebūtų jokių pertraukimų.

Surinkimo kodas Example
EEPROM_read:

; Palaukite, kol baigsis ankstesnis rašymas

sbic EECR,EEPE

rjmp EEPROM_read

; Nustatykite adresą (r18: r17) adresų registre

iš EEARH, r18

iš EEARL, r17

; Pradėkite skaityti „eeprom“ rašydami EERE

sbi EECR,EERE

; Skaityti duomenis iš duomenų registro

r16,EEDR

ret

C kodas Pvzample
unsigned char EEPROM_read(nesigned char ucAddress)

{

/ * Palaukite, kol baigsis ankstesnis rašymas * /

o (EECR & (1 <

;

/ * Nustatykite adresų registrą * / EEAR = ucAddress;

/* Pradėkite eeprom skaitymą parašydami EERE */

EEBR | = (1 <

/ * Grąžinti duomenis iš duomenų registro * /

grąžinti EEDR;

}

EEPROM korupcijos prevencija

Mažo VCC laikotarpiais EEPROM duomenys gali būti sugadinti, nes tiekimo apimtistage yra per žemas, kad CPU ir EEPROM tinkamai veiktų. Šios problemos yra tokios pačios kaip plokštės lygio sistemose, kuriose naudojamas EEPROM, ir turėtų būti taikomi tie patys dizaino sprendimai.

EEPROM duomenų sugadinimą gali sukelti dvi situacijos, kai ttage yra per žemas. Pirma, įprastai įrašymo į EEPROM sekai reikalingas minimalus tūristage, kad tinkamai veiktų. Antra, pats centrinis procesorius gali neteisingai vykdyti komandas, jei tiekimo ttage yra per žemas.

Laikantis šios dizaino rekomendacijos, lengvai galima išvengti EEPROM duomenų sugadinimo:

Laikykite AVR RESET aktyvų (žemą) esant nepakankamam maitinimo šaltiniuitage. Tai galima padaryti įjungus vidinį „Brown-out Detector“ (BOD). Jei vidinio BOD aptikimo lygis neatitinka

reikiamo aptikimo lygio, galima naudoti išorinę žemo VCC atstatymo apsaugos grandinę. Jei atstatymas įvyksta vykstant rašymo operacijai, įrašymo operacija bus baigta, jei maitinimo šaltinio ttage pakanka.

I / O atmintis

„ATtiny25 / 45/85“ įvesties / išvesties erdvės apibrėžimas parodytas „Registracijos santrauka“, 200 psl.

Visi „ATtiny25 / 45/85“ įvesties / išvesties įrenginiai ir išoriniai įrenginiai dedami į įvesties / išvesties erdvę. Į visas įvesties / išvesties vietas galima patekti vadovaujantis LD / LDS / LDD ir ST / STS / STD instrukcijomis, perduodant duomenis tarp 32 bendrosios paskirties darbo registrų ir įvesties / išvesties vietos. Įvesties / išvesties registrai, esantys adresų diapazone 0x00 - 0x1F, yra tiesiogiai prieinami bitais, naudojant SBI ir CBI instrukcijas. Šiuose registruose pavienių bitų vertę galima patikrinti naudojant SBIS ir SBIC instrukcijas. Norėdami gauti daugiau informacijos, žiūrėkite instrukcijų rinkinio skyrių. Naudojant I / O komandas IN ir OUT, reikia naudoti įvesties / išvesties adresus 0x00 - 0x3F. Kreipiantis į I / O registrus kaip duomenų erdvę, naudojant LD ir ST instrukcijas, prie šių adresų reikia pridėti 0x20.

Kad būtų suderinamumas su būsimais įrenginiais, rezervuoti bitai turėtų būti užrašyti iki nulio, jei prieinami. Niekada nereikėtų rašyti rezervuotų įvesties / išvesties atminties adresų.

Kai kurios būsenos vėliavos išvalomos parašius joms loginę. Atkreipkite dėmesį, kad CBI ir SBI instrukcijos veiks tik nurodytu bitu, todėl jas galima naudoti registruose, kuriuose yra tokios būsenos žymos. CBI ir SBI instrukcijos veikia tik su registrais nuo 0x00 iki 0x1F.

Įvesties / išvesties ir periferinių įrenginių valdymo registrai paaiškinti vėlesniuose skyriuose.

Registro aprašymas

EEARH - EEPROM adresų registras

Bit 7 6 5 4 3 2 1 0
0x1F EAR8 AUKŠTAS
Skaityti/Rašyti R R R R R R R R/W
Pradinė vertė 0 0 0 0 0 0 0 X/0

7 bitai: 1 - Res: rezervuoti bitai

Šie bitai yra skirti naudoti ateityje ir visada bus skaitomi kaip nulis.

Bitai 0 - EEAR8: EEPROM adresas

Tai yra reikšmingiausias EEPROM adreso bitas ATtiny85. Įrenginiuose, kuriuose yra mažiau EEPROM, ty ATtiny25 / ATtiny45, šis bitas yra rezervuotas ir visada bus nulis. Pradinė EEPROM adresų registro (EEAR) reikšmė nėra apibrėžta, todėl prieš pasiekiant EEPROM reikia parašyti tinkamą vertę.

EEARL - EEPROM adresų registras

Bit

0x1E EAR7 EAR6 EAR5 EAR4 EAR3 EAR2 EAR1 EAR0 EEARL
Galinis / rašomasis R/W R/W R/W R/W R/W R/W R/W R/W
Pradinė vertė X X X X X X X X

7 bitas - EEAR7: EEPROM adresas

Tai yra reikšmingiausias „ATtiny45“ EEPROM adreso bitas. Įrenginiuose, kuriuose yra mažiau EEPROM, ty ATtiny25, šis bitas yra rezervuotas ir visada bus nulis. Pradinė EEPROM adresų registro (EEAR) vertė nėra apibrėžta, todėl prieš prisijungiant prie EEPROM reikia parašyti tinkamą vertę.

Bitai 6: 0 - EEAR [6: 0]: EEPROM adresas

Tai yra (maži) EEPROM adresų registro bitai. EEPROM duomenų baitai yra tiesiškai adresuojami 0… (128/256 / 512-1) diapazone. Pradinė EEAR vertė nėra apibrėžta, todėl prieš prisijungiant prie EEPROM reikia užrašyti tinkamą vertę.

EEDR - EEPROM duomenų registras

Bit 7 6 5 4 3 2 1 0
0x1D EEDR7 EEDR6 EEDR5 EEDR4 EEDR3 EEDR2 EEDR1 EEDR0 EEDR
Skaityti/Rašyti R/W R/W R/W R/W R/W R/W R/W R/W
Pradinė vertė 0 0 0 0 0 0 0 0

Atliekant EEPROM rašymo operaciją, EEDR registre yra duomenys, kurie turi būti įrašyti EEPROM EARP registro nurodytu adresu. Atliekant EEPROM skaitymo operaciją, EEDR yra duomenys, nuskaityti iš

EEPROM EARP nurodytu adresu.

 

5.5.4 EECR - EEPROM kontrolės registras

7 6 5 bitai 4 3 2 1 0
0x1C        – EEPM1 EEPM0 BAIGUS EEMPE EEPE ČIA EEBR
Skaityti / rašyti R R R / W R/W R/W R/W R/W R/W
Pradinė vertė 0 0 X X 0 0 X 0

7 bitas - Res: rezervuotas bitas

Šis bitas yra skirtas naudoti ateityje ir visada bus skaitomas kaip 0 ATtiny25 / 45/85. Norėdami suderinti su būsimais AVR įrenginiais, visada įrašykite šį bitą į nulį. Perskaitę, užmaskuokite šią dalelę.

6 bitas - Res: rezervuotas bitas

Šis bitas yra rezervuotas ATtiny25 / 45/85 ir visada bus skaitomas kaip nulis.

5: 4 bitai - EEPM [1: 0]: EEPROM programavimo režimo bitai

EEPROM programavimo režimo bitų nustatymas apibrėžia, kuris programavimo veiksmas bus suaktyvintas rašant EEPE. Duomenis galima užprogramuoti per vieną atominę operaciją (ištrinti seną reikšmę ir užprogramuoti naują vertę) arba suskaidyti ištrynimo ir rašymo operacijas į dvi skirtingas operacijas. Įvairių režimų programavimo laikas parodytas 5-1 lentelė. Kol EEPE nustatyta, bet koks rašymas į EEPMn bus ignoruojamas. Atstatymo metu EEPMn bitai bus atstatyti į 0b00, nebent EEPROM užimtas programavimas.

5-1 lentelė. EEPROM režimo bitai

EEPM1 EEPM0 Programavimo laikas Operacija
0 0 3.4 ms Ištrinti ir įrašyti per vieną operaciją (atominė operacija)
0 1 1.8 ms Tik ištrinti
1 0 1.8 ms Tik rašyti
1 1 Rezervuotas naudojimui ateityje

3 bitas - EERIE: EEPROM Ready Interrupt Enable

Parašius EERIE į vieną, įjungiamas EEPROM parengties pertraukimas, jei nustatytas I bitas SREG. Parašius EERIE į nulį, sutrinka pertraukimas. „EEPROM Ready Interrupt“ generuoja nuolatinį pertraukimą, kai nepastovi atmintis yra paruošta programuoti.

2 bitas - EEMPE: įjungti EEPROM magistro programą

EEMPE bitai nustato, ar EEPE rašymas vienam turės poveikį, ar ne.

Kai nustatoma EEMPE, nustatant EEPE per keturis laikrodžio ciklus, EEPROM bus užprogramuota pasirinktu adresu. Jei EEMPE yra nulis, EEPE nustatymas neturės jokio poveikio. Kai programinė įranga užrašė EEMPE vienai, aparatūra išvalo bitą iki nulio po keturių laikrodžio ciklų.

1 bitas - EEPE: EEPROM programa įgalinta

EEPROM programos įgalinimo signalas EEPE yra programavimo įgalinimo signalas EEPROM. Kai parašoma EEPE, EEPROM bus užprogramuota pagal EEPMn bitų nustatymą. EEMPE bitas turi būti parašytas vienam, kol loginis nėra parašytas EEPE, kitaip EEPROM rašymas nevyksta. Praėjus rašymo prieigos laikui, aparatūra išvalo EEPE bitą. Nustačius EEPE, procesorius sustabdomas dviem ciklais, kol bus vykdoma kita instrukcija.

0 bitas - EERE: EEPROM skaitymo įgalinimas

EEPROM skaitymo įgalinimo signalas - EERE - yra EEPROM skaitymo strobografija. Kai EEAR registre nustatomas teisingas adresas, EERE bitas turi būti užrašytas į vieną, kad suaktyvintų EEPROM skaitymą. EEPROM skaitymo prieigai reikalinga viena instrukcija, o prašomi duomenys pasiekiami nedelsiant. Perskaičius EEPROM, procesorius sustabdomas keturiems ciklams, kol bus vykdoma kita instrukcija. Prieš pradėdamas skaitymo operaciją, vartotojas turėtų apklausti EEPE bitą. Jei vyksta rašymo operacija, negalima nei perskaityti EEPROM, nei pakeisti EIVT registro.

Sistemos laikrodžio ir laikrodžio parinktys

Laikrodžių sistemos ir jų paskirstymas

Laikrodžio paskirstymas

Procesoriaus laikrodis

CPU laikrodis nukreipiamas į sistemos dalis, susijusias su AVR branduolio veikimu. PvzampTokie moduliai yra bendrosios paskirties registras File, būsenos registras ir duomenų atmintis, kurioje yra kamino žymeklis. CPU laikrodžio sustabdymas neleidžia šerdžiai atlikti bendrų operacijų ir skaičiavimų.

I / O laikrodis - clkI / O

Įvesties / išvesties laikrodį naudoja dauguma įvesties / išvesties modulių, pavyzdžiui, laikmatis / skaitiklis. Įvesties / išvesties laikrodį taip pat naudoja išorinio pertraukimo modulis, tačiau atkreipkite dėmesį, kad kai kuriuos išorinius pertraukimus aptinka asinchroninė logika, leidžianti tokius pertraukimus aptikti net ir sustabdžius įvesties / išvesties laikrodį.

„Flash Clock“ - clkFLASH

„Flash“ laikrodis valdo „Flash“ sąsajos veikimą. „Flash“ laikrodis paprastai yra aktyvus vienu metu su procesoriaus laikrodžiu.

ADC laikrodis - clkADC

ADC yra numatytas specialus laikrodžio domenas. Tai leidžia sustabdyti procesoriaus ir įvesties / išvesties laikrodžius, siekiant sumažinti triukšmą, kurį sukelia skaitmeninė grandinė. Tai suteikia tikslesnius ADC konversijos rezultatus.

Vidinis greito periferinio laikrodžio generavimo PLL - clkPCK

„ATtiny25 / 45/85“ esantis vidinis PLL sukuria laikrodžio dažnį, kuris yra 8 kartus padaugintas iš šaltinio įvesties. Pagal numatytuosius nustatymus PLL naudoja vidinio 8.0 MHz RC osciliatoriaus išvestį kaip šaltinį. Arba, jei nustatytas PLLCSR bitas LSM, PLL naudos RC osciliatoriaus išvestį, padalytą iš dviejų. Taigi PLL, greito periferinio laikrodžio išvestis yra 64 MHz. Greitas periferinis laikrodis arba iš anksto persijungęs laikrodis gali būti pasirinktas kaip laikmačio / skaitiklio1 laikrodžio šaltinis arba kaip sistemos laikrodis. Matyti 6-2 pav. Kai nustatytas PLLCSR LSM, greito periferinio laikrodžio dažnis dalijamas iš dviejų, todėl laikrodžio dažnis yra 32 MHz. Atminkite, kad LSM negalima nustatyti, jei PLLCLK naudojamas kaip sistemos laikrodis.

6-2 pav. PCK laikrodžių sistema. PCK laikrodis

PLL yra užrakintas RC osciliatoriuje, o reguliuojant RC osciliatorių per OSCCAL registrą, tuo pačiu metu bus sureguliuotas greitas periferinis laikrodis. Tačiau net jei imamas RC osciliatoriaus dažnis, didesnis nei 8 MHz, greitas periferinio takto dažnis prisotinamas 85 MHz dažniu (blogiausiu atveju) ir išlieka svyruojantis maksimaliu dažniu. Reikėtų pažymėti, kad šiuo atveju PLL neberakinamas RC osciliatoriaus laikrodžiu. Todėl rekomenduojama nekeisti OSCCAL koregavimų į aukštesnį nei 8 MHz dažnį, kad PLL būtų išlaikytas teisingame veikimo diapazone.

Vidinis PLL įjungiamas, kai:

Nustatytas PLLE bitas registre PLLCSR.

CKSEL saugiklis užprogramuotas „0001“.

CKSEL saugiklis užprogramuotas „0011“.

PLLCSR bitas PLOCK nustatomas, kai PLL užrakintas. Tiek vidinis RC generatorius, tiek PLL išjungiami išjungus maitinimo ir budėjimo miego režimus.

Vidinis PLL „ATtiny15“ suderinamumo režime

Kadangi „ATtiny25 / 45/85“ yra „ATtiny15“ naudotojų perkėlimo įrenginys, yra suderinamumas su „ATtiny15“ suderinamumo režimu. „ATtiny15“ suderinamumo režimas pasirenkamas programuojant CKSEL saugiklius į „0011“.

„ATtiny15“ suderinamumo režime vidinio RC osciliatoriaus dažnis kalibruojamas iki 6.4 MHz, o PLL daugybos koeficientas nustatomas 4 kartus. Matyti 6-3 pav. Atlikus šiuos koregavimus, laikrodžio sistema suderinama su „ATtiny15“, o gauto greito periferinio laikrodžio dažnis yra 25.6 MHz (tas pats, kaip ir „ATtiny15“).

6-3 pav. PCK laikrodžio sistema ATtiny15 suderinamumo režimu. Laikrodžių sistema

Laikrodžio šaltiniai

Prietaisas turi šias laikrodžio šaltinio parinktis, kurias galima pasirinkti naudojant „Flash Fuse“ bitus, kaip parodyta žemiau. Laikrodis iš pasirinkto šaltinio įvedamas į AVR laikrodžio generatorių ir nukreipiamas į atitinkamus modulius.

6-1 lentelė. Įrenginio laikrodžio parinktys Pasirinkite

Įrenginio laikrodžio parinktis CKSEL[3:0](1)
Išorinis laikrodis (žr 26 psl) 0000
Aukšto dažnio PLL laikrodis (žr 26 psl) 0001
Kalibruotas vidinis osciliatorius (žr 27 psl) 0010(2)
Kalibruotas vidinis osciliatorius (žr 27 psl) 0011(3)
Vidinis 128 kHz osciliatorius (žr 28 psl) 0100
Žemo dažnio kristalinis osciliatorius (žr 29 psl) 0110
Krištolo osciliatorius / keramikos rezonatorius (žr 29 psl) 1000-1111
Rezervuota 0101, 0111

Visiems saugikliams „1“ reiškia neužprogramuotą, o „0“ - užprogramuotą.

Įrenginys pristatomas pasirinkus šią parinktį.

Tai pasirinks „ATtiny15“ suderinamumo režimą, kur sistemos laikrodis padalijamas iš keturių, taip gaunant 1.6 MHz laikrodžio dažnį. Daugiau inormacijos žr „Kalibruotas vidinis osciliatorius“ 27 puslapyje.

Įvairūs pasirinkimai kiekvienai laikrodžio parinkčiai pateikiami tolesniuose skyriuose. Kai procesorius atsibunda išjungus maitinimą, pasirinktas laikrodžio šaltinis naudojamas paleidimo laiko nustatymui, užtikrinant stabilų osciliatoriaus veikimą prieš pradedant vykdyti instrukcijas. Kai procesorius paleidžiamas iš naujo, yra papildomas vėlavimas, leidžiantis energijai pasiekti stabilų lygį prieš pradedant įprastą veikimą. „Watchdog“ osciliatorius naudojamas šiam realiojo laiko paleidimo laiko skaičiavimui. Kiekvienam skirtam laikui naudojamų WDT osciliatorių ciklų skaičius parodytas 6-2 lentelė.

6-2 lentelė. Watchdog Osciliatoriaus ciklų skaičius

Tipinis skirtasis laikas Ciklų skaičius
4 ms 512
64 ms 8 8,192 (XNUMX XNUMX)

Išorinis laikrodis

Norėdami vairuoti įrenginį iš išorinio laikrodžio šaltinio, CLKI turėtų būti valdomas taip, kaip parodyta 6-4 pav. Kad prietaisas veiktų išoriniu laikrodžiu, CKSEL saugikliai turi būti užprogramuoti „00“.

6-4 pav. Išorinio laikrodžio disko konfigūracija

6.4 pav

Pasirinkus šį laikrodžio šaltinį, paleidimo laiką nustato SUT saugikliai, kaip parodyta 6-3 lentelė.

6-3 lentelė. Išorinio laikrodžio pasirinkimo paleidimo laikas

SUT[1:0] Paleidimo laikas nuo išjungimo Papildomas vėlavimas iš naujo nustatyti Rekomenduojamas naudojimas
00 6 CK 14CK Įjungtas BOD
01 6 CK 14CK + 4 ms Sparčiai kylanti jėga
10 6 CK 14CK + 64 ms Lėtai kylanti jėga
11 Rezervuota

Taikant išorinį laikrodį, reikia vengti staigių taikomo laikrodžio dažnio pokyčių, kad būtų užtikrintas stabilus MCU veikimas. Didesnis nei 2% dažnio kitimas iš vieno takto į kitą gali sukelti nenuspėjamą elgesį. Būtina užtikrinti, kad per tokius laikrodžio dažnio pokyčius MCU būtų laikomas Reset.

Atminkite, kad „System Clock Presale“ gali būti naudojamas vidinio laikrodžio dažnio vykdymo laiko pokyčiams įgyvendinti, tuo pačiu užtikrinant stabilų veikimą. Atsižvelgti į „System Clock Prescaler“ puslapyje 31 dėl detalių.

Aukšto dažnio PLL laikrodis

Yra vidinis PLL, kuris nominaliai suteikia 64 MHz takto greitį, užfiksuotą RC osciliatoriuje, kad būtų galima naudoti periferinį laikmatį / skaitiklį1 ir sistemos laikrodžio šaltinį. Pasirinkus sistemos laikrodžio šaltinį, programuojant CKSEL saugiklius į „0001“, jis padalijamas iš keturių, kaip parodyta 6-4 lentelė.

6-4 lentelė. Aukšto dažnio PLL laikrodžio veikimo režimai

CKSEL[3:0] Nominalus dažnis
0001 16 MHz

Pasirinkus šį laikrodžio šaltinį, paleidimo laiką nustato SUT saugikliai, kaip parodyta 6-5 lentelė.

6-5 lentelė. Aukšto dažnio PLL laikrodžio paleidimo laikas

SUT[1:0] Paleidimo laikas išjungus maitinimą Papildomas vėlavimas nuo įjungimo iš naujo nustatymo (VCC = 5.0 V) Rekomenduojamas naudojimas
00 14CK + 1K (1024) CK + 4 ms 4 ms Įjungtas BOD

6-5 lentelė. Aukšto dažnio PLL laikrodžio paleidimo laikas

SUT[1:0] Paleidimo laikas išjungus maitinimą Papildomas vėlavimas nuo įjungimo iš naujo nustatymo (VCC = 5.0 V) Rekomenduojamas naudojimas
01 14CK + 16K (16384) CK + 4 ms 4 ms Sparčiai kylanti jėga
10 14CK + 1K (1024) CK + 64 ms 4 ms Lėtai kylanti jėga
11 14CK + 16K (16384) CK + 64 ms 4 ms Lėtai kylanti jėga

Kalibruotas vidinis osciliatorius

Pagal numatytuosius nustatymus vidinis RC osciliatorius suteikia apytikslį 8.0 MHz laikrodį. Nors ttage ir priklausomai nuo temperatūros, šį laikrodį vartotojas gali labai tiksliai sukalibruoti. Pamatyti „Kalibruotas vidinis RC osciliatorius racy “164 puslapyje ir „Vidinio osciliatoriaus greitis“ 192 puslapyje daugiau detalių. Įrenginys pristatomas su užprogramuotu saugikliu CKDIV8. Matyti „System Clock Prescaler“ puslapyje 31 Norėdami gauti daugiau informacijos.

Šį laikrodį galima pasirinkti kaip sistemos laikrodį, programuojant CKSEL saugiklius, kaip parodyta 6-6 lentelė puslapyje

27. Jei bus pasirinktas, jis veiks be jokių išorinių komponentų. Atstatymo metu aparatūra įkelia iš anksto užprogramuotą kalibravimo vertę į OSCCAL registrą ir tokiu būdu automatiškai kalibruoja RC osciliatorių. Šio kalibravimo tikslumas rodomas kaip gamyklinis kalibravimas 21-2 lentelė 164 puslapyje.

Keičiant OSCCAL registrą iš SW, žr „OSCCAL - osciliatorių kalibravimo registras“ 31 puslapyje, galima gauti didesnį kalibravimo tikslumą nei naudojant gamyklinį kalibravimą. Šio kalibravimo tikslumas rodomas kaip Vartotojo kalibravimas 21-2 lentelė 164 puslapyje.

Kai šis osciliatorius bus naudojamas kaip lusto laikrodis, sargybinis osciliatorius vis tiek bus naudojamas sarginio laikmačio laikmatiui ir iš naujo nustatytam laikui. Daugiau informacijos apie iš anksto užprogramuotą kalibravimo vertę rasite skyriuje „Cali- bration Bytes “puslapyje 150.

Vidinį osciliatorių taip pat galima nustatyti taip, kad būtų užtikrintas 6.4 MHz laikrodis, užrašant CKSEL saugiklius į „0011“, kaip parodyta 6-6 lentelė žemiau. Šis parametras nurodomas kaip „ATtiny15“ suderinamumo režimas ir skirtas suteikti kalibruotą 6.4 MHz dažnio laikrodžio šaltinį, kaip ir „ATtiny15“. „ATtiny15“ suderinamumo režime PLL naudoja vidinį osciliatorių, veikiantį 6.4 MHz dažniu, kad sukurtų 25.6 MHz periferinio laikrodžio signalą laikmačiui / skaitikliui1 (žr. „8 bitų laikmatis / skaitiklis1 „ATtiny15“ režimas “95 puslapyje). Atkreipkite dėmesį, kad šiuo darbo režimu 6.4 MHz taktinis signalas visada dalijamas iš keturių, suteikiant 1.6 MHz sistemos laikrodį.

6-6 lentelė. Vidiniai kalibruoti RC osciliatoriaus veikimo režimai

CKSEL[3:0] Nominalus dažnis
0010(1) 8.0 MHz
0011(2) 6.4 MHz

Įrenginys pristatomas pasirinkus šią parinktį.

Šis nustatymas parinks „ATtiny15“ suderinamumo režimą, kur sistemos laikrodis padalijamas iš keturių, todėl gaunamas 1.6 MHz takto dažnis.

Pasirinkus kalibruotą 8 MHz vidinį osciliatorių kaip laikrodžio šaltinį, paleidimo laiką nustato SUT saugikliai, kaip parodyta 6-7 lentelė žemiau.

6-7 lentelė. Vidinio kalibruoto RC osciliatoriaus laikrodžio paleidimo laikas

SUT[1:0] Paleidimo laikas nuo išjungimo Papildomas atstatymo delsa (VCC = 5.0 V) Rekomenduojamas naudojimas
00 6 CK 14CK(1) Įjungtas BOD
01 6 CK 14CK + 4 ms Sparčiai kylanti jėga
10(2) 6 CK 14CK + 64 ms Lėtai kylanti jėga
11 Rezervuota

1. Jei užprogramuotas RSTDISBL saugiklis, šis paleidimo laikas bus padidintas iki 14CK + 4 ms, kad būtų užtikrintas programavimo režimo įvedimas.
2. Įrenginys pristatomas pasirinkus šią parinktį.

„ATtiny15“ suderinamumo režime paleidimo laiką nustato SUT saugikliai, kaip parodyta 6-8 lentelė žemiau.

6-8 lentelė. Vidinio kalibruoto RC osciliatoriaus laikrodžio paleidimo laikas (ATtiny15 režimu)

SUT[1:0] Paleidimo laikas nuo išjungimo Papildomas atstatymo delsa (VCC = 5.0 V) Rekomenduojamas naudojimas
00 6 CK 14CK + 64 ms
01 6 CK 14CK + 64 ms
10 6 CK 14CK + 4 ms
11 1 CK 14CK(1)

Pastaba: Jei RSTDISBL saugiklis yra užprogramuotas, šis įjungimo laikas bus padidintas iki 14CK + 4 ms, kad būtų galima įjungti programavimo režimą.

Apibendrinant galima rasti daugiau informacijos apie „ATtiny15“ suderinamumo režimą skyriuose „B prievadas (PB5: PB0)“ įjungtas 2 psl„Vidinis PLL„ ATtiny15 “suderinamumo režime“ 24 puslapyje„8 bitų laikmatis / skaitiklis1„ ATtiny15 “režime“ įjungtas 95 psl„DebugWIRE apribojimai“ 140 puslapyje„Kalibravimo baitai“ 150 puslapyje ir lentelėje „Laikrodžio preskaleris Pasirinkite “puslapyje 33.

Vidinis 128 kHz osciliatorius

128 kHz vidinis osciliatorius yra mažos galios generatorius, užtikrinantis 128 kHz taktinį dažnį. Dažnis yra vardinis esant 3V ir 25°C. Šį laikrodį galima pasirinkti kaip sistemos laikrodį, užprogramavus CKSEL saugiklius į „0100“.

Pasirinkus šį laikrodžio šaltinį, paleidimo laiką nustato SUT saugikliai, kaip parodyta 6-9 lentelė.

6-9 lentelė. 128 kHz vidinio osciliatoriaus paleidimo laikas

SUT[1:0] Paleidimo laikas nuo išjungimo Papildomas vėlavimas iš naujo nustatyti Rekomenduojamas naudojimas
00 6 CK 14CK(1) Įjungtas BOD
01 6 CK 14CK + 4 ms Sparčiai kylanti jėga
10 6 CK 14CK + 64 ms Lėtai kylanti jėga
11 Rezervuota

Pastaba: Jei RSTDISBL saugiklis yra užprogramuotas, šis įjungimo laikas bus padidintas iki 14CK + 4 ms, kad būtų galima įjungti programavimo režimą.

Žemo dažnio kristalinis osciliatorius

Norint naudoti 32.768 kHz laikrodžio kristalą kaip įrenginio laikrodžio šaltinį, reikia pasirinkti žemo dažnio kristalų osciliatorių, nustatant CKSEL saugiklius į „0110“. Kristalas turėtų būti sujungtas taip, kaip parodyta 6-5 pav. Norėdami rasti tinkamą 32.768 kHz krisalo apkrovos talpą, prašome kreiptis į gamintojo duomenų lapą.

Pasirinkus šį osciliatorių, paleidimo laikas nustatomas pagal SUT saugiklius, kaip parodyta 6-10 lentelė.

6-10 lentelė. Žemo dažnio kristalinio osciliatoriaus laikrodžio paleidimo laikas

SUT[1:0] Paleidimo laikas išjungus maitinimą Papildomas atstatymo delsa (VCC = 5.0 V) Rekomenduojamas naudojimas
00 1K (1024) CK(1) 4 ms Greitai kylanti galia arba įjungtas BOD
01 1K (1024) CK(1) 64 ms Lėtai kylanti jėga
10 32K (32768) CK 64 ms Stabilus dažnis paleidimo metu
11 Rezervuota

Pastaba: šias parinktis reikia naudoti tik tuo atveju, jei dažnio stabilumas paleidžiant nėra svarbus.

Žemo dažnio kristalinis osciliatorius suteikia vidinę apkrovos talpą, žr 6-11 lentelė prie kiekvieno TOSC kaiščio.

6-11 lentelė. Žemo dažnio kristalinio osciliatoriaus talpa

Įrenginys 32 kHz osc. Tipas Dangtelis („Xtal1“ / „Tosc1“) Dangtelis („Xtal2“ / „Tosc2“)
ATtiny25 / 45/85 Sistema Osc. 16 pF 6 pF

Krištolo osciliatorius / keramikos rezonatorius

XTAL1 ir XTAL2 yra atitinkamai įvesties ir išvesties invertavimas ampgyvybingesnis, kurį galima sukonfigūruoti naudoti kaip „On-chip“ generatorių, kaip parodyta 6-5 pav. Gali būti naudojamas kvarcinis kristalas arba keraminis rezonatorius.

C1 ir C2 visada turi būti lygūs tiek kristalams, tiek rezonatoriams. Optimali kondensatorių vertė priklauso nuo naudojamo kristalo ar rezonatoriaus, kintamos talpos kiekio ir aplinkos elektromagnetinio triukšmo. Pateikiamos kai kurios pradinės gairės, kaip pasirinkti kondensatorius naudoti su kristalais 6-12 lentelė žemiau. Keraminiams rezonatoriams turėtų būti naudojamos gamintojo nurodytos kondensatoriaus vertės.

6-12 lentelė. Kristalinio osciliatoriaus veikimo režimai

CKSEL[3:1] Dažnio diapazonas (MHz) Rekomenduojamas C1 ir C2 kondensatorių, naudojamų su kristalais, diapazonas (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

Pastabos: Ši parinktis neturėtų būti naudojama su kristalais, tik su keraminiais rezonatoriais.

Osciliatorius gali veikti trimis skirtingais režimais, kiekvienas optimizuotas konkrečiam dažnių diapazonui. Darbo režimą parenka saugikliai CKSEL [3: 1], kaip parodyta 6-12 lentelė.

CKSEL0 saugiklis kartu su SUT [1: 0] saugikliais pasirenka paleidimo laiką, kaip parodyta 6-13 lentelė.

6-13 lentelė. Kristalinio osciliatoriaus laikrodžio paleidimo laikas

CKSEL0 SUT[1:0] Paleidimo laikas nuo išjungimo Papildomas vėlavimas iš naujo nustatyti Rekomenduojamas naudojimas
0 00 258 CK(1) 14CK + 4 ms Keraminis rezonatorius, greitai kylanti jėga
0 01 258 CK(1) 14CK + 64 ms Keraminis rezonatorius, lėtai kylanti galia
0 10 1K (1024) CK(2) 14CK Keraminis rezonatorius, įjungtas BOD
0 11 1K (1024) CK(2) 14CK + 4 ms Keraminis rezonatorius, greitai kylanti jėga
1 00 1K (1024) CK(2) 14CK + 64 ms Keraminis rezonatorius, lėtai kylanti galia
1 01 16K (16384) CK 14CK Kristalinis osciliatorius, įjungtas BOD
1 10 16K (16384) CK 14CK + 4 ms Krištolo osciliatorius, greitai kylanti jėga
1 11 16K (16384) CK 14CK + 64 ms Krištolo osciliatorius, lėtai kylanti jėga

Pastabos

Šios parinktys turėtų būti naudojamos tik tada, kai neveikia arti maksimalaus prietaiso dažnio, ir tik tada, kai dažnio stabilumas paleidimo metu nėra svarbus programai. Šie variantai netinka kristalams.

Šios parinktys yra skirtos naudoti su keramikiniais rezonatoriais ir užtikrins dažnio stabilumą paleidžiant. Jie taip pat gali būti naudojami su kristalais, kai neveikia arti maksimalaus prietaiso dažnio, ir jei dažnio stabilumas paleidimo metu nėra svarbus programai.

Numatytasis laikrodžio šaltinis

Prietaisas tiekiamas su CKSEL = “0010”, SUT = “10” ir CKDIV8 užprogramuotu. Todėl numatytasis laikrodžio šaltinio nustatymas yra vidinis RC osciliatorius, veikiantis 8 MHz dažniu, su ilgiausiu paleidimo laiku ir pradiniu sistemos laikrodžio išankstiniu keitimu 8, todėl gaunamas 1.0 MHz sistemos laikrodis. Šis numatytasis nustatymas užtikrina, kad visi vartotojai galėtų nustatyti pageidaujamą laikrodžio šaltinio nustatymą naudodami vidinį arba didelės apimties režimątage Programuotojas.

„System Clock Prescaler“

„ATtiny25 / 45/85“ sistemos laikrodį galima padalyti nustatant „CLKPR -„ Clock Prescale Register ““ puslapyje 32. Ši funkcija gali būti naudojama norint sumažinti energijos suvartojimą, kai apdorojimo galios poreikis yra mažas. Tai gali būti naudojama su visomis laikrodžio šaltinio parinktimis ir tai turės įtakos procesoriaus ir visų sinchroninių periferinių įrenginių laikrodžio dažniui. „clkI/O“, „clkADC“, „clkCPU“ ir „clkFLASH“ yra padalinti iš koeficiento, kaip parodyta 6-15 lentelė 33 puslapyje.

Perjungimo laikas

Perjungdamas išankstinio skalavimo priemonės nustatymus, „System Clock Prescaler“ užtikrina, kad laikrodžio sistemoje neatsirastų trikdžių ir kad tarpinis dažnis nebūtų didesnis nei nei ankstesnį nustatymą atitinkantis, nei naująjį nustatymą atitinkantis laikrodžio dažnis.

Išankstinio skalavimo skalę veikiantis pulsacijos skaitiklis veikia nedalyto laikrodžio dažniu, kuris gali būti greitesnis nei procesoriaus laikrodžio dažnis. Taigi neįmanoma nustatyti išankstinio skalavimo įrenginio būsenos - net jei jis būtų įskaitomas, ir tikslaus laiko, kurio reikia norint pereiti nuo vieno laikrodžio dalijimo prie kito, tiksliai numatyti negalima.

Nuo to laiko, kai užrašomos CLKPS vertės, praeina tarp T1 + T2 ir T1 + 2 * T2, kol bus įjungtas naujas laikrodžio dažnis. Šiuo intervalu sukuriamos 2 aktyvios laikrodžio briaunos. Čia T1 yra ankstesnis laikrodžio laikotarpis, o T2 - laikotarpis, atitinkantis naują išankstinio skalavimo priemonės nustatymą.

Laikrodžio išvesties buferis

Prietaisas gali išjungti sistemos laikrodį ant CLKO kaiščio (kai jis nenaudojamas kaip XTAL2 kaištis). Norint įjungti išvestį, reikia užprogramuoti saugiklį CKOUT. Šis režimas yra tinkamas, kai lusto laikrodis naudojamas valdyti kitas sistemos grandines. Atkreipkite dėmesį, kad atstatant laikrodis nebus rodomas ir kad užprogramavus saugiklį įprastas įvesties / išvesties kaiščio veikimas bus nepaisomas. Vidinį RC osciliatorių, WDT osciliatorių, PLL ir išorinį laikrodį (CLKI) galima pasirinkti, kai laikrodis rodomas CLKO. Kristaliniai osciliatoriai (XTAL1, XTAL2) negali būti naudojami laikrodžio išėjimui CLKO. Jei naudojamas „System Clock Prescaler“, tai yra padalytas sistemos laikrodis.

Registro aprašymas

OSCCAL - osciliatorių kalibravimo registras

Bit 7 6 5 4 3 2 1 0
0x31 CAL7 CAL6 CAL5 CAL4 CAL3 CAL2 CAL1 CAL0 OSCCAL
Skaityti/Rašyti R/W R/W R/W R/W R/W R/W R/W R/W

7 bitai: 0 - CAL [7: 0]: osciliatoriaus kalibravimo vertė

Osciliatorių kalibravimo registras naudojamas apkarpyti vidinį kalibruotą RC osciliatorių, kad būtų pašalinti proceso variantai iš osciliatoriaus dažnio. Iš anksto užprogramuota kalibravimo vertė automatiškai įrašoma į šį registrą atkuriant lustą, suteikiant gamykloje kalibruotą dažnį, kaip nurodyta 21-2 lentelė 164 puslapyje. Taikomoji programinė įranga gali įrašyti šį registrą, kad pakeistų osciliatoriaus dažnį. Osciliatorių galima sukalibruoti pagal dažnius, kaip nurodyta 21-2 lentelė 164 puslapyje. Už šio diapazono ribų kalibravimas nėra garantuotas.

Atkreipkite dėmesį, kad šis osciliatorius naudojamas EEPROM ir „Flash“ rašymo prieigoms nustatyti, todėl šis rašymo laikas bus atitinkamai paveiktas. Jei parašyta EEPROM arba „Flash“, nekalibruokite daugiau nei 8.8 MHz. Priešingu atveju gali nepavykti rašyti EEPROM arba „Flash“.

CAL7 bitai nustato osciliatoriaus veikimo diapazoną. Nustačius šį bitą į 0, gaunamas mažiausias dažnių diapazonas, o nustatant šį bitą į 1 - didžiausias dažnių diapazonas. Šie du dažnių diapazonai sutampa, kitaip tariant, nustatant OSCCAL = 0x7F, gaunamas didesnis dažnis nei OSCCAL = 0x80.

CAL [6: 0] bitai naudojami nustatant dažnį pasirinktame diapazone. 0x00 nustatymas suteikia mažiausią to diapazono dažnį, o 0x7F nustatymas - aukščiausią diapazono dažnį.

Norint užtikrinti stabilų MCU veikimą, kalibravimo reikšmė turėtų būti maža. Didesnis nei 2% dažnio kitimas iš vieno ciklo į kitą gali sukelti nenuspėjamą elgesį. Kiekvieno kalibravimo metu OSCCAL pokyčiai neturėtų viršyti 0x20. Būtina užtikrinti, kad per tokius laikrodžio dažnio pokyčius MCU būtų laikomas Reset

6-14 lentelė. Vidinis RC osciliatoriaus dažnių diapazonas

OSCCAL vertė Tipinis žemiausias dažnis, atsižvelgiant į vardinį dažnį Tipiškas didžiausias dažnis, atsižvelgiant į vardinį dažnį
0x00 50 % 100 %
0x3F 75 % 150 %
0x7F 100 % 200 %

CLKPR - „Clock Prescale Register“

Bit 7 6 5 4 3 2 1 0
0x26 CLKPCE CLKPS3 CLKPS2 CLKPS1 CLKPS0 CLKPR
Skaityti/Rašyti R/W R R R R/W R/W R/W R/W

Pradinė vertė 0 0 0 0 Žr. Bitų aprašymą

7 bitas - CLKPCE: „Clock Prescaler Change“ įgalinimas

CLKPCE bitai turi būti parašyti logikoje, kad būtų galima pakeisti CLKPS bitus. CLKPCE bitas atnaujinamas tik tada, kai kiti CLKPR bitai vienu metu užrašomi į nulį. CLKPCE išvaloma aparatine įranga po keturių ciklų po to, kai ji parašoma arba kai parašomi CLKPS bitai. Perrašant CLKPCE bitą per šį skirtąjį laiką, nepailginamas skirtasis laikas ir CLKPCE bitas neišvalomas.

6 bitai: 4 - Res: rezervuoti bitai

Šie bitai yra rezervuoti bitai ATtiny25 / 45/85 ir visada bus skaitomi kaip nulis.

3 bitai: 0 - CLKPS [3: 0]: „Clock Prescaler“ pasirinkite 3 - 0 bitus

Šie bitai apibrėžia dalijimosi faktorių tarp pasirinkto laikrodžio šaltinio ir vidinio sistemos laikrodžio. Šiems bitams gali būti parašytas vykdymo laikas, siekiant pakeisti laikrodžio dažnį, kad atitiktų programos reikalavimus. Kai daliklis dalija pagrindinio laikrodžio įvestį į MCU, visų sinchroninių periferinių įrenginių greitis sumažėja, kai naudojamas padalijimo koeficientas. Skirstymo koeficientai pateikti 6-15 lentelė.

Norint išvengti netyčinio laikrodžio dažnio pasikeitimo, CLKPS bitams pakeisti reikia laikytis specialios rašymo procedūros:

Parašykite „Clock Prescaler Change Enable“ (CLKPCE) bitą į vieną, o visi kiti CLKPR bitai - į nulį.

Per keturis ciklus įrašykite norimą reikšmę į CLKPS, o CLKPCE - nulį.

Keičiant išankstinio skalavimo priemonės nustatymą, pertraukimai turi būti išjungti, kad įsitikintumėte, jog rašymo procedūra nenutraukta.

CKDIV8 saugiklis nustato pradinę CLKPS bitų reikšmę. Jei CKDIV8 neprogramuotas, CLKPS bitai bus atstatyti į „0000“. Jei užprogramuotas CKDIV8, CLKPS bitai iš naujo nustatomi į „0011“, o paleidimo metu padalijimo koeficientas yra aštuoni. Ši funkcija turėtų būti naudojama, jei pasirinkto laikrodžio šaltinio dažnis yra didesnis nei didžiausias įrenginio dažnis esamomis veikimo sąlygomis. Atminkite, kad į CLKPS bitus galima įrašyti bet kokią reikšmę, nepaisant CKDIV8 saugiklio nustatymo. Programinė įranga turi užtikrinti, kad padalijimo koeficientas būtų pakankamas

pasirenkamas, jei pasirinktu laikrodžio šaltiniu yra didesnis dažnis nei maksimalus prietaiso dažnis esant dabartinėms darbo sąlygoms. Įrenginys pristatomas su užprogramuotu saugikliu CKDIV8.

6-15 lentelė. Clock Prescaler Pasirinkite

CLKPS3 CLKPS2 CLKPS1 CLKPS0 Laikrodžių dalijimo faktorius
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 Rezervuota
1 0 1 0 Rezervuota
1 0 1 1 Rezervuota
1 1 0 0 Rezervuota
1 1 0 1 Rezervuota
1 1 1 0 Rezervuota
1 1 1 1 Rezervuota

Pastaba: ATtiny15 suderinamumo režimu išankstinis skaleris išjungtas ir nei rašymas į CLKPR, nei CKDIV8 saugiklio programavimas neturi jokios įtakos sistemos laikrodžiui (kuris visada bus 1.6 MHz).

Energijos valdymas ir miego režimai

Dėl didelio našumo ir pirmaujančio kodo efektyvumo AVR mikrovaldikliai yra idealus pasirinkimas mažos galios programoms. Be to, miego režimai leidžia programai uždaryti nenaudojamus modulius MCU, taip taupant energiją. AVR teikia įvairius miego režimus, leidžiančius vartotojui pritaikyti energijos suvartojimą pagal programos reikalavimus.

Miego režimai

6-1 paveikslas 23 puslapyje pateikiamos skirtingos laikrodžio sistemos ir jų paskirstymas ATtiny25 / 45/85. Paveikslas yra naudingas pasirenkant tinkamą miego režimą. 7-1 lentelė rodo skirtingus miego režimus ir jų pažadinimo šaltinius.

7-1 lentelė. Aktyvūs laikrodžio domenai ir pažadinimo šaltiniai skirtingais miego režimais

Aktyvūs laikrodžio domenai Osciliatoriai Pažadinimo šaltiniai
Miego režimas clkCPU clkFLASH clkIO clkADC clkPCK Įjungtas pagrindinis laikrodžio šaltinis INT0 ir kaiščių keitimas SPM / EEPROM

Paruošta

 

USI pradžios sąlyga

ADC Kitas I/O Sargybinis šuo Pertraukite
Tuščia eiga X X X X X X X X X X
ADC triukšmo mažinimas X X X(1) X X X X
Išjungimas X(1) X X

Pastaba: INT0 atveju tik lygio pertraukimas.

Norint įeiti į bet kurį iš trijų miego režimų, SE bitas MCUCR turi būti parašytas logiškai ir turi būti vykdoma SLEEP instrukcija. SM [1: 0] bitai MCUCR registre pasirenka, kuris miego režimas (tuščiosios eigos, ADC triukšmo mažinimas ar išjungimas) bus įjungtas pagal SLEEP instrukciją. Matyti 7-2 lentelė santraukai.

Jei įjungtas pertraukimas įvyksta, kai MCU veikia miego režimu, MCU atsibunda. Tada MCU sustabdomas keturiems ciklams, neskaitant paleidimo laiko, įvykdo pertraukimo tvarką ir tęsia vykdymą nuo komandos po SLEEP. Registro turinys File ir SRAM nesikeičia, kai prietaisas pabunda iš miego režimo. Jei iš naujo nustatomas miego režimas, MCU atsibunda ir vykdomas iš „Reset Vector“.

Pastaba: jei pažadinimui naudojamas lygio suaktyvintas pertraukimas, pakeistas lygis turi būti kurį laiką palaikomas, kad MCU pažadintų (ir kad MCU patektų į pertraukimo tarnybos rutiną). Pamatyti „Išoriniai pertraukimai“, 49 puslapyje dėl detalių.

Laukimo režimas

Kai SM[1:0] bitai įrašomi į 00, SLEEP instrukcija priverčia MCU pereiti prie laukimo režimo, sustabdydamas procesorių, bet leisdamas analoginiam lyginamajam, ADC, USI, laikmačiui/skaitikliui, stebėjimui ir pertraukimo sistemai tęsti veikimą. tingimas. Šis miego režimas iš esmės sustabdo clkCPU ir clkFLASH, o kitiems laikrodžiams leidžiama veikti.

Neaktyviuoju režimu MCU gali atsibusti nuo išorinių suaktyvintų pertraukimų, taip pat iš vidinių, tokių kaip „Timer Overflow“. Jei nereikia atsibusti iš „Analog Comparator“ pertraukimo, „Analog Comparator“ gali būti išjungtas nustatant ACD bitą „ACSR - analoginio lyginamojo valdymo ir būsenos registras“, 120 psl. Tai sumažins energijos sąnaudas laukimo režimu. Jei ADC įgalinta, konversija prasideda automatiškai, kai įvedamas šis režimas.

ADC triukšmo mažinimo režimas

Kai SM[1:0] bitai įrašomi į 01, SLEEP instrukcija priverčia MCU pereiti į ADC triukšmo mažinimo režimą, sustabdydamas procesorių, bet leisdamas ADC, išoriniams pertraukimams ir Watchdog toliau veikti (jei įjungta). Šis miego režimas sustabdo „clkI/O“, „clkCPU“ ir „clkFLASH“, leisdamas veikti kitiems laikrodžiams.

Tai pagerina ADC triukšmo aplinką, leidžianti matuoti didesnę skiriamąją gebą. Jei ADC įgalinta, konversija prasideda automatiškai, kai įvedamas šis režimas. Be ADC konversijos užbaigimo pertraukimo, tik išorinis atstatymas, sargybos atstatymas, rudos spalvos atstatymas, parengtas SPM / EEPROM pertraukimas, išorinio lygio pertraukimas INT0 arba kaiščių keitimo pertraukimas gali pažadinti MCU iš ADC triukšmo mažinimo režimas.

Išjungimo režimas

Kai SM [1: 0] bitai parašomi 10, SLEEP instrukcija priverčia MCU pereiti į maitinimo išjungimo režimą. Šiuo režimu osciliatorius sustabdomas, o išorinis pertraukia, USI paleidimo būklės aptikimas ir „Watchdog“ tęsia darbą (jei įjungtas). MCU gali pažadinti tik išorinis atstatymas, budėjimo atstatymas iš naujo, rudos spalvos atstatymas, „USI“ paleidimo sąlygos pertraukimas, išorinio lygio pertraukimas INT0 arba kaiščių keitimo pertraukimas. Šis miego režimas sustabdo visus sugeneruotus laikrodžius, leidžiant veikti tik asinchroninius modulius.

Programinė įranga BOD išjungti

Kai „Brown-out Detector“ (BOD) įjungia „BODLEVEL“ saugikliai (žr 20-4 lentelė 148 puslapyje), BOD aktyviai stebi tiekimo tūrįtage miego metu. Kai kuriuose įrenginiuose galima sutaupyti energijos išjungus BOD programine įranga veikiant maitinimo išjungimo miego režimui. Tuomet miego režimo energijos suvartojimas bus toks pat, kaip ir tada, kai saugiklis visame pasaulyje išjungia BOD.

Jei BOD yra išjungtas programinės įrangos, BOD funkcija išjungiama iš karto po to, kai įjungiamas miego režimas. Pabudus iš miego, BOD vėl automatiškai įjungiamas. Tai užtikrina saugų veikimą, jei VCC lygis nukrito miego metu.

Kai BOD bus išjungtas, pabudimo laikas iš miego režimo bus toks pats, kaip ir pabudus iš RESET. Vartotojas turi rankiniu būdu sukonfigūruoti pažadinimo laiką, kad laiko juostos tarpo nuoroda spėtų pradėti, o BOD veiktų tinkamai, kol MCU toliau vykdys kodą. Žr. SUT [1: 0] ir CKSEL [3: 0] saugiklių antgalius lentelėje „Saugiklio mažas baitas“, 149 psl

BOD išjungimą valdo MCU valdymo registro BODS (BOD Sleep) bitai, žr „MCUCR - MCU valdymas Registruotis “puslapyje 37. Parašius šį bitą vienam, „Power-Down“ išjungia BOD, o parašius nulį BOD lieka aktyvus. Numatytasis nustatymas yra nulis, ty BOD aktyvus.

Rašymą į BODS bitą valdo laiko seka ir įgalinimo bitas, žr „MCUCR - MCU valdymo registras ter “37 puslapyje.

Apribojimai

BOD išjungimo funkcija įdiegta tik šiuose įrenginiuose:

ATtiny25, E peržiūra ir naujesnė

ATtiny45, D peržiūra ir naujesnė

ATtiny85, C peržiūra ir naujesnė

Pataisymai pažymėti ant prietaiso pakuotės ir juos galima rasti taip:

Apatinė pakuočių 8P3 ir 8S2 pusė

Viršutinė 20M1 pakuotės pusė

Galios mažinimo registras

Galios mažinimo registras (PRR), žr „PRR - galios mažinimo registras“, 38 puslapyje, pateikia metodą, kaip sumažinti energijos suvartojimą sustabdant laikrodį atskiriems periferiniams įrenginiams. Dabartinė periferijos būsena yra užšaldyta, o įvesties / išvesties registrų negalima skaityti ar rašyti. Ištekliai, kuriuos periferinis įrenginys naudoja sustabdydamas laikrodį, liks užimtas, todėl prieš sustabdant laikrodį, periferinis įrenginys dažniausiai turėtų būti išjungtas. Pažadinus modulį, kuris atliekamas išvalius bitą PRR, modulis įjungiamas į tą pačią būseną kaip ir prieš išjungiant.

Modulio išjungimas gali būti naudojamas laukimo režimu ir aktyviuoju režimu, siekiant žymiai sumažinti bendrą energijos suvartojimą. Visais kitais miego režimais laikrodis jau yra sustabdytas. Matyti „I / O modulių maitinimo srovė“ 177 puslapyje pvzamples.

Mažinant energijos suvartojimą

Bandant sumažinti AVR valdomos sistemos energijos suvartojimą reikia atsižvelgti į keletą klausimų. Paprastai miego režimai turėtų būti naudojami kuo daugiau, o miego režimas turėtų būti parinktas taip, kad veiktų kuo mažiau prietaiso funkcijų. Reikėtų išjungti visas nereikalingas funkcijas. Ypač reikia atkreipti ypatingą dėmesį į šiuos modulius, kai bandoma pasiekti kuo mažesnę energijos sąnaudą.

Analoginis skaitmeninis keitiklis

Jei įgalinta, ADC bus įjungta visais miego režimais. Norint taupyti energiją, prieš įjungiant bet kokį miego režimą, ADC turėtų būti išjungta. Kai ADC bus išjungtas ir vėl įjungtas, kita konversija bus išplėstinė konversija. Atsižvelgti į „Analoginis – skaitmeninis keitiklis“, 122 psl išsamią informaciją apie ADC veikimą.

Analoginis lygintuvas

Kai įjungiamas laukimo režimas, analoginis lygintuvas turi būti išjungtas, jei nenaudojamas. Įjungus ADC triukšmo mažinimo režimą, analoginis lygintuvas turi būti išjungtas. Kituose miego režimuose analoginis lygintuvas automatiškai išjungiamas. Tačiau, jei analoginis palyginiklis nustatytas naudoti vidinį tomątage Nuoroda kaip įvestis, analoginis palyginiklis turėtų būti išjungtas visuose miego režimuose. Priešingu atveju vidinis ttage Nuoroda bus įjungta, nepriklausomai nuo miego režimo. Atsižvelgti į „Analoginis lygintuvas“, 119 psl išsamią informaciją apie tai, kaip sukonfigūruoti „Analog Comparator“.

Rudos spalvos detektorius

Jei programoje „Brown-out Detector“ nereikia, šis modulis turėtų būti išjungtas. Jei „Brown-out“ detektorių įjungia „BODLEVEL“ saugikliai, jis bus įjungtas visais miego režimais, todėl visada sunaudokite energiją. Esant gilesniam miego režimui, tai žymiai prisidės prie viso dabartinio suvartojimo. Matyti „Brown-out detec- “puslapyje 41 ir „Programinės įrangos BOD išjungti“ puslapyje 35 išsamesnės informacijos, kaip konfigūruoti „Brown-out“ detektorių.

Vidinis ttage Nuoroda

Vidinis ttage Nuoroda bus įjungta, kai to prireiks naudojant Brown-out Detection, Analog Comparator arba ADC. Jei šie moduliai yra išjungti, kaip aprašyta aukščiau esančiuose skyriuose, vidinis ttagNuoroda bus išjungta ir nenaudos energijos. Kai vėl įjungiamas, vartotojas turi leisti, kad nuoroda būtų paleista prieš naudojant išvestį. Jei nuoroda įjungta miego režimu, išvestis gali būti naudojama nedelsiant. Atsižvelgti į „Vidinis ttage Nuoroda “puslapyje 42 išsamią informaciją apie paleidimo laiką.

Watchdog laikmatis

Jei „Watchdog Timer“ programai nereikia, šis modulis turėtų būti išjungtas. Jei „Watchdog“ laikmatis yra įjungtas, jis bus įjungtas visais miego režimais, todėl visada sunaudokite energiją. Esant gilesniam miego režimui, tai žymiai prisidės prie viso dabartinio suvartojimo. Atsižvelgti į „Sargybos laikmatis“, 42 psl išsamesnės informacijos, kaip sukonfigūruoti „Watchdog“ laikmatį.

Uosto kaiščiai

Įjungiant miego režimą, visi prievado kaiščiai turi būti sukonfigūruoti taip, kad naudotų mažiausią galią. Tada svarbiausia užtikrinti, kad jokie kaiščiai nesukeltų varžinių apkrovų. Miego režimuose, kai sustabdomas ir I/O laikrodis (clkI/O), ir ADC laikrodis (clkADC), įrenginio įvesties buferiai bus išjungti. Tai užtikrina, kad nebus suvartojama elektros energijos

pagal įvesties logiką, kai to nereikia. Kai kuriais atvejais, norint nustatyti pažadinimo sąlygas, reikalinga įvesties logika ir

tada jis bus įjungtas. Žr. Skyrių „Skaitmeninio įvesties įjungimo ir miego režimai“, 57 psl Norėdami gauti daugiau informacijos apie tai, kurie kaiščiai įjungti. Jei įvesties buferis įjungtas, o įvesties signalas paliekamas sklandžiai arba jo analoginio signalo lygis artimas VCC/2, įvesties buferis naudos per daug energijos.

Analoginio įvesties kaiščių skaitmeninis įvesties buferis visada turi būti išjungtas. Analoginio signalo lygis, artimas VCC/2 įvesties kaiščiui, gali sukelti didelę srovę net ir aktyviuoju režimu. Skaitmeninius įvesties buferius galima išjungti įrašius į skaitmeninės įvesties išjungimo registrą (DIDR0). Atsižvelgti į „DIDR0 - skaitmeninio įvesties išjungimo registras 0“ 121 puslapyje dėl detalių.

Registro aprašymas

MCUCR - MCU valdymo registras

MCU valdymo registre yra valdymo bitai energijos valdymui.

Bit 7 6 5 4 3 2 1 0
0x35 BODS PUD SE SM1 SM0 BODSE ISC01 ISC00 MCUCR
Skaityti/Rašyti R R/W R/W R/W R/W R R/W R/W
Pradinė vertė 0 0 0 0 0 0 0 0

7 bitas - BODS: BOD Sleep

BOD išjungimo funkciją galima naudoti tik kai kuriuose įrenginiuose. Matyti „Apribojimai“, 36 psl.

Norint išjungti BOD miego metu (žr 7-1 lentelė 34 puslapyje) BODS bitas turi būti parašytas logiškai. Tai valdo laiko seka ir įgalinimo bitas, BODSE, esantis MCUCR. Pirma, abu BODS ir BODSE turi būti nustatyti į vieną. Antra, per keturis laikrodžio ciklus BODS turi būti nustatytas į vieną, o BODSE - į nulį. BODS bitas yra aktyvus tris laikrodžio ciklus po jo nustatymo. Miego instrukcija turi būti vykdoma, kai BODS yra aktyvus, kad išjungtumėte BOD tikram miego režimui. BODS bitai automatiškai išvalomi po trijų laikrodžio ciklų.

Įrenginiuose, kuriuose „Sleeping BOD“ nebuvo įdiegtas, šis bitas nenaudojamas ir visada bus nulis.

5 bitai - SE: įjungti miego režimą

SE bitas turi būti įrašytas į loginį, kad MCU pereitų į miego režimą, kai vykdoma SLEEP komanda. Kad MCU neįsijungtų į miego režimą, nebent tai yra programuotojo tikslas, rekomenduojama Sleep Enable (SE) bitą įrašyti į vieną prieš pat SLEEP komandos vykdymą ir išvalyti iškart po pabudimo.

4 bitai: 3 - SM [1: 0]: Miego režimas Pasirinkite 1 ir 0 bitus

Šie bitai pasirenka vieną iš trijų galimų miego režimų, kaip parodyta 7-2 lentelė.

7-2 lentelė. Miego režimo pasirinkimas

SM1 SM0 Miego režimas
0 0 Tuščia eiga
0 1 ADC triukšmo mažinimas
1 0 Išjungimas
1 1 Rezervuota

2 bitas - BODSE: BOD Sleep Enable

BOD išjungimo funkciją galima naudoti tik kai kuriuose įrenginiuose. Matyti „Apribojimai“, 36 psl.

BODSE bitas leidžia nustatyti BODS valdymo bitą, kaip paaiškinta BODS bitų aprašyme. BOD išjungimą kontroliuoja laiko seka.

Šis bitas nenaudojamas įrenginiuose, kuriuose nebuvo įdiegta programinės įrangos BOD išjungti, ir tuose įrenginiuose jis bus rodomas kaip nulis.

PRR - galios mažinimo registras

Galios mažinimo registras pateikia metodą, kaip sumažinti energijos suvartojimą leidžiant išjungti periferinius laikrodžio signalus.

Bit 7 6 5 4 3 2 1 0
0x20 PRTIM1 PRTIM0 PRUSI PRADC PRR
Skaityti/Rašyti R R R R R/W R/W R/W R/W
Pradinė vertė 0 0 0 0 0 0 0 0

7 bitai: 4 - Res: rezervuoti bitai

Šie bitai yra rezervuoti bitai ATtiny25 / 45/85 ir visada bus skaitomi kaip nulis.

3 bitas - PRTIM1: galios mažinimo laikmatis / skaitiklis1

Rašant loginį šį bitą, išjungiamas „Timer / Counter1“ modulis. Kai laikmatis / skaitiklis1 yra įjungtas, veiksmas tęsis kaip ir prieš išjungimą.

2 bitas - PRTIM0: galios mažinimo laikmatis / skaitiklis0

Rašant loginį šį bitą, išjungiamas „Timer / Counter0“ modulis. Kai laikmatis / skaitiklis0 yra įjungtas, veiksmas tęsis kaip ir prieš išjungimą.

1 bitas - PRUSI: galios sumažinimas USI

Rašant loginį vieną prie šio bito, išjungiamas USI sustabdant laikrodį prie modulio. Vėl pabundant USI, USI turėtų būti iš naujo inicializuotas, kad būtų užtikrintas tinkamas veikimas.

0 bitas - PRADC: galios mažinimo ADC

Rašant loginį šio bito skaičių, ADC išjungiamas. ADC turi būti išjungtas prieš jį išjungiant. Atkreipkite dėmesį, kad ADC laikrodį taip pat naudoja kai kurios analoginio lygintuvo dalys, o tai reiškia, kad analoginio lyginamojo negalima naudoti, kai šis bitas yra didelis.

Sistemos valdymas ir atstatymas

AVR nustatymas iš naujo

Atstatymo metu visi įvesties / išvesties registrai nustatomi pagal pradines reikšmes ir programa pradedama vykdyti iš naujo nustatant sen. Nurodymas, pateiktas „Reset Vector“, turi būti RJMP - Santykinis šuolis - nurodymas, kaip atlikti atstatymo tvarką. Jei programa niekada neįgalina pertraukimo šaltinio, pertraukimo vektoriai nenaudojami ir šiose vietose galima įdėti įprastą programos kodą. Grandinės schema 8-1 pav rodo atstatymo logiką. Elektriniai parametrai iš naujo nustatyti grandinę pateikti „Sistemos ir atstatymo charakteristikos“ 165 puslapyje.

8-1 pav. Atstatymo logika Iš naujo nustatyti logiką

AVR įvesties / išvesties prievadai nedelsiant atkuriami į pradinę būseną, kai aktyvuojamas atstatymo šaltinis. Tam nereikia paleisti jokio laikrodžio šaltinio.

Po to, kai visi atstatymo šaltiniai nebeveikia, iškviečiamas vėlinimo skaitiklis, ištempiantis vidinį atstatymą. Tai leidžia galiai pasiekti stabilų lygį prieš pradedant įprastą veikimą. Vėlavimo skaitiklio skirtąjį laiką nustato vartotojas per SUT ir CKSEL saugiklius. Skirtingi vėlavimo laikotarpio pasirinkimai pateikti "Laikrodis Šaltiniai “25 puslapyje.

Iš naujo nustatyti šaltinius

„ATtiny25 / 45/85“ yra keturi atstatymo šaltiniai:

Įjungimo atstatymas. MCU atstatomas, kai tiekimo tūristage yra žemiau įjungimo iš naujo nustatymo slenksčio (VPOT).

Išorinis atstatymas. MCU nustatomas iš naujo, kai RESET kaištyje yra žemas lygis ilgiau nei minimalus impulso ilgis.

Sargybinis iš naujo. MCU nustatomas iš naujo, kai baigiasi „Watchdog Timer“ laikotarpis ir įjungiamas „Watchdog“.

Rudos spalvos nustatymas iš naujo. MCU atstatomas, kai tiekiamas tiekimastage VCC yra žemiau Brown-out Reset slenksčio (VBOT), o Brown-out detektorius yra įjungtas.

Įjungimo nustatymas iš naujo

Įjungimo iš naujo (POR) impulsą generuoja „On-chip“ aptikimo grandinė. Aptikimo lygis yra apibrėžtas „Sys- temą ir atstatyti charakteristikas “165 puslapyje. POR aktyvuojamas, kai VCC yra žemiau aptikimo lygio. POR grandinė gali būti naudojama paleisties atstatymui suaktyvinti, taip pat aptikti tiekimo trūkumątage.

Įjungimo iš naujo nustatymo (POR) grandinė užtikrina, kad įrenginys būtų iš naujo nustatytas iš maitinimo įjungimo. Pasiekus įjungimo atstatymo slenkstį, ttage iškviečia delsos skaitiklį, kuris nustato, kiek laiko įrenginys išlaikomas RESET režimu po VCC padidėjimo. RESET signalas vėl aktyvuojamas be jokio delsimo, kai VCC sumažėja žemiau aptikimo lygio.

8-2 pav. MCU paleidimas, RESET Susieta su VCC

VIDINIS RESET

8-3 pav. MCU paleidimas, RESET Išplėstas išoriškai

Išorinis atstatymas

Išorinį atstatymą generuoja žemas lygis „RESET“ kaište, jei jis įjungtas. Iš naujo nustatykite impulsus, ilgesnius nei minimalus impulso plotis (žr „Sistemos ir atstatymo charakteristikos“ 165 puslapyje) sugeneruos atstatymą, net jei laikrodis neveikia. Negarantuojama, kad trumpesni impulsai sugeneruos atstatymą. Kai taikomas signalas pasiekia Reset Threshold Voltage – VRST – ant teigiamo krašto delsos skaitiklis paleidžia MCU pasibaigus skirtajam laikotarpiui.

8-4 pav. Išorinis atstatymas veikimo metu 8.4 pav

Rudos spalvos aptikimas

ATtiny25/45/85 turi On-chip Brown-out Detection (BOD) grandinę, skirtą stebėti VCC lygį veikimo metu, lyginant jį su fiksuotu paleidimo lygiu. BOD paleidimo lygį galima pasirinkti BODLEVEL saugikliais. Trigerio lygis turi histerezę, užtikrinančią Brown-out aptikimą be smaigalių. Aptikimo lygio histerezė turėtų būti interpretuojama kaip VBOT+ = VBOT + VHYST/2 ir VBOT- = VBOT – VHYST/2.

Kai BOD įjungtas, o VCC sumažėja iki vertės, mažesnės už trigerio lygį (VBOT-in 8-5 pav), iš karto suaktyvinamas Brown-out Reset. Kai VCC pakyla virš trigerio lygio (VBOT+ in 8-5 pav), delsos skaitiklis paleidžia MCU pasibaigus skirtojo laiko periodui tTOUT.

BOD grandinė aptiks VCC sumažėjimą tik tuo atveju, jei ttage išlieka žemiau trigerio lygio ilgiau nei nurodyta tBOD „Sistemos ir atstatymo charakteristikos“ 165 puslapyje. 8.5 pav

Budėjimo šuo atstatyti

Pasibaigus „Watchdog“ laikui, jis generuos trumpą vieno CK ciklo trukmės atstatymo impulsą. Prie šio impulso krentančio krašto delsos laikmatis pradeda skaičiuoti skirtąjį laikotarpį tTOUT. Atsižvelgti į „Sargybos laikmatis“, 42 psl išsamią informaciją apie „Watchdog Timer“ veikimą.

ttage Nuoroda Įjungti signalus ir paleidimo laiką

TtagNuoroda turi paleidimo laiką, kuris gali turėti įtakos jos naudojimo būdui. Nurodytas paleidimo laikas „Sistemos ir atstatymo charakteristikos“ 165 puslapyje. Norint taupyti energiją, nuoroda ne visada įjungiama. Nuoroda yra šiose situacijose:

Kai įjungtas BOD (užprogramavus BODLEVEL [2: 0] saugiklių bitus).

Kai pralaidumo nuoroda yra prijungta prie analoginio lygintuvo (nustatant ACBG bitą ACSR).

Kai ADC yra įjungtas.

Taigi, kai BOD nėra įjungtas, nustatęs ACBG bitą arba įgalinęs ADC, vartotojas visada turi leisti nuorodą paleisti prieš naudojant išvestį iš „Analog Comparator“ arba ADC. Norėdami sumažinti energijos suvartojimą „Power-down“ režimu, vartotojas gali išvengti trijų aukščiau nurodytų sąlygų, kad prieš įjungdamas „Power-down“ režimą, atskaitos taškas būtų išjungtas.

Watchdog laikmatis

„Watchdog“ laikmatis nustatomas naudojant lustinį osciliatorių, veikiantį 128 kHz dažniu. Valdant „Watchdog Timer“ preskalerį, „Watchdog Timer“ atstatymo intervalą galima reguliuoti, kaip parodyta 8-3 lentelė 46 puslapyje. WDR - Watchdog Reset - instrukcija atstato Watchdog Timer. „Watchdog“ laikmatis taip pat nustatomas iš naujo, kai jis yra išjungtas ir įvykus „Chip Reset“. Norėdami nustatyti atstatymo laikotarpį, galima pasirinkti dešimt skirtingų laikrodžio ciklo periodų. Jei atstatymo laikotarpis baigiasi be kito „Watchdog Reset“, „ATtiny25 / 45/85“ nustatoma iš naujo ir vykdoma iš „Reset Vector“. Išsamią informaciją apie „Watchdog Reset“ laiką žr 8-3 lentelė 46 puslapyje.

„Watchdog“ laikmatis taip pat gali būti sukonfigūruotas taip, kad generuotų pertraukimą, o ne iš naujo. Tai gali būti labai naudinga naudojant „Watchdog“, kad pabustų iš „Power-down“.

Norint išvengti netyčinio „Watchdog“ išjungimo ar netyčinio skirtojo laiko keitimo, saugiklis WDTON parenka du skirtingus saugos lygius, kaip parodyta 8-1 lentelė Nurodykite „Laiko nustatytos sekos, kaip pakeisti sargybos laikmačio figūra “, 43 puslapyje dėl detalių.

8-1 lentelė. WDT konfigūracija kaip WDTON saugiklių nustatymų funkcija

WDTON Saugos lygis WDT pradinė būsena Kaip išjungti WDT Kaip pakeisti skirtąjį laiką
Neužprogramuota 1 Išjungta Laiko seka Jokių apribojimų
Užprogramuota 2 Įjungta Visada įjungta Laiko seka

8-7 pav. Watchdog laikmatis Sargybinis šuo

Laiko sargybos laikmačio konfigūracijos keitimo sekos

Konfigūracijos keitimo seka šiek tiek skiriasi tarp dviejų saugos lygių. Kiekvienam lygiui aprašomos atskiros procedūros.

1 saugos lygis: šiuo režimu Watchdog Timer iš pradžių yra išjungtas, tačiau jį galima įjungti įrašant WDE bitą į vieną be jokių apribojimų. Išjungus įgalintą „Watchdog“ laikmatį, reikalinga seka pagal laiką. Norėdami išjungti įjungtą „Watchdog“ laikmatį, turite atlikti šią procedūrą:

Atlikdami tą pačią operaciją, parašykite loginę WDCE ir WDE. Logika turi būti parašyta WDE, neatsižvelgiant į ankstesnę WDE bitų vertę.

Per kitus keturis laikrodžio ciklus, atlikdami tą pačią operaciją, parašykite WDE ir WDP bitus, kiek norite, bet išvalę WDCE bitą.

2 saugos lygis: šiuo režimu Watchdog Timer visada įjungtas, o WDE bitas visada bus skaitomas kaip vienas. Keičiant „Watchdog“ skirtojo laiko periodą, reikalinga seka pagal laiką. Norint pakeisti Watchdog Time-out, reikia laikytis šios procedūros:

Atlikdami tą pačią operaciją, parašykite loginę WDCE ir WDE. Nepaisant to, kad WDE visada nustatytas, WDE turi būti užrašytas į vieną, kad būtų pradėta laiko seka.

Per kitus keturis laikrodžio ciklus, atlikdami tą pačią operaciją, parašykite WDP bitus, kaip norite, bet išvalę WDCE bitą. Į WDE bitą įrašyta reikšmė nesvarbi.

Kodas Pvzample

Šis kodas, pvzample rodo vieną surinkimą ir vieną C funkciją WDT išjungimui. Buvęsampdaroma prielaida, kad pertraukimai yra valdomi (pvz., išjungiant pertraukimus visame pasaulyje), kad vykdant šias funkcijas nebūtų jokių pertraukų.

Surinkimo kodas Example(1)
WDT_išjungta:

wdr

; Išvalyti WDRF iš MCUSR

ldi r16, (0<

iš MCUSR, r16

; Parašykite loginį WDCE ir WDE

; Palikite seną išankstinio skalavimo priemonės nustatymą, kad išvengtumėte netyčinio „Watchdog“ atstatymo

r16, WDTCR

ori r16, (1<

išeina WDTCR, r16

; Išjunkite WDT

ldi r16, (0<

išeina WDTCR, r16

ret

C kodas Pvzample(1)
negalioja WDT_off(negalioja)

{

_WDR ();

/* Išvalyti WDRF naudojant MCUSR */ MCUSR = 0x00

/* Įrašykite loginį į WDCE ir WDE */ WDTCR |= (1<

/ * Išjunkite WDT * / WDTCR = 0x00;

}

Pastaba: 1. Žr „Kodas Examples“ 6 puslapyje.

Registro aprašymas

MCUSR - MCU būsenos registras

MCU būsenos registre pateikiama informacija, kuris atstatymo šaltinis sukėlė MCU nustatymą iš naujo.

Bit 7 6 5 4 3 2 1 0
0x34 WDRF BORFAS EXTRF PORF MCUSR
Skaityti/Rašyti R R R R R/W R/W R/W R/W

Pradinė vertė 0 0 0 0 Žr. Bitų aprašymą

7 bitai: 4 - Res: rezervuoti bitai

Šie bitai yra rezervuoti bitai ATtiny25 / 45/85 ir visada bus skaitomi kaip nulis.

3 bitas - WDRF: sargybos atstatymo vėliava

Šis bitas nustatomas, jei įvyksta sargybos atstatymas. Bitas nustatomas iš naujo įjungiant „Reset“ arba atrašant vėliavoje loginį nulį.

2 bitas - BORF: „Brown-out Reset Flag“

Šis bitas nustatomas, jei įvyksta „Brown-out Reset“. Bitas nustatomas iš naujo įjungiant „Reset“ arba atrašant vėliavoje loginį nulį.

1 bitas - EXTRF: išorinio nustatymo vėliava

Šis bitas nustatomas, jei įvyksta išorinis atstatymas. Bitas nustatomas iš naujo įjungiant iš naujo arba vėliavai parašius loginį nulį.

0 bitas - PORF: „Power-on Reset Flag“

Šis bitas nustatomas, jei įvyksta įjungimo nustatymas iš naujo. Bitas nustatomas iš naujo tik tada, kai vėliavoje užrašomas loginis nulis.

Norėdamas nustatyti atstatymo sąlygą, naudodamasis „Reset Flags“, vartotojas turėtų kuo anksčiau perskaityti ir iš naujo nustatyti MCUSR. Jei registras išvalomas prieš įvykstant kitam atstatymui, iš naujo nustatymo šaltinį galima rasti ištyrus „Reset Flags“.

WDTCR - „Watchdog“ laikmačio valdymo registras

Bit 7 6 5 4 3 2 1 0
0x21 WDIF WDIE WDP3 WDCE WDE WDP2 WDP1 WDP0 WDTCR
Skaityti/Rašyti R/W R/W R/W R/W R/W R/W R/W R/W
Pradinė vertė 0 0 0 0 X 0 0 0

7 bitas - WDIF: „Watchdog Timeout Interrupt Flag“

Šis bitas nustatomas, kai „Watchdog Timer“ įvyksta skirtasis laikas, o „Watchdog Timer“ yra sukonfigūruotas pertraukimui. WDIF išvaloma aparatine įranga vykdant atitinkamą pertraukimo valdymo vektorių. Arba WDIF išvalomas, vėliavai užrašant loginį. Nustačius I bitą SREG ir WDIE, vykdomas „Watchdog“ skirtasis laikas.

6 bitas - WDIE: „Watchdog Timeout Interrupt“ įgalinimas

Kai šis bitas yra parašytas vienam, WDE išvalomas, o būsenos registre nustatytas I bitas, įjungiamas „Watchdog“ skirtasis laikas. Šiame režime įvykdomas atitinkamas pertraukimas, o ne atstatymas, jei „Watchdog“ laikmatyje įvyko skirtasis laikas.

Jei nustatytas WDE, aparatūra automatiškai išvalo WDIE, kai atsiranda skirtasis laikas. Tai naudinga palaikant „Watchdog Reset“ saugą naudojant pertraukimą. Išvalius WDIE bitą, kitas laikas bus sugeneruotas. Norint išvengti „Watchdog“ atstatymo, WDIE turi būti nustatyta po kiekvieno pertraukimo.

8-2 lentelė. „Watchdog“ laikmačio konfigūracija

WDE WDIE Sargybos laikmačio būsena Veiksmas dėl skirtojo laiko
0 0 Sustojo Nėra
0 1 Bėgimas Pertraukite
1 0 Bėgimas Nustatyti iš naujo
1 1 Bėgimas Pertraukite

4 bitas - WDCE: budėjimo šuns pakeitimas įgalintas

Šis bitas turi būti nustatytas, kai WDE bitas įrašomas į loginę nulį. Priešingu atveju sargybinis nebus išjungtas. Parašius į vieną, aparatūra išvalys šį bitą po keturių laikrodžio ciklų. Norėdami sužinoti „Watchdog“ išjungimo procedūrą, žiūrėkite WDE bitų aprašą. Šis bitas taip pat turi būti nustatytas keičiant išankstinio skalavimo bitus. Matyti „Laiko sekos kaip pakeisti „Watchdog“ laikmačio konfigūraciją “, 43 psl.

3 bitas - WDE: sarginis šuo įgalinti

Kai WDE yra parašytas loginiu, „Watchdog Timer“ yra įjungtas, o jei WDE yra parašytas į loginę nulį, „Watchdog Timer“ funkcija išjungta. WDE galima išvalyti tik tuo atveju, jei WDCE bitai turi pirmąjį logikos lygį. Norėdami išjungti įjungtą „Watchdog“ laikmatį, reikia laikytis šios procedūros:

Atlikdami tą pačią operaciją, parašykite loginę WDCE ir WDE. Loginė logotipas turi būti parašytas WDE, net jei jis nustatytas į vieną prieš pradedant išjungti operaciją.

Per ateinančius keturis laikrodžio ciklus parašykite logiką 0 į WDE. Tai išjungia sargybinį.

2 saugos lygiu negalima išjungti „Watchdog Timer“, net naudojant aukščiau aprašytą algoritmą. Matyti „Laiko sargybos laikmačio konfigūracijos keitimo sekos“, 43 psl.

1 saugos lygiu WDE yra nepaisoma WDRF naudojant MCUSR. Matyti „MCUSR - MCU būsenos registras“, 44 psl aprašyti WDRF. Tai reiškia, kad WDE visada nustatoma, kai nustatoma WDRF. Norėdami išvalyti WDE, prieš išjungdami „Watchdog“ aukščiau aprašytą procedūrą, WDRF turi būti išvalytas. Ši funkcija užtikrina kelis pakartotinius nustatymus per gedimą sukeliančiomis sąlygomis ir saugų paleidimą po gedimo.

Pastaba: jei programoje nebus naudojamas budėjimo laikmatis, inicijuojant įrenginį svarbu atlikti budėjimo išjungimo procedūrą. Jei Watchdog netyčia įjungtas, pvzampJei nutrūks žymeklis arba išsijungs, įrenginys bus nustatytas iš naujo, o tai savo ruožtu lems naują stebėjimo funkciją. Kad išvengtumėte šios situacijos, taikomoji programinė įranga visada turėtų išvalyti WDRF vėliavą ir WDE valdymo bitą inicializacijos metu.

5, 2: 0 bitai - WDP [3: 0]: „Watchdog Timer Preskaler“ 3, 2, 1 ir 0

WDP [3: 0] bitai nustato „Watchdog Timer“ išankstinį skalavimą, kai „Watchdog Timer“ yra įjungtas. Skirtingos išankstinio skalavimo vertės ir jų atitinkami skirtojo laiko periodai rodomi 8-3 lentelė.

8-3 lentelė. Watchdog Timer Prescale Select

WDP3 WDP2 WDP1 WDP0 WDT osciliatorių ciklų skaičius Įprastas skirtasis laikas prie VCC = 5.0 V
0 0 0 0 2K (2048) ciklai 16 ms
0 0 0 1 4K (4096) ciklai 32 ms
0 0 1 0 8K (8192) ciklai 64 ms
0 0 1 1 16K (16384) ciklai 0.125 s
0 1 0 0 32K (32764) ciklai 0.25 s
0 1 0 1 64K (65536) ciklai 0.5 s
0 1 1 0 128K (131072) ciklai 1.0 s
0 1 1 1 256K (262144) ciklai 2.0 s
1 0 0 0 512K (524288) ciklai 4.0 s
1 0 0 1 1024K (1048576) ciklai 8.0 s

8-3 lentelė. „Watchdog“ laikmačio išankstinio skalės pasirinkimas (tęsinys)

WDP3 WDP2 WDP1 WDP0 WDT osciliatorių ciklų skaičius Įprastas skirtasis laikas prie VCC = 5.0 V
1 0 1 0 Rezervuota(1)
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1

Pastaba: 1. Jei pasirinkta, bus naudojamas vienas iš galiojančių nustatymų, mažesnių nei 0b1010.

Pertraukia

Šiame skyriuje aprašoma nutraukimo valdymo, atliekamo ATtiny25 / 45/85, ypatumai. Dėl bendro AVR pertraukimo valdymo paaiškinimo žr „Atstatymas ir pertraukimas“ 12 puslapyje.

Nutraukti vektorius ATtiny25 / 45/85

ATtiny25 / 45/85 pertraukimo vektoriai aprašyti 9-1 lentelėžemiau.

9-1 lentelė. Iš naujo nustatyti ir pertraukti vektorius

Vektorius Nr. Programos adresas Šaltinis Nutraukti apibrėžimą
1 0x0000 RESET Išorinis kaištis, įjungimo nustatymas iš naujo, rudos spalvos nustatymas iš naujo, sargybinio atstatymas
2 0x0001 INT0 Išorinio pertraukimo užklausa 0
3 0x0002 PCINT0 PIN kodo keitimo pertraukimo užklausa 0
4 0x0003 TIMER1_COMPA Laikmatis / skaitiklis1 Palyginkite A varžybas
5 0x0004 TIMER1_OVF Laikmatis / skaitiklis1 perpildymas
6 0x0005 TIMER0_OVF Laikmatis / skaitiklis0 perpildymas
7 0x0006 EE_RDY Parengta EEPROM
8 0x0007 ANA_COMP Analoginis lygintuvas
9 0x0008 ADC ADC konversija baigta
10 0x0009 TIMER1_COMPB Laikmatis / skaitiklis1 Palyginkite B rungtynes
11 0x000A TIMER0_COMPA Laikmatis / skaitiklis0 Palyginkite A varžybas
12 0x000B TIMER0_COMPB Laikmatis / skaitiklis0 Palyginkite B rungtynes
13 0x000C WDT Budėjimo šuns skirtasis laikas
14 0x000D USI_START VARTOTI PRADĖTI
15 0x000E USI_OVF USI perpildymas

Jei programa niekada neįgalina pertraukimo šaltinio, pertraukimo vektoriai nenaudojami ir šiose vietose galima įdėti įprastą programos kodą.

Tipiška ir bendra pertraukimo vektorių adresų sąranka ATtiny25/45/85 parodyta programoje example žemiau.

Surinkimo kodas Example
.org 0x0000 ; Nustatykite kito adresą pareiškimas
rjmp RESET ; Adresas 0x0000
rjmp INT0_ISR ; Adresas 0x0001
rjmp PCINT0_ISR ; Adresas 0x0002
rjmp TIM1_COMPA_ISR ; Adresas 0x0003
rjmp TIM1_OVF_ISR ; Adresas 0x0004
rjmp TIM0_OVF_ISR ; Adresas 0x0005
rjmp EE_RDY_ISR ; Adresas 0x0006
rjmp ANA_COMP_ISR ; Adresas 0x0007
rjmp ADC_ISR ; Adresas 0x0008
rjmp TIM1_COMPB_ISR ; Adresas 0x0009
rjmp TIM0_COMPA_ISR ; Adresas 0x000A
rjmp TIM0_COMPB_ISR ; Adresas 0x000B
rjmp WDT_ISR ; Adresas 0x000C
rjmp USI_START_ISR ; Adresas 0x000D
rjmp USI_OVF_ISR ; Adresas 0x000E
NUSTATYTI: ; Pagrindinės programos pradžia
; Adresas 0x000F

Pastaba: žr „Kodas Examples“ 6 puslapyje.

Išoriniai pertraukimai

Išorinius pertraukimus įjungia INT0 kaištis arba bet kuris iš PCINT [5: 0] kaiščių. Atkreipkite dėmesį, kad įjungus pertraukimus, net jei INT0 arba PCINT [5: 0] kaiščiai sukonfigūruoti kaip išėjimai, jie įsijungia. Ši funkcija suteikia galimybę sugadinti programinę įrangą. Kaiščio keitimas pertraukia PCI, suveiks, jei persijungs bet kuris įgalintas PCINT [5: 0] kaištis. PCMSK registras valdo, kurie kaiščiai prisideda prie kaiščių keitimo. Smeigtuko keitimo pertraukimai PCINT [5: 0] aptinkami asinchroniškai. Tai reiškia, kad šie pertraukimai gali būti naudojami pažadinant dalį taip pat iš miego režimų, išskyrus laukimo režimą.

INT0 pertraukimus gali sukelti krentantis ar kylantis kraštas arba žemas lygis. Tai nustatoma taip, kaip nurodyta MCU valdymo registro specifikacijoje - MCUCR. Kai įjungtas INT0 pertraukimas ir jis sukonfigūruotas kaip įjungtas lygiu, pertraukimas suveiks tol, kol kaištis laikomas žemai. Atkreipkite dėmesį, kad krintančio ar kylančio krašto pertraukimų atpažinimas INT0 reikalauja, kad būtų įvesties / išvesties laikrodis, aprašytas „Laikrodžių sistemos ir jų paskirstymas“ įjungta 23 psl.

Žemo lygio pertraukimas

Žemo lygio pertraukimas INT0 aptinkamas asinchroniškai. Tai reiškia, kad šį pertraukimą galima naudoti pažadinant dalį taip pat ir iš miego režimų, išskyrus laukimo režimą. Įvesties / išvesties laikrodis sustabdomas visais miego režimais, išskyrus laukimo režimą.

Atminkite, kad jei lygiu suaktyvintas pertraukimas naudojamas pažadinant iš maitinimo išjungimo, reikiamas lygis turi būti palaikomas pakankamai ilgai, kad MCU užbaigtų pažadinimą ir suaktyvintų lygio pertraukimą. Jei lygis dingsta nepasibaigus paleidimo laikui, MCU vis tiek atsibus, bet pertrauka nebus generuojama. Paleidimo laiką apibrėžia SUT ir CKSEL saugikliai, kaip aprašyta „Sistemos laikrodžio ir laikrodžio parinktys“ 23 puslapyje.

Jei žemas pertraukimo kaiščio lygis pašalinamas dar nepabudus įrenginiui, programos vykdymas nebus nukreiptas į pertraukimo tarnybos režimą, bet tęsiamas iš nurodymo vykdant komandą SLEEP.

PIN keitimo pertraukimo laikas

Buvęsamprodomas kaiščio keitimo pertraukimo laikas 9-1 pav.

Registro aprašymas

MCUCR - MCU valdymo registras

Išoriniame pertraukimų valdymo registre A yra valdymo bitų, skirtų pertraukimo jutimo valdymui.

Bit 7 6 5 4 3 2 1 0
0x35 BODS PUD SE SM1 SM0 BODSE ISC01 ISC00 MCUCR
Skaityti/Rašyti R R/W R/W R/W R/W R R/W R/W
Pradinė vertė 0 0 0 0 0 0 0 0

1 bitai: 0 - ISC0 [1: 0]: pertraukimo jutimo valdymas 0 bitai 1 ir 0 bitai

Išorinį pertraukimą 0 įjungia išorinis kaištis INT0, jei nustatyta SREG I vėliava ir atitinkama pertraukimo kaukė. Išorinio INT0 kaiščio lygis ir kraštai, įjungiantys pertraukimą, yra apibrėžti 9-2 lentelė. INT0 kaiščio reikšmė yra sampprieš aptikdami kraštus. Jei pasirinktas krašto arba perjungimo pertraukimas, impulsai, trunkantys ilgiau nei vieną laikrodžio laikotarpį, sukurs pertrauką. Negarantuojama, kad trumpesni impulsai sukels pertraukimą. Jei pasirenkamas žemo lygio pertraukimas, žemas lygis turi būti išlaikytas tol, kol bus baigta šiuo metu vykdoma instrukcija, kad būtų sukurtas pertraukimas.

9-2 lentelė. Pertraukimas 0 Sense Control

ISC01 ISC00 Aprašymas
0 0 Žemas INT0 lygis sukuria pertraukimo užklausą.
0 1 Bet koks loginis INT0 pakeitimas generuoja pertraukimo užklausą.
1 0 Krintantis INT0 kraštas generuoja pertraukimo užklausą.
1 1 Kylantis INT0 kraštas generuoja pertraukimo užklausą.

GIMSK - Bendrasis pertraukiamųjų kaukių registras

Bit 7 6 5 4 3 2 1 0
0x3B INT0 PCIE GIMSK
Skaityti/Rašyti R R/W R/W R R R R R
Pradinė vertė 0 0 0 0 0 0 0 0

7 bitai, 4: 0 - Res: rezervuoti bitai

Šie bitai yra rezervuoti bitai ATtiny25 / 45/85 ir visada bus skaitomi kaip nulis.

6 bitas - INT0: išorinio pertraukimo užklausa 0 įjungti

Nustačius INT0 bitą (vieną) ir nustatant I bitą būsenos registre (SREG) (vieną), įjungiamas išorinis kaiščio pertraukimas. MCU valdymo registre (MCUCR) esantys „Interrupt Sense Control0“ bitai 1/0 (ISC01 ir ISC00) apibrėžia, ar išorinis pertraukimas įjungiamas kylant ir (arba) krintant INT0 kaiščio kraštui ar juntamam lygiui. Aktyvumas kaiščiui sukels pertraukimo užklausą, net jei INT0 sukonfigūruotas kaip išėjimas. Atitinkamas išorinio pertraukimo prašymo 0 pertraukimas vykdomas iš INT0 pertraukimo vektoriaus.

5 bitas - PCIE: įjungti įvesties keitimo pertraukimą

Nustačius PCIE bitą (vieną) ir būsenos registre (SREG) esantį I bitą (vieną), įjungiamas kaiščių keitimo pertraukimas. Bet koks įjungto PCINT [5: 0] kaiščio pakeitimas sukels pertraukimą. Atitinkamas PIN keitimo pertraukimo užklausos pertraukimas vykdomas iš PCI pertraukimo vektoriaus. „PCINT“ [5: 0] kaiščius atskirai įgalina „PCMSK0“ registras.

GIFR - Bendrasis pertraukimų vėliavos registras

Bit 7 6 5 4 3 2 1 0
0x3A INTF0 PCIF GIFR
Skaityti/Rašyti R R/W R/W R R R R R
Pradinė vertė 0 0 0 0 0 0 0 0

7 bitai, 4: 0 - Res: rezervuoti bitai

Šie bitai yra rezervuoti bitai ATtiny25 / 45/85 ir visada bus skaitomi kaip nulis.

6 bitas - INTF0: išorinė pertraukimo žyma 0

Kai krašto ar logikos pakeitimas INT0 kaištyje sukelia pertraukimo užklausą, INTF0 tampa nustatyta (viena). Jei I bitai SREG ir INT0 bitai GIMSK yra nustatyti (vienas), MCU pereis prie atitinkamo pertraukimo vektoriaus. Vėliava išvaloma, kai vykdoma pertraukimo rutina. Arba vėliavą galima išvalyti parašius jai logišką. Ši žyma visada išvaloma, kai INT0 yra sukonfigūruotas kaip lygio pertraukimas.

5 bitas - PCIF: „Pin Change Interrupt Flag“

Kai loginis pakeitimas bet kuriame PCINT [5: 0] kaište suaktyvina pertraukimo užklausą, PCIF nustatomas (vienas). Jei I bitai SREG ir PCIE bitai GIMSK yra nustatyti (vienas), MCU pereis prie atitinkamo pertraukimo vektoriaus. Vykdant pertraukimo procedūrą, vėliava išvaloma. Arba vėliavą galima išvalyti parašius jai logišką.

PCMSK - smeigtukų keitimo kaukių registras

Bit 7 6 5 4 3 2 1 0
0x15 PCINT5 PCINT4 PCINT3 PCINT2 PCINT1 PCINT0 PCMSK
Skaityti/Rašyti R R R/W R/W R/W R/W R/W R/W
Pradinė vertė 0 0 0 0 0 0 0 0

7 bitai: 6 - Res: rezervuoti bitai

Šie bitai yra rezervuoti bitai ATtiny25 / 45/85 ir visada bus skaitomi kaip nulis.

Bitai 5: 0 - PCINT [5: 0]: smeigtuko keitimo įgalinimo kaukė 5: 0

Kiekvienas PCINT [5: 0] bitas parenka, ar atitinkamame įvesties / išvesties kaište įgalintas kaiščių keitimo pertraukimas. Jei nustatytas PCINT [5: 0] ir nustatytas PCIE bitas GIMSK, atitinkamame įvesties / išvesties kaište įgalinamas kaiščių keitimo pertraukimas. Jei PCINT [5: 0] išvaloma, atitinkamo įvesties / išvesties kaiščio keitimo pertraukimas yra išjungtas.

I/O prievadai

Įvadas

Visi AVR prievadai turi tikrą skaitymo-keitimo-rašymo funkciją, kai naudojami kaip bendrieji skaitmeniniai įvesties/išvesties prievadai. Tai reiškia, kad vieno prievado kaiščio kryptį galima pakeisti netyčia nekeičiant jokio kito kontakto krypties naudojant SBI ir CBI instrukcijas. Tas pats galioja keičiant pavaros vertę (jei sukonfigūruota kaip išvestis) arba įjungiant / išjungiant ištraukiamuosius rezistorius (jei sukonfigūruota kaip įvestis). Kiekvienas išvesties buferis turi simetriškas pavaros charakteristikas su dideliu kriauklės ir šaltinio pajėgumu. Smeigtuko tvarkyklė yra pakankamai stipri, kad galėtų tiesiogiai valdyti LED ekranus. Visuose prievadų kaiščiuose yra individualiai pasirenkami ištraukiamieji rezistoriai su tiekimo tūriutage nekintamoji varža. Visi įvesties / išvesties kaiščiai turi apsauginius diodus tiek VCC, tiek įžeminimui, kaip nurodyta 10-1 pav. Nurodykite „Elektros charakteristikos“ 161 puslapyje Norėdami gauti visą parametrų sąrašą.

10-1 pav. Įvesties/išvesties kaiščio ekvivalento schema

10 pav

Visi registrai ir bitų nuorodos šiame skyriuje yra parašyti bendra forma. Mažoji raidė „x“ reiškia prievado numeracijos raidę, o mažoji „n“ – bito numerį. Tačiau programoje naudojant registrą arba bitų apibrėžimus, reikia naudoti tikslią formą. Pavyzdžiui,ample, PORTB3 bitui Nr. 3 B uoste, čia paprastai dokumentuota kaip PORTxn. Fiziniai įvesties/išvesties registrai ir bitų vietos yra išvardyti „Registracijos aprašymas“ įjungtas 64 psl.

Kiekvienam prievadui priskiriamos trys įvesties / išvesties atminties adresų vietos, po vieną - duomenų registrui - PORTx, duomenų krypties registrui - DDRx ir prievado įvesties kaiščiams - PINx. Uosto įvesties kaiščių įvesties / išvesties vieta yra tik skaitoma, o duomenų registras ir duomenų krypties registras yra skaitomas / rašomas. Tačiau, užrašius logiką į „PINx“ registrą, bitai bus perjungti į atitinkamą bitą duomenų registre. Be to, MCUCR „Pull-up Disable - PUD“ bitas išjungia visų jungčių kaiščių nustatymo funkciją.

I / O prievado naudojimas kaip bendrosios skaitmeninės įvesties / išvesties aprašytas „Uostai kaip bendrasis skaitmeninis įvestis / išvestis“ 53 puslapyje. Dauguma prievado kaiščių yra sutankintos su pakaitinėmis įrenginio periferinių funkcijų funkcijomis. Kaip aprašyta kiekviena pakaitinė funkcija, veikia prievado kaištis „Alternatyvios uosto funkcijos“ 57 puslapyje. Išsamų alternatyvių funkcijų aprašymą rasite atskirų modulių skyriuose.

Atkreipkite dėmesį, kad įjungus alternatyvią kai kurių prievado kaiščių funkciją, tai neturi įtakos kitų prievadų naudojimui kaip bendro skaitmeninio įvesties / išvesties prievado.

Uostai kaip bendrasis skaitmeninis įvestis / išvestis

Prievadai yra dvikryptės įvesties / išvesties prievadai su papildomais vidiniais prisitraukimais. 10-2 pav rodo funkcinį vieno įvesties / išvesties prievado kaiščio, čia paprastai vadinamo Pxn, aprašymą.

10-2 pav. Bendroji skaitmeninė įvestis/išvestis(1)

10 pav

Smeigtuko konfigūravimas

Kiekvieną prievado kaištį sudaro trys registrų bitai: DDxn, PORTxn ir PINxn. Kaip parodyta „Registracijos aprašymas“ įjungtas 64 psl, DDxn bitai pasiekiami DDRx I / O adresu, PORTxn bitai PORTx I / O adresu ir PINxn bitai PINx I / O adresu.

DDRx registre esantis DDxn bitas parenka šio kaiščio kryptį. Jei „DDxn“ yra loginė, „Pxn“ sukonfigūruotas kaip išvesties kaištis. Jei DDxn parašyta loginė nulis, Pxn sukonfigūruotas kaip įvesties kaištis.

Jei kaištis yra sukonfigūruotas kaip įvesties kaištis, „PORTxn“ yra loginė, suaktyvinamas rezistorius. Norėdami išjungti traukimo rezistorių, PORTxn turi būti užrašytas loginis nulis arba kaištis turi būti sukonfigūruotas kaip išvesties kaištis. Prijungimo kaiščiai nustatomi trigubai, kai atstatymo būsena tampa aktyvi, net jei neveikia laikrodžiai.

Jei PORTxn yra loginė, kai kaištis sukonfigūruotas kaip išvesties kaištis, prievado kaištis varomas aukštai (vienas). Jei PORTxn yra loginis nulis, kai kaištis yra sukonfigūruotas kaip išvesties kaištis, prievado kaištis valdomas žemai (nulis).

Smeigtuko perjungimas

Rašant loginį PINxn, pakeičiama PORTxn reikšmė, nepriklausomai nuo DDRxn vertės. Atkreipkite dėmesį, kad SBI instrukcija gali būti naudojama norint pakeisti vieną bitą uoste.

Perėjimas tarp įvesties ir išvesties

Perjungiant tarp trijų būsenų ({DDxn, PORTxn} = 0b00) ir aukšto išėjimo ({DDxn, PORTxn} = 0b11), tarpinės būsenos, kai įjungtas ištraukimas {DDxn, PORTxn} = 0b01) arba žema išvestis ({DDxn, PORTxn} = 0b10) turi įvykti. Paprastai traukimo įjungta būsena yra visiškai priimtina, nes didelės varžos aplinka nepastebės skirtumo tarp stiprios stiprios vairuotojo ir prisitraukimo. Jei taip nėra, PUD bitas MCUCR registre gali būti nustatytas taip, kad išjungtų visus ištraukimus visuose prievaduose.

Perjungimas tarp įvesties su ištraukimu ir mažu išėjimu sukelia tą pačią problemą. Vartotojas kaip tarpinį žingsnį turi naudoti tri būseną ({DDxn, PORTxn} = 0b00) arba išvesties aukštą būseną ({DDxn, PORTxn} = 0b10).

10-1 lentelė apibendrina kaiščių vertės valdymo signalus.

10-1 lentelė. Prievado kaiščio konfigūracijos

DDxn PORTxn PUD

(MCUCR)

I/O Prisitraukimas komentuoti
0 0 X Įvestis Nr Trijų būsenų (Hi-Z)
0 1 0 Įvestis Taip Pxn bus srovės šaltinis, jei ekst. patraukė žemai.
0 1 1 Įvestis Nr Trijų būsenų (Hi-Z)
1 0 X Išvestis Nr Mažas išėjimas (kriauklė)
1 1 X Išvestis Nr Didelis išvestis (šaltinis)

Skaitant „Pin“ vertę

Nepriklausomai nuo duomenų krypties bitų DDxn nustatymo, prievado kaištį galima perskaityti per PINxn registro bitą. Kaip parodyta 10-2 pav, PINxn registro bitai ir ankstesnis skląstis sudaro sinchronizatorių. To reikia norint išvengti metastabilumo, jei fizinis kaištis pakeičia vertę netoli vidinio laikrodžio krašto, tačiau tai taip pat sukelia vėlavimą. 10-3 pav rodoma sinchronizavimo laiko schema, kai nuskaitoma išoriškai pritaikyta kaiščio reikšmė. Didžiausia ir mažiausia sklidimo delsa žymima atitinkamai tpd,max ir tpd,min.

Apsvarstykite laikrodžio periodą, prasidedantį netrukus po pirmojo kritusio sistemos laikrodžio krašto. Užraktas yra uždarytas, kai laikrodis yra žemas, ir eina skaidriai, kai laikrodis yra aukštas, kaip rodo signalo „SYNC LATCH“ šešėliai. Signalo reikšmė yra užfiksuota, kai sistemos laikrodis žemas. Jis užregistruojamas PINxn registre būsimame teigiamame laikrodžio krašte. Kaip rodo dvi rodyklės tpd, max ir tpd, min, vieno signalo perėjimas ant kaiščio bus atidėtas nuo ½ iki 1½ sistemos laikrodžio periodo, priklausomai nuo tvirtinimo laiko.

Skaitydami programinei įrangai priskirtą PIN reikšmę, reikia įterpti „nop“ instrukciją, kaip nurodyta 10-4 pav. Išėjimo instrukcija nustato „SYNC LATCH“ signalą teigiamame laikrodžio krašte. Šiuo atveju vėlavimas tpd per sinchronizatorių yra vienas sistemos laikrodžio periodas.

Šis kodas, pvzample parodo, kaip nustatyti prievado B kaiščius 0 ir 1 aukštus, 2 ir 3 žemus ir apibrėžti prievado kaiščius nuo 4 iki 5 kaip įvestį su ištraukimu, priskirtu 4 prievado kaiščiui. Gautos kaiščių reikšmės nuskaitomos dar kartą, bet kaip buvo aptarta anksčiau, įtraukta nop instrukcija, kad būtų galima perskaityti kai kuriems kaiščiams neseniai priskirtą vertę.

Surinkimo kodas Example(1)

; Apibrėžkite prisitraukimus ir nustatykite aukštus rezultatus

; Apibrėžkite prievado kaiščių kryptis

ldi        r16,(1<<PB4)|(1<<PB1)|(1<<PB0)

ldi        r17,(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0)

iš PORTB,r16

iš DDRB,r17

; Sinchronizavimui įterpkite nop

ne

; Skaityti prievado kaiščius

r16, PINB

Pastaba: Surinkimo programai naudojami du laikini registrai, siekiant sumažinti laiką, kai 0, 1 ir 4 kaiščiuose nustatomi ištraukimai, kol krypties bitai bus nustatyti teisingai, apibrėžiant 2 ir 3 bitus kaip žemus ir iš naujo apibrėžiant bitus 0 ir 1. XNUMX kaip stiprūs aukšti vairuotojai.

C kodas Pvzample
nepasirašytas char i;

/* Apibrėžkite prisitraukimus ir nustatykite aukštus išėjimus */

/* Apibrėžkite prievado kaiščių kryptis */ PORTB = (1<

DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0);

/* Įterpti nop sinchronizavimui*/

_BE PROBLEMŲ();

/* Skaityti prievado kaiščius */ i = PINB;

Skaitmeninio įvesties įjungimo ir miego režimai

Kaip parodyta 10-2 pav, skaitmeninis įvesties signalas gali būti clampįžemintas Schmitt-trigerio įėjime. Signalas, pažymėtas paveikslėlyje SLEEP, yra nustatytas MCU miego valdikliu maitinimo išjungimo režimu, kad būtų išvengta didelio energijos suvartojimo, jei kai kurie įvesties signalai paliekami sklandžiai arba analoginio signalo lygis artimas VCC/2.

SLEEP yra nepaisoma, jei prievado kaiščiai įgalinti kaip išoriniai pertraukimo kaiščiai. Jei išorinio pertraukimo užklausa neįgalinta, SLEEP yra aktyvus ir šiems kaiščiams. SLEEP taip pat nepaiso įvairios kitos alternatyvios funkcijos, aprašytos „Alternatyvios uosto funkcijos“ 57 puslapyje.

Jei loginis aukštas lygis („vienas“) yra asinchroniniame išoriniame pertraukimo kaištyje, sukonfigūruotame kaip „Pertraukimas kylančioje briaunoje, krintantis kraštas arba bet koks loginis pakeitimas kaištyje“, o išorinis pertraukimas neįjungtas, bus rodoma atitinkama išorinio pertraukimo žyma. nustatyti, kai grįžtama iš pirmiau minėto miego režimo, nes clampŠiuo miego režimu sukuriamas prašomas loginis pakeitimas.

Neprisijungę kaiščiai

Jei kai kurie kaiščiai nenaudojami, rekomenduojama įsitikinti, kad šie kaiščiai turi apibrėžtą lygį. Nors dauguma skaitmeninių įėjimų yra išjungtos gilaus miego režimais, kaip aprašyta aukščiau, reikėtų vengti kintančių įėjimų, kad sumažintumėte srovės suvartojimą visais kitais režimais, kai įjungiami skaitmeniniai įėjimai (atstatymas, aktyvus režimas ir laukimo režimas).

Paprasčiausias būdas užtikrinti apibrėžtą nenaudojamo kaiščio lygį yra įjungti vidinį ištraukimą. Tokiu atveju atkūrimo metu ištraukimas bus išjungtas. Jei atstatymo metu svarbu sunaudoti mažai energijos, rekomenduojama naudoti išorinį patraukimą arba ištraukiamąjį įtaisą. Nerekomenduojama jungti nenaudojamų kaiščių tiesiai prie VCC arba GND, nes tai gali sukelti perteklinę srovę, jei kaištis netyčia sukonfigūruotas kaip išėjimas.

Pakaitinės uosto funkcijos

Daugelis uosto smeigtukų turi alternatyvias funkcijas, be to, kad jie yra bendri skaitmeniniai įvesties / išvesties įtaisai. 10-5 pav parodo, kaip supaprastinto prievado kaiščio valdymo signalai 10-2 pav gali būti pakeista alternatyviomis funkcijomis. Svarbiausių signalų gali būti ne visuose prievadų kaiščiuose, tačiau paveikslas yra bendras aprašymas, taikomas visiems AVR mikrovaldiklių šeimos prievadų kaiščiams.

10-2 lentelė. Bendras alternatyvių funkcijų nepaisančių signalų aprašymas

Signalo pavadinimas Pilnas vardas Aprašymas
PUOE „Pull-up Override Enable“ Jei šis signalas nustatytas, prisitraukimo įjungimą valdo PUOV signalas. Jei šis signalas išvalomas, traukimas įjungiamas, kai

{DDxn, PORTxn, PUD} = 0b010.

PUOV Pull-up Nepaisyti vertės Jei nustatyta PUOE, nustatant / išvalius PUOV, patraukimas įjungiamas / išjungiamas, neatsižvelgiant į DDxn, PORTxn ir PUD registro bitų nustatymą.
DDOE Duomenų krypties nepaisymas Įgalinti Jei šis signalas nustatytas, „Output Driver Enable“ valdo DDOV signalas. Jei šis signalas išvalomas, išvesties tvarkyklę įgalina DDxn registro bitai.
DDOV Duomenų krypties nepaisymo reikšmė Jei nustatyta DDOE, išvesties tvarkyklė įjungiama / išjungiama, kai nustatoma / išvaloma DDOV, neatsižvelgiant į DDxn registro bitų nustatymą.
PVOE Prievado vertės nepaisymas Įgalinti Jei šis signalas nustatytas ir išvesties tvarkyklė įjungta, prievado vertę valdo PVOV signalas. Jei PVOE išvalomas ir įjungta išvesties tvarkyklė, prievado vertę valdo PORTxn registro bitai.
PVOV Uosto reikšmė nepaiso vertės Jei nustatytas PVOE, prievado reikšmė nustatoma į PVOV, neatsižvelgiant į PORTxn registro bitų nustatymą.
GTV „Port Toggle Override Enable“ Jei nustatytas PTOE, PORTxn registro bitai yra apversti.
DIEOE Skaitmeninio įvesties įgalinimo nepaisymo įgalinimas Jei šis bitas nustatytas, skaitmeninio įvesties įgalinimą valdo DIEOV signalas. Jei šis signalas išvalomas, skaitmeninio įvesties įgalinimą lemia MCU būsena (įprastas režimas, miego režimas).
DIEOVAS Skaitmeninis įvestis Įgalinti nepaisymo vertę Jei nustatytas DIEOE, skaitmeninis įėjimas įjungiamas / išjungiamas, kai nustatomas / išvalomas DIEOV, neatsižvelgiant į MCU būseną (įprastas režimas, miego režimas).
DI Skaitmeninis įėjimas Tai yra skaitmeninis įvestis pakaitinėms funkcijoms. Paveiksle signalas yra prijungtas prie schmitt-trigerio išvesties, bet prieš sinchronizatorių. Jei skaitmeninis įėjimas nėra naudojamas kaip laikrodžio šaltinis, modulis su pakaitine funkcija naudos savo sinchronizatorių.
AIO Analoginė įvestis / išvestis Tai yra analoginis įvestis / išvestis į / iš alternatyvių funkcijų. Signalas jungiamas tiesiai prie trinkelės ir gali būti naudojamas dvipusiai.

Tolesniuose poskyriuose trumpai aprašomos kiekvieno uosto pakaitinės funkcijos ir pagrindiniai signalai susiejami su pakaitine funkcija. Daugiau informacijos rasite alternatyviame funkcijos aprašyme.

Pakaitinės B prievado funkcijos

B prievado kaiščiai su pakaitine funkcija rodomi 10-3 lentelė.

10-3 lentelė. Prievado B kontaktai Alternatyvios funkcijos

Prievado kaištis Alternatyvi funkcija
PB5

ATstatyti iš naujo: iš naujo nustatyti kaištį

dW: derinimasWIRE I / O ADC0: ADC įvesties kanalas 0

PCINT5: kaiščių keitimo pertraukimas, 5 šaltinis

PB4 XTAL2: kristalinio osciliatoriaus išvestis CLKO: sistemos laikrodžio išvestis ADC2: ADC įvesties 2 kanalas

OC1B: laikmatis / skaitiklis1 palyginkite B atitikties išvestį PCINT4: kaiščių keitimo pertraukimas 0, šaltinis 4

PB3 XTAL1: kristalinio osciliatoriaus įvestis CLKI: išorinio laikrodžio įvestis ADC3: ADC įvesties 3 kanalas

OC1B: papildomas laikmatis / skaitiklis1 palyginkite B atitikties išvestį PCINT3: kaiščių keitimo pertraukimas 0, šaltinis 3

PB2 SCK: nuosekliojo laikrodžio įvestis ADC1: ADC įvesties 1 kanalas

T0: laikmatis / skaitiklis0 laikrodžio šaltinis USCK: USI laikrodis (trijų laidų režimas) SCL: USI laikrodis (dviejų laidų režimas) INT0: išorinis pertraukimas 0 įvesties PCINT2: smeigtuko keitimo pertraukimas 0, šaltinis 2

PB1 MISO: SPI pagrindinių duomenų įvestis / vergo duomenų išvestis AIN1: analoginis palyginimas, neigiamas įėjimas OC0B: laikmatis / skaitiklis0 palyginimas B atitikties išvestis OC1A: laikmatis / skaitiklis1 palyginimas atitikties A išvestis DO: USI duomenų išvestis (trijų laidų režimas) PCINT1: kaiščių keitimo pertraukimas 0, 1 šaltinis
PB0 MOSI :: SPI pagrindinių duomenų išvestis / vergo duomenų įvestis AIN0: analoginis palygintuvas, teigiamas įėjimas

OC0A: Laikmatis/Counter0 Palyginkite A atitikimo išvestį

OC1A: papildomas laikmatis / skaitiklis1 palyginkite A atitikties išvestį DI: USI duomenų įvestis (trijų laidų režimas)

SDA: USI duomenų įvestis (dviejų laidų režimas) AREF: išorinė analoginė nuoroda PCINT0: kaiščių keitimo pertraukimas 0, šaltinis 0

B prievado 5 bitas - RESET / dW / ADC0 / PCINT5

RESET: Išorinio atstatymo įvestis aktyvi žemai ir įjungiama neišprogramavus („1“) RSTDISBL saugiklio. Kai kaištis naudojamas kaip atstatymo kaištis, suaktyvinamas ištraukimas ir išjungiama išvesties tvarkyklė bei skaitmeninis įvestis.

dW: Kai užprogramuotas derinimo „WIRE Enable“ (DWEN) saugiklis ir užprogramuoti blokavimo bitai, tikslinio įrenginio „debugWIRE“ sistema suaktyvinama. RESET prievado kaištis yra sukonfigūruotas kaip laidinis IR (atviro nutekėjimo) dvikryptis įvesties / išvesties kaištis su įjungtu traukimu ir tampa komunikacijos vartais tarp taikinio ir emuliatoriaus.

ADC0: keitiklis iš analoginio į skaitmeninį, 0 kanalas.

PCINT5: kaiščių keitimo pertraukimo šaltinis 5.

B prievadas, 4 bitas - XTAL2 / CLKO / ADC2 / OC1B / PCINT4

XTAL2: mikroschemos laikrodžio osciliatoriaus kaištis 2. Naudojamas kaip laikrodžio kaištis visiems lusto laikrodžio šaltiniams, išskyrus vidinį kalibruojamą RC osciliatorių ir išorinį laikrodį. Kai jis naudojamas kaip laikrodžio kaištis, jo negalima naudoti kaip įvesties / išvesties kaištį. Naudojant vidinį kalibruojamą RC osciliatorių arba išorinį laikrodį kaip „Chip“ laikrodžio šaltinį, PB4 tarnauja kaip įprastas įvesties / išvesties kaištis.

CLKO: Suskirstytą sistemos laikrodį galima išvesti ant kaiščio PB4. Padalintas sistemos laikrodis bus išvestas, jei užprogramuotas saugiklis CKOUT, neatsižvelgiant į parametrus PORTB4 ir DDB4. Jis taip pat bus išvestas iš naujo nustatant.

ADC2: keitiklis iš analoginio į skaitmeninį, 2 kanalas.

OC1B: išvesties palyginimo atitikties išvestis: PB4 kaištis gali būti naudojamas kaip išorinis laikmačio / skaitiklio1 palyginimo atitikties B išėjimas, kai jis sukonfigūruotas kaip išėjimas (DDB4 rinkinys). OC1B kaištis taip pat yra PWM režimo laikmačio funkcijos išvesties kaištis.

PCINT4: kaiščių keitimo pertraukimo šaltinis 4.

B prievadas, 3 bitas - XTAL1 / CLKI / ADC3 / OC1B / PCINT3

XTAL1: lusto laikrodžio osciliatoriaus kaištis 1. Naudojamas visiems lusto laikrodžio šaltiniams, išskyrus vidinį kalibruojamą RC osciliatorių. Kai jis naudojamas kaip laikrodžio kaištis, jo negalima naudoti kaip įvesties / išvesties kaištį.

CLKI: Laikrodžio įvestis iš išorinio laikrodžio šaltinio, žr „Išorinis laikrodis“ 26 puslapyje.

ADC3: keitiklis iš analoginio į skaitmeninį, 3 kanalas.

OC1B: atvirkštinės išvesties palyginimo atitikties išvestis: PB3 kaištis gali būti naudojamas kaip išorinis laikmačio / skaitiklio1 palyginimo atitikties B išėjimas, kai jis sukonfigūruotas kaip išvestis (rinkinys DDB3). OC1B kaištis taip pat yra apverstas išvesties kaištis, skirtas PWM režimo laikmačio funkcijai.

PCINT3: kaiščių keitimo pertraukimo šaltinis 3.

B prievadas, 2 bitas - SCK / ADC1 / T0 / USCK / SCL / INT0 / PCINT2

SCK: pagrindinis laikrodžio išėjimas, „Slave Clock“ įvesties kaištis SPI kanalui. Kai SPI yra įjungtas kaip vergas, šis kaištis sukonfigūruojamas kaip įvestis, neatsižvelgiant į DDB2 nustatymą. Kai SPI yra įjungtas kaip pagrindinis, šio kaiščio duomenų kryptis valdoma DDPB2. Kai kaištis priverstas SPI būti įvestimi, ištraukimą vis tiek galima valdyti PORTB2 bitu.

ADC1: keitiklis iš analoginio į skaitmeninį, 1 kanalas.

T0: Laikmatis / Skaitiklis0 skaitiklio šaltinis.

USCK: Trijų laidų režimo universalus nuosekliosios sąsajos laikrodis.

SCL: dviejų laidų režimo nuoseklusis laikrodis, skirtas USI dviejų laidų režimui.

INT0: išorinis pertraukimo šaltinis 0.

PCINT2: kaiščių keitimo pertraukimo šaltinis 2.

B prievadas, 1 bitas - MISO / AIN1 / OC0B / OC1A / DO / PCINT1

MISO: Pagrindinių duomenų įvestis, „Slave Data“ išvesties kaištis SPI kanalui. Kai SPI yra įjungtas kaip pagrindinis, šis kaištis sukonfigūruojamas kaip įvestis, neatsižvelgiant į DDB1 nustatymą. Kai SPI yra įjungtas kaip „Slave“, šio kaiščio duomenų kryptį valdo DDB1. Kai kaištis priverstas SPI būti įėjimu, ištraukimą vis tiek galima valdyti PORTB1 bitu.

AIN1: neigiamas analoginio palyginimo įvestis. Konfigūruokite prievado kaištį kaip įvestį, kai vidinis ištraukimas yra išjungtas, kad skaitmeninio prievado funkcija netrukdytų „Analog Comparator“ funkcijai.

OC0B: Rezultatas Palyginti atitikties išvestį. PB1 kaištis gali būti naudojamas kaip išorinis laikmačio / skaitiklio palyginimo mačo B išėjimas. PB0 kaištis turi būti sukonfigūruotas kaip išėjimas (DDB1 rinkinys (vienas)), kad būtų galima atlikti šią funkciją. OC1B kaištis taip pat yra PWM režimo laikmačio funkcijos išvesties kaištis.

OC1A: išvesties palyginimo atitikties išvestis: PB1 kaištis gali būti naudojamas kaip išorinis laikmačio / skaitiklio1 palyginimo atitikties B išėjimas, kai jis sukonfigūruotas kaip išvestis (rinkinys DDB1). OC1A kaištis taip pat yra PWM režimo laikmačio funkcijos išvesties kaištis.

DO: Trijų laidų režimo universaliosios nuosekliosios sąsajos duomenų išvestis. Trijų laidų režimas Duomenų išvestis pakeičia PORTB1 reikšmę ir nustatant duomenų krypties bitą DDB1 (vienas), jis nukreipiamas į prievadą. PORTB1 vis tiek įgalina traukimą, jei įvedama kryptis ir nustatytas PORTB1 (vienas).

PCINT1: kaiščių keitimo pertraukimo šaltinis 1.

B prievadas, 0 bitas - MOSI / AIN0 / OC0A / OC1A / DI / SDA / AREF / PCINT0

MOSI: SPI pagrindinių duomenų išvestis, „Slave“ duomenų įvestis SPI kanalui. Kai SPI yra įjungtas kaip vergas, šis kaištis sukonfigūruojamas kaip įvestis, neatsižvelgiant į DDB0 nustatymą. Kai SPI yra įjungtas kaip pagrindinis, šio kaiščio duomenų kryptį valdo DDB0. Kai kaištis priverstas SPI būti įėjimu, ištraukimą vis tiek galima valdyti PORTB0 bitu.

AIN0: teigiamas analoginio lygintuvo įėjimas. Konfigūruokite prievado kaištį kaip įvestį, kai vidinis ištraukimas yra išjungtas, kad skaitmeninio prievado funkcija netrukdytų „Analog Comparator“ funkcijai.

OC0A: Rezultatas Palyginti atitikties išvestį. PB0 kaištis gali būti naudojamas kaip išorinis laikmačio / skaitiklio palyginimo mačas A išėjimas, kai jis sukonfigūruotas kaip išėjimas (DDB0 rinkinys (vienas)). OC0A kaištis taip pat yra PWM režimo laikmačio funkcijos išvesties kaištis.

OC1A: Apverstos išvesties palyginimo atitikties išvestis: kaištis PB0 gali būti naudojamas kaip išorinis laikmačio / skaitiklio1 palyginimas „Match B“ išėjimas, kai jis sukonfigūruotas kaip išėjimas (DDB0 rinkinys). OC1A kaištis taip pat yra apverstas išvesties kaištis PWM režimo laikmačio funkcijai.

SDA: dviejų laidų režimo nuosekliosios sąsajos duomenys.

AREF: išorinė analoginė nuoroda ADC. Pullup ir išvesties tvarkyklė yra išjungta PB0, kai kaištis naudojamas kaip išorinė nuoroda arba vidinis tomastage Nuoroda į išorinį kondensatorių prie AREF kaiščio.

DI: duomenų įvestis trijų laidų režimu. „USI“ trijų laidų režimas nepaiso įprastų prievado funkcijų, todėl kaištis turi būti sukonfigūruotas kaip įvestis DI funkcijai.

PCINT0: kaiščių keitimo pertraukimo šaltinis 0.

10-4 lentelė ir 10-5 lentelė susieti alternatyvias B prievado funkcijas su svarbiausiaisiais signalais, parodytais 10-5 pav 58 psl.

10-4 lentelė. Alternatyvių funkcijų signalų nepaisymas PB[5:3]

Signalo pavadinimas 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 derinti „Wire Transmit“ 0 0
PVOE 0 OC1B Įjungti

OC1B Įjungti

PVOV 0 OC1B OC1B
GTV 0 0 0
DIEOE

RSTDISBL(1) + (PCINT5 • PCIE + ADC0D)

PCINT4 • PCIE + ADC2D PCINT3 • PCIE + ADC3D
DIEOVAS ADC0D ADC2D ADC3D
DI PCINT5 įvestis PCINT4 įvestis PCINT3 įvestis
AIO RESET įvestis, ADC0 įvestis ADC2 įvestis ADC3 įvestis

Pastaba: kai saugiklis yra "0" (užprogramuotas).

10-5 lentelė. Alternatyvių funkcijų signalų nepaisymas PB[2:0]

Signalo pavadinimas 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 Įgalinti + OC1A Įjungti + USI_THREE_WIRE

OC0A Įgalinti + OC1A Įjungti + (USI_TWO_WIRE

DDB0)

PVOV 0 OC0B + OC1A + DO

OC0A + OC1A

GTV USITC 0 0
DIEOE PCINT2 • PCIE + ADC1D + USISIE PCINT1 • PCIE + AIN1D PCINT0 • PCIE + AIN0D + USISIE
DIEOVAS ADC1D AIN1D AIN0D
DI T0 / USCK / SCL / INT0 /

PCINT2 įvestis

PCINT1 įvestis DI / SDA / PCINT0 įvestis
AIO ADC1 įvestis Analoginis palyginamasis neigiamas įėjimas Analoginio palygintojo teigiamas įėjimas

Registro aprašymas

MCUCR - MCU valdymo registras

Bit 7 6 5 4 3 2 1 0
0x35 BODS PUD SE SM1 SM0 BODSE ISC01 ISC00 MCUCR
Skaityti/Rašyti R R/W R/W R/W R/W R R/W R/W
Pradinė vertė 0 0 0 0 0 0 0 0

6 bitas - PUD: „Pull-up“ išjungimas

Kai šis bitas yra parašytas viename, įvesties / išvesties prievadų traukos išjungiamos, net jei „DDxn“ ir „PORTxn“ registrai sukonfigūruoti taip, kad įgalintų traukimą ({DDxn, PORTxn} = 0b01). Matyti „Smeigtuko konfigūravimas“ 54 puslapyje Norėdami gauti daugiau informacijos apie šią funkciją.

PORTB - B uosto duomenų registras

Bit 7 6 5 4 3 2 1 0
0x18 PORTB5 PORTB4 PORTB3 PORTB2 PORTB1 PORTB0 Uostas
Skaityti/Rašyti R R R/W R/W R/W R/W R/W R/W
Pradinė vertė 0 0 0 0 0 0 0 0

DDRB - B prievado duomenų krypties registras

Bit 7 6 5 4 3 2 1 0
0x17 DDB5 DDB4 DDB3 DDB2 DDB1 DDB0 DDRB
Skaityti/Rašyti R R R/W R/W R/W R/W R/W R/W
Pradinė vertė 0 0 0 0 0 0 0 0

PINB - B prievado įvesties kaiščių adresas

Bit 7 6 5 4 3 2 1 0
0x16 PINB5 PINB4 PINB3 PINB2 PINB1 PINB0 PINB
Skaityti/Rašyti R R R/W R/W R/W R/W R/W R/W
Pradinė vertė 0 0 N/A N/A N/A N/A N/A N/A

8 bitų laikmatis / skaitiklis0 su PWM

Savybės

Du nepriklausomi produkcijos palyginimo vienetai

Dvigubai buferinės produkcijos palyginimo registrai

Išvalyti laikmatį palyginant rungtynes ​​(automatinis perkrovimas)

„Glitch Free“, teisingo fazinio impulso pločio moduliatorius (PWM)

Kintamas PWM laikotarpis

Dažnio generatorius

Trys nepriklausomi pertraukiamieji šaltiniai (TOV0, OCF0A ir OCF0B)

Baigėsiview

„Timer / Counter0“ yra bendrosios paskirties 8 bitų laikmačio / skaitiklio modulis, turintis du nepriklausomus išvesties palyginimo vienetus ir palaikantis PWM. Tai leidžia tiksliai nustatyti programos vykdymo laiką (įvykių valdymą) ir generuoti bangas.

Supaprastinta 8 bitų laikmačio / skaitiklio blokinė schema parodyta 11-1 pav. Apie faktinį įvesties / išvesties kaiščių išdėstymą žr „Pinout ATtiny25 / 45/85“ 2 puslapyje. CPU prieinami įvesties / išvesties registrai, įskaitant įvesties / išvesties bitus ir įvesties / išvesties kaiščius, rodomi paryškintu šriftu. Konkretaus įrenginio įvesties / išvesties registras ir bitų vietos yra nurodytos „Registracijos aprašymas“, 77 psl.

Laikmačio / skaitiklio (TCNT0) ir išvesties palyginimo registrai (OCR0A ir OCR0B) yra 8 bitų registrai. Pertraukimo užklausos (paveiksle sutrumpintai Int.Req.) signalai matomi laikmačio pertraukimo vėliavėlės registre (TIFR). Visi pertraukimai yra individualiai užmaskuoti naudojant laikmačio pertraukimo kaukės registrą (TIMSK). TIFR ir TIMSK paveikslėlyje nepavaizduoti.

Laikmatis / skaitiklis gali būti įjungtas viduje, per išankstinio skalavimo įrenginį arba išorinį laikrodžio šaltinį ant T0 kaiščio. Laikrodžio pasirinkimo loginis blokas valdo, kurį laikrodžio šaltinį ir kraštą laikmatis / skaitiklis naudoja savo vertei padidinti (arba sumažinti). Laikmatis/skaitiklis yra neaktyvus, kai nepasirinktas joks laikrodžio šaltinis. Laikrodžio pasirinkimo logikos išvestis vadinama laikmačio laikrodžiu (clkT0).

Dvigubai buferiniai išvesties palyginimo registrai (OCR0A ir OCR0B) visą laiką lyginami su laikmačio / skaitiklio reikšme. Palyginimo rezultatą „Waveform Generator“ gali naudoti generuodamas PWM arba kintamo dažnio išvestį išvesties palyginimo kaiščiuose (OC0A ir OC0B). Žr. „Išvesties palyginimo vienetas“ 69 puslapyje. išsamesnės informacijos. Įvykis „Palyginti rungtynes“ taip pat nustatys palyginimo žymą (OCF0A arba OCF0B), kurią galima naudoti generuojant išvesties palyginimo pertraukimo užklausą.

Apibrėžimai

Daugelis šiame skyriuje esančių registrų ir bitų nuorodų yra parašytos bendra forma. Mažoji raidė „n“ pakeičia laikmačio / skaitiklio numerį, šiuo atveju 0. Mažoji raidė „x“ pakeičia išvesties palyginimo vienetą, šiuo atveju palyginkite vienetą A arba palyginkite vienetą B. Tačiau naudojant registrą arba bitą apibrėžiama programoje turi būti naudojama tiksli forma, ty TCNT0, norint pasiekti laikmačio / skaitiklio0 skaitiklio vertę ir pan.

Apibrėžimai 11-1 lentelė taip pat plačiai naudojami visame dokumente.

11-1 lentelė. Apibrėžimai

Pastovus Aprašymas
APATINĖ Skaitiklis pasiekia BOTTOM, kai tampa 0x00
MAX Skaitiklis pasiekia maksimumą, kai jis tampa 0xFF (dešimtainis skaičius po 255)
VIRŠUS Skaitiklis pasiekia TOP, kai jis tampa lygus didžiausiai skaičiavimo sekos vertei. TOP reikšmę galima priskirti fiksuotai vertei 0xFF (MAX) arba OCR0A registre išsaugotai vertei. Užduotis priklauso nuo veikimo būdo

Laikmačio / skaitiklio preskaleris ir laikrodžio šaltiniai

Laikmatį / skaitiklį gali reguliuoti vidinis arba išorinis laikrodžio šaltinis. Laikrodžio šaltinį parenka „Clock Select“ logika, kurią valdo „Clock Select“ (c) bitai, esantys laikmačio / skaitiklio valdymo registre (TCCR0B).

Vidinio laikrodžio šaltinis su preskaleriu

Laikmatis/Counter0 gali būti rodomas tiesiogiai sistemos laikrodžiu (nustačius CS0[2:0] = 1). Tai užtikrina greičiausią veikimą, o maksimalus laikmačio / skaitiklio laikrodžio dažnis yra lygus sistemos laikrodžio dažniui (fCLK_I/O). Arba kaip laikrodžio šaltinį galima naudoti vieną iš keturių pirminio skalavimo įrenginio čiaupų. Iš anksto sureguliuotas laikrodis turi bet kurį dažnį

Prescaler Reset

Išankstinis skaliklis veikia laisvai, ty veikia nepriklausomai nuo laikmačio/skaitiklio0 laikrodžio pasirinkimo logikos. Kadangi laikmačio/skaitiklio laikrodžio pasirinkimas neturi įtakos prescaleriui, prescalerio būsena turės įtakos situacijoms, kai naudojamas iš anksto nustatytas laikrodis. Vienas buvampIšankstinio mastelio keitimo artefakto esmė yra tada, kai laikmatis/skaitiklis yra įjungtas ir laikrodis veikiamas išankstinio skaliklio (6> CS0 [2: 0]> 1). Sistemos laikrodžio ciklų skaičius nuo laikmačio įjungimo iki pirmojo skaičiavimo gali būti nuo 1 iki N+1 sistemos laikrodžio ciklų, kur N yra lygus išankstinio skalės dalikliui (8, 64, 256 arba 1024).

Laikmatį / skaitiklį sinchronizuoti su programos vykdymu galima naudoti „Prescaler Reset“.

Išorinio laikrodžio šaltinis

Išorinis laikrodžio šaltinis, prijungtas prie T0 kaiščio, gali būti naudojamas kaip laikmatis / skaitiklio laikrodis (clkT0). T0 kaištis yra sampvieną kartą per kiekvieną sistemos laikrodžio ciklą vadovaujamas kaiščių sinchronizavimo logika. Sinchronizuotas (sampLED) signalas perduodamas

per krašto detektorių. 11-2 pav parodyta T0 sinchronizavimo ir briaunų detektoriaus logikos funkcinė ekvivalentinė blokinė schema. Registrai laikomi ties teigiamu vidinio sistemos laikrodžio kraštu (clkI/O). Užraktas yra skaidrus didžiausiu vidinės sistemos laikrodžio periodu.

Krašto detektorius sukuria po vieną clkT0 impulsą kiekvienam teigiamam (CS0[2:0] = 7) arba neigiamam (CS0[2:0] = 6) kraštui, kurį aptinka.

Naudojant bet kurį iš impulsų pločio moduliacijos (PWM) režimų, OCR0x registrai yra dvigubai buferiniai. Veikiant įprastais ir „Clear Timer on Compare“ (CTC) režimais, dvigubas buferis yra išjungtas. Dvigubas buferis sinchronizuoja OCR0x palyginimo registrų atnaujinimą su skaičiavimo sekos viršuje arba apačioje. Sinchronizavimas užkerta kelią nelyginio ilgio, nesimetriškiems PWM impulsams, todėl išvestis netrukdo.

OCR0x registro prieiga gali atrodyti sudėtinga, tačiau taip nėra. Įjungus dvigubą buferį, centrinis procesorius turi prieigą prie OCR0x buferių registro, o jei dvigubas buferis yra išjungtas, procesorius tiesiogiai pasieks OCR0x.

Jėgos išvesties palyginimas

Ne PWM bangos formos generavimo režimais komparatoriaus atitikties išvestis gali būti priversta įrašant vieną į jėgos išvesties palyginimo (FOC0x) bitą. Priverčiant palyginti atitikmenį, OCF0x vėliava nebus nustatyta ir laikmatis nebus perkrautas / išvalytas, tačiau OC0x kaištis bus atnaujintas taip, tarsi įvyktų tikras palyginimo atitikimas (COM0x [1: 0] bitų nustatymai nurodo, ar OC0x kaištis nustatytas, išvalytas arba perjungta).

Palyginkite atitikties blokavimą pagal TCNT0 rašymą

Visos procesoriaus rašymo operacijos į TCNT0 registrą blokuos visas palyginimo rungtynes, atsirandančias per kitą laikmačio laikrodžio ciklą, net kai laikmatis yra sustabdytas. Ši funkcija leidžia inicijuoti OCR0x tą pačią reikšmę kaip TCNT0, nesukeliant pertraukimo, kai įjungtas laikmačio / skaitiklio laikrodis.

Išvesties palyginimo įrenginio naudojimas

Kadangi rašant TCNT0 bet kokiu darbo režimu, bus užblokuoti visi vieno laikmačio laikrodžio ciklo „Palyginti atitikimus“, keičiant TCNT0, naudojant išvesties palyginimo įrenginį, kyla rizika, neatsižvelgiant į tai, ar laikmatis / skaitiklis veikia, ar ne. Jei TCNT0 parašyta reikšmė lygi OCR0x vertei, palyginimo atitiktis bus praleista, todėl bus sukurta neteisinga bangos forma. Panašiai nerašykite TCNT0 vertės, lygios BOTTOM, kai skaitiklis skaičiuojamas žemyn.

„OC0x“ nustatymas turėtų būti atliktas prieš nustatant duomenų išvesties registrą, kad prievadas išvestų išvestį. Lengviausias būdas nustatyti OC0x reikšmę yra naudoti „Force Output Compare“ (FOC0x) strobobitus įprastu režimu. „OC0x“ registrai išlaiko savo vertes, net kai keičiasi bangos formos generavimo režimai.

Atminkite, kad COM0x [1: 0] bitai nėra dvigubai buferizuojami kartu su lyginamąja verte. COM0x [1: 0] bitų pakeitimas įsigalios nedelsiant.

Palyginkite atitikties išvesties vienetą

Palyginimo išvesties režimo (COM0x [1: 0]) bitai turi dvi funkcijas. Bangos formos generatorius naudoja COM0x [1: 0] bitus, kad nustatytų būseną „Išvesties palyginimas“ (OC0x) kitame palyginimo atitikime. Be to, COM0x [1: 0] bitai valdo OC0x kaiščių išvesties šaltinį. 11-6 pav parodyta supaprastinta logikos schema, paveikta COM0x [1: 0] bitų nustatymo. Paveikslėlyje esantys įvesties / išvesties registrai, įvesties / išvesties bitai ir įvesties / išvesties kaiščiai yra paryškinti. Rodomos tik tos bendrosios įvesties / išvesties prievado valdymo registrų (DDR ir PORT) dalys, kurioms įtakos turi COM0x [1: 0] bitai. Nurodant OC0x būseną, nuoroda yra į vidinį OC0x registrą, o ne OC0x kaištį. Jei sistema iš naujo nustatoma, OC0x registras nustatomas į „0“.

Kai OC0A / OC0B yra prijungtas prie įvesties / išvesties kaiščio, COM0A [1: 0] / COM0B [1: 0] bitų funkcija priklauso nuo WGM0 [2: 0] bitų nustatymo. 11-2 lentelė rodo COM0x [1: 0] bitų funkcionalumą, kai WGM0 [2: 0] bitai nustatomi į įprastą arba CTC režimą (ne PWM).

11-2 lentelė. Palyginkite išvesties režimą su ne PWM režimu

COM0A1 COM0B1 COM0A0 COM0B0 Aprašymas
0 0 Įprastas prievado veikimas, atjungus OC0A / OC0B.
0 1 Perjunkite OC0A / OC0B į „Palyginti rungtynes“
1 0 Išvalykite OC0A / OC0B palygindami rungtynes
1 1 Palyginimo rungtyje nustatykite OC0A / OC0B

11-3 lentelė rodo COM0x [1: 0] bitų funkcionalumą, kai WGM0 [2: 0] bitai nustatomi į greitą PWM režimą.

11-3 lentelė. Palyginkite išvesties režimą, greitą PWM režimą(1)

COM0A1 COM0B1 COM0A0 COM0B0 Aprašymas
0 0 Įprastas prievado veikimas, atjungus OC0A / OC0B.
0 1 Rezervuota
1 0 Išvalykite OC0A / OC0B palyginimo rungtyje, nustatykite OC0A / OC0B ties BOTTOM (ne invertuojantis režimas)
1 1 Nustatykite OC0A / OC0B „Palyginti rungtynes“, išvalykite OC0A / OC0B ties BOTTOM (invertavimo režimas)

Pastaba: Ypatingas atvejis pasitaiko, kai OCR0A arba OCR0B yra lygus TOP ir nustatytas COM0A1/COM0B1. Šiuo atveju palyginimo atitiktis nepaisoma, bet nustatymas arba išvalymas atliekamas APAČIUOSE. Pamatyti „Greitas PWM režimas“, 73 psl Norėdami gauti daugiau informacijos.

11-4 lentelė rodo COM0x [1: 0] bitų funkcionalumą, kai WGM0 [2: 0] bitai nustatomi į teisingą fazės PWM režimą.

11-4 lentelė. Palyginkite išvesties režimą, fazės teisingą PWM režimą(1)

COM0A1 COM0B1 COM0A0 COM0B0 Aprašymas
0 0 Įprastas prievado veikimas, atjungus OC0A / OC0B.
0 1 Rezervuota
1 0 Jei skaičiuojate, išvalykite OC0A / OC0B „Palyginti rungtynes“. Nustatydami OC0A / OC0B palygindami rungtynes, skaičiuodami žemyn.
1 1 Kai skaičiuojate, nustatykite OC0A / OC0B „Palyginti rungtynes“. Išvalykite OC0A / OC0B „Palyginti rungtynes“ skaičiuojant žemyn.

Pastaba: 1. Ypatingas atvejis įvyksta, kai OCR0A arba OCR0B yra lygus TOP ir nustatytas COM0A1/COM0B1. Šiuo atveju palyginimo atitiktis ignoruojama, bet nustatymas arba išvalymas atliekamas VIRŠUJE. Pamatyti „Fazinis teisingas PWM režimas“, 74 psl Norėdami gauti daugiau informacijos.

3 bitai: 2 - Res: rezervuoti bitai

Šie bitai yra rezervuoti bitai ATtiny25 / 45/85 ir visada bus skaitomi kaip nulis.

Bitai 1: 0 - WGM0 [1: 0]: bangos formos generavimo režimas

Kartu su WCRM02 bitu, esančiu TCCR0B registre, šie bitai valdo skaitiklio skaičiavimo seką, didžiausios (TOP) skaitiklio vertės šaltinį ir tai, kokio tipo bangos generavimą naudoti, žr. 11-5 lentelė. „Timer / Counter“ įrenginio palaikomi darbo režimai yra šie: įprastas režimas (skaitiklis), „Clear Timer on Compar Match“ (CTC) režimas ir dviejų tipų impulsų pločio moduliacijos (PWM) režimai (žr. „Veikimo režimai“ 71 puslapyje).

11-5 lentelė. Bangos formų generavimo režimo bitų aprašymas

Režimas WGM 02 WGM 01 WGM 00 Laikmačio / skaitiklio veikimo režimas VIRŠUS OCRx atnaujinimas Įjungta TOV vėliava
0 0 0 0 Normalus 0xFF Nedelsiant MAX(1)
1 0 0 1 PWM, fazė teisinga 0xFF VIRŠUS APATINĖ(2)
2 0 1 0 CTC OCRA Nedelsiant MAX(1)
3 0 1 1 Greitas PWM 0xFF APATINĖ(2) MAX(1)
4 1 0 0 Rezervuota
5 1 0 1 PWM, fazė teisinga OCRA VIRŠUS APATINĖ(2)
6 1 1 0 Rezervuota
7 1 1 1 Greitas PWM OCRA APATINĖ(2) VIRŠUS

7 bitas - FOC0A: jėgos išvesties palyginimas A

FOC0A bitas yra aktyvus tik tada, kai WGM bitai nurodo ne PWM režimą.

Tačiau norint užtikrinti suderinamumą su būsimais įrenginiais, šis bitas turi būti nustatytas į nulį, kai TCCR0B rašomas dirbant PWM režimu. Rašant loginį failą į FOC0A bitą, bangos formos generavimo įrenginys priverstas nedelsiant palyginti atitikimą. OC0A išvestis keičiama pagal COM0A [1: 0] bitų nustatymą. Atkreipkite dėmesį, kad FOC0A bitas yra įgyvendinamas kaip strobe. Todėl priverstinio palyginimo poveikį lemia COM0A [1: 0] bituose esanti vertė.

„FOC0A“ stroboskopas nesukels jokių pertraukimų ir neišvalys laikmačio CTC režimu, naudojant OCR0A kaip TOP. FOC0A bitas visada skaitomas kaip nulis.

6 bitas - FOC0B: jėgos išvesties palyginimas B.

FOC0B bitas yra aktyvus tik tada, kai WGM bitai nurodo ne PWM režimą.

Tačiau norint užtikrinti suderinamumą su būsimais įrenginiais, šis bitas turi būti nustatytas į nulį, kai TCCR0B rašomas dirbant PWM režimu. Rašant loginį failą į FOC0B bitą, bangos formos generavimo įrenginys priverstas nedelsiant palyginti atitikimą. OC0B išvestis keičiama pagal jos COM0B [1: 0] bitų nustatymą. Atkreipkite dėmesį, kad FOC0B bitas yra įgyvendinamas kaip strobe. Todėl priverstinio palyginimo poveikį lemia COM0B [1: 0] bituose esanti vertė.

FOC0B stroboskopas nesukels jokių pertraukimų ir neišvalys laikmačio CTC režimu, naudojant OCR0B kaip TOP.

FOC0B bitas visada skaitomas kaip nulis.

5 bitai: 4 - Res: rezervuoti bitai

Šie bitai yra rezervuoti bitai ATtiny25 / 45/85 ir visada bus skaitomi kaip nulis.

3 bitas - WGM02: bangos formos generavimo režimas

Žr. Aprašą „TCCR0A - laikmačio / skaitiklio valdymo registras A“, 77 psl.

2 bitai: 0 - CS0 [2: 0]: Laikrodžio pasirinkimas

Trys „Clock Select“ bitai parenka laikmačio šaltinį, kurį naudos laikmatis / skaitiklis.

11-6 lentelė. Laikrodis Pasirinkite bito aprašymas

CS02 CS01 CS00 Aprašymas
0 0 0 Nėra laikrodžio šaltinio (laikmatis / skaitiklis sustabdytas)
0 0 1 clkI/O/(be išankstinio skalės nustatymo)
0 1 0 clkI/O/8 (iš išankstinio skalavimo įrenginio)
0 1 1 clkI/O/64 (iš išankstinio skalavimo įrenginio)
1 0 0 clkI/O/256 (iš išankstinio skalavimo įrenginio)
1 0 1 clkI/O/1024 (iš išankstinio skalavimo įrenginio)
1 1 0 Išorinis laikrodžio šaltinis ant T0 kaiščio. Laikrodis ant krintančio krašto.
1 1 1 Išorinis laikrodžio šaltinis ant T0 kaiščio. Laikrodis ant kylančio krašto.

Jei laikmačiui / skaitikliui0 naudojami išoriniai kaiščių režimai, perėjimai ant T0 kaiščio rodys skaitiklį, net jei kaištis sukonfigūruotas kaip išėjimas. Ši funkcija leidžia programinei įrangai valdyti skaičiavimą.

Skaitliukas ir palyginkite vienetus

„Timer / Counter1“ bendra operacija aprašoma asinchroniniu režimu, o operacija sinchronizavimo režimu minima tik tuo atveju, jei tarp šių dviejų režimų yra skirtumų. 12-2 pav rodo laikmačio / skaitiklio 1 sinchronizavimo registro blokų schemą ir sinchronizavimo vėlavimus tarp registrų. Atkreipkite dėmesį, kad visos laikrodžio nustatymo detalės nėra parodytos paveiksle. „Timer / Counter1“ registro reikšmės praeina per vidinius sinchronizavimo registrus, kurie sukelia įvesties sinchronizavimo vėlavimą, prieš paveikdami skaitiklio veikimą. Registrus TCCR1, GTCCR, OCR1A, OCR1B ir OCR1C galima perskaityti iškart parašius registrą. „Timer / Counter1“ (TCNT1) registro ir vėliavų (OCF1A, OCF1B ir TOV1) skaitymo vertės vėluoja dėl įvesties ir išvesties sinchronizavimo.

Laikmatis / skaitiklis1 pasižymi didele skiriamąja geba ir dideliu tikslumu, esant mažesnėms išankstinio skalavimo galimybėms. Jis taip pat gali palaikyti du tikslius, didelės spartos, 8 bitų impulsinio pločio moduliatorius, naudojančius iki 64 MHz (arba 32 MHz, esant mažo greičio režimui) laikrodžio greitį. Šiuo režimu laikmatis / skaitiklis1 ir išvesties palyginimo registrai tarnauja kaip dvigubi atskiri PWM su nepersidengiančiais neapverstais ir apverstais išėjimais. Atsižvelgti į 86 psl išsamų šios funkcijos aprašymą. Panašiai, dėl didelio išankstinio skalavimo galimybių šis įrenginys yra naudingas mažesnio greičio funkcijoms arba tikslioms laiko funkcijoms atlikti retais atvejais.

12-2 pav. Laikmačio/skaitiklio 1 sinchronizavimo registro blokinė diagrama.

Laikmatis / skaitiklis1 ir išankstinis skaleris leidžia paleisti procesorių iš bet kurio laikrodžio šaltinio, kol išankstinis skaleris veikia sparčiuoju 64 MHz (arba 32 MHz mažo greičio režimu) PCK laikrodžiu asinchroniniu režimu.

Atminkite, kad sistemos laikrodžio dažnis turi būti mažesnis nei trečdalis PCK dažnio. Asinchroninio laikmačio / skaitiklio1 sinchronizavimo mechanizmui reikia bent dviejų PCK kraštų, kai sistemos laikrodis yra aukštas. Jei sistemos laikrodžio dažnis yra per didelis, rizikuojama prarasti duomenis ar valdymo reikšmes.

Toliau nurodyta 12-3 pav rodo laikmačio / skaitiklio1 blokinę schemą.

12-1 lentelė. Palyginti režimą Pasirinkite PWM režimu

COM1x1 COM1x0 Poveikis produkcijos palyginimo kaiščiams
0 0 OC1x neprijungtas. OC1x neprijungtas.
0 1 OC1x išvalytas lyginant rungtynes. Nustatykite, kaiTCNT1 = $ 00. OC1x nustatytas lyginant rungtynes. Išvalyta, kai TCNT1 = 00 USD.
1 0 OC1x išvalytas lyginant rungtynes. Nustatykite, kai TCNT1 = 00 USD. OC1x neprijungtas.
1 1 OC1x Nustatykite palyginimo rungtynes. Išvalyta, kai TCNT1 = 00 USD. OC1x neprijungtas.

ADC charakteristikos

21-8 lentelė. ADC charakteristikos, vieno galo kanalai. TA = -40°C iki +85°C

Simbolis Parametras Būklė Min Tip Maks Vienetai
Rezoliucija 10 Bitai
Absoliutus tikslumas (įskaitant INL, DNL ir kvantavimo, pelno ir poslinkio klaidas) VREF = 4 V, VCC = 4 V,

ADC laikrodis = 200 kHz

2 LSB
VREF = 4 V, VCC = 4 V,

ADC laikrodis = 1 MHz

3 LSB
VREF = 4 V, VCC = 4 V,

ADC laikrodis = 200 kHz

Triukšmo mažinimo režimas

1.5 LSB
VREF = 4 V, VCC = 4 V,

ADC laikrodis = 1 MHz

Triukšmo mažinimo režimas

2.5 LSB
Integralus nelinijiškumas (INL) (tikslumas po poslinkio ir padidinimo kalibravimo) VREF = 4 V, VCC = 4 V,

ADC laikrodis = 200 kHz

1 LSB
Diferencinis nelinijiškumas (DNL) VREF = 4 V, VCC = 4 V,

ADC laikrodis = 200 kHz

0.5 LSB
Įgyti klaidą VREF = 4 V, VCC = 4 V,

ADC laikrodis = 200 kHz

2.5 LSB
Poslinkio klaida VREF = 4 V, VCC = 4 V,

ADC laikrodis = 200 kHz

1.5 LSB
Konversijos laikas Nemokama bėgimo konversija 14 280 µs
Laikrodžio dažnis 50 1000 kHz
VIN Įvesties tomastage GND VREF V
Įvesties pralaidumas 38.4 kHz
AREF Išorinė nuoroda ttage 2.0 VCC V
VINT Vidinis ttage Nuoroda 1.0 1.1 1.2 V
Vidinė 2.56 V nuoroda (1) VCC > 3.0 V 2.3 2.56 2.8 V
RREF 32
LIETUS Analoginis įėjimo atsparumas 100
ADC išvestis 0 1023 LSB

Pastaba: 1. Vertės yra tik gairės.

21-9 lentelė. ADC charakteristikos, diferencialiniai kanalai (vienapolis režimas). TA = -40°C iki +85°C

Simbolis Parametras Būklė Min Tip Maks Vienetai
Rezoliucija Pelnas = 1x 10 Bitai
Pelnas = 20x 10 Bitai
Absoliutus tikslumas (įskaitant INL, DNL ir

Kvantavimo, padidinimo ir kompensavimo klaidos)

Pelnas = 1x

VREF = 4 V, VCC = 5 V

ADC laikrodis = 50 - 200 kHz

10.0 LSB
Pelnas = 20x

VREF = 4 V, VCC = 5 V

ADC laikrodis = 50 - 200 kHz

20.0 LSB
Integralus netiesiškumas (INL) (tikslumas po poslinkio ir kalibravimo) Pelnas = 1x

VREF = 4 V, VCC = 5 V

ADC laikrodis = 50 - 200 kHz

4.0 LSB
Pelnas = 20x

VREF = 4 V, VCC = 5 V

ADC laikrodis = 50 - 200 kHz

10.0 LSB
Įgyti klaidą Pelnas = 1x 10.0 LSB
Pelnas = 20x 15.0 LSB
Poslinkio klaida Pelnas = 1x

VREF = 4 V, VCC = 5 V

ADC laikrodis = 50 - 200 kHz

3.0 LSB
Pelnas = 20x

VREF = 4 V, VCC = 5 V

ADC laikrodis = 50 - 200 kHz

4.0 LSB
Konversijos laikas Nemokama bėgimo konversija 70 280 µs
Laikrodžio dažnis 50 200 kHz
VIN Įvesties tomastage GND VCC V
VDIFF Įvesties diferencialas, ttage VREF/Gain V
Įvesties pralaidumas 4 kHz
AREF Išorinė nuoroda ttage 2.0 VCC – 1.0 V
VINT Vidinis ttage Nuoroda 1.0 1.1 1.2 V
Vidinė 2.56 V nuoroda (1) VCC > 3.0 V 2.3 2.56 2.8 V
RREF Atskaitos atsparumas įėjimui 32
LIETUS Analoginis įėjimo atsparumas 100
ADC konversijos išvestis 0 1023 LSB

Pastaba: reikšmės yra tik gairės.

21-10 lentelė. ADC charakteristikos, diferencialiniai kanalai (dvipolis režimas). TA = -40°C iki +85°C

Simbolis Parametras Būklė Min Tip Maks Vienetai
Rezoliucija Pelnas = 1x 10 Bitai
Pelnas = 20x 10 Bitai
Absoliutus tikslumas (įskaitant INL, DNL ir

Kvantavimo, padidinimo ir kompensavimo klaidos)

Pelnas = 1x

VREF = 4 V, VCC = 5 V

ADC laikrodis = 50 - 200 kHz

8.0 LSB
Pelnas = 20x

VREF = 4 V, VCC = 5 V

ADC laikrodis = 50 - 200 kHz

8.0 LSB
Integralus netiesiškumas (INL) (tikslumas po poslinkio ir kalibravimo) Pelnas = 1x

VREF = 4 V, VCC = 5 V

ADC laikrodis = 50 - 200 kHz

4.0 LSB
Pelnas = 20x

VREF = 4 V, VCC = 5 V

ADC laikrodis = 50 - 200 kHz

5.0 LSB
Įgyti klaidą Pelnas = 1x 4.0 LSB
Pelnas = 20x 5.0 LSB
Poslinkio klaida Pelnas = 1x

VREF = 4 V, VCC = 5 V

ADC laikrodis = 50 - 200 kHz

3.0 LSB
Pelnas = 20x

VREF = 4 V, VCC = 5 V

ADC laikrodis = 50 - 200 kHz

4.0 LSB
Konversijos laikas Nemokama bėgimo konversija 70 280 µs
Laikrodžio dažnis 50 200 kHz
VIN Įvesties tomastage GND VCC V
VDIFF Įvesties diferencialas, ttage VREF/Gain V
Įvesties pralaidumas 4 kHz
AREF Išorinė nuoroda ttage 2.0 VCC – 1.0 V
VINT Vidinis ttage Nuoroda 1.0 1.1 1.2 V
Vidinė 2.56 V nuoroda (1) VCC > 3.0 V 2.3 2.56 2.8 V
RREF Atskaitos atsparumas įėjimui 32
LIETUS Analoginis įėjimo atsparumas 100
ADC konversijos išvestis -512 511 LSB

Instrukcijų rinkinio santrauka

Mnemonika Operandai Aprašymas Operacija Vėliavos # Clocks
ARITMETINĖS IR LOGINĖS INSTRUKCIJOS
PRIDĖTI Rd, Rr Pridėkite du registrus Rd ← Rd + Rr Z, C, N, V, H 1
ADC Rd, Rr Pridėti su „Carry two Registers“ Rd ← Rd + Rr + C Z, C, N, V, H 1
ADIW Rdl, K Pridėti nedelsiant prie „Word“ Rdh:Rdl ← Rdh:Rdl + K Z, C, N, V, S 2
SUB Rd, Rr Atimkite du registrus Rd ← Rd – Rr Z, C, N, V, H 1
Aš pakilau Rd, K. Iš registro atimkite pastovią Rd ← Rd – K Z, C, N, V, H 1
SBC Rd, Rr Atimkite du nešiojimo registrus Rd ← Rd – Rr – C Z, C, N, V, H 1
SBCI Rd, K. Iš „Reg.“ Atimkite „Carry Constant“. Rd ← Rd – K – C Z, C, N, V, H 1
SBIW Rdl, K Iš „Word“ atimkite iškart Rdh:Rdl ← Rdh:Rdl – K Z, C, N, V, S 2
IR Rd, Rr Loginiai IR registrai Rd ← Rd ∙ Rr Z, N, V 1
ANDI Rd, K. Loginis IR registruokis ir pastovus Rd ← Rd ∙ K Z, N, V 1
OR Rd, Rr Loginiai ARBA Registrai Rd ← Rd v Rr Z, N, V 1
ORI Rd, K. Loginis ARBA registruokis ir pastovus Rd ← Rd prieš K Z, N, V 1
EOR Rd, Rr Išskirtiniai ARBA registrai Rd ← Rd ⊕ Rr Z, N, V 1
COM Rd Vienas papildymas Rd ← 0xFF − Rd Z, C, N, V 1
NEG Rd Dviejų papildymas Rd ← 0x00 − Rd Z, C, N, V, H 1
SBR Rd, K Nustatykite bitą (-us) registre Rd ← Rd prieš K Z, N, V 1
CBR Rd, K Išvalyti bitą (-us) registre Rd ← Rd ∙ (0xFF – K) Z, N, V 1
INC Rd Prieaugis Rd ← Rd + 1 Z, N, V 1
DEC Rd Sumažėjimas Rd ← Rd - 1 Z, N, V 1
TST Rd Testas nuliui arba minusui Rd ← Rd ∙ Rd Z, N, V 1
CLR Rd Išvalyti registrą Rd ← Rd ⊕ Rd Z, N, V 1
SER Rd Nustatyti registrą Rd ← 0xFF Nėra 1
FILIALŲ INSTRUKCIJOS
RJMP k Santykinis šuolis PC ← PC + k + 1 Nėra 2
IJMP Netiesioginis šuolis į (Z) PC ← Z Nėra 2
SKAMBINTI k Santykinis potvarkio iškvietimas PC ← PC + k + 1 Nėra 3
ICALL Netiesioginis skambutis (Z) PC ← Z Nėra 3
RET Subrutininis grįžimas PC ← STACK Nėra 4
TINKLAI Nutraukti grįžimą PC ← STACK I 4
CPSE Rd, Rr Palyginkite, praleiskite, jei lygu jei (Rd = Rr) PC ← PC + 2 arba 3 Nėra 1-2-3
CP Rd, Rr Palyginti Rd − Rr Z, N, V, C, H 1
MUP Rd, Rr Palyginkite su „Carry“ Rd - Rr - C Z, N, V, C, H 1
VKI Rd, K Palyginkite registraciją su neatidėliotinu Rd – K Z, N, V, C, H 1
SBRC Rr, gim Praleisti, jei bitai registre išvalyti jei (Rr(b)=0) PC ← PC + 2 arba 3 Nėra 1-2-3
SBRS Rr, gim Praleiskite, jei nustatytas „Bit in Register“ jei (Rr(b)=1) PC ← PC + 2 arba 3 Nėra 1-2-3
SBIC P, b Praleisti, jei bitai įvesties / išvesties registre išvalyti jei (P(b)=0) PC ← PC + 2 arba 3 Nėra 1-2-3
SBIS P, b Praleiskite, jei įvesties / išvesties registre nustatytas bitas jei (P(b)=1) PC ← PC + 2 arba 3 Nėra 1-2-3
BRBS s, k Filialas, jei nustatyta būsenos vėliava jei (SREG(s) = 1), tai PC←PC+k + 1 Nėra 1/2
BRBC s, k Filialas, jei būsenos vėliava išvalyta jei (SREG(s) = 0), tai PC←PC+k + 1 Nėra 1/2
BREQ k Filialas, jei lygus jei (Z = 1), tai PC ← PC + k + 1 Nėra 1/2
BRNE k Filialas, jei nelygi jei (Z = 0), tai PC ← PC + k + 1 Nėra 1/2
BRCS k Filialas, jei nešiojimo rinkinys jei (C = 1), tai PC ← PC + k + 1 Nėra 1/2
BRCC k Filialas, jei nešiojimas išvalytas jei (C = 0), tai PC ← PC + k + 1 Nėra 1/2
BRSH k Filialas, jei tas pats arba aukštesnis jei (C = 0), tai PC ← PC + k + 1 Nėra 1/2
BRLO k Filialas, jei žemesnis jei (C = 1), tai PC ← PC + k + 1 Nėra 1/2
BRMI k Filialas, jei minusas jei (N = 1), tai PC ← PC + k + 1 Nėra 1/2
BRPL k Filialas, jei Plius jei (N = 0), tai PC ← PC + k + 1 Nėra 1/2
BRGE k Filialas, jei didesnis ar lygus, pasirašytas jei (N ⊕ V= 0), tai PC ← PC + k + 1 Nėra 1/2
BRLT k Filialas, jei mažiau nei nulis, pasirašyta jei (N ⊕ V= 1), tai PC ← PC + k + 1 Nėra 1/2
BRHS k Filialas, jei nustatyta pusės nešimo vėliava jei (H = 1), tai PC ← PC + k + 1 Nėra 1/2
BRHC k Filialas, jei pašalinta pusės nešiojimo vėliava jei (H = 0), tai PC ← PC + k + 1 Nėra 1/2
BRTS k Filialas, jei nustatyta T vėliava jei (T = 1), tai PC ← PC + k + 1 Nėra 1/2
BRTC k Filialas, jei „T“ vėliava išvalyta jei (T = 0), tai PC ← PC + k + 1 Nėra 1/2
BRVS k Filialas, jei nustatyta perpildymo vėliava jei (V = 1), tai PC ← PC + k + 1 Nėra 1/2
BRVC k Filialas, jei perpildymo vėliava pašalinta jei (V = 0), tai PC ← PC + k + 1 Nėra 1/2
BRIE k Filialas, jei įjungtas pertraukimas jei ( I = 1), tai PC ← PC + k + 1 Nėra 1/2
BRIDAS k Filialas, jei neįgalus pertraukimas jei ( I = 0), tai PC ← PC + k + 1 Nėra 1/2
BIT IR BIT-TEST INSTRUKCIJOS
SBI P, b Nustatykite bitą įvesties / išvesties registre I/O (P,b) ← 1 Nėra 2
CBI P, b Išvalyti bitą įvesties / išvesties registre I/O (P,b) ← 0 Nėra 2
LSL Rd Loginis poslinkis į kairę Rd(n+1) ← Rd(n), Rd(0) ← 0 Z, C, N, V 1
LSR Rd Loginis poslinkis į dešinę Rd(n) ← Rd(n+1), Rd(7) ← 0 Z, C, N, V 1
VAIDMUO Rd Pasukite kairę per nešiojimą Rd(0)←C,Rd(n+1)← Rd(n),C←Rd(7) Z, C, N, V 1
ROR Rd Pasukite tiesiai per nešiojimą Rd(7)←C,Rd(n)← Rd(n+1),C←Rd(0) Z, C, N, V 1
ASR Rd Aritmetinis poslinkis dešinėn Rd(n) ← Rd(n+1), n=0..6 Z, C, N, V 1
Mnemonika Operandai Aprašymas Operacija Vėliavos # Clocks
SWAP Rd Pakeiskite „Nibbles“ Rd(3..0)←Rd(7..4),Rd(7..4)←Rd(3..0) Nėra 1
BSET s Vėliavos rinkinys SREG (-iai) ← 1 SREG (-ai) 1
BCLR s Vėliava aiški SREG (-iai) ← 0 SREG (-ai) 1
BST Rr, gim „Bit Store“ nuo registro iki „T“ T ← Rr(b) T 1
BLD Rd, gim Bitų apkrova nuo T iki registro Rd(b) ← T Nėra 1
SEC Nustatykite nešiojimą C ← 1 C 1
CLC Išvalyti nešioti C ← 0 C 1
SEN Nustatyti neigiamą vėliavą N ← 1 N 1
CLN Išvalyti neigiamą vėliavą N ← 0 N 1
SEZ Nustatykite nulinę vėliavą Z ← 1 Z 1
CLZ Išvalyti nulinę vėliavą Z ← 0 Z 1
SEI Įgalinti visuotinį pertraukimą Aš ← 1 I 1
CLI Visuotinio pertraukimo išjungimas Aš ← 0 I 1
SES Nustatykite pasirašytą bandymo vėliavą S ← 1 S 1
CLS Išvalyti pasirašytą bandymo vėliavą S ← 0 S 1
SEV Nustatykite „Twos Complement Overflow“. V ← 1 V 1
CLV Išvalykite dviejų papildų perpildymą V ← 0 V 1
NUSTATYTI Nustatykite T SREG T ← 1 T 1
CLT Išvalykite T SREG T ← 0 T 1
SEH Nustatykite „Half Carry“ vėliavą SREG H ← 1 H 1
CLH Išvalykite pusės nešimo vėliavą SREG H ← 0 H 1
DUOMENŲ PERDAVIMO INSTRUKCIJOS
MOV Rd, Rr Perkelti tarp registrų Rd ← Rr Nėra 1
MOVW Rd, Rr Kopijuoti „Register Word“ Rd+1:Rd ← Rr+1:Rr Nėra 1
LDI Rd, K. Įkelti nedelsiant Rd ← K Nėra 1
LD Rd, X Įkelti netiesiogiai Rd ← (X) Nėra 2
LD Rd, X + Įkelti netiesioginį ir „Post-Inc“. Rd ← (X), X ← X + 1 Nėra 2
LD Rd, - X Įkelti netiesioginį ir prieš gruodžio mėn. X ← X – 1, Rd ← (X) Nėra 2
LD Rd, Y Įkelti netiesiogiai Rd ← (Y) Nėra 2
LD Rd, Y + Įkelti netiesioginį ir „Post-Inc“. Rd ← (Y), Y ← Y + 1 Nėra 2
LD Rd, - Y Įkelti netiesioginį ir prieš gruodžio mėn. Y ← Y – 1, Rd ← (Y) Nėra 2
LDD Rd, Y + q Įkelti netiesiogiai su poslinkiu Rd ← (Y + q) Nėra 2
LD Rd, Z Įkelti netiesiogiai Rd ← (Z) Nėra 2
LD Rd, Z + Įkelti netiesioginį ir „Post-Inc“. Rd ← (Z), Z ← Z+1 Nėra 2
LD Rd, -Z Įkelti netiesioginį ir prieš gruodžio mėn. Z ← Z – 1, Rd ← (Z) Nėra 2
LDD Rd, Z + q Įkelti netiesiogiai su poslinkiu Rd ← (Z + q) Nėra 2
LDS Rd, k Įkelti tiesiogiai iš SRAM Rd ← (k) Nėra 2
ST X, Rr Parduotuvė netiesioginė (X) ← Rr Nėra 2
ST X +, Rr Parduotuvė netiesioginė ir „Post-Inc“. (X) ← Rr, X ← X + 1 Nėra 2
ST - X, Rr Parduotuvė netiesioginė ir prieš gruodžio mėn. X ← X – 1, (X) ← Rr Nėra 2
ST Y, Rr Parduotuvė netiesioginė (Y) ← Rr Nėra 2
ST Y +, Rr Parduotuvė netiesioginė ir „Post-Inc“. (Y) ← Rr, Y ← Y + 1 Nėra 2
ST - Y, Rr Parduotuvė netiesioginė ir prieš gruodžio mėn. Y ← Y – 1, (Y) ← Rr Nėra 2
STD Y + q, Rr Laikykite netiesiogiai su poslinkiu (Y + q) ← Rr Nėra 2
ST Z, Rr Parduotuvė netiesioginė (Z) ← Rr Nėra 2
ST Z +, Rr Parduotuvė netiesioginė ir „Post-Inc“. (Z) ← Rr, Z ← Z + 1 Nėra 2
ST - Z, r Parduotuvė netiesioginė ir prieš gruodžio mėn. Z ← Z – 1, (Z) ← Rr Nėra 2
STD Z + q, Rr Laikykite netiesiogiai su poslinkiu (Z + q) ← Rr Nėra 2
STS k, Rr Laikykite tiesiogiai SRAM (k) ← Rr Nėra 2
LPM Įkelkite programos atmintį R0 ← (Z) Nėra 3
LPM Rd, Z Įkelkite programos atmintį Rd ← (Z) Nėra 3
LPM Rd, Z + Įkelti programos atmintį ir „Post-Inc“ Rd ← (Z), Z ← Z+1 Nėra 3
SPM Saugokite programos atmintį (z) ← R1:R0 Nėra
IN Rd, P. Uoste Rd ← P Nėra 1
OUT P, Rr Iš uosto P ← Rr Nėra 1
stumti Rr Paspauskite „Registruokis ant kamino“ KAUNO ← Rr Nėra 2
POP Rd „Pop“ registras iš „Stack“ Rd ← STACK Nėra 2
MCU KONTROLĖS INSTRUKCIJOS
NOP Jokios operacijos Nėra 1
MIEGAS Miegoti (žr. konkretų miego funkcijos aprašą) Nėra 1
WDR Budėjimo šuo atstatyti (žr. konkretų WDR / laikmačio aprašą) Nėra 1
PERTRAUKA Pertrauka
Greitis (MHz) (1) Tiekimas ttage (V) Temperatūros diapazonas Paketas (2) Užsakymo kodas (3)
10 1.8-5.5 Pramoninis

(Nuo -40 ° C iki + 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 Pramoninis

(Nuo -40 ° C iki + 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

Pastabos: 1. Greičiui ir tiekimui, ttage, žr. skyrių 21.3 „Greitis“ 163 puslapyje.

Visi paketai yra be Pb, be halogenidų ir visiškai žali ir atitinka Europos direktyvą dėl pavojingų medžiagų ribojimo (RoHS).

Kodo indikatoriai

H: NiPdAu švino apdaila

U: matinis alavas

R: juosta ir ritė

Šie prietaisai taip pat gali būti tiekiami plokštelių pavidalu. Norėdami gauti išsamesnės informacijos apie užsakymą ir minimalius kiekius, kreipkitės į vietinį „Atmel“ prekybos skyrių.

Klaida

Klaida ATtiny25

Šiame skyriuje pateiktame peržiūros laiške nurodoma „ATtiny25“ įrenginio peržiūra.

Rev D - F

Nežinoma klaida.

B - C red

EEPROM skaitymas gali nepavykti esant mažam tiekimo tūriuitage / žemas laikrodžio dažnis

EEPROM skaitymas gali nepavykti esant mažam tiekimo tūriuitage / žemas laikrodžio dažnis

Bandoma skaityti EEPROM esant žemam laikrodžio dažniui ir (arba) mažam tiekimo tūriuitage, duomenys gali būti neteisingi.

Problemos sprendimas / problemos sprendimas

Nenaudokite EEPROM, kai laikrodžio dažnis yra mažesnis nei 1 MHz ir tiekimo tūristage yra mažesnis nei 2 V. Jei veikimo dažnio negalima pakelti aukščiau nei 1 MHz, tada tiekimo tūristage turėtų būti daugiau nei 2 V. Panašiai, jei tiekimo ttage negali būti padidintas virš 2V, tada veikimo dažnis turi būti didesnis nei 1MHz.

Žinoma, kad ši savybė priklauso nuo temperatūros, tačiau ji nebuvo apibūdinta. Pateikiamos tik kambario temperatūros gairės.

Rev. A

Ne sampvedė.

Klaida ATtiny45

Šiame skyriuje pateiktame peržiūros laiške nurodoma „ATtiny45“ įrenginio peržiūra.

Rev F - G

Nežinoma klaida

D - E rev

EEPROM skaitymas gali nepavykti esant mažam tiekimo tūriuitage / žemas laikrodžio dažnis

EEPROM skaitymas gali nepavykti esant mažam tiekimo tūriuitage / žemas laikrodžio dažnis

Bandoma skaityti EEPROM esant žemam laikrodžio dažniui ir (arba) mažam tiekimo tūriuitage, duomenys gali būti neteisingi.

Problemos sprendimas / problemos sprendimas

Nenaudokite EEPROM, kai laikrodžio dažnis yra mažesnis nei 1 MHz ir tiekimo tūristage yra mažesnis nei 2 V. Jei veikimo dažnio negalima pakelti aukščiau nei 1 MHz, tada tiekimo tūristage turėtų būti daugiau nei 2 V. Panašiai, jei tiekimo ttage negali būti padidintas virš 2V, tada veikimo dažnis turi būti didesnis nei 1MHz.

Žinoma, kad ši savybė priklauso nuo temperatūros, tačiau ji nebuvo apibūdinta. Pateikiamos tik kambario temperatūros gairės.

B - C red

PLL neužsiblokuoja

EEPROM, nuskaitytas iš programos kodo, neveikia užrakinimo bitų režimu 3

EEPROM skaitymas gali nepavykti esant mažam tiekimo tūriuitage / žemas laikrodžio dažnis

Laikmačio skaitiklis 1 PWM išvesties generavimas OC1B-XOC1B neveikia tinkamai

PLL neužsiblokuoja

Kai dažnis yra žemesnis nei 6.0 MHz, PLL neužsiblokuos

Problemos sprendimas / problemos sprendimas

Naudodamiesi PLL, paleiskite 6.0 MHz ar didesnę spartą.

EEPROM, nuskaitytas iš programos kodo, neveikia užrakinimo bitų režimu 3

Kai atminties užrakto bitai LB2 ir LB1 yra užprogramuoti į 3 režimą, EEPROM skaitymas neveikia iš programos kodo.

Problemos sprendimas / darbas aplink

Nenustatykite 3 fiksavimo bitų apsaugos režimo, kai programos kodą reikia skaityti iš EEPROM.

EEPROM skaitymas gali nepavykti esant mažam tiekimo tūriuitage / žemas laikrodžio dažnis

Bandoma skaityti EEPROM esant žemam laikrodžio dažniui ir (arba) mažam tiekimo tūriuitage, duomenys gali būti neteisingi.

Problemos sprendimas / problemos sprendimas

Nenaudokite EEPROM, kai laikrodžio dažnis yra mažesnis nei 1 MHz ir tiekimo tūristage yra mažesnis nei 2 V. Jei veikimo dažnio negalima pakelti aukščiau nei 1 MHz, tada tiekimo tūristage turėtų būti daugiau nei 2 V. Panašiai, jei tiekimo ttage negali būti padidintas virš 2V, tada veikimo dažnis turi būti didesnis nei 1MHz.

Žinoma, kad ši savybė priklauso nuo temperatūros, tačiau ji nebuvo apibūdinta. Pateikiamos tik kambario temperatūros gairės.

Laikmačio skaitiklis 1 PWM išvesties generavimas OC1B - XOC1B neveikia tinkamai

„Timer Counter1“ PWM išvestis OC1B-XOC1B neveikia tinkamai. Tik tuo atveju, kai valdymo bitai COM1B1 ir COM1B0 yra to paties režimo kaip atitinkamai COM1A1 ir COM1A0, OC1B-XOC1B išvestis veikia teisingai.

Problemos sprendimas / darbas aplink

Vienintelis sprendimas yra naudoti tą patį valdymo nustatymą valdymo bituose COM1A [1: 0] ir COM1B [1: 0], žr. Duomenų lentelės 14–4 lenteles. Problema buvo išspręsta „Tiny45“ D versijai.

Rev. A

Per didelis energijos suvartojimo išjungimas

„DebugWIRE“ praranda ryšį, kai vienas įsilieja į pertraukas

PLL neužsiblokuoja

EEPROM, nuskaitytas iš programos kodo, neveikia užrakinimo bitų režimu 3

EEPROM skaitymas gali nepavykti esant mažam tiekimo tūriuitage / žemas laikrodžio dažnis

Per didelis energijos suvartojimo išjungimas

Trys atvejai lems per daug energijos išeikvojimo. Šitie yra:

Išorinis laikrodis parenkamas saugikliais, tačiau įvesties / išvesties prievadas vis tiek įgalinamas kaip išvestis.

EEPROM nuskaitomas prieš įjungiant maitinimą.

VCC yra 4.5 voltų ar didesnis.

Atsakomybės apribojimas: šiame dokumente pateikta informacija yra susijusi su „Atmel“ produktais. Šiuo dokumentu arba su „Atmel“ produktų pardavimu nesuteikiama jokia tiesioginė ar numanoma licencija intelektinės nuosavybės teisėms. IŠSKYRUS ATMEL PARDAVIMO SĄLYGOSE, NURODYTAS ATMEL WEBSVETAINE, ATMEL NEPRISIIMA JOKIOS ATSAKOMYBĖS IR ATSAKOMYBĖS JOKIŲ AIŠKIŲ, NUMANOMŲ AR ĮSTATYMŲ GARANTIJŲ, SUSIJUSIŲ SU JO PRODUKTAIS, ĮSKAITANT, BET NE APSIRIBINANT, NUMANOMĄ PREKYBOS GARANTIJĄ, TINKAMUMO PARTNERIAI ORGARANTIJĄ. JOKIU ATVEJU ATMEL NEATSAKO UŽ JOKIĄ TIESIOGIĄ, NETIESIOGINĘ, SEKMINIĄ, BAUSTAMĄ, SPECIALĘ AR ATSITITINKĄ ŽALĄ (ĮSKAITANT, BE APRIBOJIMŲ, ŽALĄ DĖL PELNŲ IR NUOSTOLIŲ, VERSLO NUTRAUKIMO ARBA NAUDOJIMO ARBA NUTRAUKIMĄ). ŠĮ DOKUMENTĄ, NET JEI ATMEL BUVO ĮSPĖTAS APIE TOKIO ŽALOS GALIMYBĘ.

„Atmel“ neteikia jokių pareiškimų ar garantijų dėl šio dokumento turinio tikslumo ar išsamumo ir pasilieka teisę bet kuriuo metu be įspėjimo keisti specifikacijas ir gaminių aprašymus. Atmel neįsipareigoja atnaujinti čia pateiktos informacijos. Jei konkrečiai nenumatyta kitaip, Atmel produktai netinka ir negali būti naudojami automobiliams. „Atmel“ produktai nėra skirti, įgalioti arba garantuoti naudoti kaip komponentai programose, skirtose gyvybei palaikyti arba palaikyti.

Nuorodos

Palikite komentarą

Jūsų el. pašto adresas nebus skelbiamas. Privalomi laukai pažymėti *