Atmel

Atmel 8-bit AVR Microcontroller mei 2/4/8K bytes yn-systeem programmearbere Flashchip

 

Features

  • High Performance, Low Power AVR® 8-Bit Microcontroller
  • Avansearre RISC-arsjitektuer
  • 120 Krêftige ynstruksjes - Measte útfiering fan ien kloksyklus
  • 32 x 8 Wurkregisters foar algemiene doelen
  • Folslein statyske operaasje
  • Net-fluchtich programma- en gegevensherinneringen
  • 2/4 / 8K Bytes yn-systeem programmearber programma-ûnthâldflits
  • Endurance: 10,000 Skriuw-/wissyklusen
  • 128/256/512 Bytes Yn-systeem programmearbere EEPROM
  • Endurance: 100,000 Skriuw-/wissyklusen
  • 128/256/512 Bytes Yntern SRAM
  • Programmearingsslot foar selsprogrammearjend Flashprogramma en EEPROM Data Security

Perifeare funksjes

  • 8-bit timer / teller mei prescaler en twa PWM-kanalen
  • 8-bit hege snelheid timer / teller mei aparte prescaler
  • 2 PWM-útfier mei hege frekwinsje mei aparte útfier fergelykje registers
  • Programmierbere Dead Time Generator
  • USI - Universele seriële ynterface mei starttoetsdetektor
  • 10-bit ADC

4 single einige kanalen

2 Differinsjoneel ADC-kanaelparen mei programmearbere winst (1x, 20x)

Temperatuermjitting

Programmierbere Watchdog-timer mei aparte oscillator op chip

Analoge fergeliking op chip

Spesjale funksjes foar mikrokontroller

debugWIRE Untbrekkingssysteem op chip

Yn-systeem programmearber fia SPI-poarte

Eksterne en ynterne ûnderbrekkingsboarnen

Idle mei lege macht, ADC-lûdsreduksje, en Power-down-modus

Ferbettere Power-on Reset Circuit

Programmearber Brown-out Detection Circuit

Ynterne kalibreare oscillator

I / O en pakketten

Seis programmearbere I / O-rigels

8-pin PDIP, 8-pin SOIC, 20-pad QFN / MLF, en 8-pin TSSOP (allinich ATtiny45 / V)

Operaasje Voltage
- 1.8 - 5.5V foar ATtiny25V / 45V / 85V
- 2.7 - 5.5V foar ATtiny25 / 45/85

Speed ​​Grade
- ATtiny25V / 45V / 85V: 0 - 4 MHz @ 1.8 - 5.5V, 0 - 10 MHz @ 2.7 - 5.5V
- ATtiny25 / 45/85: 0 - 10 MHz @ 2.7 - 5.5 V, 0 - 20 MHz @ 4.5 - 5.5 V

Yndustriële temperatuerberik

Low Power Consumption

Aktive modus:

1 MHz, 1.8 V: 300 µA

Power-down modus:

Konfiguraasjes pinje

Pinout ATtiny25 / 45/85 Konfiguraasje

Pin Beskriuwings

VCC: Supply voltage.
GND: Grûn.
Poarte B (PB5: PB0): Poarte B is in 6-bit bi-directional I / O haven mei ynterne pull-up wjerstannen (selektearre foar eltse bit). De útfierbuffers fan Port B hawwe symmetryske rydkarakteristiken mei sawol hege sink- as boarnemooglikheden. As yngongen sille Port B-pins dy't ekstern leech wurde lutsen, stroom boarne as de pull-up wjerstannen binne aktivearre. De poarte B-pins wurde trije-statearre as in reset-betingst aktyf wurdt, sels as de klok net rint.

Port B betsjinnet ek de funksjes fan ferskate spesjale funksjes fan 'e ATtiny25 / 45/85 lykas neamd
Op ATtiny25 wurde de programmearbere I / O-poarten PB3 en PB4 (pins 2 en 3) útwiksele yn ATtiny15 Kompatibiliteitsmodus foar stipe fan 'e efterkompatibiliteit mei ATtiny15.

RESET: Ynput weromsette. In leech nivo op dizze pin foar langer dan de minimale puls lingte sil generearje in reset, sels as de klok net rint en mits de reset pin is net útskeakele. De minimale pulslingte wurdt jûn yn Tabel 21-4 op side 165, Koartere pulsen wurde net garandearre om in reset te generearjen.

De reset-pin kin ek brûkt wurde as (swak) I / O-pin.

Oerview

De ATtiny25 / 45/85 is in CMOS 8-bit microcontroller mei lege macht, basearre op de AVR-ferbettere RISC-arsjitektuer. Troch krêftige ynstruksjes út te fieren yn ien kloksyklus berikt de ATtiny25 / 45/85 trochstreamen dy't 1 MIPS per MHz benaderje, wêrtroch de systeemûntwerper it enerzjyferbrûk kin optimalisearje versus de ferwurkingssnelheid.

Blokdiagram Blokdiagram

De AVR-kearn kombineart in rike ynstruksjet set mei 32 wurkregisters foar algemiene doelen. Alle 32 registers binne direkt ferbûn mei de Arithmetic Logic Unit (ALU), wêrtroch twa unôfhinklike registers kinne wurde tagonklik makke yn ien ynstruksje útfierd yn ien kloksyklus. De resultearende arsjitektuer is effisjinter mei koade by it realisearjen fan trochgongen oant tsien kear rapper dan konvinsjonele CISC-mikrokontrollers.

De ATtiny25 / 45/85 biedt de folgjende funksjes: 2/4 / 8K bytes fan yn-systeem programmearbere flits, 128/256/512 bytes EEPROM, 128/256/256 bytes SRAM, 6 algemiene doel I / O-rigels, 32 algemien doelwurkregisters, ien 8-bit timer / teller mei fergelykingsmodi, ien 8-bit hege snelheid timer / teller, universele seriële ynterface, ynterne en eksterne ynterrupsjes, in 4-kanaals, 10-bit ADC, in programmearbere watchdog-timer mei ynterne Oscillator, en trije seleksjoneel enerzjybesparringsmodi. Idle-modus stopt de CPU wylst it SRAM, Timer / Counter, ADC, Analog Comparator, en Interrupt-systeem trochgean mei funksjonearjen. Power-down mode bewarret de registerynhâld, en skeakelt alle chipfunksjes út oant de folgjende ûnderbrekking as hardware weromsette. ADC-lûdsreduksjemodus stopet de CPU en alle I / O-modules útsein ADC, om it skeakelûzjen by ADC-konverzjes te minimalisearjen.

It apparaat wurdt makke mei de net-fluchtige ûnthâldtechnology mei hege tichtheid fan Atmel. De ISP Flash op 'e chip lit it programma-ûnthâld yn-systeem opnij programmearje fia in seriële SPI-interface, troch in konvinsjonele net-fluchtige ûnthâldprogrammeur of troch in On-chip-bootkoade dy't rint op' e AVR-kearn.

De ATtiny25 / 45/85 AVR wurdt stipe mei in folsleine suite fan programma- en systeemûntwikkelingstools ynklusyf: C-pilers, makroassemblers, programmadebugger / simulatoren en evaluaasjekits.

Oer Resources

In wiidweidige set fan ûntwikkelingshulpmiddels, tapassingsnota's en datasheets binne te downloaden op http://www.atmel.com/avr.

Koade Examples

Dizze dokumintaasje befettet ienfâldige koade examples dy't koart litte sjen hoe ferskate dielen fan it apparaat te brûken. Dizze koade eksamples oannimme dat de diel spesifike koptekst file is opnommen foar kompilaasje. Wês bewust dat net alle C -kompilearferkeapers bitdefinysjes befetsje yn 'e koptekst files en ûnderbrekkingshanneling yn C is kompilerôfhinklik. Befêstigje asjebleaft mei de C -kompilaasjedokumintaasje foar mear details.

Foar I / O-registers yn 'e útwreide I / O-kaart moatte "IN", "OUT", "SBIS", "SBIC", "CBI", en "SBI" ynstruksjes wurde ferfongen troch ynstruksjes dy't tagong jouwe ta útwreide I / O. Typysk betsjuttet dit "LDS" en "STS" yn kombinaasje mei "SBRS", "SBRC", "SBR", en "CBR". Tink derom dat net alle AVR-apparaten in útwreide I / O-kaart befetsje.

Kapasitive Touch Sensing

Atmel QTouch Library biedt in ienfâldige te brûken oplossing foar oanraakgefoelige ynterfaces op Atmel AVR-mikrokontrollers. De QTouch Library omfettet stipe foar QTouch® en QMatrix® oanwinstmetoaden.

Touch-sensing wurdt maklik oan elke applikaasje tafoege troch de QTouch Library te keppeljen en de Application Programming Interface (API) fan 'e bibleteek te brûken om de touchkanalen en sensoren te definiearjen. De applikaasje ropt dan de API op om kanaalynformaasje te heljen en de steat fan 'e oanreitsensor te bepalen.

De QTouch -bibleteek is fergees en kin wurde downloade fan 'e Atmel website. Foar mear ynformaasje en details oer ymplemintaasje, ferwize nei de QTouch Library User Guide - ek te krijen by de Atmel website.

Gegevensbehâld

Betrouwbaarheidsresultaten fan kwalifikaasje litte sjen dat it projektprojektgegevens foar retentearjen fan gegevens folle minder is dan 1 PPM oer 20 jier by 85 ° C of 100 jier by 25 ° C.

AVR CPU Kearn

Ynlieding

Dizze paragraaf besprekt de AVR-kearnarsjitektuer yn 't algemien. De wichtichste funksje fan 'e CPU-kearn is it garandearjen fan korrekte programma-útfiering. De CPU moat dêrom tagong krije ta oantinkens, berekkeningen útfiere, peripherale apparaten kontrolearje, en ynterrupsjes behannelje.

Architectural Overview Boukunde

Om prestaasjes en parallelisme te maksimalisearjen, brûkt de AVR in Harvard-arsjitektuer - mei aparte oantinkens en bussen foar programma en gegevens. Ynstruksjes yn it programma-ûnthâld wurde útfierd mei in pipelining op ien nivo. Wylst ien ynstruksje wurdt útfierd, wurdt de folgjende ynstruksje foarôf helle út it Programgeheugen. Mei dit konsept kinne ynstruksjes yn elke kloksyklus wurde útfierd. It programma-ûnthâld is yn-systeem opnij programmearje Flash-ûnthâld.

It rappe tagongsregister File befettet 32 ​​x 8-bit algemiene doel wurkjende registers mei in inkele klok syklus tagong tiid. Dit makket it mooglik ien-syklus Arithmetic Logic Unit (ALU) operaasje. Yn in typyske ALU-operaasje wurde twa operanden út it register útfierd File, de operaasje wurdt útfierd, en it resultaat wurdt werom opslein yn it register File- yn ien kloksyklus.

Seis fan 'e 32 registers kinne brûkt wurde as trije 16-bit yndirekte adresregistraasjewizers foar Data Space-adresing - sadat effisjinte adresberekkeningen mooglik binne. Ien fan dizze adreswizers kin ek brûkt wurde as adreswizer foar opsykje tabellen yn Flash Program-ûnthâld. Dizze tafoege funksjeregisters binne it 16-bit X-, Y- en Z-register, letter beskreaun yn dizze paragraaf.

De ALU stipet rekken- en logyske operaasjes tusken registers as tusken in konstant en in register. Single-register-operaasjes kinne ek wurde útfierd yn 'e ALU. Nei in rekkenrekken wurdt it Statusregister bywurke om ynformaasje oer it resultaat fan 'e operaasje te reflektearjen.

Programmafloed wurdt fersoarge troch kondysjonele en sûnder betingsten ynstruksjes foar sprong en oprop, yn steat direkt de heule adresromte oan te pakken. De measte AVR-ynstruksjes hawwe ien 16-bit wurdformaat, mar d'r binne ek 32-bit ynstruksjes.

By ynterrupsjes en subroutine-petearen wurdt it retoeradres Program Counter (PC) opslein op 'e Stack. De Stack wurdt effektyf tawiisd yn 'e algemiene gegevens SRAM, en sadwaande wurdt de Stackgrutte allinich beheind troch de totale SRAM-grutte en it gebrûk fan' e SRAM. Alle brûkersprogramma's moatte de SP inisjalisearje yn 'e Reset-routine (foardat sub-routines of ynterrupsjes wurde útfierd). De Stack Pointer (SP) is tagonklik foar lêzen / skriuwen yn 'e I / O-romte. De gegevens SRAM kinne maklik tagonklik wurde fia de fiif ferskillende adressearingsmodi dy't wurde stipe yn 'e AVR-arsjitektuer.

De ûnthâldspaasjes yn 'e AVR-arsjitektuer binne allegear lineêre en reguliere ûnthâldkaarten.

In fleksibele interruptmodule hat syn kontrôleregisters yn 'e I / O-romte mei in ekstra Global Interrupt Enable bit yn it Statusregister. Alle ynterrumpten hawwe in aparte Interrupt Vector yn 'e tabel Interrupt Vector. De ynterrumpten hawwe prioriteit yn oerienstimming mei har posysje Interrupt Vector. Hoe leger it Interrupt Vector-adres, hoe heger de prioriteit.

De I/O -ûnthâldromte befettet 64 adressen foar perifeare CPU -funksjes as kontrôleregisters, SPI, en oare I/O -funksjes. It I/O-ûnthâld kin direkt tagonklik wurde, as as de Data Space-lokaasjes folgje dy fan 'e registraasje File, 0x20 - 0x5F.

ALU - Aritmetyske logikaenheid

De hege prestaasjes AVR ALU wurket yn direkte ferbining mei alle 32 wurkregisters foar algemiene doelen. Binnen ien kloksyklus wurde rekenkundige operaasjes útfierd tusken registers foar algemiene doelen as tusken in register en in direkte. De ALU-operaasjes binne ferdield yn trije haadkategoryen - rekkenjen, logyske en bitfunksjes. Guon ymplementaasjes fan 'e arsjitektuer leverje ek in krêftige multiplier dy't sawol ûndertekene / net-ûndertekene fermannichfâldiging as fraksjonele opmaak stipet. Sjoch de seksje "Ynstruksjeset" foar in detaillearre beskriuwing.

Statusregister

It Statusregister befettet ynformaasje oer it resultaat fan 'e koartlyn útfierde rekkenynstruksje. Dizze ynformaasje kin brûkt wurde foar it feroarjen fan programmafloed om betingste operaasjes út te fieren. Tink derom dat it Statusregister wurdt bywurke nei alle ALU-operaasjes, lykas oantsjutte yn 'e Ynstruksjetreferinsje. Dit sil yn in protte gefallen de needsaak ferwiderje foar it brûken fan de spesjale ynstruksjes foar fergeliking, wat resulteart yn rappere en kompakter koade.

It Statusregister wurdt net automatysk opslein by it ynfieren fan in ûnderbrekkingsroutine en hersteld as weromkomt fan in ûnderbrekking. Dit moat wurde behannele troch software.

SREG - AVR-statusregister

It AVR-statusregister - SREG - wurdt definieare as:

Bit 7 6 5 4 3 2 1 0
0x3f I T H S V N Z C SREG
Lês / Skriuw R/W R/W R/W R/W R/W R/W R/W R/W
Inisjele wearde 0 0 0 0 0 0 0 0

Bit 7 - I: Global Interrupt Enable

De bit Global Interrupt Enable moat ynsteld wurde om de interrupts te aktivearjen. De yndividuele kontrôle foar ûnderbrek ynskeakelje wurdt dan útfierd yn aparte kontrôleregisters. As it Global Interrupt Enable Register wurdt wiske, dan wurdt gjin fan 'e interrupts ynskeakele ûnôfhinklik fan' e yndividuele ynstellingen foar interrupt ynskeakelje. De I-bit wurdt wiske troch hardware nei't in ûnderbrekking is bard, en wurdt ynsteld troch de RETI-ynstruksje om folgjende ynterrupsjes yn te skeakeljen. De I-bit kin ek wurde ynsteld en wiske troch de applikaasje mei de SEI- en CLI-ynstruksjes, lykas beskreaun yn 'e ynstruksje-setferwizing.

Bit 6 - T: Bitkopie-opslach

De ynstruksjes foar Bitkopie BLD (Bit LoaD) en BST (Bit STore) brûke de T-bit as boarne as bestimming foar it opereare bit. In bytsje fan in register yn it register File kin yn T wurde kopieare troch de BST -ynstruksje, en in bytsje yn T kin in bytsje wurde kopieare yn in register yn it register File troch de BLD ynstruksje.

Bit 5 - H: Half Carry Flag

De Half Carry Flag H wiist op in Half Carry yn guon rekkenrekken. Half Carry is nuttich yn BCD-rekkenjen. Sjoch de "Ynstruksje ynstelle beskriuwing" foar detaillearre ynformaasje.

Bit 4 – S: Sign Bit, S = N ⊕ V

De S-bit is altyd in eksklusyf of tusken de Negative Flagge N en de Twow's Complement Overflow Flag V. Sjoch de "Omskriuwing foar ynstruksjeset" foar detaillearre ynformaasje.

Bit 3 - V: Twa's Complement Overflow Flag

The Two's Complement Overflow Flag V stipet twa's komplementearitmetyk. Sjoch de "Ynstruksje ynstelle beskriuwing" foar detaillearre ynformaasje.

Bit 2 - N: Negative flagge

De Negative Flagge N jout in negatyf resultaat oan yn in rekken- of logyske operaasje. Sjoch de "Ynstruksje ynstelle beskriuwing" foar detaillearre ynformaasje.

Bit 1 - Z: Nul flagge

De Zero Flag Z jout in nulresultaat oan yn in rekken- of logyske operaasje. Sjoch de "Ynstruksje ynstelle beskriuwing" foar detaillearre ynformaasje.

Bit 0 - C: Flagge drage

De Carry Flag C jout oan in carry yn in rekken- of logyske operaasje. Sjoch de "Ynstruksje ynstelle beskriuwing" foar detaillearre ynformaasje.

Register foar algemien doel File

It Register File is optimalisearre foar de AVR Enhanced RISC ynstruksjeset. Om de fereaske prestaasjes en fleksibiliteit te berikken, wurde de folgjende ynput-/útfierskema's stipe troch it register File:

Ien 8-bit útfier-operand en ien 8-bit resultaatynfier

Twa 8-bit útfier-operands en ien 8-bit resultaatynfier

Twa 8-bit útfier-operands en ien 16-bit resultaatynfier

Ien 16-bit útfier-operand en ien 16-bit resultaatynfier

figuer 4-2 toant de struktuer fan 'e 32 wurkregisters foar algemiene doelen yn' e CPU. Algemiene doel

Lykas werjûn yn figuer 4-2, elk register wurdt ek in gegevensgeheugenadres tawiisd, dat se direkt yn kaart bringt yn 'e earste 32 lokaasjes fan' e brûkersdataromte. Hoewol net fysyk ymplementearre as SRAM-lokaasjes, biedt dizze ûnthâldorganisaasje grutte fleksibiliteit by tagong fan 'e registers, om't de X-, Y- en Z-pointer-registers kinne wurde ynsteld foar it yndeksearjen fan elk register yn' e file.De measte ynstruksjes operearje op it Register File hawwe direkte tagong ta alle registers, en de measten dêrfan binne inkelde syklusynstruksjes.

It X-register, Y-register, en Z-register

De registers R26..R31 hawwe wat tafoege funksjes oan har algemiene gebrûk. Dizze registers binne 16-bit adreswizers foar yndirekt adresjen fan de gegevensromte. De trije yndirekte adresregisters X, Y, en Z wurde definieare lykas beskreaun yn figuer 4-3.

Register

Yn 'e ferskillende adressearingsmodi hawwe dizze adresregisters funksjes as fêste ferpleatsing, automatyske ferheging en automatyske ferleging (sjoch de ynstruksje set referinsje foar details).

Stack Pointer

De Stack wurdt foaral brûkt foar it opslaan fan tydlike gegevens, foar it opslaan fan lokale fariabelen en foar it opslaan fan weromadressen nei ynterrupsjes en subroutine-petearen. It Stack Pointer Register wiist altyd nei de top fan 'e Stack. Tink derom dat de Stack wurdt ymplementearre as groeit fan hegere ûnthâld lokaasjes nei legere ûnthâld lokaasjes. Dit betsjuttet dat in Stack PUSH-kommando de Stack Pointer fermindert.

De Stack Pointer wiist op it gegevens SRAM Stack gebiet wêr't de Subroutine en Interrupt Stacks lizze. Dizze Stack-romte yn 'e SRAM-gegevens moat wurde definieare troch it programma foardat der subroutine-oproppen wurde útfierd of ynterrupsjes wurde ynskeakele. De Stack Pointer moat wurde ynsteld op punt boppe 0x60. De Stack Pointer wurdt deklementeare troch ien as gegevens op 'e Stack wurde skood mei de PUSH-ynstruksje, en it wurdt deklementeare troch twa as it retoeradres op' e Stack wurdt skood mei subroutine-oprop of ûnderbrekking. De Stack Pointer wurdt ferhege troch ien as gegevens fan 'e Stack mei de POP-ynstruksje wurde opsprongen, en it wurdt troch twa ferhege as gegevens wurde út' e Stack springt mei werom fan subroutine RET of werom fan interrupt RETI.

De AVR Stack Pointer wurdt ymplementeare as twa 8-bit registers yn 'e I / O-romte. It oantal bits dat eins wurdt brûkt is ôfhinklik fan ymplemintaasje. Tink derom dat de gegevensromte yn guon ymplementaasjes fan 'e AVR-arsjitektuer sa lyts is dat allinich SPL nedich is. Yn dit gefal sil it SPH-register net oanwêzich wêze.

SPH en SPL - Stack Pointer Register

Bit 15 14 13 12 11 10 9 8
0x3e SP15 SP14 SP13 SP12 SP11 SP10 SP9 SP8 SPH
0x3 d SP7 SP6 SP5 SP4 SP3 SP2 SP1 SP0 SPL
7 6 5 4 3 2 1 0
Lês / Skriuw R/W R/W R/W R/W R/W R/W R/W R/W
Lês / Skriuw R/W R/W R/W R/W R/W R/W R/W R/W
Inisjele wearde RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND
Inisjele wearde RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND

Ynstruksje-útfieringstiming

Dizze paragraaf beskriuwt de algemiene tagong timing konsepten foar ynstruksje útfiering. De AVR CPU wurdt dreaun troch de CPU klok clkCPU, direkt oanmakke út de selektearre klok boarne foar de chip. Gjin ynterne klokdieling wurdt brûkt.

Fig 4.4

figuer 4-4 toant de parallelle ynstruksjeheljen en ynstruksjeútfieringen ynskeakele troch de Harvard -arsjitektuer en it rappe tagongsregister File konsept. Dit is it basale pipeline-konsept om oant 1 MIPS per MHz te krijen mei de byhearrende unike resultaten foar funksjes per kosten, funksjes per klokken, en funksjes per machtseenheid.

figuer 4-5. Single Cycle ALU Operaasje

Fig 4.5

Handling weromsette en ûnderbrekke

De AVR leveret ferskate ûnderskate boarnen. Dizze ynterrupsjes en de aparte weromsette fektor hawwe elk in aparte programmafektor yn 'e programma-ûnthâldromte. Alle ynterrupten wurde yndividuele ynskeakele bitsen tawiisd dy't logysk ien moatte wurde skreaun tegearre mei de Global Interrupt Enable bit yn it Statusregister om de ûnderbrekking yn te skeakeljen.

De leechste adressen yn 'e romte foar programma-ûnthâld binne standert definieare as de Reset- en Interrupt-vectoren. De folsleine list mei fektoaren is te sjen yn "Underbrekt" op side 48, De list bepaalt ek de prioriteitsnivo's fan 'e ferskillende ynterrumpen. Hoe leger it adres hoe heger is it prioriteitsnivo. RESET hat de heechste prioriteit, en de folgjende is INT0 - it eksterne ynterrupt fersyk 0.

As in ûnderbrekking optreedt, wurdt de Global Interrupt Enable I-bit wiske en wurde alle interrupts útskeakele. De brûkerssoftware kin logika ien skriuwe nei de I-bit om nêst ynterrupten yn te skeakeljen. Alle ynskeakele ynterrupsjes kinne dan de hjoeddeiske ûnderbrekkingsroutine ûnderbrekke. De I-bit wurdt automatysk ynsteld as in Return from Interrupt-ynstruksje - RETI - wurdt útfierd.

D'r binne yn prinsipe twa soarten ûnderbrekken. It earste type wurdt aktivearre troch in barren dat de Interrupt Flag stelt. Foar dizze ynterrupsjes wurdt de Program Counter fektulearre oan 'e eigentlike Interrupt Vector om de ynterrupt-ôfhanneling routine út te fieren, en hardware wisket de oerienkommende Interrupt Flag. Underbrekke flaggen kinne ek wiske wurde troch in logyske ien te skriuwen nei de te wiskjen bitposysje (s) fan 'e flagge. As in ûnderbrekkingstastân foarkomt wylst it byhearrende ûnderbrek-ynskakele bit wurdt wiske, dan wurdt de Underbrekingsflagge ynsteld en ûnthâlden oant de ûnderbrekking is ynskeakele, of de flagge wurdt wiske troch software. Lykwols, as ien of mear ûnderbrekkingsbetingsten foarkomme wylst de Global Interrupt Enable bit wurdt wiske, dan wurde de oerienkommende Interrupt Flagge (s) ynsteld en ûnthâlde oant de Global Interrupt Enable bit is ynsteld, en sil dan wurde útfierd op folchoarder fan prioriteit.

It twadde type ûnderbrekkings sil aktivearje salang't de ûnderbrekkende tastân oanwêzich is. Dizze ynterrupten hawwe net needsaaklik Interrupt Flags. As de ûnderbrekkingstastân ferdwynt foardat de ûnderbrekking is ynskeakele, sil de ûnderbrekking net wurde aktivearre.

As de AVR útgiet fan in ûnderbrekking, sil hy altyd weromgean nei it haadprogramma en noch ien ynstruksje útfiere foardat in ôfwachtsende ûnderbrekking wurdt betsjinne.

Tink derom dat it Statusregister net automatysk wurdt opslein by it ynfieren fan in ûnderbrekkingsroutine, noch wersteld as weromkomt fan in ûnderbrekkingsroutine. Dit moat wurde behannele troch software.

By it brûken fan de CLI -ynstruksje om ûnderbrekkingen út te skeakeljen, wurde de ûnderbrekingen fuortendaliks útskeakele. Gjin ûnderbrekking sil wurde útfierd nei de CLI -ynstruksje, sels as it tagelyk foarkomt mei de CLI -ynstruksje. De folgjende eksample lit sjen hoe dit kin wurde brûkt om ûnderbrekkingen te foarkommen tidens de tydlike EEPROM -skriuwfolging.

Montagekoade Example
yn r16, SREG; winkel SREG wearde

cli haadwurd ; útskeakelje interrupts tidens timed folchoarder

sbi EECR, EEMPE ; start EEPROM skriuwen

sbi EECR, EEPE

út SREG, r16; SREG-wearde weromsette (I-bit)

C Koade Example
char cSREG;

cSREG = SREG; /* bewarje SREG wearde */

/* ûnderbrekten útskeakelje tidens timed sekwinsje */

_CLI ();

EECR |= (1<

EECR | = (1 <

SREG = cSREG; /* SREG-wearde weromsette (I-bit) */

By it brûken fan de SEI-ynstruksje om ûnderbrekkingen yn te skeakeljen, sil de ynstruksje folgjende SEI wurde útfierd foar alle ûnderbrekkende ûnderbrekkingen, lykas werjûn yn dizze eksample.

Montagekoade Example
sei haadwurd ; set Global Interrupt ynskeakelje

sliep; gean yn sliep, wachtsjend op ûnderbrekking

; opmerking: sil sliepe ynfiere foar hokker yn behanneling

; interrupt (s)

C Koade Example
_SEI(); /* set Global Interrupt ynskeakelje */

_SLIEP(); /* sliep yn, wachtsje op ûnderbrekking */

/ * opmerking: sil sliepe ynfiere foar eventuele ûnderbrekking (en) * /

Underbrekke responstiid

De antwurd foar ûnderbrekking fan útfiering foar alle ynskeakele AVR-ynterrupsjes is minimaal fjouwer kloksyklusen. Nei fjouwer klokcycli wurdt it Program Vector-adres útfierd foar de eigentlike ynterrutthanteringsroutine. Tidens dizze perioade fan 'e klokklok wurdt de Program Counter op' e Stack skood. De fektor is normaal in sprong nei de ûnderbrekkingsroutine, en dizze sprong nimt trije kloksyklusen. As in ûnderbrekking optreedt by de útfiering fan in ynstruksje mei meardere syklusen, dan wurdt dizze ynstruksje foltôge foardat de ûnderbrekking wurdt betsjinne. As in ûnderbrekking optreedt as de MCU yn sliepmodus is, wurdt de antwurdtiid foar ûnderbrekking fan útfiering ferhege mei fjouwer kloksyklusen. Dizze ferheging komt neist de opstarttiid fan 'e selekteare sliepmodus.

In weromkear fan in ûnderbrekkende hannelroutine duorret fjouwer kloksyklusen. Tidens dizze fjouwer kloksyklusen wurdt de Program Counter (twa bytes) weromkaam fan 'e Stack, de Stack Pointer wurdt mei twa ferhege, en de I-bit yn SREG wurdt ynsteld.

AVR-oantinkens

Dizze paragraaf beskriuwt de ferskate oantinkens yn 'e ATtiny25 / 45/85. De AVR-arsjitektuer hat twa haad ûnthâldspaasjes, it Data-ûnthâld en de Program-memory-romte. Derneist hat de ATtiny25 / 45/85 in EEPROM-ûnthâld foar gegevensopslach. Alle trije ûnthâldspaasjes binne lineêr en regelmjittich.

Re-programmearber Flash-ûnthâld yn it systeem

De ATtiny25 / 45/85 befettet 2/4 / 8K bytes On-chip herprogrammearber flitsgeheugen yn it systeem foar programma-opslach. Om't alle AVR-ynstruksjes 16 of 32 bits breed binne, is de Flash organisearre as 1024/2048/4096 x 16.

It Flash-ûnthâld hat in úthâldingsfermogen fan op syn minst 10,000 skriuw- / wiskcycles. De ATtiny25 / 45/85 Program Counter (PC) is 10/11/12 bits breed, en adressearret dêrmei de 1024/2048/4096 Program-ûnthâldlokaasjes. “Unthâldprogramma- ming ”op side 147 befettet in detaillearre beskriuwing oer it downloaden fan seriële Flash-gegevens mei de SPI-pins.

Konstante tabellen kinne wurde tawiisd binnen de heule romte foar adresadres foar programma-ûnthâld (sjoch de ynstruksje beskriuwing LPM - Programma-ûnthâld laden).

figuer 5-1. Programma Memory Map Unthâldkaart

SRAM Gegevens ûnthâld

figuer 5-2 lit sjen hoe't it ATtiny25 / 45/85 SRAM-ûnthâld is organisearre.

De legere 224/352/607 Lokaasjes foar gegevensgeheugen adressearje sawol it register File, it I/O -ûnthâld en de ynterne gegevens SRAM. De earste 32 lokaasjes sprekke it Register oan File, de folgjende 64 lokaasjes it standert I/O -ûnthâld, en de lêste 128/256/512 lokaasjes sprekke de ynterne gegevens SRAM oan.

De fiif ferskillende adresmodi foar de dekking foar gegevensgeheugen: Direkt, yndirekt mei ferpleatsing, yndirekt, yndirekt mei foarôfgeand, en yndirekt mei post-ynkrement. Yn it register File, registers R26 oant R31 hawwe de yndirekte adressearjende oanwizerregisters.

De direkte adressearring berikt de folsleine gegevensromte.

De modus Indirekte mei ferpleatsing berikt 63 adreslokaasjes fanút it basisadres dat wurdt jûn troch it Y- of Z- register.

By it brûken fan yndirekte adressearingsmodi registrearje mei automatyske foar- en postynkrement wurde de adresregisters X, Y en Z dekrementeare of ferhege.

De 32 wurkregisters foar algemien doel, 64 I/O -registers, en de 128/256/512 bytes fan ynterne gegevens SRAM yn 'e ATtiny25/45/85 binne allegear tagonklik fia al dizze adresmodi. It register File wurdt beskreaun yn "Gen- eral Doel Register File”Op side 10.

figuer 5-2. Data Memory Map Unthâldkaart 2

Data Unthâld Tagong Times

Dizze paragraaf beskriuwt de algemiene tagong timing konsepten foar ynterne ûnthâld tagong. De ynterne gegevens SRAM tagong wurdt útfierd yn twa clkCPU syklusen lykas beskreaun yn figuer 5-3.

figuer 5-3. On-chip Data SRAM Access Cycles Oer chipgegevens EEPROM Data Unthâld

De ATtiny25 / 45/85 befettet 128/256/512 bytes gegevens EEPROM-ûnthâld. It is organisearre as in aparte gegevensromte, wêryn inkele bytes kinne wurde lêzen en skreaun. De EEPROM hat in úthâldingsfermogen fan teminsten 100,000 skriuw- / wiskcycles. De tagong tusken de EEPROM en de CPU wurdt yn it folgjende beskreaun, mei spesifikaasje fan de EEPROM-adresregisters, it EEPROM-gegevensregister en it EEPROM-kontrôleregister. Foar details sjoch "Serial ynladen" op side 151.

EEPROM Lese- / skriuwtoegang

De EEPROM-tagongsregisters binne tagonklik yn 'e I / O-romte.

De skriuwtiid foar skriuwen foar de EEPROM wurdt ynjûn Tabel 5-1 op side 21. In self-timing funksje, lykwols, lit de brûker software detektearje wannear't de folgjende byte kin wurde skreaun. As de brûkerskoade ynstruksjes befettet dy't de EEPROM skriuwe, moatte guon foarsoarchsmaatregels wurde nommen. Yn swier filtere macht foarrieden, VCC is nei alle gedachten opstean of falle stadich op

Power-up/down. Dit soarget dat it apparaat foar in skoftke op in volum rinttage leger as oantsjutte as minimum foar de brûkte klokfrekwinsje. Sjen "Foarkommen fan EEPROM-korrupsje" op side 19 foar details oer hoe't jo problemen yn dizze situaasjes kinne foarkomme.

Om ûnbedoelde EEPROM-skriuwen te foarkommen, moat in spesifike skriuwproseduere wurde folge. Ferwize nei “Atoom Byte-programmearring ”op side 17 en "Split Byte Programming" op side 17 foar details hjiroer.

As de EEPROM wurdt lêzen, wurdt de CPU stillein foar fjouwer kloksyklusen foardat de folgjende ynstruksje wurdt útfierd. As de EEPROM wurdt skreaun, wurdt de CPU stillein foar twa kloksyklusen foardat de folgjende ynstruksje wurdt útfierd.

Atomic Byte Programming

Atomic Byte Programming brûke is de ienfâldichste modus. By it skriuwen fan in byte nei de EEPROM, moat de brûker it adres yn it EEAR-register skriuwe en gegevens yn it EEDR-register. As de EEPMn-bits nul binne, sil it skriuwen fan EEPE (binnen fjouwer cycles nei't EEMPE is skreaun) de hanneling wiskje / skriuwe aktivearje. Sawol de wisk- as skriuwsyklus wurde yn ien operaasje dien en de totale programmearringstiid wurdt ynjûn Tabel 5-1 op side 21, It EEPE-bit bliuwt ynsteld oant de hanneling foar wiskjen en skriuwen is foltôge. Wylst it apparaat dwaande is mei programmearjen, is it net mooglik om oare EEPROM-operaasjes te dwaan.

Split Byte Programming

It is mooglik om de wisk- en skriuwsyklus te splitsen yn twa ferskillende operaasjes. Dit kin handich wêze as it systeem foar in beheinde perioade koarte tagongstiid fereasket (typysk as de stroomfoarsjenning voltage falt). Om advys te nimmen- tage fan dizze metoade is it fereaske dat de te skriuwen lokaasjes binne wiske foar de skriuwoperaasje. Mar om't de operaasjes foar wiskjen en skriuwen wurde splitst, is it mooglik de operaasjes te wiskjen as it systeem it mooglik makket tiidkrityske operaasjes (typysk nei opstarten).

Wiskje

Om in byte te wiskjen, moat it adres wurde skreaun nei EEAR. As de EEPMn-bits 0b01 binne, sil it skriuwen fan 'e EEPE (binnen fjouwer cycles nei't EEMPE is skreaun) allinich de hanneling wiskje (programmearingstiid wurdt jûn yn Tabel 5-1 oer side 21). It EEPE-bit bliuwt ynsteld oant de hanneling is wiske. Wylst it apparaat dwaande is mei programmearjen, is it net mooglik om oare EEPROM-operaasjes te dwaan.

Skriuwe

Om in lokaasje te skriuwen, moat de brûker it adres yn EEAR skriuwe en de gegevens yn EEDR. As de EEPMn-bits 0b10 binne, sil it skriuwen fan 'e EEPE (binnen fjouwer cycles nei't EEMPE is skreaun) allinich de skriuwbewurking aktivearje (programmearingstiid wurdt Tabel 5-1 op side 21). It EEPE-bit bliuwt ynsteld oant de skriuwbewurking is foltôge. As de te skriuwen lokaasje net is wiske foar skriuwen, moatte de gegevens dy't opslein wurde beskôge wurde as ferlern. Wylst it apparaat dwaande is mei programmearjen, is it net mooglik om oare EEPROM-operaasjes te dwaan.

De kalibreare oscillator wurdt brûkt om tagong te krijen ta de EEPROM. Soargje derfoar dat de oscillatorfrekwinsje binnen de easken is beskreaun yn "OSCCAL - Oscillator-kalibraasjeregister" op side 31.

De folgjende koade examples litte ien gearkomste en ien C -funksje sjen foar wiskje, skriuwe, of atomysk skriuwen fan 'e EEPROM. De eksamples oannimme dat ûnderbrekkingen wurde regele (bgl. troch wrâldwide ûnderbrekkingen út te skeakeljen) sadat d'r gjin ûnderbrekkingen sille foarkomme by it útfieren fan dizze funksjes.

Montagekoade Example
EEPROM_skriuw:

; Wachtsje op foltôgjen fan eardere skriuwen

sbic EECR, EEPE

rjmp EEPROM_write

; Programmearingsmodus ynstelle

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

út EECR, r16

; Stel adres yn (r18: r17) yn adresregister

út EEARH, r18

út EEARL, r17

; Skriuw gegevens (r19) nei gegevensregister

út EEDR, r19

; Skriuw logyske ien nei EEMPE

sbi EECR,EEMPE

; Begjin eeprom skriuwen troch EEPE yn te stellen

sbi EECR, EEPE

ret

C Koade Example
void EEPROM_write (net ûndertekene char ucAddress, net ûndertekene char ucData)

{

/* Wachtsje op it foltôgjen fan it foarige skriuwen */ while(EECR & (1<

;

/* Programmeermodus ynstelle */

EEGR = (0 <

/ * Adres- en gegevensregisters ynstelle * / EEAR = ucAddress;

EEDR = ucData;

/* Skriuw logysk ien nei EEMPE */

EECR | = (1 <

/ * Begjin eeprom skriuwen troch EEPE yn te stellen * /

EECR | = (1 <

}

De folgjende koade eksamples toane montage en C -funksjes foar it lêzen fan de EEPROM. De eksamples oannimme dat ûnderbrekkingen wurde regele sadat d'r gjin ûnderbrekkingen sille foarkomme tidens de útfiering fan dizze funksjes.

Montagekoade Example
EEPROM_read:

; Wachtsje op foltôgjen fan eardere skriuwen

sbic EECR, EEPE

rjmp EEPROM_read

; Stel adres yn (r18: r17) yn adresregister

út EEARH, r18

út EEARL, r17

; Start eeprom lêzen troch EERE te skriuwen

sbi EECR,EERE

; Lês gegevens út gegevensregister

yn r16,EEDR

ret

C Koade Example
net ûndertekene char EEPROM_read (net ûndertekene char ucAddress)

{

/ * Wachtsje op foltôgjen fan eardere skriuwen * /

wylst (EECR & (1 <

;

/ * Adresregister ynstelle * / EEAR = ucAddress;

/* Begjin eeprom lêzen troch EERE te skriuwen */

EECR | = (1 <

/ * Gegevens weromjaan fan gegevensregister * /

werom EEDR;

}

Foarkommen fan EEPROM-korrupsje

Yn perioaden fan lege VCC kinne de EEPROM-gegevens beskeadige wurde om't it oanbod voltage is te leech foar de CPU en de EEPROM om goed te wurkjen. Dizze problemen binne deselde as foar boerdnivo -systemen dy't EEPROM brûke, en deselde ûntwerpoplossingen moatte wurde tapast.

In korrupsje fan EEPROM -gegevens kin wurde feroarsake troch twa situaasjes as de voltage is te leech. Earst fereasket in reguliere skriuwfolchoarder nei de EEPROM in minimale voltage om korrekt te wurkjen. Ten twadde kin de CPU sels ynstruksjes ferkeard útfiere, as it oanbod voltage is te leech.

EEPROM-gegevenskorrupsje kin maklik wurde foarkommen troch dizze ûntwerpoanbefelling te folgjen:

Hâld de AVR RESET aktyf (leech) yn perioaden fan net genôch stroomfoarsjenning voltage. Dit kin wurde dien troch de ynterne Brown-out Detector (BOD) yn te skeakeljen. As it detectienivo fan 'e ynterne BOD net oerienkomt mei de

nedich detection nivo, in eksterne lege VCC reset beskerming circuit kin brûkt wurde. As in reset optreedt wylst in skriuwoperaasje oan 'e gong is, sil de skriuwoperaasje foltôge wurde op betingst dat de stroomfoarsjenning voltage is genôch.

I / O-ûnthâld

De definysje fan 'e I / O-romte fan' e ATtiny25 / 45/85 wurdt werjûn yn "Gearfetting registrearje" op side 200.

Alle ATtiny25 / 45/85 I / O's en perifeare apparaten wurde yn 'e I / O-romte pleatst. Alle I / O-lokaasjes kinne wurde tagonklik makke troch de LD / LDS / LDD- en ST / STS / STD-ynstruksjes, en gegevens oerbringe tusken de 32 wurkregisters foar algemiene doelen en de I / O-romte. I / O-registers binnen it adresberik 0x00 - 0x1F binne direkt bit-tagonklik mei de SBI- en CBI-ynstruksjes. Yn dizze registers kin de wearde fan inkele bits wurde kontroleare troch de SBIS- en SBIC-ynstruksjes te brûken. Ferwize nei de seksje ynstruksje foar mear details. As jo ​​de I / O-spesifike kommando's IN en OUT brûke, moatte de I / O-adressen 0x00 - 0x3F brûkt wurde. By it adressearjen fan I / O-registers as gegevensromte mei LD- en ST-ynstruksjes, moat 0x20 wurde tafoege oan dizze adressen.

Foar kompatibiliteit mei takomstige apparaten moatte reservearre bits wurde skreaun op nul as tagong wurdt. Reserveare I / O-ûnthâldadressen moatte nea wurde skreaun.

Guon fan 'e statusflaggen wurde wiske troch in logyske ien oan te skriuwen. Tink derom dat de CBI- en SBI-ynstruksjes allinich wurkje op 'e oantsjutte bit, en kinne dêrom brûkt wurde op registers dy't sokke Statusflaggen befetsje. De CBI- en SBI-ynstruksjes wurkje allinich mei registers 0x00 oant 0x1F.

De I / O- en peripherale kontrôleregisters wurde útlein yn lettere seksjes.

Registrearje beskriuwing

EEARH - EEPROM-adresregister

Bit 7 6 5 4 3 2 1 0
0x1f EEAR8 EARRE
Lês / Skriuw R R R R R R R R/W
Inisjele wearde 0 0 0 0 0 0 0 X/0

Bits 7: 1 - Res: Reserveare bits

Dizze bits binne reservearre foar takomstich gebrûk en sille altyd as nul lêze.

Bits 0 - EEAR8: EEPROM-adres

Dit is de meast wichtige EEPROM-adresbit fan ATtiny85. Yn apparaten mei minder EEPROM, dus ATtiny25 / ATtiny45, is dit bit reservearre en sil altyd nul lêze. De begjinwearde fan it EEPROM-adresregister (EEAR) is net definieare en in goede wearde moat dêrom wurde skreaun foardat de EEPROM tagong is.

EEARL - EEPROM-adresregister

Bit

0x1e EEAR7 EEAR6 EEAR5 EEAR4 EEAR3 EEAR2 EEAR1 EEAR0 EEARL
Efter- / skriuwen R/W R/W R/W R/W R/W R/W R/W R/W
Inisjele wearde X X X X X X X X

Bit 7 - EEAR7: EEPROM-adres

Dit is de meast wichtige EEPROM-adresbit fan ATtiny45. Yn apparaten mei minder EEPROM, dus ATtiny25, is dit bit reservearre en sil altyd nul lêze. De begjinwearde fan it EEPROM-adresregister (EEAR) is net definieare en in juste wearde moat dêrom wurde skreaun foardat de EEPROM tagong is.

Bits 6: 0 - EEAR [6: 0]: EEPROM-adres

Dit binne de (lege) bits fan it EEPROM-adresregister. De EEPROM-gegevensbytes wurde lineêr oanpakt yn it berik 0… (128/256 / 512-1). De begjinwearde fan EEAR is undefined en in juste wearde moat dêrom wurde skreaun foardat de EEPROM tagong kin krije.

EEDR - EEPROM-gegevensregister

Bit 7 6 5 4 3 2 1 0
0x1 d EEDR7 EEDR6 EEDR5 EEDR4 EEDR3 EEDR2 EEDR1 EEDR0 EEDR
Lês / Skriuw R/W R/W R/W R/W R/W R/W R/W R/W
Inisjele wearde 0 0 0 0 0 0 0 0

Foar de EEPROM-skriuwbewurking befettet it EEDR-register de gegevens dy't nei de EEPROM moatte wurde skreaun yn it adres dat wurdt jûn troch it EEAR-register. Foar de EEPROM-lêsoperaasje befettet de EEDR de gegevens dy't út 'e lêze binne

EEPROM op it adres jûn troch EEAR.

 

5.5.4 EEGR - EEPROM-kontrôleregister

Bit 7 6 5 4 3 2 1 0
0x1 c        – EEPM1 EEPM0 EERIE EEMPE EEPE EERE EEGR
Lês / Skriuw R R R / W R/W R/W R/W R/W R/W
Begjinwearde 0 0 X X 0 0 X 0

Bit 7 - Res: reservearre bit

Dit bit is reservearre foar takomstich gebrûk en sil altyd lêze as 0 yn ATtiny25 / 45/85. Foar kompatibiliteit mei takomstige AVR-apparaten, skriuw dit bit altyd oant nul. Nei it lêzen maskerje jo dit bit út.

Bit 6 - Res: reservearre bit

Dit bit is reservearre yn 'e ATtiny25 / 45/85 en sil altyd as nul lêze.

Bits 5: 4 - EEPM [1: 0]: EEPROM Programming Mode Bits

De EEPROM Programming mode bits-ynstelling definieart hokker programmearaksje dy't sil wurde aktivearre by it skriuwen fan EEPE. It is mooglik om gegevens yn ien atoombewerking te programmearjen (de âlde wearde wiskje en de nije wearde te programmearjen) of de operaasjes Erase en Write te splitsen yn twa ferskillende operaasjes. De programmearringstiden foar de ferskate modi wurde werjûn yn Tabel 5-1, Wylst EEPE is ynsteld, sil alle skriuwen nei EEPMn wurde negeare. Under reset wurde de EEPMn-bits werombrocht nei 0b00, útsein as de EEPROM drok is mei programmearjen.

Tabel 5-1. EEPROM Mode Bits

EEPM1 EEPM0 Programmingstiid Operaasje
0 0 3.4 ms Wiskje en skriuwe yn ien operaasje (Atomyske operaasje)
0 1 1.8 ms Allinich wiskje
1 0 1.8 ms Skriuw allinich
1 1 Reservearre foar takomstich gebrûk

Bit 3 - EERIE: EEPROM Ready Interrupt ynskeakelje

EERIE oan ien skriuwe makket de EEPROM Ready Interrupt mooglik as de I-bit yn SREG is ynsteld. It skriuwen fan EERIE oant nul útskeakelt de ûnderbrekking. De EEPROM Ready Interrupt genereart in konstante interrupt as Net-fluchtich ûnthâld klear is foar programmearjen.

Bit 2 - EEMPE: Masterprogramma EEPROM ynskeakelje

It EEMPE-bit bepaalt oft it skriuwen fan EEPE nei ien effekt hat as net.

As EEMPE is ynsteld, sil it ynstellen fan EEPE binnen fjouwer kloksyklusen de EEPROM programmearje op it selekteare adres. As EEMPE nul is, sil it ynstellen fan EEPE gjin effekt hawwe. As EEMPE nei ien is skreaun troch software, wist hardware it bit nei nul nei fjouwer kloksyklusen.

Bit 1 - EEPE: EEPROM-programma ynskeakelje

It EEPROM-programma ynskeakelje sinjaal EEPE is it programmear-ynskeakelje-sinjaal nei de EEPROM. As EEPE wurdt skreaun, sil de EEPROM wurde programmearre neffens de EEPMn bits ynstelling. It EEMPE-bit moat nei ien wurde skreaun foardat in logyske wurdt skreaun oan EEPE, oars fynt gjin EEPROM-skriuwen plak. As de skriuwtiid is ferrûn, wurdt it EEPE-bit wiske troch hardware. As EEPE is ynsteld, wurdt de CPU twa cycles stillein foardat de folgjende ynstruksje wurdt útfierd.

Bit 0 - EERE: EEPROM Lês ynskeakelje

It EEPROM Read Enable Signal - EERE - is de lêzen strobe foar de EEPROM. As it juste adres is ynsteld yn it EEAR-register, moat it EERE-bit nei ien wurde skreaun om it lêzen fan EEPROM te aktivearjen. De EEPROM-lêzen tagong nimt ien ynstruksje, en de frege gegevens binne direkt beskikber. As de EEPROM wurdt lêzen, wurdt de CPU foar fjouwer cycles stillein foardat de folgjende ynstruksje wurdt útfierd. De brûker moat de EEPE-bit befreegje foardat de lêsbewerking begjint. As in skriuwbewurking dwaande is, is it net mooglik om de EEPROM te lêzen, noch it EEAR-register te feroarjen.

Systeemklok en klokopsjes

Clock Systems en har ferdieling

Klokferdieling

CPU-klok

De CPU -klok wurdt trochstjoerd nei dielen fan it systeem dat giet oer de wurking fan 'e AVR -kearn. Examples fan sokke modules binne it Algemien Doelregister File, it Statusregister en it Gegevensgeheugen mei de Stack Pointer. It stopjen fan de CPU -klok remmet de kearn by it útfieren fan algemiene operaasjes en berekkeningen.

I / O klok - clkI / O

De I / O-klok wurdt brûkt troch de mearderheid fan 'e I / O-modules, lykas Timer / Counter. De I / O-klok wurdt ek brûkt troch de module External Interrupt, mar tink derom dat guon eksterne interrupts wurde ûntdutsen troch asynchrone logika, wêrtroch sokke interrupts kinne wurde ûntdutsen, sels as de I / O-klok wurdt stillein.

Flitsklok - clkFLASH

De Flash-klok regelt de wurking fan 'e Flash-ynterface. De Flash-klok is normaal tagelyk aktyf mei de CPU-klok.

ADC Clock - clkADC

De ADC is foarsjoen fan in tawijd klokdomein. Hjirmei kinne jo de CPU- en I / O-klokken stopje om lûd te generearjen generearre troch digitale skeakelingen. Dit jout krekter ADC-konversaasjeresultaten.

Ynterne PLL foar snelle perifeare klokgeneraasje - clkPCK

De ynterne PLL yn ATtiny25 / 45/85 genereart in klokfrekwinsje dy't 8x wurdt fermannichfâldige fan in boarneynfier. Standert brûkt de PLL de útfier fan 'e ynterne, 8.0 MHz RC oscillator as boarne. As alternatyf, as bit LSM fan PLLCSR is ynsteld, sil PLL de útfier fan 'e RC-oscillator brûke dield troch twa. Sa is de útfier fan 'e PLL, de rappe perifeare klok 64 MHz. De snelle perifeare klok, of in dêrfoar prescaled klok, kin wurde selekteare as de klokboarne foar Timer / Counter1 of as in systeemklok. Sjen figuer 6-2. De frekwinsje fan 'e snelle perifeare klok wurdt dield troch twa as LSM fan PLLCSR is ynsteld, wat resulteart yn in klokfrekwinsje fan 32 MHz. Tink derom dat LSM net ynsteld wurde kin as PLLCLK wurdt brûkt as systeemklok.

figuer 6-2. PCK Clocking System. PCK klokje

De PLL is op 'e RC-oscillator beskoattele en it oanpassen fan' e RC-oscillator fia OSCCAL-register sil de snelle perifere klok tagelyk oanpasse. Sels as de RC-oscillator lykwols nei in hegere frekwinsje wurdt nommen dan 8 MHz, sil de snelle perifere klokfrekwinsje sêdzje op 85 MHz (minste gefal) en bliuwt oscillerend op 'e maksimale frekwinsje. It moat wurde opmurken dat de PLL yn dit gefal net langer is beskoattele mei de RC oscillatorklok. Dêrom is it oan te rieden de OSCCAL-oanpassingen net te nimmen nei in hegere frekwinsje dan 8 MHz om de PLL yn it juste wurkbereik te hâlden.

De ynterne PLL is ynskeakele as:

De PLLE-bit yn it register PLLCSR is ynsteld.

De CKSEL-lont is programmearre op '0001'.

De CKSEL-lont is programmearre op '0011'.

De PLLCSR bit PLOCK wurdt ynsteld as PLL is beskoattele. Sawol ynterne RC-oscillator as PLL wurde útskeakele yn macht-down en stand-by sliepmodi.

Ynterne PLL yn ATtiny15 Kompatibiliteitsmodus

Sûnt ATtiny25 / 45/85 is in migraasjeapparaat foar ATtiny15-brûkers, is d'r in ATtiny15-kompatibiliteitsmodus foar efterkompatibiliteit. De kompatibiliteitmodus ATtiny15 wurdt selekteare troch programmearjen fan de CKSEL-fusjes op '0011'.

Yn 'e ATtiny15-kompatibiliteitsmodus wurdt de frekwinsje fan' e ynterne RC-oscillator kalibreare nei 6.4 MHz en wurdt de fermannigingsfaktor fan 'e PLL op 4x ynsteld. Sjen figuer 6-3, Mei dizze oanpassingen is it kloksysteem kompatibel mei ATtiny15 en de resultearjende rappe perifere klok hat in frekwinsje fan 25.6 MHz (itselde as yn ATtiny15).

figuer 6-3. PCK-kloksysteem yn ATtiny15-kompatibiliteitsmodus. Klokkesysteem

Clock Boarnen

It apparaat hat de folgjende opsjes foar klokboarne, te selektearjen troch Flash Fuse bits lykas hjirûnder werjûn. De klok fan 'e selekteare boarne wurdt ynfierd nei de AVR-klokgenerator, en trochstjoerd nei de passende modules.

Tabel 6-1. Opsjes foar apparaatklokken Selektearje

Apparaat klokje opsje CKSEL[3:0](1)
Eksterne klok (sjen side 26) 0000
Hege Frekwinsje PLL Klok (sjen side 26) 0001
Kalibreare ynterne oscillator (sjen side 27) 0010(2)
Kalibreare ynterne oscillator (sjen side 27) 0011(3)
Ynterne 128 kHz oscillator (sjen side 28) 0100
Lytse frekwinsje kristaloscillator (sjen side 29) 0110
Kristaloscillator / keramyske resonator (sjen side 29) 1000 – 1111
Reservearre 0101, 0111

Foar alle fuses betsjuttet "1" net-programmearre, wylst "0" programmearre betsjut.

It apparaat wurdt ferstjoerd mei dizze opsje selekteare.

Dit sil ATtiny15 Kompatibilitaasjemodus selektearje, wêrby't systeemklok wurdt dield troch fjouwer, wat resulteart yn in 1.6 MHz klokfrekwinsje. Foar mear ynformaasje, sjoch "Kalibreare ynterne oscillator" op side 27.

De ferskate karren foar elke klokopsje wurde jûn yn 'e folgjende seksjes. As de CPU wekker wurdt fanút Power-down, wurdt de selekteare klokboarne brûkt om de opstart te tiid, en soarget foar stabile oscillatorbedriuw foardat de útfiering fan ynstruksje begjint. As de CPU begjint mei reset, is d'r in ekstra fertraging wêrtroch de krêft in stabyl nivo berikt foardat de normale operaasje begjint. De Watchdog Oscillator wurdt brûkt foar it timing fan dit realtime diel fan 'e opstarttiid. It oantal WDT-oscillatorsyklusen brûkt foar elke time-out wurdt werjûn yn Tabel 6-2.

Tabel 6-2. Oantal Watchdog Oscillator Cycles

Typ Time-out Oantal Cycles
4 ms 512
64 ms 8K (8,192)

Eksterne klok

Om it apparaat te bestjoeren fan in eksterne klokboarne, moat CLKI wurde bestjoerd lykas werjûn yn figuer 6-4, Om it apparaat op in eksterne klok út te fieren, moatte de CKSEL Fuses wurde programmearre op "00".

figuer 6-4. Eksterne klok Drive konfiguraasje

Fig 6.4

As dizze klokboarne wurdt selekteare, wurde opstarttiiden bepaald troch de SUT-fuses lykas werjûn yn Tabel 6-3.

Tabel 6-3. Opstarttiden foar de seleksje fan eksterne klok

SUT[1:0] Starttiid fanút Power-down Oanfoljende fertraging fan weromsette Oanrikkemandearre gebrûk
00 6 kkk 14CK BOD ynskeakele
01 6 kkk 14CK + 4 ms Fluch opkommende krêft
10 6 kkk 14CK + 64 ms Stadich opkommende macht
11 Reservearre

By it tapassen fan in eksterne klok is it ferplicht hommelse feroaringen yn 'e tapaste klokfrekwinsje te foarkommen om stabile wurking fan' e MCU te garandearjen. In fariaasje yn frekwinsje fan mear as 2% fan de iene kloksyklus nei de oare kin liede ta ûnfoarspelber gedrach. It is ferplichte om te soargjen dat de MCU yn Reset wurdt hâlden by sokke feroarings yn 'e klokfrekwinsje.

Tink derom dat de Systeemklok foarferkeap kin brûkt wurde om wizigingen fan runtime fan 'e ynterne klokfrekwinsje út te fieren, wylst noch stabile wurking garandeart. Ferwize nei "Systeemklok prescaler" op side 31 foar details.

Hege Frekwinsje PLL Klok

D'r is in ynterne PLL dy't nominaal 64 MHz kloksnelheid leveret beskoattele oan de RC Oscillator foar it gebrûk fan de Peripherale Timer / Counter1 en foar de boarne fan 'e systeemklok. As jo ​​selektearje as systeemklokboarne, wurdt de CKSEL troch 'programmearjen' nei '0001' dield troch fjouwer lykas werjûn yn Tabel 6-4.

Tabel 6-4. Hege frekwinsje PLL Clock Operating Modes

CKSEL[3:0] Nominale Frekwinsje
0001 16 MHz

As dizze klokboarne is selekteare, wurde opstarttiiden bepaald troch de SUT-fuses lykas werjûn yn Tabel 6-5.

Tabel 6-5. Opstarttiden foar de PLL-klok mei hege frekwinsje

SUT[1:0] Starttiid fanút Power Down Oanfoljende fertraging fan opnij ynskeakelje (VCC = 5.0V) Oanrikkemandearre gebrûk
00 14CK + 1K (1024) CK + 4 ms 4 ms BOD ynskeakele

Tabel 6-5. Opstarttiden foar de PLL-klok mei hege frekwinsje

SUT[1:0] Starttiid fanút Power Down Oanfoljende fertraging fan opnij ynskeakelje (VCC = 5.0V) Oanrikkemandearre gebrûk
01 14CK + 16K (16384) CK + 4 ms 4 ms Fluch opkommende krêft
10 14CK + 1K (1024) CK + 64 ms 4 ms Stadich opkommende macht
11 14CK + 16K (16384) CK + 64 ms 4 ms Stadich opkommende macht

Kalibreare ynterne oscillator

Standert leveret de Internal RC Oscillator in sawat 8.0 MHz klok. Hoewol voltage en temperatuerôfhinklik, kin dizze klok heul presys wurde kalibreare troch de brûker. Sjen “Kalibreare ynterne RC oscillatorakku- racy ”op side 164 en "Ynterne oscillatorsnelheid" op side 192 foar mear details. It apparaat wurdt ferstjoerd mei de CKDIV8 Fuse programmeare. Sjen "Systeemklok prescaler" op side 31 foar mear details.

Dizze klok kin wurde selekteare as de systeemklok troch de CKSEL-fuses te programmearjen lykas werjûn yn Tabel 6-6 op side

27, As selekteare sil it wurkje mei gjin eksterne komponinten. By reset laden hardware de foarprogrammeare kalibraasjewearde yn it OSCCAL-register en kalibreert dêrmei de RC Oscillator automatysk. De krektens fan dizze kalibraasje wurdt werjûn as Fabriek kalibraasje yn Tabel 21-2 op side 164.

Troch it OSCCAL-register te feroarjen fan SW, sjoch "OSCCAL - Oscillator-kalibraasjeregister" op side 31, is it mooglik om in hegere kalibraasje-krektens te krijen dan troch de fabriekskalibraasje te brûken. De krektens fan dizze kalibraasje wurdt werjûn as Meidogger kalibraasje yn Tabel 21-2 op side 164.

As dizze oscillator wurdt brûkt as de chipklok, sil de Watchdog Oscillator noch wurde brûkt foar de Watchdog Timer en foar de Reset Time-out. Sjoch de paragraaf foar mear ynformaasje oer de foarprogrammeare kalibraasjewearde “Kal- bration Bytes ”op side 150.

De ynterne oscillator kin ek ynsteld wurde om in 6.4 MHz klok te leverjen troch CKSEL-fuses te skriuwen nei "0011", lykas werjûn yn Tabel 6-6 ûnder. Dizze ynstelling wurdt oantsjutten as ATtiny15 Kompatibiliteitsmodus en is bedoeld om in kalibreare klokboarne te leverjen op 6.4 MHz, lykas yn ATtiny15. Yn ATtiny15-kompatibiliteitsmodus brûkt de PLL de ynterne oscillator dy't rint op 6.4 MHz om in 25.6 MHz perifeare kloksignaal te generearjen foar Timer / Teller1 (sjoch “8-bit Timer / Counter1 yn ATtiny15 Mode ”op side 95). Tink derom dat yn dizze modus fan wurking it 6.4 MHz kloksinjaal altyd wurdt dield troch fjouwer, en biedt in 1.6 MHz systeemklok.

Tabel 6-6. Ynterne Kalibrearre RC Oscillator Operating Modes

CKSEL[3:0] Nominale Frekwinsje
0010(1) 8.0 MHz
0011(2) 6.4 MHz

It apparaat wurdt ferstjoerd mei dizze opsje selekteare.

Dizze ynstelling sil ATtiny15 Kompatibilitaasjemodus selektearje, wêrby't systeemklok wurdt dield troch fjouwer, wat resulteart yn in 1.6 MHz klokfrekwinsje.

As de kalibreare ynterne oscillator fan 8 MHz is selekteare as klokboarne, wurde de opstarttiden bepaald troch de SUT Fuses lykas werjûn yn Tabel 6-7 ûnder.

Tabel 6-7. Start-up Times foar ynterne Kalibrearre RC Oscillator Clock

SUT[1:0] Starttiid fanút Power-down Oanfoljende fertraging fan reset (VCC = 5.0V) Oanrikkemandearre gebrûk
00 6 kkk 14CK(1) BOD ynskeakele
01 6 kkk 14CK + 4 ms Fluch opkommende krêft
10(2) 6 kkk 14CK + 64 ms Stadich opkommende macht
11 Reservearre

1. As de RSTDISBL-fuse is programmearre, sil dizze opstarttiid wurde ferhege nei 14CK + 4 ms om te soargjen dat de programmearmodus kin wurde ynfierd.
2. It apparaat wurdt ferstjoerd mei dizze opsje selekteare.

Yn ATtiny15 Kompatibiliteitsmodus wurde opsteltiden bepaald troch SUT-fuses lykas werjûn yn Tabel 6-8 ûnder.

Tabel 6-8. Opstarttiden foar ynterne kalibreare RC-oscillatorklok (yn ATtiny15-modus)

SUT[1:0] Starttiid fanút Power-down Oanfoljende fertraging fan reset (VCC = 5.0V) Oanrikkemandearre gebrûk
00 6 kkk 14CK + 64 ms
01 6 kkk 14CK + 64 ms
10 6 kkk 14CK + 4 ms
11 1 kkk 14CK(1)

Opmerking: As de RSTDISBL-fuse programmearre is, sil dizze opstarttiid ferhege wurde nei 14CK + 4 ms om te garandearjen dat de programmearringmodus ynfierd wurde kin.

Gearfetsjend is mear ynformaasje oer ATtiny15-kompatibiliteitsmodus te finen yn seksjes "Poarte B (PB5: PB0)" oan side 2"Ynterne PLL yn ATtiny15-kompatibiliteitsmodus" op side 24"8-bit Timer / Counter1 yn ATtiny15 Mode" oan side 95"Beheiningen fan debugWIRE" op side 140"Kalibraasjebytes" op side 150 en yn tabel "Klok Prescaler Selektearje ”op side 33.

Ynterne 128 kHz oscillator

De ynterne oscillator fan 128 kHz is in oscillator mei leech krêft dy't in klok fan 128 kHz leveret. De frekwinsje is nominaal by 3V en 25 °C. Dizze klok kin selektearre wurde as de systeemklok troch de CKSEL Fuses te programmearjen op "0100".

As dizze klokboarne wurdt selekteare, wurde opstarttiiden bepaald troch de SUT-fuses lykas werjûn yn Tabel 6-9.

Tabel 6-9. Opstarttiden foar de 128 kHz ynterne oscillator

SUT[1:0] Starttiid fanút Power-down Oanfoljende fertraging fan weromsette Oanrikkemandearre gebrûk
00 6 kkk 14CK(1) BOD ynskeakele
01 6 kkk 14CK + 4 ms Fluch opkommende krêft
10 6 kkk 14CK + 64 ms Stadich opkommende macht
11 Reservearre

Opmerking: As de RSTDISBL-fuse programmearre is, sil dizze opstarttiid ferhege wurde nei 14CK + 4 ms om te garandearjen dat de programmearringmodus ynfierd wurde kin.

Lytse frekwinsje kristaloscillator

Om in 32.768 kHz horloazjekristal te brûken as klokboarne foar it apparaat, moat de Krystoscillator mei lege frekwinsje wurde selekteare troch CKSEL-fusjes yn te stellen op '0110'. It kristal moat wurde ferbûn lykas werjûn yn figuer 6-5, Foar in finen geskikte laadkapasitânsje foar in 32.768 kHz krysal, kinne jo kontakt opnimme mei de datasheet fan de fabrikant.

As dizze oscillator wurdt selekteare, wurde opstarttiiden bepaald troch de SUT-fuses lykas werjûn yn Tabel 6-10.

Tabel 6-10. Start-up Times foar de Low Frequency Crystal Oscillator Clock Selection

SUT[1:0] Starttiid fanút Power Down Oanfoljende fertraging fan reset (VCC = 5.0V) Oanrikkemandearre gebrûk
00 1K (1024) CK(1) 4 ms Fluch opkommende krêft as BOD ynskeakele
01 1K (1024) CK(1) 64 ms Stadich opkommende macht
10 32K (32768) CK 64 ms Stabile frekwinsje by opstarten
11 Reservearre

Opmerking: Dizze opsjes moatte allinich brûkt wurde as frekwinsjestabiliteit by it opstarten net wichtich is.

De Crystal-oscillator mei lege frekwinsje biedt in ynterne laakkapasitânsje, sjoch Tabel 6-11 by elke TOSC-pin.

Tabel 6-11. Kapasiteit fan Low-Frequency Crystal Oscillator

Apparaat 32 kHz Osc. Type Dop (Xtal1 / Tosc1) Dop (Xtal2 / Tosc2)
ATtiny25 / 45/85 Systeem Osc. 16 pf 6 pf

Kristaloscillator / keramyske resonator

XTAL1 en XTAL2 binne respektivelik ynput en útfier fan in omkearde amplifier dy't kin wurde konfigureare foar gebrûk as in On-chip Oscillator, lykas werjûn yn figuer 6-5, Of in kwartskristal as in keramyske resonator kin brûkt wurde.

C1 en C2 moatte altyd gelyk wêze foar sawol kristallen as resonators. De optimale wearde fan 'e capacitors hinget ôf fan it kristal of resonator yn gebrûk, de hoemannichte stray capacitance, en de elektromagnetyske lûd fan 'e omjouwing. Guon earste rjochtlinen foar it kiezen fan kondensatoren foar gebrûk mei kristallen wurde jûn yn Tabel 6-12 ûnder. Foar keramyske resonators moatte de kondensatorwearden wurde jûn troch de fabrikant.

Tabel 6-12. Crystal Oscillator Operating Modes

CKSEL[3:1] Frekwinsje Berik (MHz) Oanrekommandearre berik foar kondensatoren C1 en C2 foar gebrûk mei kristallen (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

Opmerkingen: Dizze opsje moat net brûkt wurde mei kristallen, allinich mei keramyske resonators.

De oscillator kin wurkje yn trije ferskillende modi, elk optimalisearre foar in spesifyk frekwinsjebereik. De bestjoeringsmodus wurdt selekteare troch de fuses CKSEL [3: 1] lykas werjûn yn Tabel 6-12.

De CKSEL0 Fuse tegearre mei de SUT [1: 0] Fuses selektearje de opstarttiden lykas werjûn yn Tabel 6-13.

Tabel 6-13. Start-up Times foar de seleksje fan Crystal Oscillator Clock

CKSEL0 SUT[1:0] Starttiid fanút Power-down Oanfoljende fertraging fan weromsette Oanrikkemandearre gebrûk
0 00 258 kkk(1) 14CK + 4 ms Keramyske resonator, rap opkommende krêft
0 01 258 kkk(1) 14CK + 64 ms Keramyske resonator, stadichoan opkommende krêft
0 10 1K (1024) CK(2) 14CK Keramyske resonator, BOD ynskeakele
0 11 1K (1024) CK(2) 14CK + 4 ms Keramyske resonator, rap opkommende krêft
1 00 1K (1024) CK(2) 14CK + 64 ms Keramyske resonator, stadichoan opkommende krêft
1 01 16K (16384) CK 14CK Crystal Oscillator, BOD ynskeakele
1 10 16K (16384) CK 14CK + 4 ms Crystal Oscillator, rapper opkommende krêft
1 11 16K (16384) CK 14CK + 64 ms Crystal Oscillator, stadichoan opkommende krêft

Notysjes

Dizze opsjes moatte allinich brûkt wurde as se net tichtby de maksimale frekwinsje fan it apparaat wurkje, en allinich as frekwinsjestabiliteit by opstarten net wichtich is foar de applikaasje. Dizze opsjes binne net geskikt foar kristallen.

Dizze opsjes binne bedoeld foar gebrûk mei keramyske resonators en sille soargje foar frekwinsjestabiliteit by opstarten. Se kinne ek brûkt wurde mei kristallen as se net tichtby de maksimale frekwinsje fan it apparaat wurkje, en as frekwinsjestabiliteit by opstarten net wichtich is foar de tapassing.

Standert klok boarne

It apparaat wurdt ferstjoerd mei CKSEL = "0010", SUT = "10", en CKDIV8 programmearre. De standert klokboarne-ynstelling is dêrom de Ynterne RC-oscillator dy't draait op 8 MHz mei langste opstarttiid en in inisjele systeeklok prescaling fan 8, wat resulteart yn 1.0 MHz systeemklok. Dizze standertynstelling soarget derfoar dat alle brûkers har winske klokboarnynstelling kinne meitsje mei in In-System as High-voltage Programmeur.

Systeem Clock Prescaler

De systeemklok ATtiny25 / 45/85 kin dield wurde troch de yn te stellen "CLKPR - Clock Prescale Register" op side 32. Dizze funksje kin brûkt wurde om enerzjyferbrûk te ferminderjen as de eask foar ferwurkingskrêft leech is. Dit kin brûkt wurde mei alle klok boarne opsjes, en it sil beynfloedzje de klok frekwinsje fan de CPU en alle syngroane perifeare apparaten. clkI/O, clkADC, clkCPU en clkFLASH wurde dield troch in faktor lykas werjûn yn Tabel 6-15 op side 33.

Switching Tiid

As jo ​​wikselje tusken ynstellings foar prescaler, soarget de System Clock Prescaler derfoar dat der gjin flaters foarkomme yn it kloksysteem en dat gjin tuskenfrekwinsje heger is dan noch de klokfrekwinsje dy't oerienkomt mei de foarige ynstelling, noch de klokfrekwinsje dy't oerienkomt mei de nije ynstelling.

De rippelteller dy't de prescaler ymplementeart rint op 'e frekwinsje fan' e ûndielde klok, dy't rapper kin wêze dan de klokfrekwinsje fan 'e CPU. Hjirtroch is it net mooglik de steat fan 'e prescaler te bepalen - sels as it lêsber wie, en kin de krekte tiid dy't it nimt om fan de iene klokdieling nei de oare te wikseljen net krekt wurde foarsjoen.

Fanôf it momint dat de CLKPS-wearden wurde skreaun, duorret it tusken T1 + T2 en T1 + 2 * T2 foardat de nije klokfrekwinsje aktyf is. Yn dit ynterval wurde 2 aktive klokrânen produsearre. Hjir is T1 de foarige klokperioade, en T2 is de perioade dy't oerienkomt mei de nije prescaler-ynstelling.

Klokútfierbuffer

It apparaat kin de systeemklok op 'e CLKO-pin útfiere (as net brûkt as XTAL2-pin). Om de útfier mooglik te meitsjen, moat de CKOUT Fuse wurde programmearre. Dizze modus is geskikt as de chipklok wurdt brûkt om oare sirkwy's op it systeem te riden. Tink derom dat de klok net sil wurde útfierd by reset en dat de normale wurking fan 'e I / O-pin wurdt oerskreaun as de lont is programmeare. Ynterne RC oscillator, WDT oscillator, PLL en eksterne klok (CLKI) kinne wurde selekteare as de klok wurdt útfierd op CLKO. Kristaloscillators (XTAL1, XTAL2) kinne net brûkt wurde foar klokútfier op CLKO. As de System Clock Prescaler wurdt brûkt, dan is it de ferdielde systeemklok dy't wurdt útfierd.

Registrearje beskriuwing

OSCCAL - Oscillator kalibraasje register

Bit 7 6 5 4 3 2 1 0
0x31 CAL7 CAL6 CAL5 CAL4 CAL3 CAL2 CAL1 CAL0 OSCCAL
Lês / Skriuw R/W R/W R/W R/W R/W R/W R/W R/W

Bits 7: 0 - CAL [7: 0]: Oscillatorkalibraasjewearde

It oscillatorkalibraasjeregister wurdt brûkt om de kalibreare ynterne RC oscillator te trimmen om prosesfarianten fan 'e oscillatorfrekwinsje te ferwiderjen. In foarprogrammeare kalibraasjewearde wurdt automatysk skreaun nei dit register by chipreset, wêrtroch de Fabriek kalibreare frekwinsje is lykas oantsjutte yn Tabel 21-2 op side 164, De tapassingsoftware kin dit register skriuwe om de oscillatorfrekwinsje te feroarjen. De oscillator kin wurde kalibreare nei frekwinsjes lykas oantsjutte yn Tabel 21-2 op side 164, Kalibraasje bûten dat berik is net garandearre.

Tink derom dat dizze oscillator wurdt brûkt om EEPROM- en Flash-tagongsrjochten te skriuwen, en dizze skriuwtiden wurde dêrtroch beynfloede. As de EEPROM as Flash binne skreaun, kalibearje net nei mear dan 8.8 MHz. Oars kin it EEPROM- as Flash-skriuwen mislearje.

It CAL7-bit bepaalt it wurkbereik foar de oscillator. It ynstellen fan dit bit op 0 jout it leechste frekwinsjebereik, it ynstellen fan dit bit op 1 jout it heechste frekwinsjebereik. De twa frekwinsjeregels binne oerlaapjend, mei oare wurden, in ynstelling fan OSCCAL = 0x7F jout in hegere frekwinsje dan OSCCAL = 0x80.

De CAL [6: 0] bits wurde brûkt om de frekwinsje ôf te stimmen binnen it selekteare berik. In ynstelling fan 0x00 jout de leechste frekwinsje yn dat berik, en in ynstelling fan 0x7F jout de heechste frekwinsje yn it berik.

Om stabile wurking fan 'e MCU te garandearjen, moat de kalibraasjewearde yn lyts feroare wurde. In fariaasje yn frekwinsje fan mear as 2% fan de iene syklus nei de oare kin liede ta unfoarspelber gedrach. Feroaringen yn OSCCAL moatte net mear wêze dan 0x20 foar elke kalibraasje. It is ferplichte om te soargjen dat de MCU yn Reset wurdt hâlden by sokke feroarings yn 'e klokfrekwinsje

Tabel 6-14. Ynterne RC Oscillator Frequency Range

OSCCAL Wearde Typyske leechste frekwinsje mei respekt foar nominale frekwinsje Typyske Heechste Frekwinsje mei respekt foar nominale frekwinsje
0x00 50% 100%
0x3f 75% 150%
0x7f 100% 200%

CLKPR - Prescale-register foar klok

Bit 7 6 5 4 3 2 1 0
0x26 CLKPCE CLKPS3 CLKPS2 CLKPS1 CLKPS0 CLKPR
Lês / Skriuw R/W R R R R/W R/W R/W R/W

Begjinwearde 0 0 0 0 Sjoch Bitbeskriuwing

Bit 7 - CLKPCE: Clock Prescaler Change ynskeakelje

It CLKPCE-bit moat nei logika ien wurde skreaun om feroaring fan de CLKPS-bits yn te skeakeljen. It CLKPCE-bit wurdt allinich bywurke as de oare bits yn CLKPR tagelyk op nul wurde skreaun. CLKPCE wurdt wiske troch hardware fjouwer syklussen neidat it is skreaun of as de CLKPS bits wurde skreaun. It opnij skriuwen fan it CLKPCE-bit binnen dizze time-outperioade ferlinget de time-outperioade noch, en wisket it CLKPCE-bit net.

Bits 6: 4 - Res: Reserveare bits

Dizze bits binne reserveare bits yn 'e ATtiny25 / 45/85 en sille altyd as nul lêze.

Bits 3: 0 - CLKPS [3: 0]: Clock Prescaler Selektearje bits 3 - 0

Dizze bits definiearje de ferdielingsfaktor tusken de selekteare klokboarne en de ynterne systeemklok. Dizze bits kinne runtime wurde skreaun om de klokfrekwinsje te fariearjen oan 'e easken fan tapassing. As de skieding de yngong fan 'e haadklok dielt nei de MCU, wurdt de snelheid fan alle syngroane peripheren redukt as in divisjefaktor wurdt brûkt. De ferdielingsfaktoaren wurde jûn yn Tabel 6-15.

Om unbedoelde feroaringen fan klokfrekwinsje te foarkommen, moat in spesjale skriuwproseduere wurde folge om de CLKPS-bits te feroarjen:

Skriuw de Clock Prescaler Change Enable (CLKPCE) bit nei ien en alle oare bits yn CLKPR op nul.

Skriuw binnen de fjouwer cycles de winske wearde nei CLKPS by it skriuwen fan in nul nei CLKPCE.

Interrupts moatte wurde útskeakele by feroaring fan prescaler-ynstelling om te soargjen dat de skriuwproseduere net wurdt ûnderbrutsen.

De CKDIV8 Fuse bepaalt de begjinwearde fan 'e CLKPS-bits. As CKDIV8 net programmearre is, wurde de CLKPS-bits weromset nei "0000". As CKDIV8 is programmearre, wurde CLKPS bits weromsette nei "0011", it jaan fan in divyzje faktor fan acht by it opstarten. Dizze funksje moat brûkt wurde as de selekteare klokboarne in hegere frekwinsje hat dan de maksimale frekwinsje fan it apparaat by de hjoeddeiske bedriuwsbetingsten. Tink derom dat elke wearde kin wurde skreaun nei de CLKPS-bits nettsjinsteande de CKDIV8 Fuse-ynstelling. De applikaasje software moat soargje dat in foldwaande divyzje faktor is

keazen as de selekteare klokboarne in hegere frekwinsje hat dan de maksimale frekwinsje fan it apparaat by de hjoeddeistige bedriuwsbetingsten. It apparaat wurdt ferstjoerd mei de CKDIV8 Fuse programmeare.

Tabel 6-15. Klok Prescaler Selektearje

CLKPS3 CLKPS2 CLKPS1 CLKPS0 Klok Division Faktor
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 Reservearre
1 0 1 0 Reservearre
1 0 1 1 Reservearre
1 1 0 0 Reservearre
1 1 0 1 Reservearre
1 1 1 0 Reservearre
1 1 1 1 Reservearre

Opmerking: De foarskaler is útskeakele yn ATtiny15-kompatibiliteitsmodus en noch skriuwen nei CLKPR, noch programmearjen fan de CKDIV8-fuse hat gjin effekt op 'e systeemklok (dy't altyd 1.6 MHz sil wêze).

Power Management en Sleep Modes

De hege prestaasjes en de liedende koade-effisjinsje makket de AVR-mikrokontrollers in ideale kar foar applikaasjes mei lege macht. Derneist kinne sliepmodi de applikaasje ynskeakelje om net brûkte modules yn 'e MCU ôf te sluten, en dêrtroch enerzjy te besparjen. De AVR biedt ferskate sliepmodi wêrtroch de brûker it enerzjyferbrûk kin oanpasse oan 'e easken fan' e applikaasje.

Sliepmodi

Ofbylding 6-1 op side 23 presinteart de ferskillende kloksystemen en har ferdieling yn ATtiny25 / 45/85. De figuer is nuttich by it selektearjen fan in passende sliepmodus. Tabel 7-1 toant de ferskillende sliepmodi en har wekkerboarnen.

Tabel 7-1. Aktive klokdomeinen en wekkerboarnen yn 'e ferskate sliepmodi

Aktive klokdomeinen Ossillators Wake-up Boarnen
Sliepmodus clkCPU clkFLASH clkIO clkADC clkPCK Haadklokboarne ynskeakele INT0 en Pin Change SPM / EEPROM

Klear

 

USI Start Betingst

ADC Oare I/O Wachthûn Ûnderbrekke
Idle X X X X X X X X X X
ADC-lûdsreduksje X X X(1) X X X X
Stroomsteuring X(1) X X

Opmerking: Foar INT0, allinich nivo-ûnderbrekking.

Om ien fan 'e trije sliepmodi yn te gean, moat it SE-bit yn MCUCR wurde skreaun nei logika ien en moat in SLEEP-ynstruksje wurde útfierd. De SM [1: 0] bits yn it MCUCR Register selektearje hokker sliepmodus (Idle, ADC Noise Reduction of Power-down) wurdt aktivearre troch de SLEEP-ynstruksje. Sjen Tabel 7-2 foar in gearfetting.

As in ynskeakele ûnderbrekking optreedt wylst de MCU yn in sliepmodus is, wurdt de MCU wekker. De MCU wurdt dan stoppe foar fjouwer syklusen neist de opstarttiid, fiert de ûnderbrekkingsroutine út en hervat de útfiering fan 'e ynstruksje nei SLEEP. De ynhâld fan it register File en SRAM binne net feroare as it apparaat wekker wurdt fan sliep. As in reset foarkomt yn 'e sliepmodus, wurdt de MCU wekker en wurdt útfierd út' e Reset Vector.

Tink derom: dat as in nivo-triggered ûnderbrekking wurdt brûkt foar wekker, it feroare nivo moat in skoft holden wurde om de MCU wekker te meitsjen (en foar de MCU om de ûnderbrekkingstsjinstroutine yn te gean). Sjen "Eksterne ûnderbrekt" op side 49 foar details.

Ynaktive modus

As de SM[1:0] bits wurde skreaun nei 00, makket de SLEEP-ynstruksje de MCU yn 'e Idle-modus, stopet de CPU, mar lit Analog Comparator, ADC, USI, Timer / Counter, Watchdog, en it interruptsysteem trochgean mei operearje- ite. Dizze sliepmodus stopet yn prinsipe clkCPU en clkFLASH, wylst de oare klokken rinne kinne.

Idle-modus stelt de MCU yn steat om wekker te wurden fan ynterne aktivearren lykas ek ynterne lykas de Timer Overflow. As wake-up fan 'e Analog Comparator interrupt net nedich is, kin de Analog Comparator útskeakele wurde troch it ACD-bit yn te setten "ACSR - Analog fergelikingskontrôle en statusregister" op side 120, Dit sil it enerzjyferbrûk yn 'e Idle-modus ferminderje. As de ADC is ynskeakele, begjint in konverzje automatysk as dizze modus wurdt ynfierd.

ADC-lûdsreduksjemodus

As de SM[1:0] bits wurde skreaun nei 01, makket de SLEEP-ynstruksje de MCU yn 'e ADC Noise Reduction-modus, stopet de CPU, mar lit de ADC, de eksterne interrupts, en de Watchdog trochgean mei operearjen (as ynskeakele). Dizze sliepmodus stopet clkI/O, clkCPU en clkFLASH, wylst de oare klokken rinne kinne.

Dit ferbetteret de lûdsomjouwing foar de ADC, wêrtroch hegere resolúsje-mjittingen mooglik binne. As de ADC is ynskeakele, begjint in konverzje automatysk as dizze modus wurdt ynfierd. Los fan 'e ADC Conversion Complete interrupt, allinich in eksterne reset, in Watchdog Reset, in Brown-out Reset, in SPM / EEPROM ready interrupt, in eksterne nivo-interrupt op INT0 of in pin-feroaring interrupt kinne de MCU wekker meitsje fan ADC Noise Reduction wize.

Power-down modus

As de SM [1: 0] bits wurde skreaun nei 10, makket de SLEEP-ynstruksje de MCU yn 'e Power-down mode. Yn dizze modus wurdt de oscillator stoppe, wylst de eksterne ûnderbrekt, de opsporing fan tastân fan 'e USI-start en de Watchdog funksjonearje trochgean (as ynskeakele). Allinich in eksterne reset, in Reset fan 'e Watchdog, in Brown-out Reset, ûnderbrekking fan' e USI-starttoestân, in eksterne ûnderbrekking fan it nivo op INT0 of in pin-feroaringsûnderbrekking kin de MCU wekker meitsje. Dizze sliepmodus stopt alle generearre klokken, wêrtroch allinich operaasje fan asynchrone modules mooglik is.

Software BOD Utskeakelje

As de Brown-out Detector (BOD) is ynskeakele troch BODLEVEL fuses (sjoch Tabel 20-4 op side 148), kontrolearret de BOD aktyf it oanbod voltage tidens in sliepperioade. Op guon apparaten is it mooglik enerzjy te besparjen troch de BOD út te skeakeljen troch software yn 'e sliepmodus Power-Down. It enerzjyferbrûk yn 'e sliepmodus sil dan op itselde nivo wêze as wannear BOD wrâldwiid útskeakele is troch lontsjes.

As BOD is útskeakele troch software, wurdt de BOD-funksje fuortdaliks útskeakele nei it ynfieren fan 'e sliepmodus. By wekker út sliep wurdt BOD automatysk wer ynskeakele. Dit soarget foar feilige operaasje yn it gefal dat it VCC-nivo sakke is yn 'e sliepperioade.

As de BOD is útskeakele, sil de opwekkingstiid fan 'e sliepmodus itselde wêze as dy foar wekker wurden fan RESET. De brûker moat de wekketiden mei de hân ynstelle, sadat de referinsje fan 'e bandgap tiid hat om te begjinnen en de BOD goed wurket foardat de MCU koade trochgiet mei útfieren. Sjoch SUT [1: 0] en CKSEL [3: 0] fuse bits yn tabel "Fuse lege byte" op side 149

BOD útskeakelje wurdt kontroleare troch it BODS (BOD Sleep) bit fan MCU Control Register, sjoch “MCUCR - MCU-kontrôle Registrearje ”op side 37, As jo ​​dit bit nei ien skriuwe, draait BOD út yn Power-Down, wylst it skriuwen fan nul de BOD aktyf hâldt. De standertynstelling is nul, dus BOD aktyf.

Skriuwen nei de BODS-bit wurdt kontroleare troch in tiidreeks en in ynskakele bit, sjoch “MCUCR - MCU Control Regis- ter ”op side 37.

Beheinings

BOD útskeakelje funksjonaliteit is allinich yn 'e folgjende apparaten ymplementeare:

ATtiny25, revyzje E, en nijer

ATtiny45, revyzje D, en nijer

ATtiny85, revyzje C, en nijer

Ferzjes binne markearre op it apparaatpakket en kinne as folgjend wurde fûn:

Underkant fan pakketten 8P3 en 8S2

Boppekant fan pakket 20M1

Krêftreduksjeregister

It Power Reduction Register (PRR), sjoch "PRR - Register foar enerzjyreduksje" op side 38, biedt in metoade om it enerzjyferbrûk te ferminderjen troch de klok te stopjen nei yndividuele peripheren. De hjoeddeistige steat fan it perifeare is beferzen en de I / O-registers kinne net lêzen of skreaun wurde. Boarnen brûkt troch it perifeare by it stopjen fan 'e klok sille beset bliuwe, dêrom moat it perifeare yn' e measte gefallen útskeakele wurde foardat de klok stopt. In module wekker meitsje, dat wurdt dien troch it bit yn PRR te wiskjen, set de module yn deselde steat as foarôfsluten.

Moduleafsluting kin brûkt wurde yn 'e stilstânmodus en aktive modus om it totale enerzjyferbrûk signifikant te ferminderjen. Yn alle oare sliepmodi is de klok al stoppe. Sjen "Oanfierstream fan I / O-modules" op side 177 foar bvamples.

Minimalisearje enerzjyferbrûk

D'r binne ferskate problemen te besjen as jo besykje it enerzjyferbrûk yn in AVR-kontroleare systeem te minimalisearjen. Yn 't algemien moatte sliepmodi safolle mooglik wurde brûkt, en de sliepmodus moat wurde selekteare sadat sa min mooglik funksjes fan' e apparaten wurkje. Alle funksjes dy't net nedich binne moatte útskeakele wurde. Benammen de folgjende modules kinne spesjaal omtinken nedich wêze as jo besykje it leechst mooglike enerzjyferbrûk te berikken.

Analog nei digitaal omrekkener

As aktivearre, sil de ADC ynskeakele wurde yn alle sliepmodi. Om macht te besparjen, moat de ADC útskeakele wurde foardat jo in sliepmodus ynfiere. As de ADC is útskeakele en opnij oan, sil de folgjende konverzje in útwreide konverzje wêze. Ferwize nei "Analooch nei digitale omrekkener" op side 122 foar details oer ADC-operaasje.

Analoge fergeliking

By it ynfieren fan de ynaktive modus moat de Analog Comparator útskeakele wêze as net brûkt. As jo ​​de modus ADC Noise Reduction yngeane, soe de Analog Comparator moatte wurde útskeakele. Yn 'e oare sliepmodi is de Analog Comparator automatysk útskeakele. As de Analog Comparator lykwols is ynsteld om it Internal Voltage Referinsje as ynfier, de Analog Comparator soe moatte wurde útskeakele yn alle sliepmodi. Oars, it Internal Voltage Referinsje sil ynskeakele wêze, ûnôfhinklik fan sliepmodus. Ferwize nei "Analoge komparator" op side 119 foar details oer hoe't jo de Analoge Comparator ynstelle kinne.

Brown-out detektor

As de Brown-out Detector net nedich is yn 'e applikaasje, dan moat dizze module útskeakele wurde. As de Brown-out Detector is ynskeakele troch de BODLEVEL Fuses, dan sil dizze ynskeakele wurde yn alle sliepmodi, en konsumearje dus altyd stroom. Yn 'e djippere sliepmodi sil dit signifikant bydrage oan it totale hjoeddeistige konsumpsje. Sjen "Brown-out Detec- tion ”op side 41 en "Software BOD útskeakelje" op side 35 foar details oer hoe't jo de Brown-out Detector ynstelle kinne.

Ynterne Voltage Referinsje

Ynterne Voltage Referinsje sil wurde ynskeakele as nedich troch de Brown-out Detection, de Analog Comparator of de ADC. As dizze modules útskeakele binne lykas beskreaun yn 'e seksjes hjirboppe, sil it ynterne voltage referinsje sil útskeakele wêze en it sil gjin macht ferbrûke. As it opnij is ynskeakele, moat de brûker de referinsje tastean te begjinnen foardat de útfier wurdt brûkt. As de referinsje yn sliepmodus wurdt hâlden, kin de útfier direkt wurde brûkt. Ferwize nei "Ynterne Voltage Referinsje ”op side 42 foar details oer de opstarttiid.

Watchdog Timer

As de Watchdog Timer net nedich is yn 'e applikaasje, dan moat dizze module útskeakele wurde. As de Watchdog Timer is ynskeakele, sil dizze ynskeakele wurde yn alle sliepmodi, en konsumearje dêrom altyd stroom. Yn 'e djippere sliepmodi sil dit signifikant bydrage oan it totale hjoeddeistige konsumpsje. Ferwize nei "Wachthûntimer" op side 42 foar details oer hoe't jo de Watchdog Timer ynstelle kinne.

Port Pins

By it ynfieren fan in sliepmodus moatte alle havenpinnen konfigureare wurde om minimale macht te brûken. It wichtichste is dan om te soargjen dat gjin pins resistive loads ride. Yn sliepmodi wêr't sawol de I/O-klok (clkI/O) as de ADC-klok (clkADC) wurde stoppe, wurde de ynfierbuffers fan it apparaat útskeakele. Dit soarget derfoar dat gjin macht wurdt konsumearre

troch de ynfierlogika as net nedich. Yn guon gefallen is de ynfierlogika nedich foar it opspoaren fan wekker-omstannichheden, en

it sil dan wurde ynskeakele. Ferwize nei de seksje "Digitale ynfier ynskeakelje en sliepmodi" op side 57 foar details oer hokker pins binne ynskeakele. As de ynfierbuffer is ynskeakele en it ynfiersinjaal bliuwt driuwend of hat in analooch sinjaalnivo tichtby VCC / 2, sil de ynfierbuffer oermjittige macht brûke.

Foar analoge ynfierpinnen moat de digitale ynfierbuffer altyd útskeakele wurde. In analoog sinjaal nivo tichtby VCC / 2 op in ynfier pin kin feroarsaakje wichtige stroom sels yn aktive modus. Digitale ynfierbuffers kinne wurde útskeakele troch te skriuwen nei it Digital Input Disable Register (DIDR0). Ferwize nei "DIDR0 - Registrearje 0 foar digitale ynput útskeakelje" op side 121 foar details.

Registrearje beskriuwing

MCUCR - MCU-kontrôleregister

It MCU-kontrôleregister befettet kontrolbits foar enerzjybehear.

Bit 7 6 5 4 3 2 1 0
0x35 BODS PUD SE SM1 SM0 BODSE ISC01 ISC00 MCUCR
Lês / Skriuw R R/W R/W R/W R/W R R/W R/W
Inisjele wearde 0 0 0 0 0 0 0 0

Bit 7 - BODS: BOD Sleep

BOD útskeakelje funksjonaliteit is allinich yn guon apparaten te krijen. Sjen "Beheiningen" op side 36.

Om BOD yn 'e sliep út te skeakeljen (sjoch Tabel 7-1 op side 34) it BODS-bit moat wurde skreaun nei logyske. Dit wurdt regele troch in tiidreeks en it ynskeakelje bit, BODSE yn MCUCR. Earst moatte sawol BODS as BODSE op ien wurde ynsteld. Twad, binnen fjouwer kloksyklusen moatte BODS op ien wurde ynsteld en BODSE op nul. It BODS-bit is trije klokcycli aktyf neidat it is ynsteld. In sliepeynstruksje moat wurde útfierd wylst BODS aktyf is om de BOD foar de werklike sliepmodus út te setten. It BODS-bit wurdt automatysk wiske nei trije kloksyklusen.

Yn apparaten wêr't Sleeping BOD net is ymplementeare is dit bit net brûkt en sil it altyd nul lêze.

Bit 5 - SE: Sliepe ynskeakelje

It SE-bit moat skreaun wurde nei logyske ien om de MCU yn 'e sliepmodus te meitsjen as de SLEEP-ynstruksje wurdt útfierd. Om foar te kommen dat de MCU yn 'e sliepmodus komt, útsein as it it doel fan 'e programmeur is, wurdt it oanrikkemandearre om de Sleep Enable (SE) bit nei ien te skriuwen krekt foar de útfiering fan 'e SLEEP-ynstruksje en it fuortdaliks nei it wekkerjen wiskje.

Bits 4: 3 - SM [1: 0]: Sliepmodus Selektearje bits 1 en 0

Dizze bits selektearje tusken de trije beskikbere sliepmodi lykas werjûn yn Tabel 7-2.

Tabel 7-2. Sleep Mode Selektearje

SM1 SM0 Sliepmodus
0 0 Idle
0 1 ADC-lûdsreduksje
1 0 Stroomsteuring
1 1 Reservearre

Bit 2 - BODSE: BOD Sliepe ynskeakelje

BOD útskeakelje funksjonaliteit is allinich yn guon apparaten te krijen. Sjen "Beheiningen" op side 36.

De BODSE-bit makket it ynstellen fan BODS-kontrôlebit mooglik, lykas útlein yn BODS-beskriuwing. BOD útskeakelje wurdt regele troch in opmurken folchoarder.

Dit bit is net brûkt yn apparaten wêr't software BOD útskeakelje is net ymplementearre en sil yn dizze apparaten as nul lêzen wurde.

PRR - Register foar machtreduksje

It Power Reduction Register biedt in metoade om it enerzjyferbrûk te ferminderjen troch perifeare kloksignalen útskeakelje te litten.

Bit 7 6 5 4 3 2 1 0
0x20 PRIM1 PRIM0 PRUSI PRADC PRR
Lês / Skriuw R R R R R/W R/W R/W R/W
Inisjele wearde 0 0 0 0 0 0 0 0

Bits 7: 4 - Res: Reserveare bits

Dizze bits binne reserveare bits yn 'e ATtiny25 / 45/85 en sille altyd as nul lêze.

Bit 3 - PRTIM1: Power Reduction Timer / Counter1

It skriuwen fan in logyske ien foar dit bit slút de module Timer / Counter1 út. As de Timer / Teller1 is ynskeakele, sil de operaasje trochgean lykas foar de ôfsluting.

Bit 2 - PRTIM0: Power Reduction Timer / Counter0

It skriuwen fan in logyske ien foar dit bit slút de module Timer / Counter0 út. As de Timer / Teller0 is ynskeakele, sil de operaasje trochgean lykas foar de ôfsluting.

Bit 1 - PRUSI: Power Reduction USI

It skriuwen fan in logyske ien foar dit bit slút de USI troch de klok nei de module te stopjen. As de USI opnij wekker wurdt, moat de USI opnij initialisearre wurde om in goede wurking te garandearjen.

Bit 0 - PRADC: Power Reduction ADC

In logyske skriuwe foar dit bit slút de ADC ôf. De ADC moat útskeakele wurde foardat it stillein wurdt. Tink derom dat de ADC-klok ek wurdt brûkt troch guon dielen fan 'e analoge komparator, wat betsjut dat de analoge komparator net kin wurde brûkt as dit bit heech is.

Systeembehear en weromsette

Reset de AVR

Under reset wurde alle I / O-registers ynsteld op har begjinwearden, en it programma begjint mei útfieren fan 'e Reset Vector. De ynstruksje pleatst by de Reset Vector moat in RJMP - Relative Jump - ynstruksje wêze foar de reset-ôfhanneling. As it programma noait in ynterruptboarne ynskeakelt, wurde de Interrupt Vectors net brûkt, en kin reguliere programmakoade op dizze lokaasjes wurde pleatst. It sirkwy diagram yn figuer 8-1 lit de reset logika sjen. Elektryske parameters fan 'e reset-skeakelingen wurde ynjûn "Systeem- en weromsette-skaaimerken" op side 165.

figuer 8-1 Reset Logic Reset-logika

De I / O-poarten fan 'e AVR wurde fuortendaliks weromset nei har earste steat as in reset-boarne aktyf wurdt. Dit freget gjin klokboarne om te draaien.

Neidat alle reset-boarnen ynaktyf binne gien, wurdt in fertragingsteller oproppen, dy't de ynterne reset strekt. Hjirmei kin de krêft in stabyl nivo berikke foardat normale operaasje begjint. De tiid-outperioade fan 'e fertragingsteller wurdt definieare troch de brûker fia de SUT- en CKSEL-fuses. De ferskillende seleksjes foar de fertragingsperioade wurde presintearre yn "Klok Boarnen ”op side 25.

Boarnen opnij ynstelle

De ATtiny25 / 45/85 hat fjouwer boarnen fan reset:

Power-on Reset. De MCU wurdt reset as de oanbod voltage is ûnder de Power-on Reset-drompel (VPOT).

Eksterne weromsette. De MCU wurdt reset as in leech nivo op 'e RESET-pin langer is dan de minimale polslange.

Resolúsje fan watchdog. De MCU wurdt reset as de perioade fan 'e Watchdog Timer ôfrint en de Watchdog is ynskeakele.

Brown-out Reset. De MCU wurdt reset as de oanbod voltage VCC is ûnder de Brown-out Reset-drompel (VBOT) en de Brown-out-detektor is ynskeakele.

Power-on Reset

In Power-on Reset (POR) puls wurdt generearre troch in On-chip detectie-circuit. It opspoaringsnivo is definieare yn “Syts- tem en Resette skaaimerken ”op side 165. De POR wurdt aktivearre as VCC ûnder it deteksjenivo is. It POR-sirkwy kin brûkt wurde om de Start-up Reset te triggerjen, en ek om in mislearring yn leveringsvolum te detektearjentage.

In Power-on Reset (POR) circuit soarget derfoar dat it apparaat wurdt reset fan Power-on. De drompel foar opstarten berikke berikke voltage ropt de fertraging teller, dy't bepaalt hoe lang it apparaat wurdt hâlden yn RESET nei VCC opkomst. It RESET-sinjaal wurdt wer aktivearre, sûnder fertraging, as VCC ôfnimt ûnder it deteksjenivo.

figuer 8-2. MCU Start-up, RESET Tied to VCC

INTERNE RESET

figuer 8-3. MCU Start-up, RESET Extended External

Eksterne weromsette

In eksterne reset wurdt generearre troch in leech nivo op 'e RESET-pin as ynskeakele. Weromsette pulses langer dan de minimale pulsbreedte (sjoch "Systeem- en weromsette-skaaimerken" op side 165) sil in reset generearje, sels as de klok net rint. Koartere pulsen wurde net garandearre om in reset te generearjen. As it tapaste sinjaal de Reset Threshold Voltage - VRST - op syn positive râne, de fertraging teller begjint de MCU neidat de Time-out perioade is ferrûn.

figuer 8-4. Eksterne reset tidens operaasje Fig 8.4

Brown-out Detection

ATtiny25/45/85 hat in On-chip Brown-out Detection (BOD) circuit foar it kontrolearjen fan it VCC-nivo tidens operaasje troch it te fergelykjen mei in fêst triggernivo. It triggernivo foar de BOD kin wurde selektearre troch de BODLEVEL Fuses. It triggernivo hat in hysteresis om spikefrije Brown-out Detection te garandearjen. De hysteresis op it deteksjenivo moat ynterpretearre wurde as VBOT + = VBOT + VHYST / 2 en VBOT- = VBOT - VHYST / 2.

As de BOD ynskeakele is, en VCC nimt ôf nei in wearde ûnder it triggernivo (VBOT- in figuer 8-5), de Brown-out Reset wurdt fuortendaliks aktivearre. As VCC ferheget boppe it triggernivo (VBOT + yn figuer 8-5), begjint de fertragingsteller de MCU nei't de Time-outperioade tTOUT ferrûn is.

It BOD-sirkwy sil allinich in drip yn VCC detektearje as de voltage bliuwt ûnder it triggernivo langer dan tBOD opjûn "Systeem- en weromsette-skaaimerken" op side 165. Fig 8.5

Resolúsje fan watchdog

As de Watchdog time-out, sil it in koarte resetpuls generearje fan ien CK-syklusdoer. Op 'e fallende râne fan dizze puls begjint de fertragingstimer de Time-outperioade tTOUT te tellen. Ferwize nei "Wachthûntimer" op side 42 foar details oer wurking fan 'e Watchdog Timer.

Voltage Referinsje Signalen en opstarttiid ynskeakelje

De voltagDe referinsje hat in opstarttiid dy't ynfloed kin hawwe op 'e manier wêrop it moat wurde brûkt. De opstarttiid wurdt ynjûn "Systeem- en weromsette-skaaimerken" op side 165, Om macht te besparjen is de referinsje net altyd ynskeakele. De referinsje is oan yn 'e folgjende situaasjes:

As de BOD is ynskeakele (troch programmearjen fan de BODLEVEL [2: 0] Fuse Bits).

As de bandgapreferinsje is ferbûn mei de Analog Comparator (troch it ACBG-bit yn ACSR yn te stellen).

As de ADC is ynskeakele.

Sadwaande, as de BOD net is ynskeakele, moat de brûker, nei it ynstellen fan it ACBG-bit of it ynskeakeljen fan de ADC, altyd de referinsje starte moatte foardat de útfier fan 'e Analoge Comparator of ADC wurdt brûkt. Om it stroomferbrûk yn 'e Power-down-modus te ferminderjen, kin de brûker de trije boppesteande betingsten foarkomme om te soargjen dat de referinsje is útskeakele foardat hy yn' e Power-down-modus giet.

Watchdog Timer

De Watchdog Timer is klok fan in On-chip Oscillator dy't draait op 128 kHz. Troch de Watchdog Timer prescaler te kontrolearjen, kin it ynterval fan Watchdog Reset oanpast wurde lykas werjûn yn Tabel 8-3 op side 46, De WDR - Reset watchdog - ynstruksje set de Watchdog-timer werom. De Watchdog Timer wurdt ek opnij ynsteld as it is útskeakele en as in chipreset foarkomt. Tsien ferskillende kloksyklusperioaden kinne wurde selekteare om de resetperioade te bepalen. As de resetperioade ôfrint sûnder in oare Watchdog Reset, wurdt de ATtiny25 / 45/85 reset en útfiert fanút de Reset Vector. Foar timinggegevens oer de Reset fan 'e Watchdog, ferwize nei Tabel 8-3 op side 46.

De Watchdog Timer kin ek konfigureare wurde om in ûnderbrekking te generearjen ynstee fan in reset. Dit kin tige nuttich wêze as jo de Watchdog brûke om wekker te wurden fanút Power-down.

Om ûnbedoeld útskeakeljen fan 'e Watchdog of unbedoelde feroaring fan' e time-outperioade te foarkommen, wurde twa ferskillende feiligensnivo's selekteare troch de lont WDTON lykas werjûn yn Tabel 8-1 Ferwize nei “Tiidreeksen foar feroarjen fan de kon- figuraasje fan 'e Watchdog Timer ”op side 43 foar details.

Tabel 8-1. WDT-konfiguraasje as funksje fan 'e fuse-ynstellingen fan WDTON

WDTON Safety Level WDT earste steat Hoe kinne jo de WDT útskeakelje Hoe feroarje jo time-out
Net programmeare 1 Utskeakele Tiid folchoarder Gjin beheiningen
Programmearre 2 Ynskeakele Altyd ynskeakele Tiid folchoarder

figuer 8-7. Watchdog Timer Wachthûn

Tiidreeksen foar feroarjen fan de konfiguraasje fan 'e Watchdog Timer

De folchoarder foar it feroarjen fan konfiguraasje ferskilt in bytsje tusken de twa feiligensnivo's. Aparte prosedueres wurde beskreaun foar elk nivo.

Feiligensnivo 1: Yn dizze modus is de Watchdog Timer yn earste ynstânsje útskeakele, mar kin ynskeakele wurde troch it WDE-bit nei ien te skriuwen sûnder beheining. In timed folchoarder is nedich by it útskeakeljen fan in ynskeakele Watchdog Timer. Om in ynskeakele Watchdog Timer út te skeakeljen, moat de folgjende proseduere wurde folge:

Yn deselde operaasje skriuw in logyske ien nei WDCE en WDE. In logika moat nei WDE wurde skreaun, nettsjinsteande de foarige wearde fan it WDE-bit.

Binnen de folgjende fjouwer kloksyklusjes, yn deselde operaasje, skriuw de WDE- en WDP-bits as winske, mar mei de WDCE-bit wiske.

Feiligensnivo 2: Yn dizze modus is de Watchdog Timer altyd ynskeakele, en it WDE-bit sil altyd lêze as ien. In timed folchoarder is nedich by it feroarjen fan de Watchdog Time-out perioade. Om de Watchdog Time-out te feroarjen, moat de folgjende proseduere wurde folge:

Yn deselde operaasje skriuw in logyske ien nei WDCE en WDE. Alhoewol de WDE altyd is ynsteld, moat de WDE nei ien wurde skreaun om de tydlike folchoarder te begjinnen.

Binnen de folgjende fjouwer kloksyklussen, yn deselde operaasje, skriuw de WDP-bits as winske, mar mei de WDCE-bit wiske. De wearde skreaun oan it WDE-bit is net relevant.

Koade Example

De folgjende koade example toant ien gearkomste en ien C -funksje foar it útsetten fan 'e WDT. De eksample giet derfan út dat ûnderbrekkings wurde regele (bgl. troch wrâldwide ûnderbrekkingen út te skeakeljen) sadat d'r gjin ûnderbrekkingen sille foarkomme by it útfieren fan dizze funksjes.

Montagekoade Example(1)
WDT_off:

wdr

; WDRF wiskje yn MCUSR

ldi r16, (0<

út MCUSR, r16

; Skriuw logyske ien nei WDCE en WDE

; Hâld âlde prescaler-ynstelling om ûnbedoeld Reset fan Watchdog te foarkommen

yn r16, WDTCR

ori r16, (1<

út WDTCR, r16

; WDT útsette

ldi r16, (0<

út WDTCR, r16

ret

C Koade Example(1)
void WDT_off (void)

{

_WDR ();

/* Wiskje WDRF yn MCUSR */ MCUSR = 0x00

/* Skriuw logyske ien nei WDCE en WDE */ WDTCR |= (1<

/ * WDT * / WDTCR = 0x00 útsette;

}

Opmerking: 1. Sjoch "Koade Examples ”op side 6.

Registrearje beskriuwing

MCUSR - MCU-statusregister

It MCU-statusregister biedt ynformaasje oer hokker resetboarne in MCU-reset feroarsake hat.

Bit 7 6 5 4 3 2 1 0
0x34 WDRF BORF EXTRF PORF MCUSR
Lês / Skriuw R R R R R/W R/W R/W R/W

Begjinwearde 0 0 0 0 Sjoch Bitbeskriuwing

Bits 7: 4 - Res: Reserveare bits

Dizze bits binne reserveare bits yn 'e ATtiny25 / 45/85 en sille altyd as nul lêze.

Bit 3 - WDRF: Watchdog werstelle flagge

Dit bit wurdt ynsteld as in Reset fan Watchdog optreedt. It bit wurdt opnij ynsteld troch in Reset by opstarten, of troch in logyske nul oan 'e flagge te skriuwen.

Bit 2 - BORF: Brown-out weromsette flagge

Dit bit wurdt ynsteld as in Brown-out Reset optreedt. It bit wurdt opnij ynsteld troch in Reset by opstarten, of troch in logyske nul oan 'e flagge te skriuwen.

Bit 1 - EXTRF: Eksterne weromsette flagge

Dit bit wurdt ynsteld as in eksterne reset foarkomt. It bit wurdt opnij ynsteld troch in Reset by opstarten, of troch in logyske nul oan 'e flagge te skriuwen.

Bit 0 - PORF: Power-on Reset Flag

Dit bit wurdt ynsteld as in Reset opstart. It bit wurdt allinich reset troch in logyske nul oan 'e flagge te skriuwen.

Om gebrûk te meitsjen fan 'e Reset Flags om in reset-betingst te identifisearjen, moat de brûker de MCUSR sa betiid mooglik yn it programma lêze en opnij ynstelle. As it register wurdt wiske foardat in oare reset plakfynt, kin de boarne fan 'e reset wurde fûn troch de Reset Flags te ûndersiikjen.

WDTCR - Watchdog Timer Control Register

Bit 7 6 5 4 3 2 1 0
0x21 WDIF WDIE WDP3 WDCE WDE WDP2 WDP1 WDP0 WDTCR
Lês / Skriuw R/W R/W R/W R/W R/W R/W R/W R/W
Inisjele wearde 0 0 0 0 X 0 0 0

Bit 7 - WDIF: Watchdog Timeout Interrupt Flag

Dit bit wurdt ynsteld as in time-out optreedt yn 'e Watchdog Timer en de Watchdog Timer is ynsteld foar ûnderbrekking. WDIF wurdt wiske troch hardware by it útfieren fan 'e oerienkommende ûnderbrekkingsfektor. As alternatyf wurdt WDIF wiske troch in logyske ien te skriuwen oan 'e flagge. As de I-bit yn SREG en WDIE binne ynsteld, wurdt de Watchdog Time-out Interrupt útfierd.

Bit 6 - WDIE: Watchdog Timeout Interrupt ynskeakelje

As dit bit nei ien wurdt skreaun, wurdt WDE wiske, en de I-bit yn it Statusregister is ynsteld, is de Watchdog Time-out Interrupt ynskeakele. Yn dizze modus wurdt de oerienkommende ûnderbrekking útfierd ynstee fan in reset as in time-out yn 'e Watchdog Timer optreedt.

As WDE is ynsteld, wurdt WDIE automatysk troch hardware wiske as in time-out optreedt. Dit is nuttich om de befeiliging fan 'e Watchdog Reset te hâlden by it brûken fan' e ûnderbrekking. Neidat it WDIE-bit wiske is, sil de folgjende time-out in reset generearje. Om it Reset fan 'e Watchdog te foarkommen, moat WDIE ynsteld wurde nei elke ûnderbrekking.

Tabel 8-2. Watchdog Timer konfiguraasje

WDE WDIE Watchdog Timer State Aksje op Time-out
0 0 Ophâlden Gjin
0 1 Te rinnen Ûnderbrekke
1 0 Te rinnen Weromsette
1 1 Te rinnen Ûnderbrekke

Bit 4 - WDCE: Watchdog Change ynskeakelje

Dit bit moat wurde ynsteld as it WDE-bit wurdt skreaun op logyske nul. Oars wurdt de Watchdog net útskeakele. Ienris nei ien skreaun, sil hardware dit bit wiskje nei fjouwer kloksyklusen. Ferwize nei de beskriuwing fan it WDE-bit foar in útskeakelje proseduere fan Watchdog. Dit bit moat ek ynsteld wurde as jo de prescaler bits feroarje. Sjen “Tiidreeksen foar it feroarjen fan de konfiguraasje fan 'e Watchdog Timer "op side 43.

Bit 3 - WDE: Watchdog ynskeakelje

As de WDE wurdt skreaun nei logyske ien, is de Watchdog Timer ynskeakele, en as de WDE wurdt skreaun nei logyske nul, is de Watchdog Timer-funksje útskeakele. WDE kin allinich wiske wurde as it WDCE-bit logysk nivo ien hat. Om in ynskeakele Watchdog Timer te ûntsiferje, moat de folgjende proseduere wurde folge:

Skriuw yn deselde operaasje in logyske ien nei WDCE en WDE. In logika moat nei WDE wurde skreaun, hoewol it op ien is ynsteld foardat de útskeakeling begjint.

Skriuw in logika 0 nei WDE binnen de folgjende fjouwer kloksyklusen. Dit skeakelt de Watchdog út.

Op feiligensnivo 2 is it net mooglik om de Watchdog Timer út te skeakeljen, sels net mei it hjirboppe beskreaune algoritme. Sjen "Tiidreeksen foar feroarjen fan de konfiguraasje fan 'e Watchdog-timer" op side 43.

Op feiligensnivo 1 wurdt WDE oerskreaun troch WDRF yn MCUSR. Sjen "MCUSR - MCU-statusregister" op side 44 foar beskriuwing fan WDRF. Dit betsjut dat WDE altyd is ynsteld as WDRF is ynsteld. Om WDE te wiskjen, moat WDRF wiske wurde foardat de Watchdog útskeakele wurdt mei de hjirboppe beskreaune proseduere. Dizze funksje soarget foar meardere reset ûnder omstannichheden dy't falen feroarsaakje, en in feilige opstart nei it falen.

Opmerking: As de watchdog-timer net sil wurde brûkt yn 'e applikaasje, is it wichtich om te gean troch in watchdog-útskeakelingsproseduere yn' e inisjalisaasje fan it apparaat. As de Watchdog per ûngelok ynskeakele is, bygelyksample troch in runaway pointer of brown-out condition, sil it apparaat wurde reset, wat op syn beurt sil liede ta in nije watchdog-reset. Om dizze situaasje te foarkommen, moat de tapassingsoftware altyd de WDRF -flagge en it WDE -kontrolebit wiskje yn 'e inisjalisaasjerutine.

Bits 5, 2: 0 - WDP [3: 0]: Watchdog Timer Prescaler 3, 2, 1 en 0

De WDP [3: 0] bits bepale de prescaling fan Watchdog Timer as de Watchdog Timer is ynskeakele. De ferskillende prescaling wearden en har oerienkommende Timeout Perioden wurde werjûn yn Tabel 8-3.

Tabel 8-3. Watchdog Timer Prescale Selektearje

WDP3 WDP2 WDP1 WDP0 Oantal WDT oscillatorsyklusen Typyske Time-out by VCC = 5.0V
0 0 0 0 2K (2048) fytst 16 ms
0 0 0 1 4K (4096) fytst 32 ms
0 0 1 0 8K (8192) fytst 64 ms
0 0 1 1 16K (16384) fytst 0.125 s
0 1 0 0 32K (32764) fytst 0.25 s
0 1 0 1 64K (65536) fytst 0.5 s
0 1 1 0 128K (131072) fytst 1.0 s
0 1 1 1 256K (262144) fytst 2.0 s
1 0 0 0 512K (524288) fytst 4.0 s
1 0 0 1 1024K (1048576) fytst 8.0 s

Tabel 8-3. Watchdog Timer Prescale Select (ferfolch)

WDP3 WDP2 WDP1 WDP0 Oantal WDT oscillatorsyklusen Typyske Time-out by VCC = 5.0V
1 0 1 0 Reservearre(1)
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1

Opmerking: 1. As selekteare, sil ien fan 'e jildige ynstellings ûnder 0b1010 brûkt wurde.

Underbrekt

Dizze paragraaf beskriuwt de spesifikaasjes fan 'e ynterruptbehanneling lykas útfierd yn ATtiny25 / 45/85. Foar in algemiene ferklearring fan 'e AVR-ynterruptbehanneling, ferwize nei "Handling opnij ynstelle en ûnderbrekke" op side 12.

Underbrekken fektoaren yn ATtiny25 / 45/85

De ûnderbrekkende fektoren fan ATtiny25 / 45/85 wurde beskreaun yn Tabel 9-1ûnder.

Tabel 9-1. Weromsette en ûnderbrekke Vectors

Fektor nr. Programma-adres Boarne Underbrekke definysje
1 0x0000 RESETTE Eksterne pin, Reset ynskakelje, Reset brown-out, Reset watchdog
2 0x0001 INT0 Ekstern ynterrupt fersyk 0
3 0x0002 PCINT0 Pin Feroarje ûnderbrekke fersyk 0
4 0x0003 TIMER1_COMPA Timer / teller1 Fergelykje wedstriid A
5 0x0004 TIMER1_OVF Timer / Counter1 oerstreaming
6 0x0005 TIMER0_OVF Timer / Counter0 oerstreaming
7 0x0006 EE_RDY EEPROM Klear
8 0x0007 ANA_COMP Analoge fergeliking
9 0x0008 ADC ADC-konverzje foltôge
10 0x0009 TIMER1_COMPB Timer / teller1 Fergelykje wedstriid B
11 0x000A TIMER0_COMPA Timer / teller0 Fergelykje wedstriid A
12 0x000B TIMER0_COMPB Timer / teller0 Fergelykje wedstriid B
13 0x000 c WDT Watchdog Time-out
14 0x000 d USI_START USI START
15 0x000e USI_OVF USI oerstreaming

As it programma noait in ynterruptboarne ynskeakelt, wurde de Interrupt Vectors net brûkt, en kin reguliere programmakoade op dizze lokaasjes wurde pleatst.

In typyske en algemiene opset foar ûnderbrekingsvektoradressen yn ATtiny25/45/85 wurdt werjûn yn it programma example ûnder.

Montagekoade Example
.org 0x0000 ; Stel adres fan folgjende yn ferklearring
rjmp RESET ; Adres 0x0000
rjmp INT0_ISR ; Adres 0x0001
rjmp PCINT0_ISR ; Adres 0x0002
rjmp TIM1_COMPA_ISR ; Adres 0x0003
rjmp TIM1_OVF_ISR ; Adres 0x0004
rjmp TIM0_OVF_ISR ; Adres 0x0005
rjmp EE_RDY_ISR ; Adres 0x0006
rjmp ANA_COMP_ISR ; Adres 0x0007
rjmp ADC_ISR ; Adres 0x0008
rjmp TIM1_COMPB_ISR ; Adres 0x0009
rjmp TIM0_COMPA_ISR ; Adres 0x000A
rjmp TIM0_COMPB_ISR ; Adres 0x000B
rjmp WDT_ISR ; Adres 0x000C
rjmp USI_START_ISR ; Adres 0x000D
rjmp USI_OVF_ISR ; Adres 0x000E
RESETTE: ; Haadprogramma start
; Adres 0x000F

Opmerking: sjoch "Koade Examples ”op side 6.

Eksterne ynterrupsjes

De eksterne ynterrupsjes wurde aktivearre troch de INT0-pin as ien fan 'e PCINT [5: 0] -pins. Tink derom dat, as ynskakele, de ynterrupsjes sille aktivearje, sels as de pins fan INT0 as PCINT [5: 0] binne konfigureare as útgongen. Dizze funksje biedt in manier om in software-ûnderbrekking te generearjen. Pin-feroaring ûnderbrekt PCI sil aktivearje as in ynskeakele PCINT [5: 0] pin ynskeakelt. It PCMSK-register kontroleart hokker pins bydrage oan de ynterrupsjes fan 'e pinwiziging. Pin-feroaringsûnderbrekken op PCINT [5: 0] wurde asynchroon ûntdutsen. Dit hâldt yn dat dizze ûnderbrekkingen kinne wurde brûkt foar it wekker fan it diel ek fan oare sliepmodi dan de idle-modus.

De INT0-ynterrumpten kinne wurde aktivearre troch in fallende as opkommende râne as in leech nivo. Dit is ynsteld lykas oanjûn yn 'e spesifikaasje foar it MCU Control Register - MCUCR. As de INT0-ûnderbrekking is ynskeakele en is ynsteld as aktivearre nivo, sil de ûnderbrekking aktivearje salang't de pin leech wurdt hâlden. Tink derom dat erkenning fan fallende of opkommende râne ûnderbrekt op INT0 de oanwêzigens fan in I / O-klok fereasket, beskreaun yn "Clock Systems en har ferdieling" op side 23.

Underbrekken mei leech nivo

In ûnderbrekking op leech nivo op INT0 wurdt asynchroan ûntdutsen. Dit hâldt yn dat dizze ûnderbrekking kin brûkt wurde foar it wekker fan it diel ek fan oare sliepmodi dan 'idle-modus. De I / O-klok is stillein yn alle sliepmodi, útsein de idle-modus.

Tink derom dat as in nivo-triggered ûnderbrekking wurdt brûkt foar wekker fan Power-down, it fereaske nivo moat lang genôch hâlden wurde foar de MCU om de wekker te foltôgjen om de nivo-ûnderbrekking te triggerjen. As it nivo ferdwynt foar it ein fan 'e opstarttiid, sil de MCU noch wekker wurde, mar gjin ûnderbrekking wurdt generearre. De opstarttiid wurdt definieare troch de SUT- en CKSEL-fuses lykas beskreaun yn "Systeemklok en klokopsjes" op side 23.

As it lege nivo op 'e ûnderbrekkingspinne wurdt fuortsmiten foardat it apparaat wekker is, sil de útfiering fan it programma net omlaat wurde nei de ûnderbrekkende tsjinstroutine, mar trochgean fan' e ynstruksje nei it kommando SLEEP.

Pin Feroarje interrupt timing

In eksample fan timing fan in pin feroarje interrupt wurdt werjûn yn figuer 9-1.

Registrearje beskriuwing

MCUCR - MCU-kontrôleregister

It External Interrupt Control Register A befettet control bits foar interrupt sense control.

Bit 7 6 5 4 3 2 1 0
0x35 BODS PUD SE SM1 SM0 BODSE ISC01 ISC00 MCUCR
Lês / Skriuw R R/W R/W R/W R/W R R/W R/W
Inisjele wearde 0 0 0 0 0 0 0 0

Bits 1: 0 - ISC0 [1: 0]: Sense Control 0 Bit 1 en Bit 0 ûnderbrekke

De eksterne ynterfal 0 wurdt aktivearre troch de eksterne pin INT0 as de SREG I-flagge en it oerienkommende ynterrupmasker binne ynsteld. It nivo en de rânen op 'e eksterne INT0-pin dy't de ûnderbrekking aktivearje binne definieare yn Tabel 9-2. De wearde op 'e INT0 -pin is sampliede foardat rânen wurde detekteare. As râne- of wikselûnderbrek is selekteare, generearje pulsen dy't langer duorje dan ien klokperioade in ûnderbrekking. Koartere pulsen wurde net garandearre om in ûnderbrekking te generearjen. As ûnderbrekking foar leech nivo is selektearre, moat it lege nivo wurde hâlden oant de foltôging fan 'e op it stuit útfierende ynstruksje om in ûnderbrekking te generearjen.

Tabel 9-2. Underbrekke 0 Sense Control

ISC01 ISC00 Beskriuwing
0 0 It lege nivo fan INT0 genereart in interrupt-fersyk.
0 1 Elke logyske feroaring op INT0 genereart in ûnderbrekkingsoanfraach.
1 0 De fallende râne fan INT0 genereart in ynterrupt fersyk.
1 1 De opkommende râne fan INT0 genereart in ynterrupt fersyk.

GIMSK - Algemien ûnderbrekmaskerregister

Bit 7 6 5 4 3 2 1 0
0x3B INT0 PCIe GIMSK
Lês / Skriuw R R/W R/W R R R R R
Inisjele wearde 0 0 0 0 0 0 0 0

Bits 7, 4: 0 - Res: Reserveare bits

Dizze bits binne reserveare bits yn 'e ATtiny25 / 45/85 en sille altyd as nul lêze.

Bit 6 - INT0: Eksterne ynterrupt fersyk 0 ynskeakelje

As it INT0-bit is ynsteld (ien) en de I-bit yn it Statusregister (SREG) is ynsteld (ien), wurdt de eksterne pinûnderbrekking ynskeakele. De Interrupt Sense Control0 bits 1/0 (ISC01 en ISC00) yn it MCU Control Register (MCUCR) definiearje oft de eksterne interrupt wurdt aktiveare op opkommende en / of fallende râne fan 'e INT0-pin of nivo dat wurdt waarnommen. Aktiviteit op 'e pin soarget foar in ûnderbrekke fersyk, sels as INT0 is konfigurearre as útfier. De korrespondearjende ûnderbrekking fan Ekstern Interrupt Request 0 wurdt útfierd fanút de INT0 Interrupt Vector.

Bit 5 - PCIE: Pin Change Interrupt ynskeakelje

As de PCIE-bit is ynsteld (ien) en de I-bit yn it Statusregister (SREG) is ynsteld (ien), is ûnderbrekking fan pinferoaring ynskeakele. Elke feroaring op elke ynskeakele PCINT [5: 0] pin sil in ûnderbrekking feroarsaakje. De oerienkommende ûnderbrekking fan Pin Change Interrupt Request wurdt útfierd fanút de PCI Interrupt Vector. PCINT [5: 0] pins wurde yndividueel ynskeakele troch it PCMSK0 Register.

GIFR - Algemien Interrupt Flag Register

Bit 7 6 5 4 3 2 1 0
0x3A INTF0 PCIF GIFR
Lês / Skriuw R R/W R/W R R R R R
Inisjele wearde 0 0 0 0 0 0 0 0

Bits 7, 4: 0 - Res: Reserveare bits

Dizze bits binne reserveare bits yn 'e ATtiny25 / 45/85 en sille altyd as nul lêze.

Bit 6 - INTF0: Eksterne ynterruptflagge 0

As in râne of logyske feroaring op 'e INT0-pin in interrupt-fersyk aktiveart, wurdt INTF0 ynsteld (ien). As de I-bit yn SREG en de INT0-bit yn GIMSK binne ynsteld (ien), springt de MCU nei de oerienkommende Interrupt Vector. De flagge wurdt wiske as de ûnderbrekroutine wurdt útfierd. As alternatyf kin de flagge wurde wiske troch in logyske ien derop te skriuwen. Dizze flagge wurdt altyd wiske as INT0 is ynsteld as nivo-ûnderbrekking.

Bit 5 - PCIF: Pin Change Interrupt Flag

As in logyske feroaring op elke PCINT [5: 0] pin in interrupt-fersyk aktiveart, wurdt PCIF ynsteld (ien). As de I-bit yn SREG en de PCIE-bit yn GIMSK binne ynsteld (ien), springt de MCU nei de oerienkommende Interrupt Vector. De flagge wurdt wiske as de ûnderbrekroutine wurdt útfierd. As alternatyf kin de flagge wurde wiske troch in logyske ien derop te skriuwen.

PCMSK - Maskeregister foar pin feroarje

Bit 7 6 5 4 3 2 1 0
0x15 PCINT5 PCINT4 PCINT3 PCINT2 PCINT1 PCINT0 PCMSK
Lês / Skriuw R R R/W R/W R/W R/W R/W R/W
Inisjele wearde 0 0 0 0 0 0 0 0

Bits 7: 6 - Res: Reserveare bits

Dizze bits binne reserveare bits yn 'e ATtiny25 / 45/85 en sille altyd as nul lêze.

Bits 5: 0 - PCINT [5: 0]: Pin feroarje ynskeakelje masker 5: 0

Elke PCINT [5: 0] -bit selekteart of pin-feroaringsûnderbrekking is ynskeakele op 'e oerienkommende I / O-pin. As PCINT [5: 0] is ynsteld en it PCIE-bit yn GIMSK is ynsteld, wurdt ûnderbrekking fan pinwiziging ynskeakele op 'e oerienkommende I / O-pin. As PCINT [5: 0] is wiske, is pin-feroaringsûnderbrekking op 'e oerienkommende I / O-pin útskeakele.

I/O havens

Ynlieding

Alle AVR-poarten hawwe wirklike Read-Modify-Write-funksjonaliteit as se wurde brûkt as algemiene digitale I/O-poarten. Dit betsjuttet dat de rjochting fan ien poarte -pin kin wurde feroare sûnder de richting fan in oare pin ûnbedoeld te feroarjen mei de SBI- en CBI -ynstruksjes. Itselde jildt by feroarjen fan stasjonwearde (as konfigureare as útfier) ​​of ynskeakelje/útskeakelje fan pull-up wjerstannen (as konfigureare as ynfier). Elke útfierbuffer hat symmetryske oandriuwkeigenskippen mei sawol hege sink as boarne mooglikheid. De pin -bestjoerder is sterk genôch om LED -displays direkt te riden. Alle poartepinnen hawwe yndividueel selekteare pull-up wjerstannen mei in oanbod-voltage invariant ferset. Alle I / O pins hawwe beskerming diodes oan sawol VCC en Ground lykas oanjûn yn figuer 10-1. Ferwize nei "Elektryske skaaimerken" op side 161 foar in folsleine list fan parameters.

figuer 10-1. I / O Pin lykweardich Schematic

Fig 10

Alle registers en bitferwizings yn dizze seksje binne skreaun yn algemiene foarm. In lytse letter "x" stiet foar de nûmerletter foar de poarte, en in lytse "n" stiet foar it bitnûmer. By it brûken fan it register as bit definiearret yn in programma, moat de krekte foarm lykwols wurde brûkt. Foar eksample, PORTB3 foar bit nr. 3 yn Port B, hjir algemien dokuminteare as PORTxn. De fysike I/O -registers en bitlokaasjes wurde neamd yn "Registrearje beskriuwing" op side 64.

Trije lokaasjes foar I / O-geheugenadres wurde tawiisd foar elke poarte, elk ien foar it Data Register - PORTx, Data Direction Register - DDRx, en de Port Input Pins - PINx. De I / O-lokaasje fan poarteynfierpinnen is allinich lêzen, wylst it Data Register en it Data Direction Register wurde lêzen / skriuwen. It skriuwen fan in logika ien oant in bytsje yn 'e PINx-registraasje sil lykwols resultearje yn in wikselje yn it oerienkommende bit yn it Gegevensregister. Derneist skeakelt de Pull-up Disable - PUD-bit yn MCUCR de pull-up-funksje út foar alle pins yn alle havens as dizze ynsteld is.

It brûken fan de I / O-poarte as General Digital I / O wurdt beskreaun yn "Havens as algemiene digitale I / O" op side 53, De measte poartepins binne multiplexeare mei alternatyf funksjes foar de perifere funksjes op it apparaat. Hoe't elke alternative funksje ynteresseart mei de havenpin wurdt beskreaun yn "Alternative havenfunksjes" op side 57, Ferwize nei de seksjes fan 'e yndividuele module foar in folsleine beskriuwing fan' e alternative funksjes.

Tink derom dat it ynskeakeljen fan de alternative funksje fan guon fan 'e poartepins gjin ynfloed hat op it gebrûk fan' e oare pinnen yn 'e poarte as algemiene digitale I / O.

Havens as Algemiene Digital I / O

De havens binne bi-directionele I / O-havens mei opsjoneel ynterne pull-ups. figuer 10-2 lit in funksjoneel beskriuwing sjen fan ien I / O-poarte-pin, hjir algemien neamd Pxn.

figuer 10-2. Algemiene Digitale I/O(1)

Fig 10

De pin ynstelle

Elke poarte-pin bestiet út trije registerbits: DDxn, PORTxn, en PINxn. Lykas werjûn yn "Registrearje beskriuwing" op side 64, binne de DDxn-bits tagong ta it DDRx I / O-adres, de PORTxn-bits by it PORTx I / O-adres, en de PINxn-bits by it PINx I / O-adres.

It DDxn-bit yn it DDRx-register selekteart de rjochting fan dizze pin. As DDxn ien is skreaun logika, wurdt Pxn konfigurearre as in útfierpinne. As DDxn logysk nul is skreaun, wurdt Pxn konfigurearre as in ynfierpinne.

As PORTxn ien logyske wurdt skreaun as de pin is ynsteld as in ynfier pin, wurdt de pull-up wjerstân aktivearre. Om de pull-up-wjerstân út te skeakeljen, moat PORTxn logysk nul wurde skreaun of moat de pin wurde ynsteld as útfierpin. De poartepins wurde trijesprutsen as reset-betingst aktyf wurdt, sels as der gjin klokken rinne.

As PORTxn ien logika is skreaun as de pin is ynsteld as in útfierpin, dan wurdt de poartepen heech dreaun (ien). As PORTxn logysk nul wurdt skreaun as de pin is ynsteld as in útfierpin, wurdt de poarte-pin leech dreaun (nul).

De pin wikselje

In logika skriuwe nei PINxn skeakelt de wearde fan PORTxn yn, ûnôfhinklik fan 'e wearde fan DDRxn. Tink derom dat de SBI-ynstruksje kin wurde brûkt om ien inkeld bit yn in haven te wikseljen.

Wikselje tusken ynput en útfier

By it wikseljen tusken tri-state ({DDxn, PORTxn} = 0b00) en útfier heech ({DDxn, PORTxn} = 0b11), in tuskenstân mei ofwol pull-up ynskeakele {DDxn, PORTxn} = 0b01) of útfier leech ({DDxn, PORTxn} = 0b10) moat foarkomme. Normaal, de pull-up ynskeakele steat is folslein akseptabel, as in hege-impedant omjouwing sil net fernimme it ferskil tusken in sterke hege bestjoerder en in pull-up. As dit net it gefal is, kin it PUD-bit yn it MCUCR-register ynsteld wurde om alle pull-ups yn alle havens út te skeakeljen.

Wikselje tusken ynput mei pull-up en output low genereart itselde probleem. De brûker moat of de tri-state ({DDxn, PORTxn} = 0b00) as de útfier hege steat ({DDxn, PORTxn} = 0b10) brûke as in tuskenstap.

Tabel 10-1 fettet de kontrôlesignalen foar de pinwearde gear.

Tabel 10-1. Port Pin konfiguraasjes

DDxn PORTxn PUD

(yn MCUCR)

I/O Pull-up Kommentaar
0 0 X Ynfier Nee Tri-state (Hi-Z)
0 1 0 Ynfier Ja Pxn sil hjoeddeistige boarne as ekst. leech lutsen.
0 1 1 Ynfier Nee Tri-state (Hi-Z)
1 0 X Utfier Nee Utfier leech (sink)
1 1 X Utfier Nee Utfier heech (Boarne)

De pinwearde lêze

Unôfhinklik fan 'e ynstelling fan Data Direction bit DDxn, kin de poarte pin wurde lêzen troch de PINxn Register bit. Lykas werjûn yn figuer 10-2, it PINxn Register bit en de foargeande klink foarmje in syngronisator. Dit is nedich om metastabiliteit te foarkommen as de fysike pin wearde feroaret by de râne fan 'e ynterne klok, mar it yntroduseart ek in fertraging. figuer 10-3 toant in timing diagram fan de syngronisaasje by it lêzen fan in ekstern tapaste pin wearde. De maksimale en minimale fuortplantingsfertragingen wurde respektivelik oantsjutten tpd, max en tpd, min.

Tink oan de klokperioade dy't begjint koart nei de earste fallende râne fan 'e systeemklok. De klink is sletten as de klok leech is, en giet trochsichtich as de klok heech is, lykas oanjûn troch de skaden regio fan it "SYNC LATCH" sinjaal. De sinjaalwearde wurdt sluten as de systeemklok leech is. It wurdt yn it PINxn-register klokt by de folgjende positive râne. Lykas oanjûn troch de twa pylken tpd, max en tpd, min, sil in inkelde sinjaaloergong op 'e pin fertrage tusken ½ en 1½ systeemklokperioade ôfhinklik fan' e tiid fan bewearing.

By it weromlêzen fan in troch de software tawiisde pinwearde, moat in no-ynstruksje wurde ynfoege lykas oanjûn yn figuer 10-4, De ynstruksje set de "SYNC LATCH" sinjaal yn oan 'e positive râne fan' e klok. Yn dit gefal is de fertraging tpd troch de syngronisator ien systeemklokperioade.

De folgjende koade example lit sjen hoe te setten haven B pins 0 en 1 heech, 2 en 3 low, en definiearje de haven pins út 4 oan 5 as ynfier mei in pull-up tawiisd oan haven pin 4. De resultearjende pin wearden wurde lêzen werom wer, mar lykas earder besprutsen, is in nop-ynstruksje opnommen om de wearde dy't koartlyn oan guon fan 'e pins is tawiisd werom te lêzen.

Montagekoade Example(1)

; Definiearje pull-ups en set útgongen heech

; Define rjochtings foar haven pins

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

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

út PORTB,r16

út DDRB,r17

; Nop ynfoegje foar syngronisaasje

nop

; Lês haven pins

yn r16,pinb

Opmerking: Foar it assemblageprogramma wurde twa tydlike registers brûkt om de tiid te minimalisearjen fanôf pull-ups wurde ynsteld op pins 0, 1 en 4, oant de rjochtingsbits goed ynsteld binne, bit 2 en 3 definiearje as leech en opnij definiearje bits 0 en 1 as sterke hege bestjoerders.

C Koade Example
net ûndertekene char i;

/* Definiearje pull-ups en set útgongen heech */

/* Definiearje rjochtings foar poartepinnen */ PORTB = (1<

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

/* Nop ynfoegje foar syngronisaasje*/

_NOP ();

/* Lês poarte pins */ i = PINB;

Digitale yngong ynskeakelje en sliepmodi

Lykas werjûn yn figuer 10-2, kin it digitale ynfier sinjaal clamped nei grûn by de yngong fan 'e schmitt-trigger. It sinjaal oanjûn SLEEP yn 'e figuer, wurdt ynsteld troch de MCU Sleep Controller yn Power-down modus om hege enerzjyferbrûk te foarkommen as guon ynfiersinjalen driuwend bliuwe, of hawwe in analoog sinjaalnivo tichtby VCC/2.

SLEEP wurdt oerskreaun foar portpins ynskeakele as eksterne interruptpins. As it eksterne ynterruptoanfraach net ynskeakele is, is SLEEP ek aktyf foar dizze pins. SLEEP wurdt ek oerskreaun troch ferskate oare alternative funksjes lykas beskreaun yn "Alternative havenfunksjes" op side 57.

As in logysk heech nivo ("ien") oanwêzich is op in asynchrone eksterne ûnderbrekkingspin konfigurearre as "Interrupt on Rising Edge, Falling Edge, of Any Logic Change on Pin" wylst de eksterne ûnderbrekking net ynskeakele is, sil de korrespondearjende eksterne ûnderbrekkingsflagge wurde ynsteld by it hervatten fan 'e boppeneamde Sliepmodus, lykas de clamping yn dizze sliepmodus produsearret de frege logyske feroaring.

Net ferbûn pins

As guon pins net brûkt wurde, wurdt it oanrikkemandearre om te soargjen dat dizze pins in definieare nivo hawwe. Sels hoewol de measte digitale yngongen binne útskeakele yn 'e djippe sliepmodi lykas hjirboppe beskreaun, moatte driuwende yngongen foarkommen wurde om it hjoeddeistige konsumpsje te ferminderjen yn alle oare modi wêr't de digitale yngongen binne ynskeakele (Reset, Aktive modus en Idle-modus).

De ienfâldichste metoade om te garandearjen in definiearre nivo fan in net brûkte pin, is te skeakeljen de ynterne pull-up. Yn dit gefal sil de pull-up wurde útskeakele by reset. As leech enerzjyferbrûk by reset wichtich is, is it oan te rieden om in eksterne pull-up of pulldown te brûken. It is net oan te rieden om net brûkte pins direkt te ferbinen mei VCC of GND, om't dit oermjittige streamingen kin feroarsaakje as de pin by ûngelok konfigurearre is as in útfier.

Alternative havenfunksjes

De measte havenpinnen hawwe alternatyf funksjes neist dat se algemiene digitale I / O's binne. figuer 10-5 lit sjen hoe't de haven pin kontrôle sinjalen fan 'e ferienfâldige figuer 10-2 kin wurde oerskreaun troch alternative funksjes. De oergeande sinjalen binne miskien net oanwêzich yn alle havenpinnen, mar de figuer tsjinnet as in generike beskriuwing fan tapassing op alle havenpinnen yn 'e AVR-mikrokontrollerfamylje.

Tabel 10-2. Generic beskriuwing fan oerskriuwen sinjalen foar alternative funksjes

Sinjaal Namme Folsleine namme Beskriuwing
PUOE Pull-up oerskriuwe ynskeakelje As dit sinjaal is ynsteld, wurdt de ynskeakelje ynskeakele troch it PUOV-sinjaal. As dit sinjaal wist, is de pull-up ynskeakele wannear

{DDxn, PORTxn, PUD} = 0b010.

PUOV Pull-up oerskriuwe wearde As PUOE is ynsteld, wurdt de pull-up ynskeakele / útskeakele as PUOV wurdt ynsteld / wiske, ûnôfhinklik fan 'e ynstelling fan' e DDxn-, PORTxn- en PUD-registerbits.
DDOE Gegevensrjochting oerskriuwe ynskeakelje As dit sinjaal is ynsteld, wurdt de Output Driver Enable kontroleare troch it DDOV-sinjaal. As dit sinjaal wiske wurdt, wurdt de útfierstjoerder ynskeakele troch de DDxn Registerbit.
DDOV Gegevensrjochting oerskriuwe wearde As DDOE is ynsteld, wurdt de útfierstjoerder ynskeakele / útskeakele as DDOV wurdt ynsteld / wiske, ûnôfhinklik fan 'e ynstelling fan' e DDxn Registerbit.
PVOE Portwearde oerskriuwe ynskeakelje As dit sinjaal is ynsteld en de Utfierstjoerprogramma is ynskeakele, wurdt de portwearde regele troch it PVOV-sinjaal. As PVOE is wiske, en de útfierstjoerder is ynskeakele, wurdt de Portwearde regele troch de PORTxn Registerbit.
PVOV Portwearde oerskriuwe wearde As PVOE is ynsteld, wurdt de poartewearde ynsteld op PVOV, ûnôfhinklik fan 'e ynstelling fan' e PORTxn Registerbit.
PTOE Port Toggle Oerskriuwe ynskeakelje As PTOE is ynsteld, wurdt it PORTxn Register bit omkeard.
DIEOE Digitale yngong ynskeakelje Oerskriuwe ynskeakelje As dit bit is ynsteld, wurdt de Digital Input Enable kontroleare troch it DIEOV-sinjaal. As dit sinjaal wist, wurdt de Digital Input Enable bepaald troch MCU-steat (Normale modus, sliepmodus).
DIEOV Digitale yngong ynskeakelje oerskriuwe wearde As DIEOE is ynsteld, wurdt de digitale ynput ynskeakele / útskeakele as DIEOV wurdt ynsteld / wiske, ûnôfhinklik fan 'e MCU-steat (Normale modus, sliepmodus).
DI Digitale ynput Dit is de digitale ynput foar ôfwikseljende funksjes. Yn 'e figuer is it sinjaal ferbûn mei de útfier fan' e schmitt-trigger, mar foar de syngronisator. Behalven as de digitale ynput wurdt brûkt as klokboarne, sil de module mei de alternative funksje syn eigen syngronisator brûke.
AIO Analoge ynput / útfier Dit is de analoge ynput / útfier nei / fan alternatyf funksjes. It sinjaal is direkt ferbûn mei it pad, en kin bi- rjochting brûkt wurde.

De folgjende ûnderdielen beskriuwe koart de alternative funksjes foar elke poarte, en relatearje de oergeande sinjalen mei de alternative funksje. Ferwize nei de beskriuwing fan alternative funksjes foar fierdere details.

Alternative funksjes fan haven B

Port B-pins mei alternative funksje wurde werjûn yn Tabel 10-3.

Tabel 10-3. Port B Pins Alternate funksjes

Port Pin Alternatyf funksje
PB5

RESET: Pin weromsette

dW: debugWIRE I / O ADC0: ADC-ynfierkanaal 0

PCINT5: Pin Change Interrupt, Boarne 5

PB4 XTAL2: Crystal Oscillator-útfier CLKO: Systeemklokútfier ADC2: ADC-ynfierkanaal 2

OC1B: Timer / teller1 Ferlykje wedstriid B-útfier PCINT4: Pin feroarje ûnderbrekke 0, boarne 4

PB3 XTAL1: Crystal Oscillator-ynfier CLKI: Eksterne klokynfier ADC3: ADC-ynfierkanaal 3

OC1B: Oanfoljende timer / teller1 Fergelykje wedstriid B-útfier PCINT3: pin feroarje ûnderbrekke 0, boarne 3

PB2 SCK: Serial Clock Input ADC1: ADC Input Channel 1

T0: Timer / teller 0 Klokboarne USCK: USI-klok (Triedriedmodus) SCL: USI-klok (Twadraadmodus) INT0: Eksterne ûnderbrekking 0 Input PCINT2: pin feroarje ûnderbrekke 0, boarne 2

PB1 MISO: SPI Master Data Input / Slave Data Output AIN1: Analoge Comparator, Negative Input OC0B: Timer / Counter0 Fergelykje Match B Output OC1A: Timer / Counter1 Fergelykje Match A Output DO: USI Data Output (Trije triedmodus) PCINT1: Pin Change Interrupt 0, Boarne 1
PB0 MOSI :: SPI-mastergegevensútfier / slave-gegevensynfier AIN0: analoge komparator, positive ynput

OC0A: Timer / Counter0 Ferlykje Match A útfier

OC1A: Oanfoljende timer / teller1 Fergelykje oerienkomst A útfier DI: USI-gegevensynfier (Triedriedmodus)

SDA: USI Data Input (Twa triedmodus) AREF: Eksterne analoge referinsje PCINT0: Pin Change Interrupt 0, Source 0

Poarte B, bit 5 - RESET / dW / ADC0 / PCINT5

RESET: Ynput foar eksterne reset is aktyf leech en ynskeakele troch de RSTDISBL Fuse ("1") net te programmearjen. Pullup is aktivearre en útfierstjoerder en digitale ynput wurde útskeakele as de pin wurdt brûkt as RESET-pin.

dW: As de debugWIRE ynskeakelje (DWEN) Fuse is programmeare en Lock bits binne net programmeare, wurdt it debugWIRE-systeem binnen it doelapparaat aktivearre. De RESET-poarte-pin is ynsteld as in wire-AND (iepen-drain) bi-directionele I / O-pin mei pull-up ynskeakele en wurdt de kommunikaasjepoarte tusken doel en emulator.

ADC0: Analog nei digitaal omrekkener, kanaal 0.

PCINT5: Pin feroarje Underbrekke boarne 5.

Poarte B, bit 4 - XTAL2 / CLKO / ADC2 / OC1B / PCINT4

XTAL2: Chip Clock Oscillator pin 2. Wurdt brûkt as klokstift foar alle chipklokboarnen, útsein ynterne kalibreerbere RC Oscillator en eksterne klok. As it wurdt brûkt as in klokstift, kin de pin net brûkt wurde as in I / O-pin. By it brûken fan ynterne kalibreerbere RC-oscillator as eksterne klok as chipklokboarnen, tsjinnet PB4 as in gewoane I / O-pin.

CLKO: De ferdielde systeemklok kin wurde útfierd op 'e pin PB4. De ferdielde systeemklok wurdt útfierd as de CKOUT Fuse is programmeare, ûnôfhinklik fan 'e PORTB4- en DDB4-ynstellings. It sil ek wurde útfierd by reset.

ADC2: Analog nei digitaal omrekkener, kanaal 2.

OC1B: Utfier fergelykje oerienkomstútfier: De PB4-pin kin tsjinje as eksterne útfier foar de Timer / teller1 Ferlykje oerienkomst B as konfigurearre as útfier (DDB4-set). De OC1B-pin is ek de útfier-pin foar de PWM-modus timerfunksje.

PCINT4: Pin feroarje Underbrekke boarne 4.

Poarte B, bit 3 - XTAL1 / CLKI / ADC3 / OC1B / PCINT3

XTAL1: Chip Clock Oscillator pin 1. Wurdt brûkt foar alle chipklokboarnen, útsein ynterne kalibrearjende RC oscillator. As it wurdt brûkt as in klokstift, kin de pin net brûkt wurde as in I / O-pin.

CLKI: Klokynfier fan in eksterne klokboarne, sjoch "Eksterne klok" op side 26.

ADC3: Analog nei digitaal omrekkener, kanaal 3.

OC1B: Inverted Output Compare Match output: De PB3-pin kin tsjinje as in eksterne output foar de Timer / Counter1 Compare Match B as konfigurearre as in output (DDB3-set). De OC1B-pin is ek de omkearde útfier-pin foar de timerfunksje fan 'e PWM-modus.

PCINT3: Pin feroarje Underbrekke boarne 3.

Poarte B, bit 2 - SCK / ADC1 / T0 / USCK / SCL / INT0 / PCINT2

SCK: Master Clock útfier, Slave Clock input pin foar SPI kanaal. As de SPI as slaaf is ynskeakele, wurdt dizze pin konfigureare as in yngong, ûnôfhinklik fan de ynstelling fan DDB2. As de SPI is ynskeakele as Master, wurdt de gegevensrjochting fan dizze pin regele troch DDPB2. As de pin wurdt twongen troch de SPI om in ynput te wêzen, kin de pull-up noch wurde kontroleare troch de PORTB2-bit.

ADC1: Analog nei digitaal omrekkener, kanaal 1.

T0: Timer / Counter0 counter boarne.

USCK: Triedriedige modus Universele seriële ynterface klok.

SCL: Twa-draads modus Seriële klok foar USI Twa-draads modus.

INT0: Eksterne ynterrupt boarne 0.

PCINT2: Pin feroarje Underbrekke boarne 2.

Poarte B, bit 1 - MISO / AIN1 / OC0B / OC1A / DO / PCINT1

MISO: Master data ynfier, Slave Data útfier pin foar SPI kanaal. As de SPI is ynskeakele as Master, is dizze pin konfigureare as in ynput, ûnôfhinklik fan 'e ynstelling fan DDB1. As de SPI as slaaf is ynskeakele, wurdt de gegevensrjochting fan dizze pin regele troch DDB1. As de pin wurdt twongen troch de SPI om in ynput te wêzen, kin de pull-up noch wurde kontroleare troch de PORTB1-bit.

AIN1: Analoge fergeliking negative ynput. Konfigurearje de poartepin as ynput mei de ynterne pull-up útskeakele om te foarkommen dat de digitale poartefunksje de funksje fan 'e Analoge Comparator bemuoit.

OC0B: Utfier Ferlykje Wedstrydútfier. De PB1-pin kin as eksterne útfier tsjinje foar de Timer / Teller0 Fergelykje oerienkomst B. De PB1-pin moat wurde konfigurearre as útfier (DDB1-set (ien)) om dizze funksje te tsjinjen. De OC0B-pin is ek de útfierpin foar de PWM-modus timerfunksje.

OC1A: Utfier fergelykje oerienkomstútfier: De PB1-pin kin tsjinje as eksterne útfier foar de Timer / teller1 Ferlykje oerienkomst B as konfigurearre as útfier (DDB1-set). De OC1A-pin is ek de útfierpin foar de timerfunksje fan 'e PWM-modus.

DO: Triedriedmodus Universele seriële ynterface Gegevensútfier. Trijetriedige modus Gegevensútfier oerskriuwt de PORTB1-wearde en wurdt nei de haven stjoerd as gegevensrjochtingsbit DDB1 is ynsteld (ien). PORTB1 makket it opheljen noch mooglik, as de rjochting wurdt ynfierd en PORTB1 is ynsteld (ien).

PCINT1: Pin feroarje Underbrekke boarne 1.

Poarte B, bit 0 - MOSI / AIN0 / OC0A / OC1A / DI / SDA / AREF / PCINT0

MOSI: SPI Master Data útfier, Slave Data input foar SPI kanaal. As de SPI as slaaf is ynskeakele, wurdt dizze pin konfigureare as in ynput, ûnôfhinklik fan 'e ynstelling fan DDB0. As de SPI is ynskeakele as master, wurdt de gegevensrjochting fan dizze pin regele troch DDB0. As de pin wurdt twongen troch de SPI om in ynput te wêzen, kin de pull-up noch wurde kontroleare troch de PORTB0-bit.

AIN0: Analoge fergeliking Positive yngong. Konfigurearje de poarte-pin as ynput mei de ynterne pull-up útskeakele om te foarkommen dat de digitale poartefunksje de funksje fan 'e Analoge Comparator ynterfereart.

OC0A: Utfier Fergelykje oerienkomstútfier. De PB0-pin kin tsjinje as eksterne útfier foar de Timer / Teller0 Fergelykje Wedstriid A as konfigurearre as útfier (DDB0-set (ien)). De OC0A-pin is ek de útfierpin foar de PWM-modus timerfunksje.

OC1A: Inverted Output Compare Match output: De PB0-pin kin tsjinje as eksterne útfier foar de Timer / Counter1 Compare Match B as konfigurearre as in output (DDB0-set). De OC1A-pin is ek de omkearde útfierpin foar de PWM-modus timerfunksje.

SDA: Twa triedmodus Seriële ynterface-gegevens.

AREF: Eksterne analoge referinsje foar ADC. Pullup- en útfierstjoerprogramma binne útskeakele op PB0 as de pin wurdt brûkt as in eksterne referinsje as Internal Voltage Referinsje mei eksterne kondensator by de AREF -pin.

DI: Gegevensynfier yn USI Trijedraadmodus. USI Trijedraadmodus oerskriuwt normale portfunksjes net, dus pin moat wurde ynsteld as ynput foar DI-funksje.

PCINT0: Pin feroarje Underbrekke boarne 0.

Tabel 10-4 en Tabel 10-5 relatearje de alternative funksjes fan Port B mei de oermachtige sinjalen werjûn yn Ofbylding 10-5 oer side 58.

Tabel 10-4. Sinjalen oerskriuwe foar alternative funksjes yn PB[5:3]

Sinjaal Namme PB5 / RESET / ADC0 / PCINT5 PB4/ADC2/XTAL2/ OC1B/PCINT4 PB3/ADC3/XTAL1/ OC1B/PCINT3
PUOE

RSTDISBL(1) • DWEN(1)

0 0
PUOV 1 0 0
DDOE RSTDISBL(1) • DWEN(1) 0 0
DDOV debugWire ferstjoere 0 0
PVOE 0 OC1B ynskeakelje

OC1B ynskeakelje

PVOV 0 OC1B OC1B
PTOE 0 0 0
DIEOE

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

PCINT4 • PCIE + ADC2D PCINT3 • PCIE + ADC3D
DIEOV ADC0D ADC2D ADC3D
DI PCINT5 Ynfier PCINT4 Ynfier PCINT3 Ynfier
AIO RESET ynput, ADC0 ynfier ADC2 Ynfier ADC3 Ynfier

Opmerking: as de fuse "0" is (Programmearre).

Tabel 10-5. Sinjalen oerskriuwe foar alternative funksjes yn PB[2:0]

Sinjaal Namme 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 ynskeakelje + OC1A ynskeakelje + USI_THREE_WIRE

OC0A ynskeakelje + OC1A ynskeakelje + (USI_TWO_WIRE

DDB0)

PVOV 0 OC0B + OC1A + DO

OC0A + OC1A

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

PCINT2 Ynfier

PCINT1 Ynfier DI / SDA / PCINT0 Ynfier
AIO ADC1 Ynfier Analoge komparator negative ynput Analoge komparator Posityf ynfier

Registrearje beskriuwing

MCUCR - MCU-kontrôleregister

Bit 7 6 5 4 3 2 1 0
0x35 BODS PUD SE SM1 SM0 BODSE ISC01 ISC00 MCUCR
Lês / Skriuw R R/W R/W R/W R/W R R/W R/W
Inisjele wearde 0 0 0 0 0 0 0 0

Bit 6 - PUD: Pull-up útskeakelje

As dit bit nei ien wurdt skreaun, wurde de pull-ups yn 'e I / O-poarten útskeakele, sels as de DDxn- en PORTxn-registers binne konfigureare om de pull-ups yn te skeakeljen ({DDxn, PORTxn} = 0b01). Sjen "De pin ynstelle" op side 54 foar mear details oer dizze funksje.

PORTB - Gegevensregister haven

Bit 7 6 5 4 3 2 1 0
0x18 PORTB5 PORTB4 PORTB3 PORTB2 PORTB1 PORTB0 PORTB
Lês / Skriuw R R R/W R/W R/W R/W R/W R/W
Inisjele wearde 0 0 0 0 0 0 0 0

DDRB - Port B Data Direction Register

Bit 7 6 5 4 3 2 1 0
0x17 DDB5 DDB4 DDB3 DDB2 DDB1 DDB0 DDRB
Lês / Skriuw R R R/W R/W R/W R/W R/W R/W
Inisjele wearde 0 0 0 0 0 0 0 0

PINB - Poarte B Input Pins Adres

Bit 7 6 5 4 3 2 1 0
0x16 PINB5 PINB4 PINB3 PINB2 PINB1 PINB0 PINB
Lês / Skriuw R R R/W R/W R/W R/W R/W R/W
Inisjele wearde 0 0 N/A N/A N/A N/A N/A N/A

8-bit Timer / Counter0 mei PWM

Features

Twa unôfhinklike útfier fergelykje ienheden

Dûbelbuffere útfier fergelykje registers

Timer wiskje by fergelykje oerienkomst (automatysk opnij laden)

Glitchfrije, faze korrekte pulsbreedte modulator (PWM)

Fariabele PWM-perioade

Frekwinsjegenerator

Trije ûnôfhinklike ûnderbrekkingsboarnen (TOV0, OCF0A, en OCF0B)

Oerview

Timer / Counter0 is in 8-bit Timer / Counter-module foar algemien doel, mei twa ûnôfhinklike ienheden foar útfierferlykjen, en mei PWM-stipe. It makket in krekte timing foar programma-útfiering (barrenbehear) en golfgeneraasje mooglik.

In ferienfâldige blokdiagram fan 'e 8-bit Timer / teller wurdt werjûn yn figuer 11-1, Foar de eigentlike pleatsing fan I / O-pins, ferwize nei "Pinout ATtiny25 / 45/85" op side 2, CPU-tagonklike I / O-registers, ynklusyf I / O-bits en I / O-pins, wurde fet sjen litten. It apparaat-spesifike I / O-register en bitlokaasjes wurde neamd yn 'e "Registrearje beskriuwing" op side 77.

De registers foar timer/teller (TCNT0) en útfierfergeliking (OCR0A en OCR0B) binne 8-bit registers. Interrupt fersyk (ôfkoarte ta Int.Req. yn de figuer) sinjalen binne allegear sichtber yn de Timer Interrupt Flag Register (TIFR). Alle ûnderbrekkings wurde yndividueel maskere mei it Timer Interrupt Mask Register (TIMSK). TIFR en TIMSK wurde net werjûn yn de figuer.

De timer / teller kin yntern wurde klokt, fia de foarskaler, of troch in eksterne klokboarne op 'e T0-pin. It logyske blok Clock Select kontrolearret hokker klokboarne en râne de timer / teller brûkt om syn wearde te ferheegjen (of te ferleegjen). De timer/teller is ynaktyf as gjin klokboarne selektearre is. De útfier fan 'e klok selektearje logika wurdt oantsjutten as de timerklok (clkT0).

De dûbele buffere Output Compare Registers (OCR0A en OCR0B) wurdt altyd fergelike mei de Timer / Counter-wearde. It resultaat fan 'e ferliking kin brûkt wurde troch de Waveform Generator om in PWM- of fariabele frekwinsjeproduksje te generearjen op' e Utfier fergelykje-pins (OC0A en OC0B). Sjoch "Ienheid ferlykje útfier" op side 69. foar details. It evenemint Compare Match sil ek de Compare Flag (OCF0A of OCF0B) ynstelle dy't kin wurde brûkt om in ynterpretaasjefersyk foar Output Compare te generearjen.

Definysjes

In soad register- en bitferwizings yn dizze seksje wurde yn algemiene foarm skreaun. In lytse letters "n" ferfangt it timer / tellernûmer, yn dit gefal 0. In lytse letters "x" ferfangt de útfier-ferlykjende ienheid, yn dit gefal fergelykje ienheid A of fergelykje ienheid B. As jo ​​lykwols it register of bit brûke definieart yn in programma moat de krekte foarm wurde brûkt, dus TCNT0 foar tagong ta tellerwearde Timer / Counter0 ensafuorthinne.

De definysjes yn Tabel 11-1 wurde ek wiidweidich brûkt yn it dokumint.

Tabel 11-1. Definysjes

Konstant Beskriuwing
BOAIEM De teller berikt BOTTOM as it 0x00 wurdt
MAX De teller berikt syn MAXimum as it 0xFF wurdt (desimaal 255)
TOP De teller berikt de TOP as it gelyk wurdt oan de heechste wearde yn 'e tellenfolchoarder. De TOP-wearde kin wurde tawiisd as de fêste wearde 0xFF (MAX) as de wearde opslein yn it OCR0A-register. De opdracht is ôfhinklik fan 'e modus fan operaasje

Timer / teller prescaler en klok boarnen

De timer / teller kin wurde klokt troch in ynterne as in eksterne klokboarne. De klokboarne wurdt selekteare troch de Clock Select-logika dy't wurdt regele troch de Clock Select (c) bits yn it Timer / Counter0 Control Register (TCCR0B).

Ynterne klokboarne mei prescaler

Timer / Counter0 kin wurde clocked direkt troch de systeem klok (troch it ynstellen fan de CS0 [2:0] = 1). Dit soarget foar de fluchste operaasje, mei in maksimum timer / counter klok frekwinsje gelyk oan systeem klok frekwinsje (fCLK_I / O). As alternatyf kin ien fan fjouwer kranen fan 'e foarskaler brûkt wurde as klokboarne. De foarskalearre klok hat in frekwinsje fan beide

Prescaler weromsette

De prescaler is fergees te rinnen, dat wol sizze dat it ûnôfhinklik wurket fan 'e logika fan Clock Select fan Timer/Counter0. Om't de prescaler net wurdt beynfloede troch de seleksje fan 'e timer/teller, sil de steat fan' e prescaler gefolgen hawwe foar situaasjes wêr't in foarskale klok wurdt brûkt. Ien eksample fan in foarskalingsartefak is as de timer/teller is ynskeakele en klokt troch de prescaler (6> CS0 [2: 0]> 1). It oantal systeemsyklus -syklusen fanôf it momint dat de timer is ynskeakele oant de earste telling optreedt kin wêze fan 1 oant N+1 systeemtoksyklusen, wêr't N gelyk is oan de prescaler -divisor (8, 64, 256, of 1024).

It is mooglik de Prescaler Reset te brûken foar it syngronisearjen fan de Timer / Counter nei de útfiering fan it programma.

Eksterne klokboarne

In eksterne klok boarne tapast op de T0 pin kin brûkt wurde as timer / counter klok (clkT0). De T0 pin is samplied ienris elke systeemsokssyklus troch de logynchronisaasje fan pin. De syngronisearre (sampled) sinjaal wurdt dan trochjûn

troch de rânedetektor. figuer 11-2 toant in funksjoneel lykweardich blokdiagram fan de T0-syngronisaasje en rânedetektorlogika. De registers wurde klokt oan 'e positive râne fan' e ynterne systeemklok (clkI / O). De latch is transparant yn 'e hege perioade fan' e ynterne systeemklok.

De rânedetektor genereart ien clkT0-puls foar elke positive (CS0[2:0] = 7) of negative (CS0[2:0] = 6) râne dy't it detektearret.

De OCR0x-registers wurde dûbeld buffere by it brûken fan ien fan 'e modus Pulsbreedte modulaasje (PWM). Foar de normale en Clear Timer on Compare (CTC) modus fan operaasje is de dûbele buffering útskeakele. De dûbele buffering syngroniseart de fernijing fan de OCR0x Compare Registers nei boppe of ûnder oan 'e tellenfolchoarder. De syngronisaasje foarkomt it foarkommen fan ûnevenlange, net-symmetryske PWM-pulsen, wêrtroch de útfier glitchfrij wurdt.

De OCR0x Register tagong kin kompleks lykje, mar dit is net sa. As de dûbele buffering ynskeakele is, hat de CPU tagong ta it OCR0x-bufferregister, en as dûbele buffering útskeakele is, sil de CPU direkt tagong krije ta de OCR0x.

Force Utfier fergelykje

Yn moden foar generearjen fan PWM-golffoarmen kin de wedstriidútfier fan 'e komparator wurde twongen troch ien te skriuwen nei de Force Output Compare (FOC0x) bit. Twingende fergelykjende oerienkomst sil de OCF0x-flagge net ynstelle of de timer opnij lade / wiskje, mar de OC0x-pin wurdt bywurke as soe in echte Compare Match west hawwe (de ynstellings fan COM0x [1: 0] bits bepale oft de OC0x-pin is ynsteld, wiske of ynskeakele).

Fergelykje Match Blocking troch TCNT0 Skriuw

Alle CPU-skriuwbedriuwen nei it TCNT0-register sille alle Compare Match blokkearje dy't foarkomme yn 'e folgjende timerklokzyklus, sels as de timer wurdt stoppe. Mei dizze funksje kin OCR0x inisjalisearre wurde nei deselde wearde as TCNT0 sûnder in ûnderbrekking te aktivearjen as de klok Timer / teller ynskeakele is.

Mei help fan 'e útfierferlykjende ienheid

Sûnt it skriuwen fan TCNT0 yn elke modus fan operaasje sil alle Compare Matches blokkearje foar ien timerkloksyklus, binne d'r risiko's belutsen by it wizigjen fan TCNT0 by it brûken fan de Output Compare Unit, ûnôfhinklik fan oft de Timer / Teller draait of net. As de wearde skreaun oan TCNT0 is gelyk oan de OCR0x-wearde, sil de fergelykjende oerienkomst wurde mist, wat resulteart yn ferkearde golffoarminggeneraasje. Lykwols skriuwe de TCNT0-wearde net gelyk oan BOTTOM as de teller telt.

De opset fan 'e OC0x moat wurde útfierd foardat it Data Direction Register ynsteld wurdt foar de útfier fan' e pinnepin. De maklikste manier om de OC0x-wearde yn te stellen is it brûken fan 'e Force-útfier-fergeliking (FOC0x) strobebits yn' e normale modus. De OC0x-registers hâlde har wearden sels as se wizigje tusken Waveform Generation-modi.

Hâld der rekken mei dat de COM0x [1: 0] bits net dûbel wurde buffered tegearre mei de ferlykjende wearde. It feroarjen fan de COM0x [1: 0] bits sil fuortendaliks yngean.

Fergelykje Match Output Unit

De bits ferlykje útfiermodus (COM0x [1: 0]) hawwe twa funksjes. De Waveform Generator brûkt de COM0x [1: 0] bits foar it definiearjen fan de steat Utgongsfergelyk (OC0x) by de folgjende Compare Match. Ek kontrolearje de COM0x [1: 0] bits de OC0x pinútfierboarne. figuer 11-6 lit in ferienfâldige skema sjen fan 'e logika dy't beynfloede is troch de ynstelling COM0x [1: 0]. De I / O-registers, I / O-bits, en I / O-pins yn 'e figuer binne fet. Allinich de dielen fan 'e algemiene I / O Port Control Registers (DDR en PORT) dy't wurde beynfloede troch de COM0x [1: 0] bits wurde werjûn. As jo ​​ferwize nei de OC0x-steat, is de referinsje foar it ynterne OC0x-register, net de OC0x-pin. As in systeem reset foarkomt, wurdt it OC0x-register opnij ynsteld op "0".

As OC0A / OC0B ferbûn is mei de I / O-pin, hinget de funksje fan 'e COM0A [1: 0] / COM0B [1: 0] bits ôf fan' e WGM0 [2: 0] bit ynstelling. Tabel 11-2 toant de COM0x [1: 0] bitfunksjonaliteit as de WGM0 [2: 0] bits binne ynsteld op in normale of CTC-modus (net-PWM).

Tabel 11-2. Ferlykje Output Mode, non-PWM Mode

COM0A1 COM0B1 COM0A0 COM0B0 Beskriuwing
0 0 Normale havenoperaasje, OC0A / OC0B loskeppele.
0 1 Wikselje OC0A / OC0B op Compare Match
1 0 Wiskje OC0A / OC0B oer fergelykje oerienkomst
1 1 Stel OC0A / OC0B yn op Fergelykje oerienkomst

Tabel 11-3 toant de COM0x [1: 0] bitfunksjonaliteit as de WGM0 [2: 0] bits binne ynsteld op snelle PWM-modus.

Tabel 11-3. Fergelykje útfiermodus, rappe PWM-modus(1)

COM0A1 COM0B1 COM0A0 COM0B0 Beskriuwing
0 0 Normale havenoperaasje, OC0A / OC0B loskeppele.
0 1 Reservearre
1 0 Clear OC0A / OC0B op Compare Match, set OC0A / OC0B op BOTTOM (modus net omkearend)
1 1 Set OC0A / OC0B op Compare Match, wiskje OC0A / OC0B by BOTTOM (omkearmodus)

Opmerking: In spesjaal gefal komt foar as OCR0A of OCR0B lyk oan TOP is en COM0A1/COM0B1 is ynsteld. Yn dit gefal wurdt de fergelikingswedstriid negearre, mar de set of dúdlik wurdt dien op BOTTOM. Sjen "Fast PWM Mode" op side 73 foar mear details.

Tabel 11-4 toant de COM0x [1: 0] bitfunksjonaliteit as de WGM0 [2: 0] bits binne ynsteld op faze korrekte PWM-modus.

Tabel 11-4. Ferlykje Output Mode, Fase Correct PWM Mode(1)

COM0A1 COM0B1 COM0A0 COM0B0 Beskriuwing
0 0 Normale havenoperaasje, OC0A / OC0B loskeppele.
0 1 Reservearre
1 0 Wiskje OC0A / OC0B by fergelykje oerienkomst by optellen. Stel OC0A / OC0B yn op Ferlykje oerienkomst by del-tellen.
1 1 Stel OC0A / OC0B yn op Ferlykje oerienkomst by optellen. Wiskje OC0A / OC0B op Compare Match by del-tellen.

Opmerking: 1. In spesjaal gefal bart as OCR0A of OCR0B is lyk oan TOP en COM0A1/COM0B1 is ynsteld. Yn dit gefal wurdt de Compare Match negearre, mar de set of clear wurdt dien op TOP. Sjen "Faze korrekte PWM-modus" op side 74 foar mear details.

Bits 3: 2 - Res: Reserveare bits

Dizze bits binne reserveare bits yn 'e ATtiny25 / 45/85 en sille altyd as nul lêze.

Bits 1: 0 - WGM0 [1: 0]: Waveform Generation Mode

Yn kombinaasje mei it WGM02-bit fûn yn it TCCR0B-register, kontrolearje dizze bits de telsekwinsje fan 'e teller, de boarne foar maksimale (TOP) tellerwearde, en hokker type golffoarmgeneraasje te brûken wurdt, sjoch Tabel 11-5, Bedriuwsmodi stipe troch de Timer / Counter-ienheid binne: Normale modus (teller), Clear Timer by fergelykjen (CTC) -modus, en twa soarten pulsmodulaasjemodusjes (PWM) -modi (sjoch "Bedriuwsmodi" op side 71).

Tabel 11-5. Waveform Generation Mode Bit Beskriuwing

Wize WGM 02 WGM 01 WGM 00 Timer / teller modus fan operaasje TOP Update fan OCRx by TOV Flagge ynsteld op
0 0 0 0 Normaal 0xff Daliks MAX(1)
1 0 0 1 PWM, faze korrekt 0xff TOP BOAIEM(2)
2 0 1 0 CTC OCRA Daliks MAX(1)
3 0 1 1 Snelle PWM 0xff BOAIEM(2) MAX(1)
4 1 0 0 Reservearre
5 1 0 1 PWM, faze korrekt OCRA TOP BOAIEM(2)
6 1 1 0 Reservearre
7 1 1 1 Snelle PWM OCRA BOAIEM(2) TOP

Bit 7 - FOC0A: Fergelykje mei krêftútfier A

It FOC0A-bit is allinich aktyf as de WGM-bits in net-PWM-modus oantsjutte.

Om lykwols te garandearjen fan kompatibiliteit mei takomstige apparaten, moat dit bit op nul wurde ynsteld as TCCR0B wurdt skreaun by it operearjen yn PWM-modus. By it skriuwen fan in logyske oan it FOC0A-bit wurdt in direkte Compare Match twongen op 'e Waveform Generation-ienheid. De OC0A-útfier wurdt feroare neffens de ynstelling fan COM0A [1: 0] bits. Tink derom dat it FOC0A-bit wurdt ymplementeare as in strobe. Dêrom is it de wearde oanwêzich yn 'e bits fan COM0A [1: 0] dy't it effekt bepaalt fan' e twongen fergeliking.

In FOC0A-strobe genereart gjin ûnderbrekking, en sil de timer noch net wiskje yn CTC-modus mei OCR0A as TOP. It FOC0A-bit wurdt altyd lêzen as nul.

Bit 6 - FOC0B: Ferlykje krêftútfier B

It FOC0B-bit is allinich aktyf as de WGM-bits in net-PWM-modus oantsjutte.

Om lykwols te garandearjen fan kompatibiliteit mei takomstige apparaten, moat dit bit op nul wurde ynsteld as TCCR0B wurdt skreaun by it operearjen yn PWM-modus. By it skriuwen fan in logyske oan it FOC0B-bit wurdt in direkte Compare Match twongen op 'e Waveform Generation-ienheid. De OC0B-útfier wurdt feroare neffens de ynstelling fan COM0B [1: 0] bits. Tink derom dat it FOC0B-bit wurdt ymplementeare as in strobe. Dêrom is it de wearde oanwêzich yn 'e COM0B [1: 0] bits dy't it effekt bepaalt fan' e twongen fergeliking.

In FOC0B-strobe genereart gjin ûnderbrekking, en sil de timer noch net wiskje yn CTC-modus mei OCR0B as TOP.

It FOC0B-bit wurdt altyd lêzen as nul.

Bits 5: 4 - Res: Reserveare bits

Dizze bits binne reserveare bits yn 'e ATtiny25 / 45/85 en sille altyd as nul lêze.

Bit 3 - WGM02: Waveform Generation Mode

Sjoch de beskriuwing yn 'e “TCCR0A - Timer / Counter Control Register A” op side 77.

Bits 2: 0 - CS0 [2: 0]: Klok selektearje

De trije klok selektearje bits selektearje de klokboarne om te brûken troch de Timer / Teller.

Tabel 11-6. Klok Selektearje Bit Beskriuwing

CS02 CS01 CS00 Beskriuwing
0 0 0 Gjin klokboarne (Timer / teller stoppe)
0 0 1 clkI/O/(Gjin foarskalearring)
0 1 0 clkI/O/8 (fan foarskaler)
0 1 1 clkI/O/64 (fan foarskaler)
1 0 0 clkI/O/256 (fan foarskaler)
1 0 1 clkI/O/1024 (fan foarskaler)
1 1 0 Eksterne klokboarne op T0-pin. Klok op fallende râne.
1 1 1 Eksterne klokboarne op T0-pin. Klok op opkommende râne.

As eksterne pinmodi wurde brûkt foar de Timer / Counter0, sille oergongen op 'e T0-pin de teller klokje, sels as de pin is konfigureare as útfier. Dizze funksje makket software kontrôle fan it tellen.

Ienheden tellerje en fergelykje

De algemiene operaasje Timer / Counter1 wurdt beskreaun yn 'e asynchrone modus en de operaasje yn' e syngroanmodus wurdt allinich neamd as d'r ferskillen binne tusken dizze twa modi. figuer 12-2 lit sjen Timer / Counter 1 syngronisaasjeregister blokdiagram en syngronisaasje fertraging tusken registers. Tink derom dat alle details oer klokken net yn 'e figuer werjûn wurde. De Timer / Counter1-registerwearden geane troch de ynterne syngronisaasjeregisters, dy't de fertraging fan de ynfier-syngronisaasje feroarsaakje, foardat se ynfloed hawwe op de telleroperaasje. De registers TCCR1, GTCCR, OCR1A, OCR1B, en OCR1C kinne direkt weromlêzen wurde nei it skriuwen fan it register. De weromlêzen wearden wurde fertrage foar it Timer / Counter1 (TCNT1) register en flaggen (OCF1A, OCF1B, en TOV1), fanwegen de syngronisaasje fan 'e ynfier en útfier.

De Timer / Counter1 hat in hege resolúsje en in hege justysjegebrûk mei de legere prescaling-kânsen. It kin ek twa krekte, hege snelheid, 8-bit Pulse Width Modulators stypje mei kloksnelheden oant 64 MHz (of 32 MHz yn Low Speed ​​Mode). Yn dizze modus tsjinje Timer / teller1 en de útfierferlykjende registers as dûbele stand-alone PWM's mei net-oerlaapjende net-omkearde en omkearde útgongen. Ferwize nei side 86 foar in detaillearre beskriuwing oer dizze funksje. Likegoed meitsje de kânsen foar hege prescaling dizze ienheid nuttich foar funksjes mei legere snelheid as krekte timingfunksjes mei seldsume aksjes.

figuer 12-2. Timer / Teller 1 Syngronisaasje Register Block Diagram.

Timer / teller1 en de prescaler kinne de CPU útfiere fan elke klokboarne, wylst de prescaler wurket op 'e rappe 64 MHz (of 32 MHz yn Low Speed ​​Mode) PCK-klok yn' e asynchrone modus.

Tink derom dat de systeemklokfrekwinsje leger moat wêze dan ien tredde fan 'e PCK-frekwinsje. It syngronisaasjemeganisme fan 'e asynchrone Timer / Counter1 hat teminsten twa rânen fan' e PCK nedich as de systeemklok heech is. As de frekwinsje fan 'e systeemklok te heech is, is it in risiko dat gegevens of kontrôle wearden ferlern gean.

De folgjende figuer 12-3 lit it blokdiagram foar Timer / Counter1 sjen.

Tabel 12-1. Fergelykje Mode Selektearje yn PWM Mode

KOM1x1 KOM1x0 Effekt op útfier fergelykje pins
0 0 OC1x net ferbûn. OC1x net ferbûn.
0 1 OC1x wiske op fergelykjen fan wedstriid. Set wannear't TCNT1 = $ 00. OC1x ynsteld op fergelykjen fan wedstriid. Wist as TCNT1 = $ 00.
1 0 OC1x wiske op fergelykjen fan wedstriid. Set as TCNT1 = $ 00. OC1x net ferbûn.
1 1 OC1x Set op fergelykjen fan wedstriid. Wist as TCNT1 = $ 00. OC1x net ferbûn.

ADC Skaaimerken

Tabel 21-8. ADC-skaaimerken, kanalen mei ien einige. TA = -40°C oant +85°C

Symboal Parameter Betingst Min Typ Max Units
Resolúsje 10 Bits
Absolute krektens (Ynklusyf INL-, DNL- en kwantisearrings-, winst- en offsetfouten) VREF = 4V, VCC = 4V,

ADC klok = 200 kHz

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

ADC klok = 1 MHz

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

ADC klok = 200 kHz

Ruisreduksjemodus

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

ADC klok = 1 MHz

Ruisreduksjemodus

2.5 LSB
Yntegraal net-linigens (INL) (Krektens nei kompensaasje en kalibraasje fan winst) VREF = 4V, VCC = 4V,

ADC klok = 200 kHz

1 LSB
Differinsjoneel net-linigens (DNL) VREF = 4V, VCC = 4V,

ADC klok = 200 kHz

0.5 LSB
Fout flater VREF = 4V, VCC = 4V,

ADC klok = 200 kHz

2.5 LSB
Offsetflater VREF = 4V, VCC = 4V,

ADC klok = 200 kHz

1.5 LSB
Konverzje Tiid Fergees konversaasje rint 14 280 µs
Klokfrekwinsje 50 1000 kHz
VIN Ynfier Voltage GND VREF V
Ynput bânbreedte 38.4 kHz
AREF Eksterne referinsje Voltage 2.0 VCC V
VINT Ynterne Voltage Referinsje 1.0 1.1 1.2 V
Ynterne 2.56V Referinsje (1) VCC > 3.0V 2.3 2.56 2.8 V
RREF 32
REIN Analoge ynputwjerstân 100
ADC Utfier 0 1023 LSB

Opmerking: 1. Wearden binne allinich rjochtlinen.

Tabel 21-9. ADC-skaaimerken, differinsjaal kanalen (unipolêre modus). TA = -40°C oant +85°C

Symboal Parameter Betingst Min Typ Max Units
Resolúsje Winst = 1x 10 Bits
Winst = 20x 10 Bits
Absolute krektens (Ynklusyf INL, DNL, ​​en

Kwantisaasje-, winst- en offsetfouten)

Winst = 1x

VREF = 4V, VCC = 5V

ADC klok = 50 - 200 kHz

10.0 LSB
Winst = 20x

VREF = 4V, VCC = 5V

ADC klok = 50 - 200 kHz

20.0 LSB
Yntegraal net-linigens (INL) (Nauwkeurigens nei offset- en winstkalibraasje) Winst = 1x

VREF = 4V, VCC = 5V

ADC klok = 50 - 200 kHz

4.0 LSB
Winst = 20x

VREF = 4V, VCC = 5V

ADC klok = 50 - 200 kHz

10.0 LSB
Fout flater Winst = 1x 10.0 LSB
Winst = 20x 15.0 LSB
Offsetflater Winst = 1x

VREF = 4V, VCC = 5V

ADC klok = 50 - 200 kHz

3.0 LSB
Winst = 20x

VREF = 4V, VCC = 5V

ADC klok = 50 - 200 kHz

4.0 LSB
Konverzje Tiid Fergees konversaasje rint 70 280 µs
Klokfrekwinsje 50 200 kHz
VIN Ynfier Voltage GND VCC V
VDIFF Input Differinsjaal Voltage VREF / Winst V
Ynput bânbreedte 4 kHz
AREF Eksterne referinsje Voltage 2.0 VCC - 1.0 V
VINT Ynterne Voltage Referinsje 1.0 1.1 1.2 V
Ynterne 2.56V Referinsje (1) VCC > 3.0V 2.3 2.56 2.8 V
RREF Referinsje Input Ferset 32
REIN Analoge ynputwjerstân 100
ADC Konverzje Utfier 0 1023 LSB

Opmerking: Wearden binne allinich rjochtlinen.

Tabel 21-10. ADC-skaaimerken, differinsjaal kanalen (bipolêre modus). TA = -40°C oant +85°C

Symboal Parameter Betingst Min Typ Max Units
Resolúsje Winst = 1x 10 Bits
Winst = 20x 10 Bits
Absolute krektens (Ynklusyf INL, DNL, ​​en

Kwantisaasje-, winst- en offsetfouten)

Winst = 1x

VREF = 4V, VCC = 5V

ADC klok = 50 - 200 kHz

8.0 LSB
Winst = 20x

VREF = 4V, VCC = 5V

ADC klok = 50 - 200 kHz

8.0 LSB
Yntegraal net-linigens (INL) (Nauwkeurigens nei offset- en winstkalibraasje) Winst = 1x

VREF = 4V, VCC = 5V

ADC klok = 50 - 200 kHz

4.0 LSB
Winst = 20x

VREF = 4V, VCC = 5V

ADC klok = 50 - 200 kHz

5.0 LSB
Fout flater Winst = 1x 4.0 LSB
Winst = 20x 5.0 LSB
Offsetflater Winst = 1x

VREF = 4V, VCC = 5V

ADC klok = 50 - 200 kHz

3.0 LSB
Winst = 20x

VREF = 4V, VCC = 5V

ADC klok = 50 - 200 kHz

4.0 LSB
Konverzje Tiid Fergees konversaasje rint 70 280 µs
Klokfrekwinsje 50 200 kHz
VIN Ynfier Voltage GND VCC V
VDIFF Input Differinsjaal Voltage VREF / Winst V
Ynput bânbreedte 4 kHz
AREF Eksterne referinsje Voltage 2.0 VCC - 1.0 V
VINT Ynterne Voltage Referinsje 1.0 1.1 1.2 V
Ynterne 2.56V Referinsje (1) VCC > 3.0V 2.3 2.56 2.8 V
RREF Referinsje Input Ferset 32
REIN Analoge ynputwjerstân 100
ADC Konverzje Utfier -512 511 LSB

Ynstruksje Set Gearfetting

Mnemonics Operanders Beskriuwing Operaasje Flaggen #Klokken
ARITMETISKE EN LOGISKE YNSTRUKSJES
ADD Rd, Rr Twa registers tafoegje Rd ← Rd + Rr Z, C, N, V, H 1
ADC Rd, Rr Tafoegje mei Carry twa registers Rd ← Rd + Rr + C Z, C, N, V, H 1
ADIW Rdl, K Foegje fuortendaliks ta oan Word Rdh:Rdl ← Rdh:Rdl + K Z, C, N, V, S 2
SUB Rd, Rr Lûk twa registers ôf Rd ← Rd – Rr Z, C, N, V, H 1
IK GIET OP Rd, K. Lûk Constant ôf fan Register Rd ← Rd – K Z, C, N, V, H 1
SBC Rd, Rr Lûk ôf mei twa registers Rd ← Rd – Rr – C Z, C, N, V, H 1
SBCI Rd, K. Lûke mei Carry Constant fan Reg. Rd ← Rd – K – C Z, C, N, V, H 1
SBIW Rdl, K Lûk fuortendaliks fan Word ôf Rdh:Rdl ← Rdh:Rdl – K Z, C, N, V, S 2
EN Rd, Rr Logyske EN registers Rd ← Rd ∙ Rr Z, N, V. 1
ANDI Rd, K. Logysk EN Registrearje en konstant Rd ← Rd ∙ K Z, N, V. 1
OR Rd, Rr Logyske OR registers Rd ← Rd v Rr Z, N, V. 1
ORI Rd, K. Logysk OF Registrearje en konstant Rd ← Rd v K Z, N, V. 1
EOR Rd, Rr Eksklusyf OR registers Rd ← Rd ⊕ Rr Z, N, V. 1
COM Rd Ien fan oanfolling Rd ← 0xFF − Rd Z, C, N, V. 1
NEG Rd Twa's komplement Rd ← 0x00 − Rd Z, C, N, V, H 1
SBR Rd, K Set bit (en) yn registrearje Rd ← Rd v K Z, N, V. 1
CBR Rd, K Clear Bit (s) yn Register Rd ← Rd ∙ (0xFF – K) Z, N, V. 1
INC Rd Ferheging Rd ← Rd + 1 Z, N, V. 1
DEC Rd Ferklearring Rd ← Rd − 1 Z, N, V. 1
TST Rd Test foar nul as minus Rd ← Rd ∙ Rd Z, N, V. 1
CLR Rd Register wiskje Rd ← Rd ⊕ Rd Z, N, V. 1
SER Rd Registrearje ynstelle Rd ← 0xFF Gjin 1
TAKYNSTRUKSJES
RJMP k Relative sprong PC ← PC + k + 1 Gjin 2
IJMP Yndirekte Gean nei (Z) PC ← Z Gjin 2
RCALL k Relative subroutine-oprop PC ← PC + k + 1 Gjin 3
ICALL Yndirekte oprop nei (Z) PC ← Z Gjin 3
RET Subroutine Return PC ← STACK Gjin 4
RETI Underbrekke Return PC ← STACK I 4
CPSE Rd, Rr Fergelykje, oerslaan as gelyk as (Rd = Rr) PC ← PC + 2 of 3 Gjin 1/2/3
CP Rd, Rr Ferlykje Rd - Rr Z, N, V, C, H 1
CPC Rd, Rr Fergelykje mei Carry Rd - Rr - C Z, N, V, C, H 1
CPI Rd, K Fergelykje registrearje mei fuortendaliks Rd - K Z, N, V, C, H 1
SBRC rr, b Oerslaan as bit yn register wiske as (Rr(b)=0) PC ← PC + 2 of 3 Gjin 1/2/3
SBRS rr, b Oerslaan as bit yn register is ynsteld as (Rr(b)=1) PC ← PC + 2 of 3 Gjin 1/2/3
SBIC P, b Oerslaan as bit yn I / O-register wiske as (P(b)=0) PC ← PC + 2 of 3 Gjin 1/2/3
SBIS P, b Oerslaan as bit yn I / O-register is ynsteld as (P(b)=1) PC ← PC + 2 of 3 Gjin 1/2/3
BRBS s, k Tûke as Status Flagge ynsteld as (SREG(s) = 1) dan PC←PC+k + 1 Gjin 1/2
BRBC s, k Tak as statusflagge wiske as (SREG(s) = 0) dan PC←PC+k + 1 Gjin 1/2
BREQ k Branch as Equal as (Z = 1) dan PC ← PC + k + 1 Gjin 1/2
BRNE k Branch as Net gelyk as (Z = 0) dan PC ← PC + k + 1 Gjin 1/2
BRCS k Tûke as Carry Set as (C = 1) dan PC ← PC + k + 1 Gjin 1/2
BRCC k Tûke as Carry Cleared as (C = 0) dan PC ← PC + k + 1 Gjin 1/2
BRSH k Tak as itselde as heger as (C = 0) dan PC ← PC + k + 1 Gjin 1/2
BRLO k Tak as leger as (C = 1) dan PC ← PC + k + 1 Gjin 1/2
BRMI k Tak as Minus as (N = 1) dan PC ← PC + k + 1 Gjin 1/2
BRPL k Tak as Plus as (N = 0) dan PC ← PC + k + 1 Gjin 1/2
BRGE k Tak as grutter as gelyk, ûndertekene as (N ⊕ V= 0) dan PC ← PC + k + 1 Gjin 1/2
BRLT k Tak as minder dan nul, Undertekene as (N ⊕ V= 1) dan PC ← PC + k + 1 Gjin 1/2
BRHS k Tûke as Half Carry Flag Set as (H = 1) dan PC ← PC + k + 1 Gjin 1/2
BRHC k Tûke as Half Carry Flag wiske as (H = 0) dan PC ← PC + k + 1 Gjin 1/2
BRTS k Tûke as T Flagge set as (T = 1) dan PC ← PC + k + 1 Gjin 1/2
BRTC k Tûke as T Flagge wiske as (T = 0) dan PC ← PC + k + 1 Gjin 1/2
BRVS k Tûke as Overflow Flag is ynsteld as (V = 1) dan PC ← PC + k + 1 Gjin 1/2
BRVC k Tûke as oerstreamingsflagge wiske is as (V = 0) dan PC ← PC + k + 1 Gjin 1/2
BRIE k Tûke as ûnderbrekke ynskeakele as (I = 1) dan PC ← PC + k + 1 Gjin 1/2
BRID k Tûke as ûnderbrekken útskeakele is as (I = 0) dan PC ← PC + k + 1 Gjin 1/2
BIT EN BIT-TEST ynstruksjes
SBI P, b Bit ynstelle yn I / O-register I/O(P,b) ← 1 Gjin 2
CBI P, b Bit wiskje yn I / O-register I/O(P,b) ← 0 Gjin 2
LSL Rd Logyske ferskowing lofts Rd(n+1) ← Rd(n), Rd(0) ← 0 Z, C, N, V. 1
LSR Rd Logyske Shift Rjochts Rd(n) ← Rd(n+1), Rd(7) ← 0 Z, C, N, V. 1
ROL Rd Lofts troch draaie draaie Rd(0)←C,Rd(n+1)← Rd(n),C←Rd(7) Z, C, N, V. 1
ROR Rd Rjochts troch draaie Rd(7)←C,Rd(n)← Rd(n+1),C←Rd(0) Z, C, N, V. 1
ASR Rd Rekenkundige ferskowing rjochts Rd(n) ← Rd(n+1), n=0..6 Z, C, N, V. 1
Mnemonics Operanders Beskriuwing Operaasje Flaggen #Klokken
SWAP Rd Ruilje Nibbles Rd(3..0)←Rd(7..4),Rd(7..4)←Rd(3..0) Gjin 1
BSET s Flagge set SREG(s) ← 1 SREG (s) 1
BCLR s Flagge dúdlik SREG(s) ← 0 SREG (s) 1
BST rr, b Bitwinkel fan registrearje nei T T ← Rr(b) T 1
BLD Rd, b Bitlading fan T nei Register Rd(b) ← T Gjin 1
SEC Set Carry yn C ← 1 C 1
CLC Clear Carry C ← 0 C 1
SEN Stel negative flagge yn N ← 1 N 1
CLN Wiskje negative flagge N ← 0 N 1
SEZ Stel nul flagge yn Z ← 1 Z 1
CLZ Nul flagge wiskje Z ← 0 Z 1
SEI Global Interrupt ynskeakelje ik ← 1 I 1
CLI Global Interrupt Utskeakelje ik ← 0 I 1
SES Stel ûndertekene testflagge yn S ← 1 S 1
CLS Wiskje ûndertekene testflagge S ← 0 S 1
SEV Twos oanfoljende oerstreaming ynstelle. V ← 1 V 1
CLV Wiskje Twos Oanfoljende oerstreaming V ← 0 V 1
SET Set T yn SREG T ← 1 T 1
CLT Wiskje T yn SREG T ← 0 T 1
SEH Set Half Carry Flag yn SREG H ← 1 H 1
CLH Wiskje Half Carry Flag yn SREG H ← 0 H 1
YNSTRUKSJES FAN DATA OVERFERDING
MOV Rd, Rr Ferhuze tusken registers Rd ← Rr Gjin 1
MOVW Rd, Rr Registrearje wurd kopiearje Rd+1:Rd ← Rr+1:Rr Gjin 1
LDI Rd, K. Laad direkt Rd ← K Gjin 1
LD Rd, X Yndirekt lade Rd ← (X) Gjin 2
LD Rd, X + Laad yndirekt en Post-Inc. Rd ← (X), X ← X + 1 Gjin 2
LD Rd, - X Yndirekt lade en foar des. X ← X – 1, Rd ← (X) Gjin 2
LD Rde, Y Yndirekt lade Rd ← (Y) Gjin 2
LD Rd, Y + Laad yndirekt en Post-Inc. Rd ← (Y), Y ← Y + 1 Gjin 2
LD Rd, - Y Yndirekt lade en foar des. Y ← Y – 1, Rd ← (Y) Gjin 2
LDD Rd, Y + q Laad yndirekt mei ferpleatsing Rd ← (Y + q) Gjin 2
LD Rd, Z Yndirekt lade Rd ← (Z) Gjin 2
LD Rd, Z + Laad yndirekt en Post-Inc. Rd ← (Z), Z ← Z+1 Gjin 2
LD Rd, -Z Yndirekt lade en foar des. Z ← Z – 1, Rd ← (Z) Gjin 2
LDD Rd, Z + q Laad yndirekt mei ferpleatsing Rd ← (Z + q) Gjin 2
LDS Rd, k Laad direkt fan SRAM Rd ← (k) Gjin 2
ST X, RJ Indirekte winkel (X) ← Rr Gjin 2
ST X +, Rr Indirekte winkel en post-inc. (X) ← Rr, X ← X + 1 Gjin 2
ST - X, Rr Bewarje yndirekt en foarôfgeand oan des. X ← X – 1, (X) ← Rr Gjin 2
ST Jo, Rr Indirekte winkel (Y) ← Rr Gjin 2
ST Y +, Rr Indirekte winkel en post-inc. (Y) ← Rr, Y ← Y + 1 Gjin 2
ST - Y, Rr Bewarje yndirekt en foarôfgeand oan des. Y ← Y – 1, (Y) ← Rr Gjin 2
STD Y + q, Rr Bewarje yndirekt mei ferpleatsing (Y + q) ← Rr Gjin 2
ST Z, RJ Indirekte winkel (Z) ← Rr Gjin 2
ST Z +, Rr Indirekte winkel en post-inc. (Z) ← Rr, Z ← Z + 1 Gjin 2
ST -Z, RJ Bewarje yndirekt en foarôfgeand oan des. Z ← Z – 1, (Z) ← Rr Gjin 2
STD Z + q, Rr Bewarje yndirekt mei ferpleatsing (Z + q) ← Rr Gjin 2
STS k, rju Bewarje direkt nei SRAM (k) ← Rr Gjin 2
LPM Laad programma ûnthâld R0 ← (Z) Gjin 3
LPM Rd, Z Laad programma ûnthâld Rd ← (Z) Gjin 3
LPM Rd, Z + Laad programma-ûnthâld en Post-Inc Rd ← (Z), Z ← Z+1 Gjin 3
SPM Bewarje programma ûnthâld (z) ← R1:R0 Gjin
IN Rd, P. Yn haven Rd ← P Gjin 1
ÚT P, RJ Ut haven P ← Rr Gjin 1
TRIUWE Rr Push registrearje op stapel STACK ← Rr Gjin 2
POP Rd Popregister fan stapel Rd ← STACK Gjin 2
MCU CONTROL YNSTRUKSJES
NOP Gjin operaasje Gjin 1
SLIEP Sliep (sjoch spesifike beskriuwing foar sliepfunksje) Gjin 1
WDR Resolúsje fan watchdog (sjoch spesifike beskriuwing foar WDR / timer) Gjin 1
BREKKE Brekke
Faasje (MHz) (1) Supply Voltage (V) Temperatuerberik Pakket (2) Bestelkoade (3)
10 1.8 – 5.5 Yndustrieel

(-40 ° C oant + 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 Yndustrieel

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

Notysjes: 1. Foar snelheid tsjin oanbod voltage, sjo seksje 21.3 "Faasje" op side 163.

Alle pakketten binne Pb-frij, halide-frij en folslein grien en se foldogge oan de Jeropeeske rjochtline foar beheining fan gefaarlike stoffen (RoHS).

Koade yndikatoaren

H: NiPdAu lead finish

U: mat tin

R: tape & reel

Dizze apparaten kinne ek wurde levere yn waferfoarm. Nim dan kontakt op mei jo lokale Atmel-ferkeapkantoar foar detaillearre bestellingsynformaasje en minimale hoemannichten.

Erratum

Errata ATtiny25

De revisjebrief yn dizze paragraaf ferwiist nei de revyzje fan it ATtiny25-apparaat.

Rev D - F

Gjin bekende errata.

Rev B - C.

EEPROM lêzen kin mislearje by lege oanbod voltage / lege klokfrekwinsje

EEPROM lêzen kin mislearje by lege oanbod voltage / lege klokfrekwinsje

Besykje EEPROM te lêzen op lege klokfrekwinsjes en/as lege oanbod voltage kin resultearje yn ûnjildige gegevens.

Probleem Fix / oplossing

Brûk de EEPROM net as de klokfrekwinsje ûnder 1MHz is en oanbod voltage is ûnder 2V. As bestjoeringsfrekwinsje net boppe 1MHz kin wurde ferhege, leverje dan foltage moat mear dan 2V wêze. Lykwols, as oanbod voltage kin net boppe 2V wurde ferhege, dan moat de bestjoeringsfrekwinsje mear dan 1MHz wêze.

Bekend is dat dizze funksje temperatuerôfhinklik is, mar it is net karakterisearre. Rjochtlinen wurde allinich jûn foar keamertemperatuer.

Rev A

Net sampliede.

Errata ATtiny45

De revisjebrief yn dizze paragraaf ferwiist nei de revyzje fan it ATtiny45-apparaat.

Rev F - G

Gjin bekende errata

Rev D - E

EEPROM lêzen kin mislearje by lege oanbod voltage / lege klokfrekwinsje

EEPROM lêzen kin mislearje by lege oanbod voltage / lege klokfrekwinsje

Besykje EEPROM te lêzen op lege klokfrekwinsjes en/as lege oanbod voltage kin resultearje yn ûnjildige gegevens.

Probleem Fix / oplossing

Brûk de EEPROM net as de klokfrekwinsje ûnder 1MHz is en oanbod voltage is ûnder 2V. As bestjoeringsfrekwinsje net boppe 1MHz kin wurde ferhege, leverje dan foltage moat mear dan 2V wêze. Lykwols, as oanbod voltage kin net boppe 2V wurde ferhege, dan moat de bestjoeringsfrekwinsje mear dan 1MHz wêze.

Bekend is dat dizze funksje temperatuerôfhinklik is, mar it is net karakterisearre. Rjochtlinen wurde allinich jûn foar keamertemperatuer.

Rev B - C.

PLL net op slot

EEPROM lêzen fan tapassingskoade wurket net yn Lock Bit Mode 3

EEPROM lêzen kin mislearje by lege oanbod voltage / lege klokfrekwinsje

Timerteller 1 PWM-útfiergeneraasje op OC1B- XOC1B wurket net goed

PLL net op slot

As op frekwinsjes ûnder 6.0 MHz, sil de PLL net beskoattelje

Probleemoplossing / oplossing

As jo ​​de PLL brûke, rinne op 6.0 MHz of heger.

EEPROM lêzen fan tapassingskoade wurket net yn Lock Bit Mode 3

As de Memory Lock Bits LB2 en LB1 binne programmeare yn modus 3, wurket EEPROM lêzen net fanút de tapassingskoade.

Probleem Fix / Wurkje om

Stel Lock Mode Protection Mode 3 net yn as de tapassingskoade fan EEPROM lêze moat.

EEPROM lêzen kin mislearje by lege oanbod voltage / lege klokfrekwinsje

Besykje EEPROM te lêzen op lege klokfrekwinsjes en/as lege oanbod voltage kin resultearje yn ûnjildige gegevens.

Probleem Fix / oplossing

Brûk de EEPROM net as de klokfrekwinsje ûnder 1MHz is en oanbod voltage is ûnder 2V. As bestjoeringsfrekwinsje net boppe 1MHz kin wurde ferhege, leverje dan foltage moat mear dan 2V wêze. Lykwols, as oanbod voltage kin net boppe 2V wurde ferhege, dan moat de bestjoeringsfrekwinsje mear dan 1MHz wêze.

Bekend is dat dizze funksje temperatuerôfhinklik is, mar it is net karakterisearre. Rjochtlinen wurde allinich jûn foar keamertemperatuer.

Timerteller 1 PWM-útfiergeneraasje op OC1B - XOC1B wurket net goed

Timerteller1 PWM-útfier OC1B-XOC1B wurket net goed. Allinich yn 't gefal as de kontrôlebits, COM1B1 en COM1B0 yn deselde modus binne as respektivelik COM1A1 en COM1A0, wurket de útfiering OC1B-XOC1B goed.

Probleem Fix / Wurkje om

De ienige oplossing is om deselde kontrôle-ynstelling te brûken op COM1A [1: 0] en COM1B [1: 0] bestjoeringsbits, sjoch tabel 14- 4 yn it gegevensblêd. It probleem is oplost foar Tiny45 rev D.

Rev A

Te heech enerzjyferbrûk fan macht

DebugWIRE ferliest kommunikaasje as ien stap yn interrupts

PLL net op slot

EEPROM lêzen fan tapassingskoade wurket net yn Lock Bit Mode 3

EEPROM lêzen kin mislearje by lege oanbod voltage / lege klokfrekwinsje

Te heech enerzjyferbrûk fan macht

Trije situaasjes sille liede ta in te hege stroomûnderbrekking. Dit binne:

In eksterne klok wurdt selekteare troch fuses, mar de I / O PORT is noch ynskeakele as útfier.

De EEPROM wurdt lêzen foardat it ynskeakeljen wurdt.

VCC is 4.5 volt of heger.

Disclaimer: De ynformaasje yn dit dokumint wurdt levere yn ferbân mei Atmel produkten. Gjin lisinsje, útdruklik of ymplisearre, troch estoppel of oars, oan in yntellektueel eigendomsrjocht wurdt ferliend troch dit dokumint of yn ferbân mei de ferkeap fan Atmel-produkten. UITSONDER SYN YN DE ATMEL-BEDINGINGEN EN BEDINGINGEN FAN DE FERKESJES LÊS OP DE ATMEL. WEBSITE, ATMEL NEEMT GEEN AANSPRAKELIJKHEID AAN EN DISCLAIMS ELKE EXPRESSE, YMPLIYTE OF STATUTORY GARANTY AT SY PRODUCTEN INKLUDERER, MAAR NET BEPERKTE TOT, DE YMPLIYTE GARANTIE FAN FERHANDELBAARHEID FOAR PARTICULERING FOAR PARTICULERING FOAR PARTICULERING. YN GEEN GEVAL SIL ATMEL AANSPRAKELIJK Wêze FOAR ELKE DIREKTE, YNDIREKT, GEVOLGLIKE, STRAFFENDE, SPESIALE OF ynsidintele skea (Ynklusyf, SONDER BEPERKING, SKADE FOAR FERLIES EN WINST, BUSINESS ONDERBREKING, OF YNFORMAASJE FAN GEBRUK FAN GEBRUK) DIT DOKUMENT, SELFS AS ATMEL RAAD GIET IS FAN DE MOOGLIKHEID FAN SOKE SKADES.

Atmel makket gjin foarstellingen of garânsjes oangeande de krektens of folsleinens fan 'e ynhâld fan dit dokumint en behâldt it rjocht foar om op elk momint wizigingen te meitsjen oan spesifikaasjes en produktbeskriuwingen sûnder notice. Atmel makket gjin tasizzing om de ynformaasje hjiryn te aktualisearjen. Behalven as spesifyk oars bepaald, binne Atmel-produkten net geskikt foar, en sille net brûkt wurde yn, automotive-applikaasjes. Atmel-produkten binne net bedoeld, autorisearre of garandearre foar gebrûk as komponinten yn applikaasjes dy't bedoeld binne om it libben te stypjen of te ûnderhâlden.

Referinsjes

Lit in reaksje efter

Jo e-mailadres sil net publisearre wurde. Ferplichte fjilden binne markearre *