Atmel

Atmel 8-bit AVR-mikrocontroller med 2/4/8K bytes programmerbar flash i systemetchip

 

Funktioner

  • Højtydende, laveffekt AVR® 8-bit mikrocontroller
  • Avanceret RISC-arkitektur
  • 120 kraftfulde instruktioner – mest enkelt ur-cyklusudførelse
  • 32 x 8 generelle arbejdsregistre
  • Fuldstændig statisk drift
  • Ikke-flygtige program- og datahukommelser
  • 2/4/8K bytes af programmerbar programhukommelse i systemet
  • Udholdenhed: 10,000 skrive/slet-cyklusser
  • 128/256/512 bytes programmerbar EEPROM i systemet
  • Udholdenhed: 100,000 skrive/slet-cyklusser
  • 128/256/512 bytes intern SRAM
  • Programmeringslås til selvprogrammering af Flash-program og EEPROM-datasikkerhed

Perifere funktioner

  • 8-bit timer/tæller med Prescaler og to PWM-kanaler
  • 8-bit højhastighedstimer/tæller med separat forskaler
  • 2 højfrekvente PWM-udgange med separate output-sammenligningsregistre
  • Programmerbar dødtidsgenerator
  • USI – Universal Serial Interface med Start Condition Detector
  • 10-bit ADC

4 enkelt afsluttede kanaler

2 differentielle ADC-kanalpar med programmerbar forstærkning (1x, 20x)

Temperaturmåling

Programmerbar Watchdog Timer med separat On-chip Oscillator

On-chip analog komparator

Specielle mikrocontrollerfunktioner

debugWIRE On-chip Debug System

Programmerbar i systemet via SPI-port

Eksterne og interne afbrydelseskilder

Lavt strømforbrug i tomgang, ADC-støjreduktion og nedlukningstilstande

Forbedret Power-on Reset Circuit

Programmerbart Brown-out detektionskredsløb

Intern kalibreret oscillator

I/O og pakker

Seks programmerbare I/O-linjer

8-benet PDIP, 8-benet SOIC, 20-polet QFN/MLF og 8-benet TSSOP (kun ATtiny45/V)

Operation Voltage
– 1.8 – 5.5 V for ATtiny25V/45V/85V
– 2.7 – 5.5V til ATtiny25/45/85

Hastighedsklasse
– 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

Industrielt temperaturområde

Lavt strømforbrug

Aktiv tilstand:

1 MHz, 1.8 V: 300 µA

Sluk-tilstand:

Pin-konfigurationer

Pinout ATtiny25/45/85 Konfiguration

Pin beskrivelser

VCC: Supply voltage.
GND: Jord.
Port B (PB5:PB0): Port B er en 6-bit tovejs I/O-port med interne pull-up-modstande (valgt for hver bit). Port B-udgangsbufferne har symmetriske drevkarakteristika med både høj synke- og kildekapacitet. Som input vil Port B-ben, der eksternt trækkes lavt, give strøm, hvis pull-up-modstandene aktiveres. Port B-benene er tredelt, når en nulstillingstilstand bliver aktiv, selvom uret ikke kører.

Port B tjener også funktionerne af forskellige specielle funktioner i ATtiny25/45/85 som anført
På ATtiny25 udveksles de programmerbare I/O-porte PB3 og PB4 (ben 2 og 3) i ATtiny15-kompatibilitetstilstand for at understøtte bagudkompatibiliteten med ATtiny15.

NULSTIL: Nulstil input. Et lavt niveau på denne ben i længere tid end minimumspulslængden vil generere en nulstilling, selvom uret ikke kører, og forudsat at nulstillingsbenet ikke er blevet deaktiveret. Den mindste pulslængde er angivet Tabel 21-4 på side 165. Kortere impulser er ikke garanteret at generere en nulstilling.

Reset-stiften kan også bruges som en (svag) I/O-pin.

Overview

ATtiny25/45/85 er en laveffekt CMOS 8-bit mikrocontroller baseret på AVR forbedret RISC arkitektur. Ved at udføre kraftfulde instruktioner i en enkelt clock-cyklus opnår ATtiny25/45/85 gennemløb, der nærmer sig 1 MIPS pr. MHz, hvilket giver systemdesigneren mulighed for at optimere strømforbruget i forhold til behandlingshastigheden.

Blokdiagram Blokdiagram

AVR-kernen kombinerer et rigt instruktionssæt med 32 almindelige arbejdsregistre. Alle 32 registre er direkte forbundet til den aritmetiske logiske enhed (ALU), hvilket gør det muligt at få adgang til to uafhængige registre i én enkelt instruktion, der udføres i én clock-cyklus. Den resulterende arkitektur er mere kodeeffektiv, samtidig med at den opnår gennemløb op til ti gange hurtigere end konventionelle CISC-mikrocontrollere.

ATtiny25/45/85 har følgende funktioner: 2/4/8K bytes programmerbar flash i systemet, 128/256/512 bytes EEPROM, 128/256/256 bytes SRAM, 6 generelle I/O-linjer, 32 generelle funktionsregistre, en 8-bit timer/tæller med sammenligningstilstande, en 8-bit højhastighedstimer/tæller, Universal Serial Interface, Interne og Eksterne Interrupts, en 4-kanals, 10-bit ADC, en programmerbar Watchdog Timer med intern Oscillator og tre softwarevalgbare strømsparetilstande. Inaktiv tilstand stopper CPU'en, mens SRAM, Timer/Tæller, ADC, Analog Comparator og Interrupt-systemet fortsætter med at fungere. Sluk-tilstand gemmer registerindholdet og deaktiverer alle chipfunktioner indtil næste afbrydelse eller hardwarenulstilling. ADC Noise Reduction-tilstand stopper CPU'en og alle I/O-moduler undtagen ADC, for at minimere koblingsstøj under ADC-konverteringer.

Enheden er fremstillet ved hjælp af Atmels højdensitets ikke-flygtige hukommelsesteknologi. On-chip ISP Flash gør det muligt at omprogrammere programhukommelsen i systemet via et SPI seriel interface, af en konventionel ikke-flygtig hukommelsesprogrammør eller af en On-chip boot-kode, der kører på AVR-kernen.

ATtiny25/45/85 AVR understøttes med en komplet pakke af program- og systemudviklingsværktøjer, herunder: C-kompilatorer, makro-samlere, programdebugger/simulatorer og evalueringssæt.

Om ressourcer

Et omfattende sæt udviklingsværktøjer, applikationsnotater og datablade er tilgængelige til download på http://www.atmel.com/avr.

Kode Eksamples

Denne dokumentation indeholder simpel kode f.eksampfiler, der kort viser, hvordan man bruger forskellige dele af enheden. Disse koder examples antage, at den del specifikke header file er inkluderet før kompilering. Vær opmærksom på, at ikke alle C-kompilerleverandører inkluderer bitdefinitioner i headeren files og afbrydelseshåndtering i C er compiler afhængig. Bekræft venligst med C-kompilerdokumentationen for flere detaljer.

For I/O-registre placeret i det udvidede I/O-kort skal instruktionerne "IN", "UD", "SBIS", "SBIC", "CBI" og "SBI" erstattes med instruktioner, der giver adgang til udvidet I /O. Typisk betyder dette "LDS" og "STS" kombineret med "SBRS", "SBRC", "SBR" og "CBR". Bemærk, at ikke alle AVR-enheder har et udvidet I/O-kort.

Kapacitiv berøringsføling

Atmel QTouch Library giver en brugervenlig løsning til berøringsfølsomme grænseflader på Atmel AVR mikrokontrollere. QTouch-biblioteket inkluderer understøttelse af QTouch®- og QMatrix®-opsamlingsmetoder.

Berøringsføling føjes nemt til enhver applikation ved at forbinde QTouch-biblioteket og bruge bibliotekets Application Programming Interface (API) til at definere berøringskanalerne og sensorerne. Applikationen kalder derefter API'et for at hente kanaloplysninger og bestemme berøringssensorens tilstand.

QTouch Library er gratis og kan downloades fra Atmel webwebsted. For mere information og detaljer om implementering henvises til QTouch Library User Guide – også tilgængelig fra Atmel webwebsted.

Dataopbevaring

Pålidelighedskvalifikationsresultater viser, at den forventede fejlrate for dataopbevaring er meget mindre end 1 PPM over 20 år ved 85°C eller 100 år ved 25°C.

AVR CPU kerne

Indledning

Dette afsnit diskuterer AVR-kernearkitekturen generelt. CPU-kernens hovedfunktion er at sikre korrekt programafvikling. CPU'en skal derfor kunne få adgang til hukommelser, udføre beregninger, styre periferiudstyr og håndtere afbrydelser.

Arkitektonisk overview Arkitektur

For at maksimere ydeevne og parallelitet bruger AVR en Harvard-arkitektur – med separate hukommelser og busser til program og data. Instruktioner i programhukommelsen udføres med en enkelt niveau pipelining. Mens en instruktion udføres, hentes den næste instruktion fra programhukommelsen. Dette koncept gør det muligt at udføre instruktioner i hver clock-cyklus. Programhukommelsen er omprogrammerbar Flash-hukommelse i systemet.

Registret med hurtig adgang File indeholder 32 x 8-bit generelle arbejdsregistre med en enkelt clock-cyklus adgangstid. Dette tillader en-cyklus Arithmetic Logic Unit (ALU) drift. I en typisk ALU-operation udlæses to operander fra registret File, handlingen udføres, og resultatet gemmes tilbage i registret File– i én urcyklus.

Seks af de 32 registre kan bruges som tre 16-bit indirekte adresseregisterpointere til datarumsadressering – hvilket muliggør effektive adresseberegninger. En af disse adressemarkører kan også bruges som adressemarkører til at slå tabeller op i Flash-programhukommelsen. Disse tilføjede funktionsregistre er 16-bit X-, Y- og Z-registret, beskrevet senere i dette afsnit.

ALU'en understøtter aritmetiske og logiske operationer mellem registre eller mellem en konstant og et register. Enkeltregisteroperationer kan også udføres i ALU. Efter en aritmetisk operation opdateres statusregistret for at afspejle information om resultatet af operationen.

Programflow leveres af betingede og ubetingede hop- og opkaldsinstruktioner, der direkte kan adressere hele adresserummet. De fleste AVR-instruktioner har et enkelt 16-bit ordformat, men der er også 32-bit instruktioner.

Under afbrydelser og subrutineopkald gemmes returadressens programtæller (PC) på stakken. Stakken er effektivt allokeret i den generelle data-SRAM, og følgelig er stak-størrelsen kun begrænset af den samlede SRAM-størrelse og brugen af ​​SRAM. Alle brugerprogrammer skal initialisere SP'en i Reset-rutinen (før underrutiner eller afbrydelser udføres). Stack Pointer (SP) er læse/skrive tilgængelig i I/O-rummet. Data-SRAM kan nemt tilgås gennem de fem forskellige adresseringstilstande, der understøttes i AVR-arkitekturen.

Hukommelsespladserne i AVR-arkitekturen er alle lineære og almindelige hukommelseskort.

Et fleksibelt afbrydelsesmodul har sine kontrolregistre i I/O-rummet med en ekstra Global Interrupt Enable-bit i statusregistret. Alle interrupts har en separat Interrupt Vector i Interrupt Vector tabellen. Interruptene har prioritet i overensstemmelse med deres Interrupt Vector-position. Jo lavere Interrupt Vector-adressen er, desto højere prioritet.

I/O-hukommelsespladsen indeholder 64 adresser til CPU-perifere funktioner som kontrolregistre, SPI og andre I/O-funktioner. I/O-hukommelsen kan tilgås direkte eller som Data Space-placeringerne efter Registrets File, 0x20 – 0x5F.

ALU – Arithmetic Logic Unit

Den højtydende AVR ALU fungerer i direkte forbindelse med alle de 32 generelle arbejdsregistre. Inden for en enkelt clock-cyklus udføres aritmetiske operationer mellem registre til generelle formål eller mellem et register og en umiddelbar. ALU-operationerne er opdelt i tre hovedkategorier - aritmetiske, logiske og bit-funktioner. Nogle implementeringer af arkitekturen giver også en kraftfuld multiplikator, der understøtter både signeret/usigneret multiplikation og brøkformat. Se afsnittet "Instruktionssæt" for en detaljeret beskrivelse.

Statusregister

Statusregistret indeholder information om resultatet af den senest udførte regneinstruktion. Denne information kan bruges til at ændre programflow for at udføre betingede operationer. Bemærk, at statusregistret opdateres efter alle ALU-operationer, som specificeret i instruktionssætreferencen. Dette vil i mange tilfælde fjerne behovet for at bruge de dedikerede sammenligningsinstruktioner, hvilket resulterer i hurtigere og mere kompakt kode.

Statusregistret gemmes ikke automatisk, når du går ind i en afbrydelsesrutine og gendannes, når du vender tilbage fra en afbrydelse. Dette skal håndteres af software.

SREG – AVR Status Register

AVR Status Register – SREG – er defineret som:

Bit 7 6 5 4 3 2 1 0
0x3F I T H S V N Z C SREG
Læs/skriv R/W R/W R/W R/W R/W R/W R/W R/W
Startværdi 0 0 0 0 0 0 0 0

Bit 7 – I: Aktiver global afbrydelse

Global Interrupt Enable-bit skal indstilles, for at interrupts kan aktiveres. Den individuelle afbrydelsesaktiveringsstyring udføres derefter i separate styreregistre. Hvis det globale afbrydelsesaktiveringsregister er ryddet, er ingen af ​​afbrydelserne aktiveret uafhængigt af de individuelle afbrydelsesaktiveringsindstillinger. I-bitten ryddes af hardware, efter at der er opstået en afbrydelse, og indstilles af RETI-instruktionen til at aktivere efterfølgende afbrydelser. I-bitten kan også indstilles og slettes af applikationen med SEI- og CLI-instruktionerne, som beskrevet i instruktionssættets reference.

Bit 6 – T: Bit Copy Storage

Bit Copy-instruktionerne BLD (Bit LoaD) og BST (Bit STore) bruger T-bitten som kilde eller destination for den opererede bit. Lidt fra et register i Registret File kan kopieres til T ved BST-instruktionen, og en bit i T kan kopieres ind i en bit i et register i registret File efter BLD-instruktionen.

Bit 5 – H: Half Carry Flag

Half Carry Flag H angiver en Half Carry i nogle aritmetiske operationer. Half Carry er nyttig i BCD-aritmetik. Se "Beskrivelse af instruktionssæt" for detaljerede oplysninger.

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

S-bitten er altid en eksklusiv eller mellem det negative flag N og de to komplementoverløbsflag V. Se "Instruktionssætbeskrivelsen" for detaljeret information.

Bit 3 – V: Two's Complement Overflow Flag

The Two's Complement Overflow Flag V understøtter to's komplementaritmetik. Se "Beskrivelse af instruktionssæt" for detaljerede oplysninger.

Bit 2 – N: Negativt flag

Det negative flag N angiver et negativt resultat i en aritmetisk eller logisk operation. Se "Beskrivelse af instruktionssæt" for detaljerede oplysninger.

Bit 1 – Z: Zero Flag

Zero Flag Z angiver et nulresultat i en aritmetisk eller logisk operation. Se "Beskrivelse af instruktionssæt" for detaljerede oplysninger.

Bit 0 – C: Bær flag

Bæreflaget C angiver en bære i en aritmetisk eller logisk operation. Se "Beskrivelse af instruktionssæt" for detaljerede oplysninger.

Register til almindelige formål File

Registeret File er optimeret til AVR Enhanced RISC instruktionssættet. For at opnå den krævede ydeevne og fleksibilitet er følgende input/output-ordninger understøttet af registret File:

En 8-bit udgangsoperand og en 8-bit resultatinput

To 8-bit udgangsoperander og en 8-bit resultatinput

To 8-bit udgangsoperander og en 16-bit resultatinput

En 16-bit udgangsoperand og en 16-bit resultatinput

Figur 4-2 viser strukturen af ​​de 32 generelle arbejdsregistre i CPU'en. Generelt formål

Som vist i Figur 4-2, tildeles hvert register også en datahukommelsesadresse, der kortlægger dem direkte til de første 32 placeringer af brugerdatarummet. Selvom den ikke er fysisk implementeret som SRAM-lokationer, giver denne hukommelsesorganisation stor fleksibilitet i adgangen til registrene, da X-, Y- og Z-pointer-registrene kan indstilles til at indeksere ethvert register i file.De fleste instruktioner, der fungerer på registret File har direkte adgang til alle registre, og de fleste af dem er enkeltcyklusinstruktioner.

X-register, Y-register og Z-register

Registrene R26..R31 har nogle tilføjede funktioner til deres generelle brug. Disse registre er 16-bit adressepointere til indirekte adressering af datarummet. De tre indirekte adresseregistre X, Y og Z er defineret som beskrevet i Figur 4-3.

Register

I de forskellige adresseringstilstande har disse adresseregistre funktioner som fast forskydning, automatisk stigning og automatisk formindskelse (se instruktionssættets reference for detaljer).

Stack Pointer

Stakken bruges hovedsageligt til lagring af midlertidige data, til lagring af lokale variabler og til lagring af returadresser efter afbrydelser og subrutineopkald. Stack Pointer Registeret peger altid mod toppen af ​​stakken. Bemærk, at stakken er implementeret som voksende fra højere hukommelsesplaceringer til lavere hukommelsesplaceringer. Dette indebærer, at en stak PUSH-kommando reducerer stakmarkøren.

Stack-markøren peger på data-SRAM-stakken, hvor underrutine- og afbrydelsesstakkene er placeret. Denne stakplads i data-SRAM skal defineres af programmet, før subrutineopkald udføres eller afbrydelser aktiveres. Stack Pointer skal indstilles til at pege over 0x60. Stakmarkøren formindskes med én, når data skubbes ind på stakken med PUSH-instruktionen, og den nedsættes med to, når returadressen skubbes ind på stakken med subrutineopkald eller afbrydelse. Stack Pointeren øges med én, når data poppes fra stakken med POP-instruktionen, og den øges med to når data poppes fra stakken med retur fra subrutine RET eller retur fra interrupt RETI.

AVR Stack Pointer er implementeret som to 8-bit registre i I/O-rummet. Antallet af bits, der faktisk anvendes, er implementeringsafhængig. Bemærk, at datapladsen i nogle implementeringer af AVR-arkitekturen er så lille, at der kun er brug for SPL. I dette tilfælde vil SPH-registret ikke være til stede.

SPH og SPL — Stack Pointer Register

Bit 15 14 13 12 11 10 9 8
0x3E SP15 SP14 SP13 SP12 SP11 SP10 SP9 SP8 SPH
0x3D SP7 SP6 SP5 SP4 SP3 SP2 SP1 SP0 SPL
7 6 5 4 3 2 1 0
Læs/skriv R/W R/W R/W R/W R/W R/W R/W R/W
Læs/skriv R/W R/W R/W R/W R/W R/W R/W R/W
Startværdi RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND
Startværdi RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND

Timing af instruktionsudførelse

Dette afsnit beskriver de generelle adgangstidskoncepter for instruktionsudførelse. AVR CPU'en drives af CPU clock clkCPU, der genereres direkte fra den valgte clock kilde til chippen. Der anvendes ingen intern uropdeling.

Fig. 4.4

Figur 4-4 viser parallelle instruktionshentninger og instruktionsudførelser aktiveret af Harvard-arkitekturen og hurtigadgangsregistret File begreb. Dette er det grundlæggende pipelining-koncept for at opnå op til 1 MIPS pr. MHz med de tilsvarende unikke resultater for funktioner pr. pris, funktioner pr. ure og funktioner pr. strømenhed.

Figur 4-5. Enkeltcyklus ALU-drift

Fig. 4.5

Nulstil og afbryd håndtering

AVR'en har flere forskellige afbrydelseskilder. Disse afbrydelser og den separate Reset Vector har hver en separat programvektor i programhukommelsespladsen. Alle interrupts tildeles individuelle aktiveringsbits, som skal skrives logisk et sammen med Global Interrupt Enable-bitten i Statusregisteret for at aktivere afbrydelsen.

De laveste adresser i Programhukommelsespladsen er som standard defineret som Reset- og Interrupt-vektorerne. Den komplette liste over vektorer er vist i "Afbrydelser" på side 48. Listen bestemmer også prioritetsniveauerne for de forskellige interrupts. Jo lavere adresse, jo højere er prioritetsniveauet. RESET har højeste prioritet, og næste er INT0 – den eksterne afbrydelsesanmodning 0.

Når der opstår en afbrydelse, slettes Global Interrupt Enable I-bit, og alle interrupts deaktiveres. Brugersoftwaren kan skrive logik et til I-bitten for at aktivere indlejrede interrupts. Alle aktiverede interrupts kan derefter afbryde den aktuelle interrupt-rutine. I-bitten indstilles automatisk, når en Return from Interrupt-instruktion – RETI – udføres.

Der er grundlæggende to typer af afbrydelser. Den første type udløses af en hændelse, der sætter interruptflaget. For disse afbrydelser vektoreres programtælleren til den faktiske afbrydelsesvektor for at udføre afbrydelseshåndteringsrutinen, og hardwaren rydder det tilsvarende interruptflag. Interrupt Flags kan også ryddes ved at skrive et logisk et til flagbitpositionen/-erne, der skal ryddes. Hvis der opstår en afbrydelsestilstand, mens den tilsvarende afbrydelsesaktiveringsbit er slettet, vil interruptflaget blive sat og husket, indtil afbrydelsen er aktiveret, eller flaget slettes af software. Tilsvarende, hvis en eller flere afbrydelsestilstande opstår, mens den globale afbrydelsesaktiveringsbit er slettet, vil det eller de tilsvarende afbrydelsesflag blive sat og husket, indtil den globale afbrydelsesaktiveringsbit er indstillet, og vil derefter blive udført i prioriteret rækkefølge.

Den anden type af afbrydelser vil udløse, så længe afbrydelsestilstanden er til stede. Disse interrupts har ikke nødvendigvis interruptflag. Hvis afbrydelsestilstanden forsvinder, før afbrydelsen er aktiveret, vil afbrydelsen ikke blive udløst.

Når AVR afslutter en afbrydelse, vil den altid vende tilbage til hovedprogrammet og udføre en instruktion mere, før en afventende afbrydelse serveres.

Bemærk, at statusregistret ikke gemmes automatisk, når du går ind i en afbrydelsesrutine, og gendannes heller ikke, når du vender tilbage fra en afbrydelsesrutine. Dette skal håndteres af software.

Når du bruger CLI-instruktionen til at deaktivere interrupts, deaktiveres afbrydelserne øjeblikkeligt. Der vil ikke blive udført nogen afbrydelse efter CLI-instruktionen, selvom den sker samtidigt med CLI-instruktionen. Følgende example viser, hvordan dette kan bruges til at undgå afbrydelser under den tidsindstillede EEPROM-skrivesekvens.

Monteringskode Example
i r16, SREG; gemme SREG-værdi

cli ; deaktiver afbrydelser under tidsindstillet sekvens

sbi EECR, EEMPE ; start EEPROM-skrivning

sbi EECR, EEPE

ud SREG, r16; gendan SREG-værdi (I-bit)

C-kode Eksample
char cSREG;

cSREG = SREG; /* gem SREG-værdi */

/* deaktiver interrupts under tidsindstillet sekvens */

_CLI();

EECR |= (1<

EECR |= (1<

SREG = cSREG; /* gendan SREG-værdi (I-bit) */

Når du bruger SEI-instruktionen til at aktivere interrupts, vil instruktionen efter SEI blive udført før eventuelle afventende interrupts, som vist i dette eks.ample.

Monteringskode Example
sei ; sæt Global Interrupt Enable

sove; gå ind i søvn og venter på afbrydelse

; bemærk: vil gå i dvale før nogen afventende

; afbryde(r)

C-kode Eksample
_SEI(); /* sæt Global Interrupt Aktiver */

_SOVE(); /* gå i dvale, venter på afbrydelse */

/* bemærk: går i dvale før eventuelle afventende afbrydelser */

Afbryd responstid

Afbrydelsesudførelsessvaret for alle de aktiverede AVR-afbrydelser er minimum fire clock-cyklusser. Efter fire clock-cyklusser udføres programvektoradressen for den faktiske afbrydelseshåndteringsrutine. I løbet af denne fire clock-cyklusperiode skubbes programtælleren ind på stakken. Vektoren er normalt et spring til interrupt-rutinen, og dette spring tager tre clock-cyklusser. Hvis der opstår et afbrydelse under udførelse af en flercyklusinstruktion, fuldføres denne instruktion, før afbrydelsen serveres. Hvis der opstår en afbrydelse, når MCU'en er i dvaletilstand, øges reaktionstiden for afbrydelsesudførelsen med fire clock-cyklusser. Denne stigning kommer i tillæg til opstartstiden fra den valgte dvaletilstand.

En tilbagevenden fra en afbrydelseshåndteringsrutine tager fire clock-cyklusser. I løbet af disse fire clock-cyklusser bliver programtælleren (to bytes) trukket tilbage fra stakken, stakmarkøren øges med to, og I-bitten i SREG indstilles.

AVR erindringer

Dette afsnit beskriver de forskellige hukommelser i ATtiny25/45/85. AVR-arkitekturen har to hovedhukommelsespladser, datahukommelsen og programhukommelsespladsen. Derudover har ATtiny25/45/85 en EEPROM-hukommelse til datalagring. Alle tre hukommelsespladser er lineære og regelmæssige.

Omprogrammerbar Flash-programhukommelse i systemet

ATtiny25/45/85 indeholder 2/4/8K bytes On-chip In-System omprogrammerbar Flash-hukommelse til programlagring. Da alle AVR-instruktioner er 16 eller 32 bit brede, er Flash organiseret som 1024/2048/4096 x 16.

Flash-hukommelsen har en udholdenhed på mindst 10,000 skrive/slette-cyklusser. ATtiny25/45/85 Program Counter (PC) er 10/11/12 bit bred og adresserer således 1024/2048/4096 Program hukommelsesplaceringer. "Hukommelsesprogram- ming" på side 147 indeholder en detaljeret beskrivelse af seriel download af Flash-data ved hjælp af SPI-stifterne.

Konstante tabeller kan allokeres inden for hele programhukommelsesadresserummet (se LPM – Load Program memory instruktionsbeskrivelsen).

Figur 5-1. Programhukommelseskort Hukommelseskort

SRAM-datahukommelse

Figur 5-2 viser, hvordan ATtiny25/45/85 SRAM-hukommelsen er organiseret.

De nederste 224/352/607 datahukommelsesplaceringer adresserer både registret File, I/O-hukommelsen og den interne data-SRAM. De første 32 steder adresserer registret File, de næste 64 placeringer standard I/O hukommelsen, og de sidste 128/256/512 placeringer adresserer den interne data SRAM.

De fem forskellige adresseringstilstande for datahukommelsen dækker: Direkte, Indirekte med forskydning, Indirekte, Indirekte med Pre-dekrement og Indirekte med Post-increment. I registret File, registre R26 til R31 har de indirekte adresseringsmarkørregistre.

Den direkte adressering når hele datarummet.

Indirekte med forskydning-tilstand når 63 adresseplaceringer fra basisadressen givet af Y- eller Z-registret.

Ved brug af registerindirekte adresseringstilstande med automatisk for- og efterforøgelse, formindskes eller øges adresseregistrene X, Y og Z.

De 32 generelle arbejdsregistre, 64 I/O-registre og de 128/256/512 bytes af interne data-SRAM i ATtiny25/45/85 er alle tilgængelige via alle disse adresseringstilstande. Registeret File er beskrevet i "Gen- eral Formålsregister File”På side 10.

Figur 5-2. Datahukommelseskort Hukommelseskort 2

Datahukommelsesadgang Tider

Dette afsnit beskriver de generelle adgangstidskoncepter for intern hukommelsesadgang. Den interne SRAM-adgang til data udføres i to clkCPU-cyklusser som beskrevet i Figur 5-3.

Figur 5-3. On-chip Data SRAM Access Cycles På chip data EEPROM-datahukommelse

ATtiny25/45/85 indeholder 128/256/512 bytes data EEPROM-hukommelse. Det er organiseret som et separat datarum, hvor enkelte bytes kan læses og skrives. EEPROM'en har en udholdenhed på mindst 100,000 skrive/slette-cyklusser. Adgangen mellem EEPROM'en og CPU'en er beskrevet i det følgende med specificering af EEPROM-adresseregistrene, EEPROM-dataregistret og EEPROM-kontrolregistret. For detaljer se "Seriel downloading" på side 151.

EEPROM læse/skriveadgang

EEPROM-adgangsregistrene er tilgængelige i I/O-rummet.

Skriveadgangstider for EEPROM er angivet Tabel 5-1 på side 21. En selvtidsindstillingsfunktion lader brugersoftwaren registrere, hvornår den næste byte kan skrives. Hvis brugerkoden indeholder instruktioner, der skriver EEPROM'en, skal der tages nogle forholdsregler. I stærkt filtrerede strømforsyninger vil VCC sandsynligvis stige eller falde langsomt

Tænd/sluk. Dette får enheden til at køre på en voltage lavere end angivet som minimum for den anvendte clockfrekvens. Se "Forebyggelse af EEPROM-korruption" på side 19 for detaljer om, hvordan man undgår problemer i disse situationer.

For at forhindre utilsigtet EEPROM-skrivning skal en specifik skriveprocedure følges. Der henvises til "Atomar Byteprogrammering" på side 17 og "Split-byte-programmering" på side 17 for detaljer om dette.

Når EEPROM'en læses, standses CPU'en i fire clock-cyklusser, før den næste instruktion udføres. Når EEPROM'en er skrevet, standses CPU'en i to clock-cyklusser, før den næste instruktion udføres.

Atomic byte programmering

Brug af Atomic Byte-programmering er den enkleste tilstand. Når du skriver en byte til EEPROM'en, skal brugeren skrive adressen ind i EEAR-registret og data i EEDR-registret. Hvis EEPMn-bittene er nul, vil skrivning af EEPE (inden for fire cyklusser efter, at EEMPE er skrevet) udløse slette-/skriveoperationen. Både slette- og skrivecyklussen udføres i én operation, og den samlede programmeringstid er angivet Tabel 5-1 på side 21. EEPE-bitten forbliver indstillet, indtil slette- og skriveoperationerne er afsluttet. Mens enheden er optaget af programmering, er det ikke muligt at udføre andre EEPROM-handlinger.

Split byte programmering

Det er muligt at opdele slette- og skrivecyklussen i to forskellige operationer. Dette kan være nyttigt, hvis systemet kræver kort adgangstid i en begrænset periode (typisk hvis strømforsyningen voltage falder). For at drage fordel tagI denne metode kræves det, at de steder, der skal skrives, er blevet slettet før skriveoperationen. Men da slette- og skriveoperationerne er opdelt, er det muligt at udføre sletteoperationerne, når systemet tillader at udføre tidskritiske operationer (typisk efter opstart).

Slette

For at slette en byte skal adressen skrives til EEAR. Hvis EEPMn bits er 0b01, vil skrivning af EEPE (inden for fire cyklusser efter EEMPE er skrevet) kun udløse sletteoperationen (programmeringstiden er angivet i Tabel 5-1 på side 21). EEPE-bitten forbliver indstillet, indtil sletningen er fuldført. Mens enheden er optaget af programmering, er det ikke muligt at udføre andre EEPROM-handlinger.

Skrive

For at skrive en lokation skal brugeren skrive adressen i EEAR og dataene i EEDR. Hvis EEPMn bits er 0b10, vil skrivning af EEPE (inden for fire cyklusser efter EEMPE er skrevet) kun udløse skriveoperationen (programmeringstiden er angivet i Tabel 5-1 på side 21). EEPE-bitten forbliver indstillet, indtil skriveoperationen er fuldført. Hvis det sted, der skal skrives, ikke er blevet slettet før skrivning, skal de data, der lagres, betragtes som tabt. Mens enheden er optaget af programmering, er det ikke muligt at udføre andre EEPROM-handlinger.

Den kalibrerede oscillator bruges til at time EEPROM-adgange. Sørg for, at oscillatorfrekvensen er inden for kravene beskrevet i "OSCCAL – Oscillatorkalibreringsregister" på side 31.

Følgende kode examples viser én samling og én C-funktion til sletning, skrivning eller atomskrivning af EEPROM. Eksamples antager, at interrupts styres (f.eks. ved at deaktivere interrupts globalt), så der ikke vil forekomme nogen interrupts under udførelsen af ​​disse funktioner.

Monteringskode Example
EEPROM_skriv:

; Vent på færdiggørelse af forrige skrivning

sbic EECR,EEPE

rjmp EEPROM_write

; Indstil programmeringstilstand

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

ud EECR, r16

; Indstil adresse (r18:r17) i adresseregister

ud EEARH, r18

ud EEARL, r17

; Skriv data (r19) til dataregister

ud EEDR, r19

; Skriv logisk en til EEMPE

sbi EECR,EEMPE

; Start eeprom-skrivning ved at indstille EEPE

sbi EECR,EEPE

ret

C-kode Eksample
void EEPROM_write(usigneret char ucAddress, usigneret char ucData)

{

/* Vent på færdiggørelse af forrige skrivning */ while(EECR & (1<

;

/* Indstil programmeringstilstand */

EECR = (0<

/* Opsæt adresse- og dataregistre */ EEAR = ucAddress;

EEDR = ucData;

/* Skriv logisk en til EEMPE */

EECR |= (1<

/* Start eeprom-skrivning ved at indstille EEPE */

EECR |= (1<

}

Den næste kode examples viser assembly og C-funktioner til læsning af EEPROM. Eksamples antager, at interrupts er kontrolleret, så der ikke vil forekomme nogen interrupts under udførelsen af ​​disse funktioner.

Monteringskode Example
EEPROM_read:

; Vent på færdiggørelse af forrige skrivning

sbic EECR,EEPE

rjmp EEPROM_read

; Indstil adresse (r18:r17) i adresseregister

ud EEARH, r18

ud EEARL, r17

; Start eeprom-læsning ved at skrive EERE

sbi EECR,EERE

; Læs data fra dataregister

i r16,EEDR

ret

C-kode Eksample
usigneret tegn EEPROM_read (usigneret tegn ucAddress)

{

/* Vent på færdiggørelse af forrige skrivning */

while(EECR & (1<

;

/* Opsæt adresseregister */ EEAR = ucAddress;

/* Start eeprom-læsning ved at skrive EERE */

EECR |= (1<

/* Returner data fra dataregister */

retur EEDR;

}

Forebyggelse af EEPROM-korruption

I perioder med lav VCC kan EEPROM-data blive beskadiget, fordi forsyningen voltage er for lav til, at CPU'en og EEPROM'en fungerer korrekt. Disse problemer er de samme som for systemer på tavleniveau, der bruger EEPROM, og de samme designløsninger bør anvendes.

En EEPROM-datakorruption kan være forårsaget af to situationer, hvor voltage er for lavt. For det første kræver en regulær skrivesekvens til EEPROM'en et minimum voltage for at fungere korrekt. For det andet kan CPU'en selv udføre instruktioner forkert, hvis forsyningen voltage er for lavt.

EEPROM-datakorruption kan nemt undgås ved at følge denne designanbefaling:

Hold AVR RESET aktiv (lav) i perioder med utilstrækkelig strømforsyning voltage. Dette kan gøres ved at aktivere den interne Brown-out Detector (BOD). Hvis detektionsniveauet for den interne BOD ikke svarer til

nødvendigt detektionsniveau, kan et eksternt lavt VCC-nulstillingsbeskyttelseskredsløb bruges. Hvis der sker en nulstilling, mens en skriveoperation er i gang, vil skriveoperationen blive afsluttet, forudsat at strømforsyningen voltage er tilstrækkeligt.

I/O-hukommelse

I/O-rumsdefinitionen af ​​ATtiny25/45/85 er vist i "Registrer oversigt" på side 200.

Alle ATtiny25/45/85 I/O'er og perifere enheder er placeret i I/O-rummet. Alle I/O-lokationer kan tilgås af LD/LDS/LDD- og ST/STS/STD-instruktionerne, der overfører data mellem de 32 generelle arbejdsregistre og I/O-rummet. I/O-registre inden for adresseområdet 0x00 – 0x1F er direkte bit-tilgængelige ved hjælp af SBI- og CBI-instruktionerne. I disse registre kan værdien af ​​enkeltbits kontrolleres ved at bruge SBIS- og SBIC-instruktionerne. Se afsnittet med instruktionssættet for flere detaljer. Ved brug af de I/O-specifikke kommandoer IN og OUT, skal I/O-adresserne 0x00 – 0x3F bruges. Ved adressering af I/O registre som datarum vha. LD- og ST-instruktioner skal 0x20 tilføjes til disse adresser.

For kompatibilitet med fremtidige enheder skal reserverede bits skrives til nul, hvis de tilgås. Reserverede I/O-hukommelsesadresser bør aldrig skrives.

Nogle af statusflag ryddes ved at skrive et logisk til dem. Bemærk, at CBI- og SBI-instruktionerne kun vil fungere på den angivne bit, og derfor kan bruges på registre, der indeholder sådanne statusflag. CBI- og SBI-instruktionerne fungerer kun med registre 0x00 til 0x1F.

I/O- og periferikontrolregistrene er forklaret i senere afsnit.

Registerbeskrivelse

EEARH – EEPROM adresseregister

Bit 7 6 5 4 3 2 1 0
0x1F EEAR8 EARH
Læs/skriv R R R R R R R R/W
Startværdi 0 0 0 0 0 0 0 X/0

Bits 7:1 – Res: Reserverede bits

Disse bits er reserveret til fremtidig brug og vil altid læses som nul.

Bits 0 – EEAR8: EEPROM-adresse

Dette er den mest betydningsfulde EEPROM-adressebit i ATtiny85. I enheder med mindre EEPROM, dvs. ATtiny25/ATtiny45, er denne bit reserveret og vil altid læse nul. Startværdien af ​​EEPROM Address Register (EEAR) er udefineret, og der skal derfor skrives en korrekt værdi, før EEPROM'en tilgås.

EEARL – EEPROM-adresseregister

Bit

0x1E EEAR7 EEAR6 EEAR5 EEAR4 EEAR3 EEAR2 EEAR1 EEAR0 EARL
Bagside/Skriv R/W R/W R/W R/W R/W R/W R/W R/W
Startværdi X X X X X X X X

Bit 7 – EEAR7: EEPROM-adresse

Dette er den mest betydningsfulde EEPROM-adressebit i ATtiny45. I enheder med mindre EEPROM, dvs. ATtiny25, er denne bit reserveret og vil altid læse nul. Startværdien af ​​EEPROM-adresseregistret (EEAR) er udefineret, og der skal derfor skrives en korrekt værdi, før der tilgås EEPROM.

Bits 6:0 – EEAR[6:0]: EEPROM-adresse

Disse er (lave) bits af EEPROM-adresseregistret. EEPROM-databytes adresseres lineært i området 0...(128/256/512-1). Startværdien af ​​EEAR er udefineret, og der skal derfor skrives en korrekt værdi, før EEPROM'en kan tilgås.

EEDR – EEPROM Data Register

Bit 7 6 5 4 3 2 1 0
0x1D EEDR7 EEDR6 EEDR5 EEDR4 EEDR3 EEDR2 EEDR1 EEDR0 EEDR
Læs/skriv R/W R/W R/W R/W R/W R/W R/W R/W
Startværdi 0 0 0 0 0 0 0 0

For EEPROM-skriveoperationen indeholder EEDR-registret de data, der skal skrives til EEPROM'en på den adresse, der er angivet af EEAR-registret. For EEPROM-læseoperationen indeholder EEDR de data, der udlæses fra

EEPROM på adressen oplyst af EEAR.

 

5.5.4 EECR – EEPROM kontrolregister

Bit 7 6 5 4 3 2 1 0
0x1C        – EEPM1 EEPM0 Uhyggeligt EEMPE EEPE EERE EECR
Læs/skriv R R R/W R/W R/W R/W R/W R/W
Startværdi 0 0 X X 0 0 X 0

Bit 7 – Res: Reserveret bit

Denne bit er reserveret til fremtidig brug og vil altid læses som 0 i ATtiny25/45/85. For kompatibilitet med fremtidige AVR-enheder skal du altid skrive denne bit til nul. Efter at have læst, masker denne smule.

Bit 6 – Res: Reserveret bit

Denne bit er reserveret i ATtiny25/45/85 og vil altid læses som nul.

Bits 5:4 – EEPM[1:0]: Bits til EEPROM-programmeringstilstand

EEPROM-programmeringstilstandens bit-indstilling definerer, hvilken programmeringshandling, der vil blive udløst, når EEPE skrives. Det er muligt at programmere data i én atomoperation (slette den gamle værdi og programmere den nye værdi) eller at opdele slette- og skriveoperationerne i to forskellige operationer. Programmeringstiderne for de forskellige tilstande er vist i Tabel 5-1. Mens EEPE er indstillet, vil enhver skrivning til EEPMn blive ignoreret. Under nulstillingen vil EEPMn-bittene blive nulstillet til 0b00, medmindre EEPROM'en er optaget af programmering.

Tabel 5-1. EEPROM Mode Bits

EEPM1 EEPM0 Programmeringstid Operation
0 0 3.4 ms Slet og skriv i én operation (Atomic Operation)
0 1 1.8 ms Slet kun
1 0 1.8 ms Skriv kun
1 1 Reserveret til fremtidig brug

Bit 3 – EERIE: EEPROM Ready Interrupt Enable

At skrive EERIE til en aktiverer EEPROM Ready Interrupt, hvis I-bit i SREG er indstillet. Hvis du skriver EERIE til nul, deaktiveres afbrydelsen. EEPROM Ready Interrupt genererer en konstant interrupt, når ikke-flygtig hukommelse er klar til programmering.

Bit 2 – EEMPE: Aktiver EEPROM Master Program

EEMPE-bitten bestemmer, om skrivning af EEPE til en vil have effekt eller ej.

Når EEMPE er indstillet, vil indstilling af EEPE inden for fire clock-cyklusser programmere EEPROM'en på den valgte adresse. Hvis EEMPE er nul, har indstillingen af ​​EEPE ingen effekt. Når EEMPE er blevet skrevet til en af ​​softwaren, nulstiller hardware bit'et til nul efter fire clock-cyklusser.

Bit 1 – EEPE: Aktiver EEPROM-program

EEPROM-programaktiveringssignalet EEPE er programmeringsaktiveringssignalet til EEPROM'en. Når EEPE er skrevet, vil EEPROM'en blive programmeret i henhold til indstillingen for EEPMn bits. EEMPE-bitten skal skrives til én, før en logisk én skrives til EEPE, ellers finder ingen EEPROM-skrivning sted. Når skriveadgangstiden er udløbet, ryddes EEPE-bitten af ​​hardware. Når EEPE er indstillet, standses CPU'en i to cyklusser, før den næste instruktion udføres.

Bit 0 – EERE: EEPROM Read Enable

EEPROM Read Enable Signal – EERE – er læsestrobe til EEPROM. Når den korrekte adresse er sat op i EEAR-registret, skal EERE-bitten skrives til en for at udløse EEPROM-læsningen. EEPROM læseadgangen tager én instruktion, og de anmodede data er tilgængelige med det samme. Når EEPROM'en læses, standses CPU'en i fire cyklusser, før den næste instruktion udføres. Brugeren bør polle EEPE-bitten, før læseoperationen påbegyndes. Hvis en skriveoperation er i gang, er det hverken muligt at læse EEPROM'en eller at ændre EEAR-registret.

Systemur og urindstillinger

Ursystemer og deres distribution

Urfordeling

CPU-ur

CPU-uret dirigeres til dele af systemet, der vedrører driften af ​​AVR-kernen. Eksampdele af sådanne moduler er det generelle register File, statusregistret og datahukommelsen, der holder stakmarkøren. Standsning af CPU-uret forhindrer kernen i at udføre generelle operationer og beregninger.

I/O-ur – clI/O

I/O-uret bruges af størstedelen af ​​I/O-modulerne, såsom timer/tæller. I/O-uret bruges også af det eksterne afbrydelsesmodul, men bemærk, at nogle eksterne afbrydelser detekteres af asynkron logik, hvilket gør det muligt at detektere sådanne afbrydelser, selvom I/O-uret er standset.

Flash-ur – clkFLASH

Flash-uret styrer driften af ​​Flash-grænsefladen. Flash-uret er normalt aktivt samtidig med CPU-uret.

ADC ur – clkADC

ADC'en er forsynet med et dedikeret urdomæne. Dette gør det muligt at standse CPU- og I/O-urene for at reducere støj genereret af digitale kredsløb. Dette giver mere nøjagtige ADC-konverteringsresultater.

Intern PLL til hurtig generering af perifert ur – clkPCK

Den interne PLL i ATtiny25/45/85 genererer en klokfrekvens, der er 8x ganget fra en kildeindgang. Som standard bruger PLL outputtet fra den interne 8.0 MHz RC-oscillator som kilde. Alternativt, hvis bit LSM af PLLCSR er indstillet, vil PLL bruge outputtet fra RC-oscillatoren divideret med to. Udgangssignalet fra PLL'en, det hurtige perifere ur, er således 64 MHz. Det hurtige perifere ur, eller et ur forudskaleret derfra, kan vælges som urkilde for Timer/Counter1 eller som et systemur. Se Figur 6-2. Frekvensen af ​​det hurtige perifere ur divideres med to, når LSM af PLLCSR er indstillet, hvilket resulterer i en clockfrekvens på 32 MHz. Bemærk, at LSM ikke kan indstilles, hvis PLLCLK bruges som systemur.

Figur 6-2. PCK ursystem. PCK ur

PLL'en er låst på RC-oscillatoren, og justering af RC-oscillatoren via OSCCAL-registret vil justere det hurtige perifere ur på samme tid. Men selvom RC-oscillatoren tages til en højere frekvens end 8 MHz, mættes den hurtige perifere clock-frekvens ved 85 MHz (worst case) og forbliver oscillerende ved den maksimale frekvens. Det skal bemærkes, at PLL'en i dette tilfælde ikke længere er låst med RC-oscillator-uret. Derfor anbefales det ikke at tage OSCCAL-justeringerne til en højere frekvens end 8 MHz for at holde PLL i det korrekte driftsområde.

Den interne PLL er aktiveret, når:

PLLE-bitten i registeret PLLCSR er indstillet.

CKSEL-sikringen er programmeret til '0001'.

CKSEL-sikringen er programmeret til '0011'.

PLLCSR bit PLOCK indstilles, når PLL er låst. Både intern RC-oscillator og PLL er slukket i power down og stand-by dvaletilstand.

Intern PLL i ATtiny15-kompatibilitetstilstand

Da ATtiny25/45/85 er en migreringsenhed til ATtiny15-brugere, er der en ATtiny15-kompatibilitetstilstand til bagudkompatibilitet. ATtiny15-kompatibilitetstilstanden vælges ved at programmere CKSEL-sikringerne til '0011'.

I ATtiny15-kompatibilitetstilstanden er frekvensen af ​​den interne RC-oscillator kalibreret ned til 6.4 MHz, og multiplikationsfaktoren for PLL er sat til 4x. Se Figur 6-3. Med disse justeringer er clocking-systemet ATtiny15-kompatibelt, og det resulterende hurtige perifere ur har en frekvens på 25.6 MHz (samme som i ATtiny15).

Figur 6-3. PCK-ursystem i ATtiny15-kompatibilitetstilstand. Ursystem

Urkilder

Enheden har følgende urkildeindstillinger, der kan vælges med Flash Fuse-bits som vist nedenfor. Uret fra den valgte kilde indlæses til AVR-clockgeneratoren og dirigeres til de relevante moduler.

Tabel 6-1. Indstillinger for enhedsur Vælg

Mulighed for enhedsur CKSEL[3:0](1)
Eksternt ur (se side 26) 0000
Højfrekvent PLL-ur (se side 26) 0001
Kalibreret intern oscillator (se side 27) 0010(2)
Kalibreret intern oscillator (se side 27) 0011(3)
Intern 128 kHz Oscillator (se side 28) 0100
Lavfrekvent krystaloscillator (se side 29) 0110
Krystaloscillator/keramisk resonator (se side 29) 1000 – 1111
Reserveret 0101, 0111

For alle sikringer betyder "1" uprogrammeret, mens "0" betyder programmeret.

Enheden leveres med denne indstilling valgt.

Dette vil vælge ATtiny15 Compatibility Mode, hvor systemuret divideres med fire, hvilket resulterer i en 1.6 MHz klokfrekvens. For mere information, se "Kalibreret intern oscillator" på side 27.

De forskellige valgmuligheder for hver clock-indstilling er angivet i de følgende afsnit. Når CPU'en vågner fra Power-down, bruges den valgte clock-kilde til at time opstarten, hvilket sikrer stabil Oscillator-drift, før instruktionsudførelsen starter. Når CPU'en starter fra nulstilling, er der en ekstra forsinkelse, der tillader strømmen at nå et stabilt niveau, før normal drift påbegyndes. Watchdog Oscillator bruges til at tidsindstille denne del af opstartstiden i realtid. Antallet af WDT-oscillatorcyklusser, der bruges for hver time-out, vises i Tabel 6-2.

Tabel 6-2. Antal Watchdog Oscillator-cyklusser

Typ Time-out Antal cyklusser
4 ms 512
64 ms 8K (8,192)

Eksternt ur

For at drive enheden fra en ekstern urkilde skal CLKI køres som vist i Figur 6-4. For at køre enheden på et eksternt ur, skal CKSEL-sikringerne programmeres til "00".

Figur 6-4. Konfiguration af eksternt urdrev

Fig. 6.4

Når denne urkilde er valgt, bestemmes opstartstiderne af SUT-sikringerne som vist i Tabel 6-3.

Tabel 6-3. Opstartstider for det eksterne urvalg

SUT[1:0] Opstartstid fra nedlukning Yderligere forsinkelse fra nulstilling Anbefalet brug
00 6 CK 14CK BOD aktiveret
01 6 CK 14CK + 4 ms Hurtigt stigende kraft
10 6 CK 14CK + 64 ms Langsomt stigende magt
11 Reserveret

Når du anvender et eksternt ur, er det nødvendigt at undgå pludselige ændringer i den anvendte clock-frekvens for at sikre stabil drift af MCU'en. En variation i frekvens på mere end 2 % fra den ene urcyklus til den næste kan føre til uforudsigelig adfærd. Det er påkrævet at sikre, at MCU'en holdes i Reset under sådanne ændringer i klokfrekvensen.

Bemærk, at System Clock Presale kan bruges til at implementere runtime-ændringer af den interne clock-frekvens og samtidig sikre stabil drift. Der henvises til "System Clock Prescaler" på side 31 for detaljer.

Højfrekvent PLL-ur

Der er en intern PLL, der giver nominelt 64 MHz klokfrekvens låst til RC-oscillatoren til brug af den perifere timer/tæller1 og for systemurkilden. Når den er valgt som en systemurkilde, ved at programmere CKSEL-sikringerne til '0001', divideres den med fire som vist i Tabel 6-4.

Tabel 6-4. Driftstilstande for højfrekvent PLL-ur

CKSEL[3:0] Nominel frekvens
0001 16 MHz

Når denne urkilde er valgt, bestemmes opstartstiderne af SUT-sikringerne som vist i Tabel 6-5.

Tabel 6-5. Opstartstider for det højfrekvente PLL-ur

SUT[1:0] Opstartstid fra Power Down Yderligere forsinkelse fra Power-On Reset (VCC = 5.0V) Anbefalet brug
00 14CK + 1K (1024) CK + 4 ms 4 ms BOD aktiveret

Tabel 6-5. Opstartstider for det højfrekvente PLL-ur

SUT[1:0] Opstartstid fra Power Down Yderligere forsinkelse fra Power-On Reset (VCC = 5.0V) Anbefalet brug
01 14CK + 16K (16384) CK + 4 ms 4 ms Hurtigt stigende kraft
10 14CK + 1K (1024) CK + 64 ms 4 ms Langsomt stigende magt
11 14CK + 16K (16384) CK + 64 ms 4 ms Langsomt stigende magt

Kalibreret intern oscillator

Som standard giver den interne RC-oscillator et ur på cirka 8.0 MHz. Skønt voltage og temperaturafhængig, kan dette ur kalibreres meget nøjagtigt af brugeren. Se "Kalibreret intern RC-oscillator-akku- racy” på side 164 og "Intern oscillatorhastighed" på side 192 for flere detaljer. Enheden leveres med CKDIV8-sikringen programmeret. Se "System Clock Prescaler" på side 31 for flere detaljer.

Dette ur kan vælges som systemur ved at programmere CKSEL-sikringerne som vist i Tabel 6-6 på side

27. Hvis valgt, vil den fungere uden eksterne komponenter. Under nulstilling indlæser hardware den forprogrammerede kalibreringsværdi i OSCCAL-registret og kalibrerer derved automatisk RC-oscillatoren. Nøjagtigheden af ​​denne kalibrering vises som Fabrikskalibrering i Tabel 21-2 på side 164.

Ved at ændre OSCCAL-registret fra SW, se "OSCCAL – Oscillatorkalibreringsregister" på side 31, er det muligt at få en højere kalibreringsnøjagtighed end ved at bruge fabrikskalibreringen. Nøjagtigheden af ​​denne kalibrering vises som Brugerkalibrering i Tabel 21-2 på side 164.

Når denne Oscillator bruges som chip-ur, vil Watchdog Oscillator stadig blive brugt til Watchdog-timeren og til Reset-timeout. For mere information om den forprogrammerede kalibreringsværdi, se afsnittet "Cali- bration Bytes" på side 150.

Den interne oscillator kan også indstilles til at give et 6.4 MHz ur ved at skrive CKSEL-sikringer til "0011", som vist i Tabel 6-6 under. Denne indstilling omtales som ATtiny15-kompatibilitetstilstand og er beregnet til at give en kalibreret clock-kilde ved 6.4 MHz, som i ATtiny15. I ATtiny15-kompatibilitetstilstand bruger PLL den interne oscillator, der kører ved 6.4 MHz til at generere et 25.6 MHz perifert clock-signal for Timer/Counter1 (se "8-bit timer/tæller 1 tommer ATtiny15 Mode" på side 95). Bemærk, at i denne driftstilstand er 6.4 MHz-ursignalet altid divideret med fire, hvilket giver et 1.6 MHz-systemur.

Tabel 6-6. Intern kalibreret RC Oscillator driftstilstande

CKSEL[3:0] Nominel frekvens
0010(1) 8.0 MHz
0011(2) 6.4 MHz

Enheden leveres med denne indstilling valgt.

Denne indstilling vil vælge ATtiny15-kompatibilitetstilstand, hvor systemuret divideres med fire, hvilket resulterer i en 1.6 MHz klokfrekvens.

Når den kalibrerede 8 MHz interne oscillator er valgt som klokkilde, bestemmes opstartstiderne af SUT-sikringerne som vist i Tabel 6-7 under.

Tabel 6-7. Opstartstider for internt kalibreret RC-oscillatorur

SUT[1:0] Opstartstid fra nedlukning Yderligere forsinkelse fra nulstilling (VCC = 5.0 V) Anbefalet brug
00 6 CK 14CK(1) BOD aktiveret
01 6 CK 14CK + 4 ms Hurtigt stigende kraft
10(2) 6 CK 14CK + 64 ms Langsomt stigende magt
11 Reserveret

1. Hvis RSTDISBL-sikringen er programmeret, øges denne opstartstid til 14CK + 4 ms for at sikre, at programmeringstilstanden kan aktiveres.
2. Enheden leveres med denne indstilling valgt.

I ATtiny15-kompatibilitetstilstand bestemmes opstartstiderne af SUT-sikringer som vist i Tabel 6-8 under.

Tabel 6-8. Opstartstider for internt kalibreret RC-oscillatorur (i ATtiny15-tilstand)

SUT[1:0] Opstartstid fra nedlukning Yderligere forsinkelse fra nulstilling (VCC = 5.0 V) Anbefalet brug
00 6 CK 14CK + 64 ms
01 6 CK 14CK + 64 ms
10 6 CK 14CK + 4 ms
11 1 CK 14CK(1)

Bemærk: Hvis RSTDISBL-sikringen er programmeret, øges denne opstartstid til 14CK + 4 ms for at sikre, at programmeringstilstanden kan aktiveres.

Sammenfattende kan du finde flere oplysninger om ATtiny15-kompatibilitetstilstand i afsnittene "Port B (PB5:PB0)" tændt side 2"Intern PLL i ATtiny15-kompatibilitetstilstand" på side 24"8-bit timer/tæller1 i ATtiny15-tilstand" tændt side 95"Begrænsninger af debugWIRE" på side 140"Kalibreringsbytes" på side 150 og i tabel "Clock Prescaler Vælg" på side 33.

Intern 128 kHz Oscillator

Den interne 128 kHz oscillator er en laveffektoscillator, der giver et ur på 128 kHz. Frekvensen er nominel ved 3V og 25°C. Dette ur kan vælges som systemur ved at programmere CKSEL-sikringerne til "0100".

Når denne urkilde er valgt, bestemmes opstartstiderne af SUT-sikringerne som vist i Tabel 6-9.

Tabel 6-9. Opstartstider for den interne 128 kHz-oscillator

SUT[1:0] Opstartstid fra nedlukning Yderligere forsinkelse fra nulstilling Anbefalet brug
00 6 CK 14CK(1) BOD aktiveret
01 6 CK 14CK + 4 ms Hurtigt stigende kraft
10 6 CK 14CK + 64 ms Langsomt stigende magt
11 Reserveret

Bemærk: Hvis RSTDISBL-sikringen er programmeret, øges denne opstartstid til 14CK + 4 ms for at sikre, at programmeringstilstanden kan aktiveres.

Lavfrekvent krystaloscillator

For at bruge en 32.768 kHz urkrystal som urkilde for enheden, skal lavfrekvent krystaloscillator vælges ved at indstille CKSEL-sikringer til '0110'. Krystallen skal tilsluttes som vist i Figur 6-5. For at finde passende belastningskapacitans til en 32.768 kHz krysal, se venligst producentens datablad.

Når denne oscillator er valgt, bestemmes opstartstiderne af SUT-sikringerne som vist i Tabel 6-10.

Tabel 6-10. Opstartstider for lavfrekvent krystaloscillator-urvalg

SUT[1:0] Opstartstid fra Power Down Yderligere forsinkelse fra nulstilling (VCC = 5.0 V) Anbefalet brug
00 1K (1024) CK(1) 4 ms Hurtigt stigende effekt eller BOD aktiveret
01 1K (1024) CK(1) 64 ms Langsomt stigende magt
10 32K (32768) CK 64 ms Stabil frekvens ved opstart
11 Reserveret

Bemærk: Disse muligheder bør kun bruges, hvis frekvensstabilitet ved opstart ikke er vigtig.

Lavfrekvent krystaloscillator giver en intern belastningskapacitans, se Tabel 6-11 ved hver TOSC pin.

Tabel 6-11. Kapacitans af lavfrekvent krystaloscillator

Enhed 32 kHz Osc. Type Cap (Xtal1/Tosc1) Cap (Xtal2/Tosc2)
ATtiny25/45/85 System Osc. 16 pF 6 pF

Krystaloscillator/keramisk resonator

XTAL1 og XTAL2 er henholdsvis input og output af en invertering ampLifier, som kan konfigureres til brug som en On-chip Oscillator, som vist i Figur 6-5. Enten en kvartskrystal eller en keramisk resonator kan bruges.

C1 og C2 skal altid være ens for både krystaller og resonatorer. Den optimale værdi af kondensatorerne afhænger af krystallen eller resonatoren, der er i brug, mængden af ​​afvigende kapacitans og den elektromagnetiske støj i miljøet. Nogle indledende retningslinjer for valg af kondensatorer til brug med krystaller er givet i Tabel 6-12 under. For keramiske resonatorer skal de kondensatorværdier, der er angivet af producenten, anvendes.

Tabel 6-12. Crystal Oscillator driftstilstande

CKSEL[3:1] Frekvensområde (MHz) Anbefalet område for kondensatorer C1 og C2 til brug med krystaller (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

Bemærkninger: Denne mulighed bør ikke bruges med krystaller, kun med keramiske resonatorer.

Oscillatoren kan fungere i tre forskellige tilstande, hver optimeret til et specifikt frekvensområde. Driftstilstanden vælges af sikringerne CKSEL[3:1] som vist i Tabel 6-12.

CKSEL0-sikringen sammen med SUT[1:0]-sikringerne vælger opstartstiderne som vist i Tabel 6-13.

Tabel 6-13. Opstartstider for valg af krystaloscillatorur

CKSEL0 SUT[1:0] Opstartstid fra nedlukning Yderligere forsinkelse fra nulstilling Anbefalet brug
0 00 258 CK(1) 14CK + 4 ms Keramisk resonator, hurtigt stigende kraft
0 01 258 CK(1) 14CK + 64 ms Keramisk resonator, langsomt stigende effekt
0 10 1K (1024) CK(2) 14CK Keramisk resonator, BOD aktiveret
0 11 1K (1024)CK(2) 14CK + 4 ms Keramisk resonator, hurtigt stigende kraft
1 00 1K (1024)CK(2) 14CK + 64 ms Keramisk resonator, langsomt stigende effekt
1 01 16K (16384) CK 14CK Krystaloscillator, BOD aktiveret
1 10 16K (16384) CK 14CK + 4 ms Krystaloscillator, hurtigt stigende kraft
1 11 16K (16384) CK 14CK + 64 ms Krystaloscillator, langsomt stigende kraft

Noter

Disse muligheder bør kun bruges, når den ikke arbejder tæt på enhedens maksimale frekvens, og kun hvis frekvensstabilitet ved opstart ikke er vigtig for applikationen. Disse muligheder er ikke egnede til krystaller.

Disse muligheder er beregnet til brug med keramiske resonatorer og vil sikre frekvensstabilitet ved opstart. De kan også bruges med krystaller, når de ikke arbejder tæt på enhedens maksimale frekvens, og hvis frekvensstabilitet ved opstart ikke er vigtig for applikationen.

Standard urkilde

Enheden leveres med CKSEL = "0010", SUT = "10" og CKDIV8 programmeret. Standardindstillingen for urkilden er derfor den interne RC-oscillator, der kører ved 8 MHz med længst opstartstid og en indledende systemur-forskalering på 8, hvilket resulterer i 1.0 MHz systemur. Denne standardindstilling sikrer, at alle brugere kan foretage deres ønskede urkildeindstilling ved hjælp af en In-System eller High-voltage Programmer.

System Clock Prescaler

ATtiny25/45/85 systemuret kan opdeles ved at indstille "CLKPR – Clock Prescale Register" på side 32. Denne funktion kan bruges til at reducere strømforbruget, når kravet til processorkraft er lavt. Dette kan bruges med alle urkildeindstillinger, og det vil påvirke clockfrekvensen for CPU'en og alle synkrone perifere enheder. clkI/O, clkADC, clkCPU og clkFLASH divideres med en faktor som vist i Tabel 6-15 på side 33.

Skiftetid

Når der skiftes mellem prescaler-indstillinger, sikrer System Clock Prescaler, at der ikke opstår fejl i ursystemet, og at ingen mellemfrekvens er højere end hverken clock-frekvensen svarende til den tidligere indstilling, eller clock-frekvensen svarende til den nye indstilling.

Rippletælleren, der implementerer forskaleren, kører med frekvensen af ​​det udelte ur, som kan være hurtigere end CPU'ens clock-frekvens. Det er derfor ikke muligt at bestemme tilstanden af ​​forskaleren - selv om den var læsbar, og den nøjagtige tid, det tager at skifte fra en urinddeling til en anden, kan ikke forudsiges nøjagtigt.

Fra det tidspunkt, CLKPS-værdierne skrives, går der mellem T1 + T2 og T1 + 2*T2, før den nye klokfrekvens er aktiv. I dette interval produceres 2 aktive urkanter. Her er T1 den forrige urperiode, og T2 er den periode, der svarer til den nye prescaler-indstilling.

Ur udgangsbuffer

Enheden kan udsende systemuret på CLKO-benet (når det ikke bruges som XTAL2-ben). For at aktivere udgangen skal CKOUT-sikringen programmeres. Denne tilstand er velegnet, når chip-uret bruges til at drive andre kredsløb på systemet. Bemærk, at uret ikke udsendes under nulstilling, og at den normale drift af I/O-pinden vil blive tilsidesat, når sikringen er programmeret. Intern RC-oscillator, WDT-oscillator, PLL og eksternt ur (CLKI) kan vælges, når uret udsendes på CLKO. Krystaloscillatorer (XTAL1, XTAL2) kan ikke bruges til clockoutput på CLKO. Hvis System Clock Prescaler bruges, er det det opdelte systemur, der udlæses.

Registerbeskrivelse

OSCCAL – Oscillatorkalibreringsregister

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

Bits 7:0 – CAL[7:0]: Oscillatorkalibreringsværdi

Oscillatorkalibreringsregistret bruges til at trimme den kalibrerede interne RC-oscillator for at fjerne procesvariationer fra oscillatorfrekvensen. En forprogrammeret kalibreringsværdi skrives automatisk til dette register under chipnulstilling, hvilket giver den fabrikskalibrerede frekvens som specificeret i Tabel 21-2 på side 164. Applikationssoftwaren kan skrive dette register for at ændre oscillatorfrekvensen. Oscillatoren kan kalibreres til frekvenser som specificeret i Tabel 21-2 på side 164. Kalibrering uden for dette område er ikke garanteret.

Bemærk, at denne oscillator bruges til at time EEPROM- og Flash-skriveadgange, og disse skrivetider vil blive påvirket i overensstemmelse hermed. Hvis EEPROM eller Flash er skrevet, må du ikke kalibrere til mere end 8.8 MHz. Ellers kan EEPROM eller Flash-skrivning mislykkes.

CAL7-bitten bestemmer operationsområdet for oscillatoren. Indstilling af denne bit til 0 giver det laveste frekvensområde, indstilling af denne bit til 1 giver det højeste frekvensområde. De to frekvensområder overlapper hinanden, med andre ord giver en indstilling på OSCCAL = 0x7F en højere frekvens end OSCCAL = 0x80.

CAL[6:0]-bittene bruges til at indstille frekvensen inden for det valgte område. En indstilling på 0x00 giver den laveste frekvens i området, og en indstilling på 0x7F giver den højeste frekvens i området.

For at sikre stabil drift af MCU'en bør kalibreringsværdien ændres i lille. En variation i hyppigheden på mere end 2 % fra den ene cyklus til den næste kan føre til uforudsigelig adfærd. Ændringer i OSCCAL bør ikke overstige 0x20 for hver kalibrering. Det er påkrævet at sikre, at MCU'en holdes i Reset under sådanne ændringer i klokfrekvensen

Tabel 6-14. Intern RC Oscillator frekvensområde

OSCCAL værdi Typisk laveste frekvens med hensyn til nominel frekvens Typisk højeste frekvens med hensyn til nominel frekvens
0x00 50 % 100 %
0x3F 75 % 150 %
0x7F 100 % 200 %

CLKPR – Clock Prescale Register

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

Startværdi 0 0 0 0 Se bitbeskrivelse

Bit 7 – CLKPCE: Clock Prescaler Change Aktiver

CLKPCE-bitten skal skrives til logisk et for at muliggøre ændring af CLKPS-bittene. CLKPCE-bitten opdateres kun, når de andre bits i CLKPR samtidig skrives til nul. CLKPCE ryddes af hardware fire cyklusser efter det er skrevet, eller når CLKPS-bittene er skrevet. Omskrivning af CLKPCE-bitten inden for denne time-out-periode forlænger hverken time-out-perioden eller sletter CLKPCE-bitten.

Bits 6:4 – Res: Reserverede bits

Disse bits er reserverede bits i ATtiny25/45/85 og vil altid læses som nul.

Bits 3:0 – CLKPS[3:0]: Ur Prescaler Select Bits 3 – 0

Disse bits definerer divisionsfaktoren mellem den valgte klokkilde og det interne systemur. Disse bits kan skrives run-time for at variere clock-frekvensen for at passe til applikationskravene. Da divideren deler master-clock-inputtet til MCU'en, reduceres hastigheden af ​​alle synkrone perifere enheder, når der anvendes en divisionsfaktor. Divisionsfaktorerne er angivet i Tabel 6-15.

For at undgå utilsigtede ændringer af klokfrekvensen skal en speciel skriveprocedure følges for at ændre CLKPS-bittene:

Skriv CLKPCE-bit (Clock Prescaler Change Enable) til en og alle andre bit i CLKPR til nul.

Inden for fire cyklusser skal du skrive den ønskede værdi til CLKPS, mens du skriver et nul til CLKPCE.

Afbrydelser skal deaktiveres, når du ændrer prescaler-indstillingen for at sikre, at skriveproceduren ikke afbrydes.

CKDIV8-sikringen bestemmer startværdien af ​​CLKPS-bittene. Hvis CKDIV8 er uprogrammeret, nulstilles CLKPS-bittene til "0000". Hvis CKDIV8 er programmeret, nulstilles CLKPS bits til "0011", hvilket giver en divisionsfaktor på otte ved opstart. Denne funktion skal bruges, hvis den valgte urkilde har en højere frekvens end enhedens maksimale frekvens under de nuværende driftsforhold. Bemærk, at enhver værdi kan skrives til CLKPS-bittene uanset CKDIV8-sikringsindstillingen. Applikationssoftwaren skal sikre, at en tilstrækkelig divisionsfaktor er

valgt, hvis den valgte urkilde har en højere frekvens end enhedens maksimale frekvens under de nuværende driftsforhold. Enheden leveres med CKDIV8-sikringen programmeret.

Tabel 6-15. Ur Prescaler Vælg

CLKPS3 CLKPS2 CLKPS1 CLKPS0 Uropdelingsfaktor
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 Reserveret
1 0 1 0 Reserveret
1 0 1 1 Reserveret
1 1 0 0 Reserveret
1 1 0 1 Reserveret
1 1 1 0 Reserveret
1 1 1 1 Reserveret

Bemærk: Forskaleren er deaktiveret i ATtiny15-kompatibilitetstilstand, og hverken skrivning til CLKPR eller programmering af CKDIV8-sikringen har nogen effekt på systemuret (som altid vil være 1.6 MHz).

Strømstyring og dvaletilstande

Den høje ydeevne og brancheførende kodeeffektivitet gør AVR-mikrocontrollerne til et ideelt valg til laveffektapplikationer. Derudover gør dvaletilstande det muligt for applikationen at lukke ubrugte moduler ned i MCU'en og derved spare strøm. AVR giver forskellige dvaletilstande, så brugeren kan skræddersy strømforbruget til applikationens krav.

Dvaletilstand

Figur 6-1 på side 23 præsenterer de forskellige ursystemer og deres distribution i ATtiny25/45/85. Figuren er nyttig til at vælge en passende dvaletilstand. Tabel 7-1 viser de forskellige dvaletilstande og deres vågnekilder.

Tabel 7-1. Aktive ur-domæner og wake-up-kilder i de forskellige dvaletilstande

Aktive ur-domæner Oscillatorer Wake-up kilder
Dvaletilstand clkCPU clkFLASH clkIO clkADC clkPCK Hovedurkilde aktiveret INT0 og Pin Change SPM/EEPROM

Parat

 

USI Starttilstand

ADC Andet I/O Vagthund Afbryde
Ledig X X X X X X X X X X
ADC-støjreduktion X X X(1) X X X X
Sluk X(1) X X

Bemærk: For INT0, kun niveauafbrydelse.

For at gå ind i en af ​​de tre dvaletilstande skal SE-bitten i MCUCR skrives til logisk 1, og en SLEEP-instruktion skal udføres. SM[0:XNUMX]-bittene i MCUCR-registret vælger, hvilken dvaletilstand (Idle, ADC Noise Reduction eller Power-down) vil blive aktiveret af SLEEP-instruktionen. Se Tabel 7-2 for et resumé.

Hvis der opstår en aktiveret afbrydelse, mens MCU'en er i dvaletilstand, vågner MCU'en. MCU'en standses derefter i fire cyklusser ud over opstartstiden, udfører afbrydelsesrutinen og genoptager udførelsen fra instruktionen efter SLEEP. Indholdet af registret File og SRAM er uændrede, når enheden vågner fra dvale. Hvis der opstår en nulstilling under dvaletilstand, vågner MCU'en og udføres fra nulstillingsvektoren.

Bemærk: at hvis en niveauudløst afbrydelse bruges til vækning, skal det ændrede niveau holdes i nogen tid for at vække MCU'en (og for at MCU'en kan gå ind i afbrydelsesservicerutinen). Se "Eksterne afbrydelser" på side 49 for detaljer.

Inaktiv tilstand

Når SM[1:0]-bits skrives til 00, får SLEEP-instruktionen MCU'en til at gå i inaktiv tilstand, hvilket stopper CPU'en, men tillader Analog Comparator, ADC, USI, Timer/Counter, Watchdog og afbrydelsessystemet at fortsætte med at fungere. spisning. Denne dvaletilstand stopper dybest set clkCPU og clkFLASH, mens den tillader de andre ure at køre.

Inaktiv tilstand gør det muligt for MCU'en at vågne op fra eksterne udløste afbrydelser såvel som interne som Timer Overflow. Hvis vækning fra Analog Comparator-afbrydelsen ikke er påkrævet, kan Analog Comparator slukkes ved at indstille ACD-bitten i "ACSR – Analog Comparator Control and Status Register" på side 120. Dette vil reducere strømforbruget i inaktiv tilstand. Hvis ADC'en er aktiveret, starter en konvertering automatisk, når denne tilstand aktiveres.

ADC-støjreduktionstilstand

Når SM[1:0]-bittene skrives til 01, får SLEEP-instruktionen MCU'en til at gå i ADC-støjreduktionstilstand, hvilket stopper CPU'en, men tillader ADC'en, de eksterne interrupts og Watchdog'en at fortsætte med at fungere (hvis aktiveret). Denne dvaletilstand standser clkI/O, clkCPU og clkFLASH, mens de lader de andre ure køre.

Dette forbedrer støjmiljøet for ADC, hvilket muliggør målinger med højere opløsning. Hvis ADC'en er aktiveret, starter en konvertering automatisk, når denne tilstand aktiveres. Bortset fra ADC Conversion Complete-afbrydelsen, er det kun en ekstern nulstilling, en vagthund-nulstilling, en brun-out-nulstilling, en SPM/EEPROM klar afbrydelse, en ekstern niveauafbrydelse på INT0 eller en pinskifte-afbrydelse, der kan vække MCU'en fra ADC-støjreduktion mode.

Sluk-tilstand

Når SM[1:0]-bits skrives til 10, får SLEEP-instruktionen MCU'en til at gå i Power-down-tilstand. I denne tilstand stoppes oscillatoren, mens den eksterne interrupts, USI-starttilstandsdetektionen og Watchdog fortsætter med at fungere (hvis aktiveret). Kun en ekstern nulstilling, en vagthund-nulstilling, en brun-out-nulstilling, USI-starttilstandsafbrydelse, en ekstern niveauafbrydelse på INT0 eller en pinskifteafbrydelse kan vække MCU'en. Denne dvaletilstand standser alle genererede ure, hvilket kun tillader drift af asynkrone moduler.

Software BOD deaktiver

Når Brown-out-detektoren (BOD) er aktiveret af BODLEVEL-sikringer (se Tabel 20-4 på side 148), BOD overvåger aktivt forsyningen voltage i en søvnperiode. I nogle enheder er det muligt at spare strøm ved at deaktivere BOD med software i Power-Down dvaletilstand. Strømforbruget i dvaletilstanden vil så være på samme niveau, som når BOD er ​​globalt deaktiveret af sikringer.

Hvis BOD er ​​deaktiveret af software, deaktiveres BOD-funktionen umiddelbart efter at have gået i dvaletilstand. Ved opvågning fra dvale aktiveres BOD automatisk igen. Dette sikrer sikker drift i tilfælde af, at VCC-niveauet er faldet under dvaleperioden.

Når BOD er ​​blevet deaktiveret, vil opvågningstiden fra dvaletilstand være den samme som for opvågning fra RESET. Brugeren skal manuelt konfigurere opvågningstider, således at båndgap-referencen har tid til at starte, og BOD'en fungerer korrekt, før MCU'en fortsætter med at udføre kode. Se SUT[1:0] og CKSEL[3:0] sikringsbit i tabellen "Sikring lav byte" på side 149

BOD-deaktivering styres af BODS (BOD Sleep) bit i MCU Control Register, se “MCUCR – MCU kontrol Tilmeld dig” på side 37. Hvis du skriver denne bit til én, deaktiveres BOD i Power-Down, mens skrivning af et nul holder BOD aktiv. Standardindstillingen er nul, dvs. BOD aktiv.

Skrivning til BODS-bitten styres af en tidsindstillet sekvens og en aktiveringsbit, se "MCUCR – MCU Control Regis- ter” på side 37.

Begrænsninger

BOD-deaktiveringsfunktionalitet er kun implementeret på følgende enheder:

ATtiny25, revision E og nyere

ATtiny45, revision D og nyere

ATtiny85, revision C og nyere

Revisioner er markeret på enhedspakken og kan placeres som følger:

Undersiden af ​​pakke 8P3 og 8S2

Oversiden af ​​pakke 20M1

Strømreduktionsregister

Power Reduction Register (PRR), se "PRR – Power Reduction Register" på side 38, giver en metode til at reducere strømforbruget ved at stoppe uret til individuelle perifere enheder. Periferudstyrets aktuelle tilstand er fastfrosset, og I/O-registrene kan ikke læses eller skrives. Ressourcer, der bruges af den perifere enhed, når uret stoppes, vil forblive optaget, derfor bør den perifere enhed i de fleste tilfælde deaktiveres, før uret stoppes. Opvågning af et modul, hvilket sker ved at rydde bit i PRR, sætter modulet i samme tilstand som før nedlukning.

Modulnedlukning kan bruges i inaktiv tilstand og aktiv tilstand for at reducere det samlede strømforbrug markant. I alle andre dvaletilstande er uret allerede stoppet. Se "Forsyningsstrøm for I/O-moduler" på side 177 f.eksamples.

Minimering af strømforbrug

Der er flere problemer at overveje, når man forsøger at minimere strømforbruget i et AVR-styret system. Generelt bør dvaletilstande bruges så meget som muligt, og dvaletilstand skal vælges, så færrest muligt af enhedens funktioner fungerer. Alle funktioner, der ikke er nødvendige, bør deaktiveres. Især de følgende moduler kan kræve særlig overvejelse, når de forsøger at opnå det lavest mulige strømforbrug.

Analog til digital konverter

Hvis aktiveret, vil ADC'en være aktiveret i alle dvaletilstande. For at spare strøm skal ADC'en deaktiveres, før den går i dvaletilstand. Når ADC'en slukkes og tændes igen, vil den næste konvertering være en udvidet konvertering. Der henvises til "Analog til digital konverter" på side 122 for detaljer om ADC-drift.

Analog komparator

Når den går i inaktiv tilstand, skal den analoge komparator være deaktiveret, hvis den ikke bruges. Når du går ind i ADC Noise Reduction-tilstand, skal den analoge komparator være deaktiveret. I de andre dvaletilstande er den analoge komparator automatisk deaktiveret. Men hvis den analoge komparator er sat op til at bruge Internal Voltage Som input skal den analoge komparator være deaktiveret i alle dvaletilstande. Ellers er Internal Voltage Reference vil være aktiveret, uafhængigt af dvaletilstand. Der henvises til "Analog komparator" på side 119 for detaljer om, hvordan man konfigurerer Analog Comparator.

Brun-out detektor

Hvis Brown-out-detektoren ikke er nødvendig i applikationen, skal dette modul slukkes. Hvis Brown-out-detektoren er aktiveret af BODLEVEL-sikringerne, vil den være aktiveret i alle dvaletilstande og forbruger derfor altid strøm. I de dybere dvaletilstande vil dette bidrage væsentligt til det samlede strømforbrug. Se "Brun-out detek- tion” på side 41 og "Software BOD Disable" på side 35 for detaljer om, hvordan brun-out-detektoren konfigureres.

Intern voltage Reference

The Internal Voltage Reference vil blive aktiveret, når det er nødvendigt af Brown-out Detection, Analog Comparator eller ADC. Hvis disse moduler er deaktiveret som beskrevet i afsnittene ovenfor, vil den interne voltagReferencen vil blive deaktiveret, og den bruger ikke strøm. Når den er tændt igen, skal brugeren tillade referencen at starte op, før udgangen bruges. Hvis referencen holdes tændt i dvaletilstand, kan udgangen bruges med det samme. Der henvises til "Intern Voltage Reference” på side 42 for detaljer om opstartstidspunktet.

Watchdog timer

Hvis Watchdog Timer ikke er nødvendig i applikationen, skal dette modul være slukket. Hvis Watchdog Timer er aktiveret, vil den være aktiveret i alle dvaletilstande og derfor altid forbruge strøm. I de dybere dvaletilstande vil dette bidrage væsentligt til det samlede strømforbrug. Der henvises til "Watchdog Timer" på side 42 for detaljer om, hvordan man konfigurerer Watchdog-timeren.

Port Pins

Når du går ind i en dvaletilstand, skal alle portben konfigureres til at bruge minimum strøm. Det vigtigste er så at sikre, at ingen stifter driver resistive belastninger. I dvaletilstande, hvor både I/O-uret (clkI/O) og ADC-uret (clkADC) er stoppet, vil enhedens inputbuffere blive deaktiveret. Dette sikrer, at der ikke forbruges strøm

ved inputlogikken, når det ikke er nødvendigt. I nogle tilfælde er inputlogikken nødvendig for at detektere opvågningstilstande, og

den vil så blive aktiveret. Se afsnittet "Aktivering af digital input og dvaletilstand" på side 57 for detaljer om, hvilke ben der er aktiveret. Hvis inputbufferen er aktiveret, og inputsignalet efterlades flydende eller har et analogt signalniveau tæt på VCC/2, vil inputbufferen bruge for meget strøm.

For analoge inputben bør den digitale inputbuffer altid være deaktiveret. Et analogt signalniveau tæt på VCC/2 på en indgangspin kan forårsage betydelig strøm selv i aktiv tilstand. Digitale inputbuffere kan deaktiveres ved at skrive til Digital Input Disable Register (DIDR0). Der henvises til "DIDR0 – Digital Input Disable Register 0" på side 121 for detaljer.

Registerbeskrivelse

MCUCR – MCU kontrolregister

MCU-kontrolregisteret indeholder kontrolbits til strømstyring.

Bit 7 6 5 4 3 2 1 0
0x35 BODS PUD SE SM1 SM0 BODSE ISC01 ISC00 MCUCR
Læs/skriv R R/W R/W R/W R/W R R/W R/W
Startværdi 0 0 0 0 0 0 0 0

Bit 7 – BODS: BOD Sleep

BOD-deaktiveringsfunktionalitet er kun tilgængelig på nogle enheder. Se “Begrænsninger” på side 36.

For at deaktivere BOD under søvn (se Tabel 7-1 på side 34) BODS-bitten skal skrives til logisk 1. Dette styres af en tidsindstillet sekvens og aktiveringsbitten, BODSE i MCUCR. Først skal både BODS og BODSE indstilles til én. For det andet, inden for fire clock-cyklusser, skal BODS indstilles til én, og BODSE skal indstilles til nul. BODS-bitten er aktiv tre clock-cyklusser efter den er indstillet. En søvninstruktion skal udføres, mens BODS er aktiv for at slå BOD fra for den faktiske dvaletilstand. BODS-bitten slettes automatisk efter tre clock-cyklusser.

I enheder, hvor Sleeping BOD ikke er implementeret, er denne bit ubrugt og vil altid læse nul.

Bit 5 – SE: Sleep Aktiver

SE-bitten skal skrives til logisk 1 for at få MCU'en til at gå i dvaletilstand, når SLEEP-instruktionen udføres. For at undgå, at MCU'en går i dvaletilstand, medmindre det er programmørens formål, anbefales det at skrive Sleep Enable (SE) bit til en lige før udførelsen af ​​SLEEP-instruktionen og at rydde den umiddelbart efter opvågning.

Bit 4:3 – SM[1:0]: Dvaletilstand Vælg bit 1 og 0

Disse bits vælger mellem de tre tilgængelige dvaletilstande som vist i Tabel 7-2.

Tabel 7-2. Dvaletilstand Vælg

SM1 SM0 Dvaletilstand
0 0 Ledig
0 1 ADC-støjreduktion
1 0 Sluk
1 1 Reserveret

Bit 2 – BODSE: BOD Sleep Aktiver

BOD-deaktiveringsfunktionalitet er kun tilgængelig på nogle enheder. Se “Begrænsninger” på side 36.

BODSE-bitten muliggør indstilling af BODS-kontrolbit, som forklaret i BODS-bitbeskrivelsen. BOD deaktivering styres af en tidsindstillet sekvens.

Denne bit er ubrugt i enheder, hvor software BOD-deaktivering ikke er blevet implementeret og vil læses som nul i disse enheder.

PRR – Power Reduction Register

Strømreduktionsregistret giver en metode til at reducere strømforbruget ved at tillade, at perifere clock-signaler deaktiveres.

Bit 7 6 5 4 3 2 1 0
0x20 PRTIM1 PRTIM0 PRUSI PRADC PRR
Læs/skriv R R R R R/W R/W R/W R/W
Startværdi 0 0 0 0 0 0 0 0

Bits 7:4 – Res: Reserverede bits

Disse bits er reserverede bits i ATtiny25/45/85 og vil altid læses som nul.

Bit 3 – PRTIM1: Strømreduktionstimer/tæller1

Hvis du skriver en logisk en til denne bit, lukkes Timer/Counter1-modulet ned. Når Timer/Tæller1 er aktiveret, vil driften fortsætte som før nedlukningen.

Bit 2 – PRTIM0: Strømreduktionstimer/tæller0

Hvis du skriver en logisk en til denne bit, lukkes Timer/Counter0-modulet ned. Når Timer/Tæller0 er aktiveret, vil driften fortsætte som før nedlukningen.

Bit 1 – PRUSI: Power Reduction USI

At skrive en logisk en til denne bit lukker USI ved at stoppe uret til modulet. Når USI vækkes igen, skal USI'en initialiseres igen for at sikre korrekt drift.

Bit 0 – PRADC: Power Reduction ADC

Hvis du skriver en logisk en til denne bit, lukkes ADC'en ned. ADC'en skal deaktiveres, før den lukkes ned. Bemærk, at ADC-uret også bruges af nogle dele af den analoge komparator, hvilket betyder, at den analoge komparator ikke kan bruges, når denne bit er høj.

Systemkontrol og nulstilling

Nulstilling af AVR

Under nulstilling indstilles alle I/O-registre til deres begyndelsesværdier, og programmet starter afviklingen fra nulstilvektoren. Instruktionen placeret ved Reset Vector skal være en RJMP – Relative Jump – instruktion til nulstillingshåndteringsrutinen. Hvis programmet aldrig aktiverer en afbrydelseskilde, bruges interruptvektorerne ikke, og almindelig programkode kan placeres på disse steder. Kredsløbsdiagrammet i Figur 8-1 viser nulstillingslogikken. Elektriske parametre for nulstillingskredsløbet er angivet "System- og nulstillingskarakteristika" på side 165.

Figur 8-1 Nulstil logik Reset-logik

I/O-portene på AVR nulstilles straks til deres oprindelige tilstand, når en nulstillingskilde bliver aktiv. Dette kræver ikke, at nogen urkilde kører.

Efter at alle nulstillingskilder er blevet inaktive, fremkaldes en forsinkelsestæller, der strækker den interne nulstilling. Dette gør det muligt for strømmen at nå et stabilt niveau, før normal drift starter. Timeout-perioden for forsinkelsestælleren defineres af brugeren gennem SUT- og CKSEL-sikringerne. De forskellige valg for forsinkelsesperioden er præsenteret i "Ur Kilder” på side 25.

Nulstil kilder

ATtiny25/45/85 har fire kilder til nulstilling:

Start nulstilling. MCU'en nulstilles, når forsyningen voltage er under Power-on Reset Threshold (VPOT).

Ekstern nulstilling. MCU'en nulstilles, når der er et lavt niveau på RESET-stiften i længere tid end minimumsimpulslængden.

Nulstil vagthund. MCU'en nulstilles, når Watchdog Timer-perioden udløber, og Watchdog er aktiveret.

Brown-out nulstilling. MCU'en nulstilles, når forsyningen voltage VCC er under Brown-out Reset-tærsklen (VBOT), og Brown-out-detektoren er aktiveret.

Nulstilling ved opstart

En Power-on Reset (POR)-impuls genereres af et On-chip-detekteringskredsløb. Detektionsniveauet er defineret i "Sys- temperatur- og nulstillingskarakteristika" på side 165. POR aktiveres, når VCC er under detektionsniveauet. POR-kredsløbet kan bruges til at udløse Start-up Reset, samt til at detektere en fejl i forsyningsvolumentage.

Et Power-on Reset (POR)-kredsløb sikrer, at enheden nulstilles fra Power-on. At nå tærskelværdien for nulstilling ved start voltage aktiverer forsinkelsestælleren, som bestemmer, hvor længe enheden holdes i RESET efter VCC-stigning. RESET-signalet aktiveres igen uden nogen forsinkelse, når VCC falder til under detektionsniveauet.

Figur 8-2. MCU opstart, NULSTIL bundet til VCC

INTERN NULSTIL

Figur 8-3. MCU opstart, NULSTIL Udvidet eksternt

Ekstern nulstilling

En ekstern nulstilling genereres af et lavt niveau på RESET-stiften, hvis den er aktiveret. Nulstil pulser længere end minimum pulsbredde (se "System- og nulstillingskarakteristika" på side 165) vil generere en nulstilling, selvom uret ikke kører. Kortere impulser er ikke garanteret at generere en nulstilling. Når det påførte signal når Reset Threshold Voltage – VRST – på sin positive kant starter forsinkelsestælleren MCU'en, efter at Timeout-perioden er udløbet.

Figur 8-4. Ekstern nulstilling under drift Fig. 8.4

Brown-out detektion

ATtiny25/45/85 har et On-chip Brown-out Detection (BOD) kredsløb til overvågning af VCC-niveauet under drift ved at sammenligne det med et fast triggerniveau. Triggerniveauet for BOD kan vælges af BODLEVEL-sikringerne. Triggerniveauet har en hysterese for at sikre spidsfri Brown-out-detektion. Hysteresen på detektionsniveauet skal fortolkes som VBOT+ = VBOT + VHYST/2 og VBOT- = VBOT – VHYST/2.

Når BOD er ​​aktiveret, og VCC falder til en værdi under triggerniveauet (VBOT-in) Figur 8-5), aktiveres Brown-out Reset øjeblikkeligt. Når VCC stiger over triggerniveauet (VBOT+ in Figur 8-5), starter forsinkelsestælleren MCU'en efter Timeout-perioden tTOUT er udløbet.

BOD-kredsløbet vil kun detektere et fald i VCC, hvis voltage forbliver under triggerniveauet i længere tid end tBOD givet ind "System- og nulstillingskarakteristika" på side 165. Fig. 8.5

Nulstil vagthund

Når Watchdog'en timeout, vil den generere en kort nulstillingsimpuls af en CK-cyklusvarighed. På den faldende kant af denne puls begynder forsinkelsestimeren at tælle Timeout-perioden tTOUT. Der henvises til "Watchdog Timer" på side 42 for detaljer om betjening af Watchdog-timeren.

Voltage Reference Aktiver signaler og opstartstid

VoltagReferencen har en opstartstid, som kan påvirke den måde, den skal bruges på. Opstartstiden er angivet "System- og nulstillingskarakteristika" på side 165. For at spare strøm er referencen ikke altid tændt. Referencen er tændt i følgende situationer:

Når BOD er ​​aktiveret (ved at programmere BODLEVEL[2:0] sikringsbits).

Når båndgap-referencen er forbundet til den analoge komparator (ved at indstille ACBG-bitten i ACSR).

Når ADC'en er aktiveret.

Når BOD'en ikke er aktiveret, skal brugeren efter indstilling af ACBG-bit eller aktivering af ADC altid tillade referencen at starte op, før outputtet fra den analoge komparator eller ADC'en bruges. For at reducere strømforbruget i Power-down-tilstand kan brugeren undgå de tre ovenstående forhold for at sikre, at referencen er slukket, før han går ind i Power-down-tilstand.

Watchdog timer

Watchdog Timeren er clocket fra en On-chip Oscillator, som kører ved 128 kHz. Ved at styre Watchdog Timer-prescaleren kan Watchdog-nulstillingsintervallet justeres som vist i Tabel 8-3 på side 46. WDR – Watchdog Reset – instruktionen nulstiller Watchdog Timeren. Watchdog-timeren nulstilles også, når den er deaktiveret, og når en chipnulstilling forekommer. Ti forskellige urcyklusperioder kan vælges for at bestemme nulstillingsperioden. Hvis nulstillingsperioden udløber uden en anden Watchdog-nulstilling, nulstilles ATtiny25/45/85 og udføres fra nulstillingsvektoren. For timing detaljer om Watchdog Reset, se Tabel 8-3 på side 46.

Watchdog-timeren kan også konfigureres til at generere en afbrydelse i stedet for en nulstilling. Dette kan være meget nyttigt, når du bruger Watchdog til at vågne op fra Power-down.

For at forhindre utilsigtet deaktivering af Watchdog eller utilsigtet ændring af timeout-periode, vælges to forskellige sikkerhedsniveauer af sikringen WDTON som vist i Tabel 8-1 Der henvises til "Tidsindstillede sekvenser til ændring af kon- figuration af Watchdog Timer" på side 43 for detaljer.

Tabel 8-1. WDT-konfiguration som en funktion af sikringsindstillingerne for WDTON

WDTON Sikkerhedsniveau WDT udgangstilstand Sådan deaktiveres WDT Sådan ændres timeout
Uprogrammeret 1 Handicappet Tidsbestemt sekvens Ingen begrænsninger
Programmeret 2 Aktiveret Altid aktiveret Tidsbestemt sekvens

Figur 8-7. Watchdog timer Vagthund

Tidsindstillede sekvenser til ændring af konfigurationen af ​​Watchdog-timeren

Sekvensen for ændring af konfigurationen afviger en smule mellem de to sikkerhedsniveauer. Separate procedurer er beskrevet for hvert niveau.

Sikkerhedsniveau 1: I denne tilstand er Watchdog-timeren oprindeligt deaktiveret, men kan aktiveres ved at skrive WDE-bitten til en uden nogen begrænsning. En tidsindstillet sekvens er nødvendig, når en aktiveret Watchdog Timer deaktiveres. For at deaktivere en aktiveret Watchdog Timer skal følgende procedure følges:

I samme operation skal du skrive en logisk en til WDCE og WDE. En logisk en skal skrives til WDE uanset den tidligere værdi af WDE-bitten.

Inden for de næste fire clock-cyklusser, i samme operation, skriv WDE- og WDP-bittene som ønsket, men med WDCE-bitten slettet.

Sikkerhedsniveau 2: I denne tilstand er Watchdog-timeren altid aktiveret, og WDE-bitten vil altid læses som én. En tidsindstillet sekvens er nødvendig, når du ændrer Watchdog Timeout-perioden. For at ændre Watchdog-timeout skal følgende procedure følges:

I samme operation skal du skrive en logisk til WDCE og WDE. Selvom WDE altid er indstillet, skal WDE skrives til en for at starte den tidsindstillede sekvens.

Inden for de næste fire clock-cyklusser, i samme operation, skriv WDP-bittene som ønsket, men med WDCE-bitten slettet. Værdien skrevet til WDE-bitten er irrelevant.

Kode Eksample

Følgende kode example viser en samling og en C-funktion til at slukke for WDT. Eksample antager, at interrupts styres (f.eks. ved at deaktivere interrupts globalt), så der ikke vil forekomme nogen interrupts under udførelsen af ​​disse funktioner.

Monteringskode Example(1)
WDT_off:

wdr

; Ryd WDRF i MCUSR

ldi r16, (0<

ud MCUSR, r16

; Skriv logisk en til WDCE og WDE

; Behold den gamle prescaler-indstilling for at forhindre utilsigtet Watchdog-nulstilling

i r16, WDTCR

ori r16, (1<

ud WDTCR, r16

; Sluk WDT

ldi r16, (0<

ud WDTCR, r16

ret

C-kode Eksample(1)
void WDT_off(void)

{

_WDR();

/* Ryd WDRF i MCUSR */ MCUSR = 0x00

/* Skriv logisk et til WDCE og WDE */ WDTCR |= (1<

/* Slå WDT fra */ WDTCR = 0x00;

}

Bemærk: 1. Se "Kodeeksamples" på side 6.

Registerbeskrivelse

MCUSR – MCU Status Register

MCU-statusregistret giver information om, hvilken nulstillingskilde der forårsagede en MCU-nulstilling.

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

Startværdi 0 0 0 0 Se bitbeskrivelse

Bits 7:4 – Res: Reserverede bits

Disse bits er reserverede bits i ATtiny25/45/85 og vil altid læses som nul.

Bit 3 – WDRF: Watchdog Reset Flag

Denne bit indstilles, hvis der opstår en Watchdog-nulstilling. Bitten nulstilles ved en Power-on Reset eller ved at skrive et logisk nul til flaget.

Bit 2 – BORF: Brown-out Reset Flag

Denne bit indstilles, hvis en brun-out-nulstilling forekommer. Bitten nulstilles ved en Power-on Reset eller ved at skrive et logisk nul til flaget.

Bit 1 – EXTRF: Eksternt nulstillingsflag

Denne bit indstilles, hvis der opstår en ekstern nulstilling. Bitten nulstilles ved en Power-on Reset eller ved at skrive et logisk nul til flaget.

Bit 0 – PORF: Flag til nulstilling ved start

Denne bit indstilles, hvis der opstår en Power-on Reset. Bitten nulstilles kun ved at skrive et logisk nul til flaget.

For at gøre brug af Reset Flags til at identificere en nulstillingstilstand, skal brugeren læse og derefter nulstille MCUSR'en så tidligt som muligt i programmet. Hvis registret ryddes, før en anden nulstilling finder sted, kan kilden til nulstillingen findes ved at undersøge nulstillingsflag.

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/skriv R/W R/W R/W R/W R/W R/W R/W R/W
Startværdi 0 0 0 0 X 0 0 0

Bit 7 – WDIF: Watchdog Timeout Interrupt Flag

Denne bit indstilles, når der opstår en time-out i Watchdog-timeren, og Watchdog-timeren er konfigureret til afbrydelse. WDIF ryddes af hardware, når den tilsvarende interrupt-håndteringsvektor udføres. Alternativt ryddes WDIF ved at skrive en logisk et til flaget. Når I-bit i SREG og WDIE er indstillet, udføres Watchdog Timeout Interrupt.

Bit 6 – WDIE: Watchdog Timeout Interrupt Aktiver

Når denne bit er skrevet til en, slettes WDE, og I-bitten i statusregistret er indstillet, er Watchdog Timeout Interrupt aktiveret. I denne tilstand udføres den tilsvarende afbrydelse i stedet for en nulstilling, hvis der opstår en timeout i Watchdog-timeren.

Hvis WDE er indstillet, ryddes WDIE automatisk af hardware, når der opstår en time-out. Dette er nyttigt for at bevare Watchdog Reset-sikkerheden, mens du bruger afbrydelsen. Efter at WDIE-bitten er ryddet, vil den næste time-out generere en nulstilling. For at undgå Watchdog Reset skal WDIE indstilles efter hver afbrydelse.

Tabel 8-2. Watchdog Timer-konfiguration

WDE WDIE Watchdog Timer State Handling ved time-out
0 0 Stoppet Ingen
0 1 Løb Afbryde
1 0 Løb Nulstil
1 1 Løb Afbryde

Bit 4 – WDCE: Watchdog Change Enable

Denne bit skal indstilles, når WDE-bitten skrives til logisk nul. Ellers vil Watchdog ikke blive deaktiveret. Når først skrevet til en, vil hardware rydde denne bit efter fire clock-cyklusser. Se beskrivelsen af ​​WDE-bitten for en Watchdog-deaktiveringsprocedure. Denne bit skal også indstilles ved ændring af prescaler bits. Se "Tidsindstillede sekvenser til ændring af konfigurationen af ​​Watchdog-timeren” på side 43.

Bit 3 – WDE: Watchdog Enable

Når WDE er skrevet til logisk 1, er Watchdog Timer aktiveret, og hvis WDE skrives til logisk nul, er Watchdog Timer-funktionen deaktiveret. WDE kan kun ryddes, hvis WDCE-bitten har logisk niveau et. For at deaktivere en aktiveret Watchdog Timer skal følgende procedure følges:

I samme operation skal du skrive en logisk en til WDCE og WDE. En logisk en skal skrives til WDE, selvom den er sat til en, før deaktiveringsoperationen starter.

Inden for de næste fire clock-cyklusser skal du skrive et logisk 0 til WDE. Dette deaktiverer Watchdog.

I sikkerhedsniveau 2 er det ikke muligt at deaktivere Watchdog Timer, selv med algoritmen beskrevet ovenfor. Se "Tidsindstillede sekvenser til ændring af konfigurationen af ​​Watchdog-timeren" på side 43.

I sikkerhedsniveau 1 tilsidesættes WDE af WDRF i MCUSR. Se "MCUSR – MCU Status Register" på side 44 for beskrivelse af WDRF. Det betyder, at WDE altid er indstillet, når WDRF er indstillet. For at rydde WDE skal WDRF ryddes, før du deaktiverer Watchdog med proceduren beskrevet ovenfor. Denne funktion sikrer flere nulstillinger under forhold, der forårsager fejl, og en sikker opstart efter fejlen.

Bemærk: Hvis watchdog-timeren ikke skal bruges i applikationen, er det vigtigt at gennemgå en watchdog-deaktiveringsprocedure i initialiseringen af ​​enheden. Hvis Watchdog ved et uheld er aktiveret, f.eksampved en løbsk pointer eller brun-out-tilstand, nulstilles enheden, hvilket igen vil føre til en ny vagthund-nulstilling. For at undgå denne situation bør applikationssoftwaren altid rydde WDRF-flaget og WDE-kontrolbitten i initialiseringsrutinen.

Bits 5, 2:0 – WDP[3:0]: Watchdog Timer Prescaler 3, 2, 1 og 0

WDP[3:0]-bits bestemmer Watchdog Timer-forskallingen, når Watchdog Timer er aktiveret. De forskellige forskaleringsværdier og deres tilsvarende timeoutperioder er vist i Tabel 8-3.

Tabel 8-3. Watchdog Timer Prescale Vælg

WDP3 WDP2 WDP1 WDP0 Antal WDT-oscillatorcyklusser Typisk timeout ved VCC = 5.0V
0 0 0 0 2K (2048) cyklusser 16 ms
0 0 0 1 4K (4096) cyklusser 32 ms
0 0 1 0 8K (8192) cyklusser 64 ms
0 0 1 1 16K (16384) cyklusser 0.125 s
0 1 0 0 32K (32764) cyklusser 0.25 s
0 1 0 1 64K (65536) cyklusser 0.5 s
0 1 1 0 128K (131072) cyklusser 1.0 s
0 1 1 1 256K (262144) cyklusser 2.0 s
1 0 0 0 512K (524288) cyklusser 4.0 s
1 0 0 1 1024K (1048576) cyklusser 8.0 s

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

WDP3 WDP2 WDP1 WDP0 Antal WDT-oscillatorcyklusser Typisk timeout ved VCC = 5.0V
1 0 1 0 Reserveret(1)
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1

Bemærk: 1. Hvis valgt, vil en af ​​de gyldige indstillinger under 0b1010 blive brugt.

afbryder

Dette afsnit beskriver detaljerne for afbrydelseshåndteringen som udført i ATtiny25/45/85. For en generel forklaring af AVR-afbrydelseshåndteringen, se "Nulstil og afbryd håndtering" på side 12.

Afbryd vektorer i ATtiny25/45/85

Interrupt-vektorerne for ATtiny25/45/85 er beskrevet i Tabel 9-1under.

Tabel 9-1. Nulstil og afbryd vektorer

Vektor nr. Program adresse Kilde Afbryde definition
1 0x0000 NULSTIL Ekstern pin, Power-on Reset, Brown-out Reset, Watchdog Reset
2 0x0001 INT0 Ekstern afbrydelsesanmodning 0
3 0x0002 PCINT0 Pin Change Interrupt Request 0
4 0x0003 TIMER1_COMPA Timer/tæller1 Sammenlign Match A
5 0x0004 TIMER1_OVF Timer/tæller1 Overløb
6 0x0005 TIMER0_OVF Timer/tæller0 Overløb
7 0x0006 EE_RDY EEPROM klar
8 0x0007 ANA_COMP Analog komparator
9 0x0008 ADC ADC-konvertering fuldført
10 0x0009 TIMER1_COMPB Timer/Tæller1 Sammenlign Match B
11 0x000A TIMER0_COMPA Timer/tæller0 Sammenlign Match A
12 0x000B TIMER0_COMPB Timer/Tæller0 Sammenlign Match B
13 0x000C WDT Watchdog Time-out
14 0x000D USI_START USI START
15 0x000E USI_OVF USI Overflow

Hvis programmet aldrig aktiverer en afbrydelseskilde, bruges interruptvektorerne ikke, og almindelig programkode kan placeres på disse steder.

En typisk og generel opsætning for interrupt vektoradresser i ATtiny25/45/85 er vist i programmet ex.ample nedenfor.

Monteringskode Example
.org 0x0000 ;Indstil adressen på næste erklæring
rjmp NULSTIL ; Adresse 0x0000
rjmp INT0_ISR ; Adresse 0x0001
rjmp PCINT0_ISR ; Adresse 0x0002
rjmp TIM1_COMPA_ISR ; Adresse 0x0003
rjmp TIM1_OVF_ISR ; Adresse 0x0004
rjmp TIM0_OVF_ISR ; Adresse 0x0005
rjmp EE_RDY_ISR ; Adresse 0x0006
rjmp ANA_COMP_ISR ; Adresse 0x0007
rjmp ADC_ISR ; Adresse 0x0008
rjmp TIM1_COMPB_ISR ; Adresse 0x0009
rjmp TIM0_COMPA_ISR ; Adresse 0x000A
rjmp TIM0_COMPB_ISR ; Adresse 0x000B
rjmp WDT_ISR ; Adresse 0x000C
rjmp USI_START_ISR ; Adresse 0x000D
rjmp USI_OVF_ISR ; Adresse 0x000E
NULSTIL: ; Hovedprogram start
; Adresse 0x000F

Bemærk: Se "Kodeeksamples" på side 6.

Eksterne afbrydelser

De eksterne afbrydelser udløses af INT0-stiften eller en af ​​PCINT[5:0]-benene. Bemærk, at afbrydelserne, hvis de er aktiveret, udløses, selvom INT0- eller PCINT[5:0]-benene er konfigureret som udgange. Denne funktion giver mulighed for at generere en softwareafbrydelse. Pin change interrupts PCI vil udløse, hvis en aktiveret PCINT[5:0] pin skifter. PCMSK Registeret kontrollerer, hvilke ben der bidrager til pinskifteafbrydelser. Pin change interrupts på PCINT[5:0] detekteres asynkront. Dette indebærer, at disse afbrydelser kan bruges til at vække delen også fra andre dvaletilstande end inaktive tilstande.

INT0-afbrydelserne kan udløses af en faldende eller stigende kant eller et lavt niveau. Dette er sat op som angivet i specifikationen for MCU Control Register – MCUCR. Når INT0-afbrydelsen er aktiveret og er konfigureret som niveauudløst, udløses afbrydelsen, så længe stiften holdes lav. Bemærk, at genkendelse af faldende eller stigende kantafbrydelser på INT0 kræver tilstedeværelsen af ​​et I/O-ur, beskrevet i "Ursystemer og deres distribution" tændt side 23.

Lavt niveau afbrydelse

Et lavt niveau afbrydelse på INT0 detekteres asynkront. Dette indebærer, at denne afbrydelse kan bruges til at vække delen også fra andre dvaletilstande end inaktive tilstande. I/O-uret er standset i alle dvaletilstande undtagen inaktiv tilstand.

Bemærk, at hvis en niveauudløst afbrydelse bruges til opvågning fra Power-down, skal det påkrævede niveau holdes længe nok til, at MCU'en kan fuldføre opvågningen for at udløse niveauafbrydelsen. Hvis niveauet forsvinder inden slutningen af ​​opstartstiden, vil MCU'en stadig vågne op, men der vil ikke blive genereret nogen afbrydelse. Opstartstiden er defineret af SUT- og CKSEL-sikringerne som beskrevet i "Systemur og urindstillinger" på side 23.

Hvis det lave niveau på afbrydelsesstiften fjernes, før enheden er vågnet, vil programafviklingen ikke blive omdirigeret til afbrydelsesservicerutinen, men fortsætte fra instruktionen efter SLEEP-kommandoen.

Pin Change Interrupt Timing

En eksample af timing af et pinskifteafbrydelse er vist i Figur 9-1.

Registerbeskrivelse

MCUCR – MCU kontrolregister

Det eksterne afbrydelseskontrolregister A indeholder kontrolbits til afbrydelsesfølingsstyring.

Bit 7 6 5 4 3 2 1 0
0x35 BODS PUD SE SM1 SM0 BODSE ISC01 ISC00 MCUCR
Læs/skriv R R/W R/W R/W R/W R R/W R/W
Startværdi 0 0 0 0 0 0 0 0

Bits 1:0 – ISC0[1:0]: Interrupt Sense Control 0 Bit 1 og Bit 0

Den eksterne afbrydelse 0 aktiveres af den eksterne pin INT0, hvis SREG I-flaget og den tilsvarende afbrydelsesmaske er indstillet. Niveauet og kanterne på den eksterne INT0-stift, der aktiverer afbrydelsen, er defineret i Tabel 9-2. Værdien på INT0-stiften er sampled før detektering af kanter. Hvis kant- eller skifteafbrydelse er valgt, vil impulser, der varer længere end én urperiode, generere en afbrydelse. Kortere impulser er ikke garanteret at generere en afbrydelse. Hvis lavt niveau afbrydelse er valgt, skal det lave niveau holdes indtil færdiggørelsen af ​​den aktuelt eksekverende instruktion for at generere en afbrydelse.

Tabel 9-2. Afbrydelse 0 Sense Control

ISC01 ISC00 Beskrivelse
0 0 Det lave niveau af INT0 genererer en afbrydelsesanmodning.
0 1 Enhver logisk ændring på INT0 genererer en afbrydelsesanmodning.
1 0 Den faldende kant af INT0 genererer en afbrydelsesanmodning.
1 1 Den stigende kant af INT0 genererer en afbrydelsesanmodning.

GIMSK – General Interrupt Mask Register

Bit 7 6 5 4 3 2 1 0
0x3B INT0 PCIE GIMSK
Læs/skriv R R/W R/W R R R R R
Startværdi 0 0 0 0 0 0 0 0

Bits 7, 4:0 – Res: Reserverede bits

Disse bits er reserverede bits i ATtiny25/45/85 og vil altid læses som nul.

Bit 6 – INT0: Ekstern afbrydelsesanmodning 0 Aktiver

Når INT0-bitten er indstillet (én) og I-bitten i statusregistret (SREG) er indstillet (én), er den eksterne pin-afbrydelse aktiveret. Interrupt Sense Control0-bits 1/0 (ISC01 og ISC00) i MCU Control Register (MCUCR) definerer, om den eksterne interrupt aktiveres ved stigende og/eller faldende kant af INT0-stiften eller niveauregistreret. Aktivitet på stiften vil forårsage en afbrydelsesanmodning, selvom INT0 er konfigureret som en udgang. Den tilsvarende afbrydelse af ekstern afbrydelsesanmodning 0 udføres fra INT0-afbrydelsesvektoren.

Bit 5 – PCIE: Pin Change Interrupt Enable

Når PCIE-bitten er indstillet (én) og I-bitten i statusregistret (SREG) er indstillet (én), er pin change interrupt aktiveret. Enhver ændring på en aktiveret PCINT[5:0]-pin vil forårsage en afbrydelse. Den tilsvarende afbrydelse af Pin Change Interrupt Request udføres fra PCI Interrupt Vector. PCINT[5:0]-ben aktiveres individuelt af PCMSK0-registret.

GIFR – General Interrupt Flag Register

Bit 7 6 5 4 3 2 1 0
0x3A INTF0 PCIF GIFR
Læs/skriv R R/W R/W R R R R R
Startværdi 0 0 0 0 0 0 0 0

Bits 7, 4:0 – Res: Reserverede bits

Disse bits er reserverede bits i ATtiny25/45/85 og vil altid læses som nul.

Bit 6 – INTF0: Eksternt afbrydelsesflag 0

Når en kant- eller logikændring på INT0-stiften udløser en afbrydelsesanmodning, bliver INTF0 indstillet (én). Hvis I-bitten i SREG og INT0-bitten i GIMSK er indstillet (én), vil MCU'en hoppe til den tilsvarende interrupt-vektor. Flaget slettes, når afbrydelsesrutinen udføres. Alternativt kan flaget slettes ved at skrive et logisk til det. Dette flag slettes altid, når INT0 er konfigureret som en niveauafbrydelse.

Bit 5 – PCIF: Pin Change Interrupt Flag

Når en logisk ændring på en PCINT[5:0]-pin udløser en afbrydelsesanmodning, bliver PCIF indstillet (én). Hvis I-bitten i SREG og PCIE-bitten i GIMSK er indstillet (en), vil MCU'en hoppe til den tilsvarende interrupt-vektor. Flaget slettes, når afbrydelsesrutinen udføres. Alternativt kan flaget slettes ved at skrive et logisk til det.

PCMSK – Pin Change Mask Register

Bit 7 6 5 4 3 2 1 0
0x15 PCINT5 PCINT4 PCINT3 PCINT2 PCINT1 PCINT0 PCMSK
Læs/skriv R R R/W R/W R/W R/W R/W R/W
Startværdi 0 0 0 0 0 0 0 0

Bits 7:6 – Res: Reserverede bits

Disse bits er reserverede bits i ATtiny25/45/85 og vil altid læses som nul.

Bits 5:0 – PCINT[5:0]: Pin Change Enable Mask 5:0

Hver PCINT[5:0] bit vælger, om pin change interrupt er aktiveret på den tilsvarende I/O pin. Hvis PCINT[5:0] er indstillet, og PCIE-bitten i GIMSK er indstillet, er pin change interrupt aktiveret på den tilsvarende I/O pin. Hvis PCINT[5:0] er ryddet, deaktiveres pin change interrupt på den tilsvarende I/O pin.

I/O-porte

Indledning

Alle AVR-porte har ægte Read-Modify-Write-funktionalitet, når de bruges som generelle digitale I/O-porte. Dette betyder, at retningen af ​​en portstift kan ændres uden utilsigtet at ændre retningen på en anden pin med SBI- og CBI-instruktionerne. Det samme gælder ved ændring af drevværdi (hvis konfigureret som output) eller aktivering/deaktivering af pull-up modstande (hvis konfigureret som input). Hver outputbuffer har symmetriske drevkarakteristika med både høj synke- og kildekapacitet. Pin-driveren er stærk nok til at drive LED-skærme direkte. Alle portstifter har individuelt valgbare pull-up modstande med en forsyningsvoltage invariant modstand. Alle I/O-ben har beskyttelsesdioder til både VCC og Jord som angivet i Figur 10-1. Der henvises til "Elektriske egenskaber" på side 161 for en komplet liste over parametre.

Figur 10-1. I/O Pin Equivalent Schematic

Fig. 10

Alle registre og bitreferencer i dette afsnit er skrevet i generel form. Et lille "x" repræsenterer nummereringsbogstavet for porten, og et lille "n" repræsenterer bitnummeret. Men når man bruger registeret eller bit definerer i et program, skal den præcise form bruges. F.eksample, PORTB3 for bit nr. 3 i Port B, her generelt dokumenteret som PORTxn. De fysiske I/O-registre og bitplaceringer er angivet i "Registrer beskrivelse" på side 64.

Tre I/O-hukommelsesadresseplaceringer er tildelt for hver port, en hver for dataregisteret – PORTx, dataretningsregisteret – DDRx og portinput-pindene – PINx. Port Input Pins I/O-placeringen er skrivebeskyttet, mens dataregistret og dataretningsregistret læses/skrives. Men at skrive en logisk et til en bit i PINx-registret, vil resultere i en skifte i den tilsvarende bit i dataregistret. Derudover deaktiverer Pull-up Disable – PUD-bit i MCUCR pull-up-funktionen for alle ben i alle porte, når den er indstillet.

Brug af I/O-porten som General Digital I/O er beskrevet i "Porte som almindelig digital I/O" på side 53. De fleste portben er multiplekset med alternative funktioner til de perifere funktioner på enheden. Hvordan hver alternativ funktion interfererer med portstiften er beskrevet i "Alternative portfunktioner" på side 57. Se de enkelte modulsektioner for en fuldstændig beskrivelse af de alternative funktioner.

Bemærk, at aktivering af den alternative funktion for nogle af portbenene ikke påvirker brugen af ​​de andre ben i porten som almindelig digital I/O.

Porte som generel digital I/O

Portene er tovejs I/O-porte med valgfri interne pull-ups. Figur 10-2 viser en funktionsbeskrivelse af én I/O-port pin, her generisk kaldet Pxn.

Figur 10-2. Generelt Digital I/O(1)

Fig. 10

Konfiguration af pin

Hver portpin består af tre registerbits: DDxn, PORTxn og PINxn. Som vist i "Registrer beskrivelse" på side 64, tilgås DDxn-bittene ved DDRx I/O-adressen, PORTxn-bittene ved PORTx I/O-adressen og PINxn-bittene ved PINx I/O-adressen.

DDxn-bitten i DDRx-registret vælger retningen for denne pin. Hvis DDxn er skrevet logisk et, er Pxn konfigureret som en output-pin. Hvis DDxn er skrevet logisk nul, er Pxn konfigureret som en input-pin.

Hvis PORTxn er skrevet logisk 1, når stiften er konfigureret som en input-pin, aktiveres pull-up-modstanden. For at slå pull-up-modstanden fra, skal PORTxn skrives logisk nul, eller stiften skal konfigureres som en udgangsstift. Portbenene er tredelte, når nulstillingstilstanden bliver aktiv, selvom ingen ure kører.

Hvis PORTxn er skrevet logisk 1, når stiften er konfigureret som en udgangspin, bliver portstiften drevet høj (én). Hvis PORTxn skrives logisk nul, når stiften er konfigureret som en udgangspin, bliver portstiften drevet lav (nul).

Skift af pin

Hvis du skriver en logisk en til PINxn, skiftes værdien af ​​PORTxn, uafhængig af værdien af ​​DDRxn. Bemærk, at SBI-instruktionen kan bruges til at skifte en enkelt bit i en port.

Skift mellem input og output

Når der skiftes mellem tri-state ({DDxn, PORTxn} = 0b00) og output høj ({DDxn, PORTxn} = 0b11), en mellemtilstand med enten pull-up aktiveret {DDxn, PORTxn} = 0b01) eller output lav ({DDxn, PORTxn} = 0b10) skal forekomme. Normalt er pull-up-aktiveret tilstand fuldt acceptabel, da et højimpedant miljø ikke vil bemærke forskellen mellem en stærk høj driver og en pull-up. Hvis dette ikke er tilfældet, kan PUD-bitten i MCUCR-registret indstilles til at deaktivere alle pull-ups i alle porte.

Skift mellem input med pull-up og output low genererer det samme problem. Brugeren skal bruge enten tri-state ({DDxn, PORTxn} = 0b00) eller output high state ({DDxn, PORTxn} = 0b10) som et mellemtrin.

Tabel 10-1 opsummerer styresignalerne for pinværdien.

Tabel 10-1. Port Pin-konfigurationer

DDxn PORTxn PUD

(i MCUCR)

I/O Træk op Kommentar
0 0 X Input Ingen Tri-state (Hi-Z)
0 1 0 Input Ja Pxn vil kildestrøm, hvis ext. trukket lavt.
0 1 1 Input Ingen Tri-state (Hi-Z)
1 0 X Produktion Ingen Udgang lav (vask)
1 1 X Produktion Ingen Output høj (kilde)

Læsning af pinværdien

Uafhængigt af indstillingen af ​​dataretningsbit DDxn kan portstiften læses gennem PINxn-registerbitten. Som vist i Figur 10-2, udgør PINxn-registerbitten og den foregående låsemekanisme en synkronisering. Dette er nødvendigt for at undgå metastabilitet, hvis den fysiske pin ændrer værdi nær kanten af ​​det interne ur, men det introducerer også en forsinkelse. Figur 10-3 viser et timingdiagram over synkroniseringen ved læsning af en eksternt anvendt pinværdi. De maksimale og minimale udbredelsesforsinkelser er angivet henholdsvis tpd,max og tpd,min.

Overvej, at urperioden starter kort efter den første faldende kant af systemuret. Låsen er lukket, når uret er lavt, og bliver gennemsigtigt, når uret er højt, som angivet af det skraverede område af "SYNC LATCH"-signalet. Signalværdien er låst, når systemuret bliver lavt. Den klokkes ind i PINxn-registret ved den efterfølgende positive urkant. Som angivet af de to pile tpd,max og tpd,min, vil en enkelt signalovergang på stiften blive forsinket mellem ½ og 1½ systemurperiode afhængigt af påstandstidspunktet.

Ved tilbagelæsning af en softwaretildelt pinværdi, skal der indsættes en nop-instruktion som angivet i Figur 10-4. Ud-instruktionen indstiller "SYNC LATCH"-signalet ved den positive kant af uret. I dette tilfælde er forsinkelsen tpd gennem synkroniseringen en systemurperiode.

Følgende kode example viser, hvordan man indstiller port B ben 0 og 1 høj, 2 og 3 lav, og definerer port ben fra 4 til 5 som input med en pull-up tildelt port pin 4. De resulterende pin værdier læses tilbage igen, men som tidligere diskuteret, er en nop-instruktion inkluderet for at kunne læse den værdi tilbage, der for nylig er tildelt nogle af stifterne.

Monteringskode Example(1)

; Definer pull-ups og sæt output højt

; Definer retninger for portstifter

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

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

ud PORTB,r16

ud DDRB,r17

; Indsæt nop for synkronisering

nej

; Læs portstifter

i r16, PINB

Bemærk: Til monteringsprogrammet bruges to midlertidige registre til at minimere tiden fra pull-ups er sat på ben 0, 1 og 4, indtil retningsbittene er korrekt indstillet, hvilket definerer bit 2 og 3 som lav og redefinerer bit 0 og 1 som stærke høje drivere.

C-kode Eksample
usigneret char i;

/* Definer pull-ups og sæt output højt */

/* Definer retninger for portstifter */ PORTB = (1<

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

/* Indsæt nop for synkronisering*/

_NOP();

/* Læs portstifter */ i = PINB;

Digital Input Enable og Sleep Modes

Som vist i Figur 10-2, kan det digitale indgangssignal være clamped til jord ved indgangen af ​​schmitt-triggeren. Signalet, der er angivet SLEEP i figuren, indstilles af MCU Sleep Controller i Power-down-tilstand for at undgå højt strømforbrug, hvis nogle inputsignaler efterlades flydende, eller har et analogt signalniveau tæt på VCC/2.

SLEEP tilsidesættes for portben, der er aktiveret som eksterne afbrydelsesben. Hvis den eksterne afbrydelsesanmodning ikke er aktiveret, er SLEEP også aktiv for disse ben. SLEEP er også tilsidesat af forskellige andre alternative funktioner som beskrevet i "Alternative portfunktioner" på side 57.

Hvis et logisk højt niveau ("én") er til stede på en asynkron ekstern afbrydelsesstift konfigureret som "Afbrydelse ved stigende kant, faldende kant eller enhver logisk ændring på ben", mens den eksterne afbrydelse ikke er aktiveret, vil det tilsvarende eksterne afbrydelsesflag indstilles, når du genoptager fra ovennævnte dvaletilstand, da clamping i disse dvaletilstande frembringer den ønskede logiske ændring.

Uforbundne stifter

Hvis nogle stifter er ubrugte, anbefales det at sikre, at disse stifter har et defineret niveau. Selvom de fleste af de digitale indgange er deaktiveret i de dybe dvaletilstande som beskrevet ovenfor, bør flydende indgange undgås for at reducere strømforbruget i alle andre tilstande, hvor de digitale indgange er aktiveret (Nulstil, Aktiv tilstand og Inaktiv tilstand).

Den enkleste metode til at sikre et defineret niveau af en ubrugt stift er at aktivere den interne pull-up. I dette tilfælde vil pull-up'en blive deaktiveret under nulstillingen. Hvis lavt strømforbrug under nulstilling er vigtigt, anbefales det at bruge en ekstern pull-up eller pulldown. Det anbefales ikke at tilslutte ubrugte ben direkte til VCC eller GND, da dette kan forårsage for store strømme, hvis pinden ved et uheld konfigureres som en udgang.

Alternative portfunktioner

De fleste portben har alternative funktioner ud over at være generelle digitale I/O'er. Figur 10-5 viser, hvordan portpin-styringen signalerer fra den forenklede Figur 10-2 kan tilsidesættes af alternative funktioner. De overordnede signaler er muligvis ikke til stede i alle portben, men figuren tjener som en generisk beskrivelse, der gælder for alle portben i AVR-mikrocontrollerfamilien.

Tabel 10-2. Generisk beskrivelse af tilsidesættende signaler for alternative funktioner

Signal navn Fuldt navn Beskrivelse
PUOE Pull-up Tilsidesæt Aktiver Hvis dette signal er indstillet, styres pull-up-aktiveringen af ​​PUOV-signalet. Hvis dette signal slettes, aktiveres pull-up, når

{DDxn, PORTxn, PUD} = 0b010.

PUOV Pull-up tilsidesættelsesværdi Hvis PUOE er indstillet, aktiveres/deaktiveres pull-up'en, når PUOV indstilles/ryddes, uanset indstillingen af ​​DDxn-, PORTxn- og PUD-registerbittene.
DDOE Aktiver tilsidesættelse af dataretning Hvis dette signal er indstillet, styres Output Driver Enable af DDOV-signalet. Hvis dette signal slettes, aktiveres Output-driveren af ​​DDxn Register-bitten.
DDOV Værdi for tilsidesættelse af dataretning Hvis DDOE er indstillet, aktiveres/deaktiveres outputdriveren, når DDOV indstilles/ryddes, uanset indstillingen af ​​DDxn-registerbitten.
PVOE Aktiver tilsidesættelse af portværdi Hvis dette signal er indstillet, og udgangsdriveren er aktiveret, styres portværdien af ​​PVOV-signalet. Hvis PVOE ryddes, og outputdriveren er aktiveret, styres portværdien af ​​PORTxn-registerbitten.
PVOV Port Value Override Værdi Hvis PVOE er indstillet, sættes portværdien til PVOV, uanset indstillingen af ​​PORTxn Registerbit.
PTOE Port Toggle Tilsidesæt Aktiver Hvis PTOE er indstillet, inverteres PORTxn-registerbitten.
DIEOE Digital Input Aktiver Tilsidesæt Aktiver Hvis denne bit er indstillet, styres Digital Input Enable af DIEOV-signalet. Hvis dette signal slettes, bestemmes Digital Input Enable af MCU-tilstand (normal tilstand, dvaletilstand).
DIEOV Digital Input Enable Override Value Hvis DIEOE er indstillet, aktiveres/deaktiveres den digitale indgang, når DIEOV indstilles/ryddes, uanset MCU-tilstanden (normal tilstand, dvaletilstand).
DI Digital indgang Dette er den digitale indgang til alternative funktioner. På figuren er signalet forbundet til udgangen af ​​schmitt-triggeren, men før synkronisatoren. Medmindre den digitale indgang bruges som en urkilde, vil modulet med den alternative funktion bruge sin egen synkronisering.
AIO Analog indgang / udgang Dette er den analoge input/output til/fra alternative funktioner. Signalet er forbundet direkte til pad, og kan bruges tovejs.

De følgende underafsnit beskriver kort de alternative funktioner for hver port og relaterer de overordnede signaler til den alternative funktion. Se den alternative funktionsbeskrivelse for yderligere detaljer.

Alternative funktioner af port B

Port B-stifterne med alternativ funktion er vist i Tabel 10-3.

Tabel 10-3. Port B-stifter Alternative funktioner

Port Pin Alternativ funktion
PB5

NULSTIL: Nulstil pin

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

PCINT5: Pin Change Interrupt, Kilde 5

PB4 XTAL2: Krystaloscillatorudgang CLKO: Systemurudgang ADC2: ADC-indgangskanal 2

OC1B: Timer/tæller1 Sammenlign Match B Output PCINT4: Pin Change Interrupt 0, Kilde 4

PB3 XTAL1: Krystaloscillatorindgang CLKI: Eksternt urindgang ADC3: ADC-indgangskanal 3

OC1B: Komplementær timer/tæller1 Sammenlign Match B Output PCINT3: Pin Change Interrupt 0, Kilde 3

PB2 SCK: Seriel urindgang ADC1: ADC-indgangskanal 1

T0: Timer/tæller0 Urkilde USCK: USI-ur (Tre-leder-tilstand) SCL: USI-ur (Two-Wire Mode) INT0: Ekstern afbrydelse 0 Indgang PCINT2: Pin Change Interrupt 0, Kilde 2

PB1 MISO: SPI Master Data Input / Slave Data Output AIN1: Analog komparator, negativ indgang OC0B: Timer/Tæller0 Sammenlign Match B Output OC1A: Timer/Tæller1 Sammenlign Match A Output DO: USI Data Output (Tre Ledningstilstand) PCINT1:Pin Change Interrupt 0, Kilde 1
PB0 MOSI:: SPI Master Data Output / Slave Data Input AIN0: Analog komparator, positiv input

OC0A: Timer/Tæller0 Sammenlign Match A output

OC1A: Komplementær timer/tæller1 Sammenlign Match A-output DI: USI-datainput (Tre-trådstilstand)

SDA: USI-datainput (to-ledningstilstand) AREF: Ekstern analog reference PCINT0: Pin Change Interrupt 0, Source 0

Port B, bit 5 – RESET/dW/ADC0/PCINT5

NULSTIL: Ekstern nulstillingsindgang er aktiv lav og aktiveret ved at afprogrammere (“1”) RSTDISBL-sikringen. Pullup aktiveres, og udgangsdriver og digital indgang deaktiveres, når stiften bruges som RESET-stift.

dW: Når debugWIRE Enable (DWEN)-sikringen er programmeret, og låsebits er uprogrammerede, aktiveres debugWIRE-systemet i målenheden. RESET-portstiften er konfigureret som en wire-AND (open-drain) tovejs I/O-pin med pull-up aktiveret og bliver kommunikationsporten mellem mål og emulator.

ADC0: Analog til digital konverter, kanal 0.

PCINT5: Pin Change Interrupt-kilde 5.

Port B, Bit 4 – XTAL2/CLKO/ADC2/OC1B/PCINT4

XTAL2: Chip Clock Oscillator pin 2. Bruges som clock pin til alle chip clock kilder undtagen intern kalibrerbar RC Oscillator og ekstern ur. Når den bruges som en ur-pin, kan den ikke bruges som en I/O-pin. Ved brug af intern kalibrerbar RC-oscillator eller eksternt ur som chip-urkilder, fungerer PB4 som en almindelig I/O-pin.

CLKO: Det delte systemur kan udsendes på pin PB4. Det opdelte systemur udsendes, hvis CKOUT-sikringen er programmeret, uanset PORTB4- og DDB4-indstillingerne. Den udsendes også under nulstillingen.

ADC2: Analog til digital konverter, kanal 2.

OC1B: Output Sammenlign Match-output: PB4-stiften kan tjene som en ekstern udgang for Timer/Counter1 Compare Match B, når den er konfigureret som en output (DDB4-sæt). OC1B-stiften er også udgangsbenet til PWM-tilstandstimerfunktionen.

PCINT4: Pin Change Interrupt-kilde 4.

Port B, Bit 3 – XTAL1/CLKI/ADC3/OC1B/PCINT3

XTAL1: Chip Clock Oscillator pin 1. Anvendes til alle chip clock kilder undtagen intern kalibrerbar RC oscillator. Når den bruges som en ur-pin, kan den ikke bruges som en I/O-pin.

CLKI: Urinput fra en ekstern urkilde, se "Eksternt ur" på side 26.

ADC3: Analog til digital konverter, kanal 3.

OC1B: Inverteret Output Sammenlign Match-output: PB3-stiften kan tjene som en ekstern udgang for Timer/Counter1 Sammenlign Match B, når den er konfigureret som en output (DDB3-sæt). OC1B-stiften er også den omvendte udgangsstift til PWM-tilstandstimerfunktionen.

PCINT3: Pin Change Interrupt-kilde 3.

Port B, bit 2 – SCK/ADC1/T0/USCK/SCL/INT0/PCINT2

SCK: Master Clock output, Slave Clock input pin til SPI kanal. Når SPI'en er aktiveret som en slave, er denne pin konfigureret som en input uanset indstillingen af ​​DDB2. Når SPI'en er aktiveret som en Master, styres denne pins dataretning af DDPB2. Når stiften tvinges af SPI'en til at være et input, kan pull-up'en stadig styres af PORTB2-bitten.

ADC1: Analog til digital konverter, kanal 1.

T0: Timer/Tæller0 tællerkilde.

USCK: Universal Serial Interface-ur med tre ledere.

SCL: To-tråds mode seriel ur til USI To-leder mode.

INT0: Ekstern afbrydelseskilde 0.

PCINT2: Pin Change Interrupt-kilde 2.

Port B, bit 1 – MISO/AIN1/OC0B/OC1A/DO/PCINT1

MISO: Master Data input, Slave Data output pin til SPI kanal. Når SPI'en er aktiveret som en Master, er denne pin konfigureret som en input uanset indstillingen af ​​DDB1. Når SPI'en er aktiveret som en slave, styres denne pins dataretning af DDB1. Når stiften tvinges af SPI'en til at være et input, kan pull-up'en stadig styres af PORTB1 bit.

AIN1: Analog komparator negativ input. Konfigurer portstiften som input med den interne pull-up slukket for at undgå, at den digitale portfunktion forstyrrer funktionen af ​​den analoge komparator.

OC0B: Output Sammenlign Match output. PB1-stiften kan tjene som en ekstern udgang for Timer/Tæller0 Sammenlign Match B. PB1-stiften skal konfigureres som en udgang (DDB1 sæt (én)) for at betjene denne funktion. OC0B-stiften er også udgangsbenet for PWM-tilstands timerfunktionen.

OC1A: Output Compare Match-output: PB1-stiften kan tjene som en ekstern udgang for Timer/Counter1 Compare Match B, når den er konfigureret som en output (DDB1-sæt). OC1A-stiften er også udgangsbenet til PWM-tilstands timerfunktionen.

GØR: Tretrådstilstand Universal Serial Interface Dataoutput. Tretrådstilstand Dataoutput tilsidesætter PORTB1-værdien, og den drives til porten, når dataretningsbit DDB1 er indstillet (én). PORTB1 aktiverer stadig pull-up, hvis retningen er indtastet og PORTB1 er indstillet (én).

PCINT1: Pin Change Interrupt-kilde 1.

Port B, bit 0 – MOSI/AIN0/OC0A/OC1A/DI/SDA/AREF/PCINT0

MOSI: SPI Master Data output, Slave Data input til SPI kanal. Når SPI'en er aktiveret som en slave, er denne pin konfigureret som en input uanset indstillingen af ​​DDB0. Når SPI'en er aktiveret som en Master, styres denne pins dataretning af DDB0. Når stiften tvinges af SPI'en til at være et input, kan pull-up'en stadig styres af PORTB0-bitten.

AIN0: Analog komparator positiv input. Konfigurer portstiften som input med den interne pull-up slukket for at undgå, at den digitale portfunktion forstyrrer funktionen af ​​den analoge komparator.

OC0A: Output Sammenlign Match output. PB0-stiften kan tjene som en ekstern udgang for Timer/Counter0 Compare Match A, når den er konfigureret som en output (DDB0 sæt (én)). OC0A-stiften er også udgangsstiften til PWM-tilstandstimerfunktionen.

OC1A: Inverteret output Sammenlign Match-output: PB0-stiften kan tjene som en ekstern udgang for Timer/Counter1 Compare Match B, når den er konfigureret som en output (DDB0-sæt). OC1A-stiften er også den omvendte udgangsstift til PWM-tilstandstimerfunktionen.

SDA: To-wire mode seriel interface data.

AREF: Ekstern analog reference for ADC. Pullup og output driver er deaktiveret på PB0, når stiften bruges som en ekstern reference eller Internal Voltage Reference med ekstern kondensator ved AREF-stiften.

DI: Datainput i USI-trådstilstand. USI Three-wire mode tilsidesætter ikke normale portfunktioner, så pin skal konfigureres som input til DI-funktion.

PCINT0: Pin Change Interrupt-kilde 0.

Tabel 10-4 og Tabel 10-5 relatere de alternative funktioner af Port B til de overordnede signaler vist i Figur 10-5 på side 58.

Tabel 10-4. Tilsidesættende signaler for alternative funktioner i PB[5:3]

Signal navn PB5/NULSTIL/ADC0/PCINT5 PB4/ADC2/XTAL2/ OC1B/PCINT4 PB3/ADC3/XTAL1/ OC1B/PCINT3
PUOE

RSTDISBL(1) • DWEN(1)

0 0
PUOV 1 0 0
DDOE RSTDISBL(1) • DWEN(1) 0 0
DDOV debugWire Transmit 0 0
PVOE 0 OC1B Aktiver

OC1B Aktiver

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-indgang PCINT4-indgang PCINT3-indgang
AIO RESET-indgang, ADC0-indgang ADC2 indgang ADC3 indgang

Bemærk: når sikringen er "0" (programmeret).

Tabel 10-5. Tilsidesættende signaler for alternative funktioner i PB[2:0]

Signal navn PB2/SCK/ADC1/T0/ USCK/SCL/INT0/PCINT2 PB1/MISO/DO/AIN1/ OC1A/OC0B/PCINT1 PB0/MOSI/DI/SDA/AIN0/AR EF/OC1A/OC0A/

PCINT0

PUOE USI_TWO_WIRE 0 USI_TWO_WIRE
PUOV 0 0 0
DDOE USI_TWO_WIRE 0 USI_TWO_WIRE
DDOV (USI_SCL_HOLD + PORTB2) • DDB2 0  

(SDA + PORTB0) • DDB0

PVOE USI_TWO_WIRE • DDB2 OC0B Enable + OC1A Enable + USI_THREE_WIRE

OC0A Enable + OC1A Enable + (USI_TWO_WIRE

DDB0)

PVOV 0 OC0B + OC1A + DO

OC0A + OC1A

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

PCINT2-indgang

PCINT1-indgang DI/SDA/PCINT0 Indgang
AIO ADC1 indgang Analog komparator negativ input Analog komparator positiv input

Registerbeskrivelse

MCUCR – MCU kontrolregister

Bit 7 6 5 4 3 2 1 0
0x35 BODS PUD SE SM1 SM0 BODSE ISC01 ISC00 MCUCR
Læs/skriv R R/W R/W R/W R/W R R/W R/W
Startværdi 0 0 0 0 0 0 0 0

Bit 6 – PUD: Pull-up deaktiver

Når denne bit skrives til en, deaktiveres pull-ups i I/O-portene, selvom DDxn- og PORTxn-registrene er konfigureret til at aktivere pull-ups ({DDxn, PORTxn} = 0b01). Se "Konfiguration af pin" på side 54 for flere detaljer om denne funktion.

PORTB – Port B-dataregister

Bit 7 6 5 4 3 2 1 0
0x18 PORTB5 PORTB4 PORTB3 PORTB2 PORTB1 PORTB0 PORTB
Læs/skriv R R R/W R/W R/W R/W R/W R/W
Startværdi 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/skriv R R R/W R/W R/W R/W R/W R/W
Startværdi 0 0 0 0 0 0 0 0

PINB – Port B Input Pins adresse

Bit 7 6 5 4 3 2 1 0
0x16 PINB5 PINB4 PINB3 PINB2 PINB1 PINB0 PINB
Læs/skriv R R R/W R/W R/W R/W R/W R/W
Startværdi 0 0 N/A N/A N/A N/A N/A N/A

8-bit timer/tæller0 med PWM

Funktioner

To uafhængige output-sammenligningsenheder

Sammenlign registre med dobbelt bufret output

Ryd timer ved sammenligningsmatch (automatisk genindlæsning)

Fejlfri, fasekorrekt pulsbreddemodulator (PWM)

Variabel PWM-periode

Frekvensgenerator

Tre uafhængige afbrydelseskilder (TOV0, OCF0A og OCF0B)

Overview

Timer/Counter0 er et generelt 8-bit timer/tæller-modul med to uafhængige output-sammenligningsenheder og med PWM-understøttelse. Det tillader nøjagtig programudførelsestid (hændelsesstyring) og bølgegenerering.

Et forenklet blokdiagram over 8-bit timeren/tælleren er vist i Figur 11-1. Se den faktiske placering af I/O-stifter "Pinout ATtiny25/45/85" på side 2. CPU-tilgængelige I/O-registre, inklusive I/O-bits og I/O-ben, vises med fed skrift. Det enhedsspecifikke I/O-register og bitplaceringer er angivet i "Registrer beskrivelse" på side 77.

Timer/tæller (TCNT0) og output-sammenligningsregistre (OCR0A og OCR0B) er 8-bit registre. Interrupt request (forkortet til Int.Req. i figuren) signaler er alle synlige i Timer Interrupt Flag Register (TIFR). Alle afbrydelser er individuelt maskeret med Timer Interrupt Mask Register (TIMSK). TIFR og TIMSK er ikke vist i figuren.

Timeren/tælleren kan clockes internt, via prescaleren eller af en ekstern urkilde på T0-stiften. Clock Select-logikblokken styrer, hvilken klokkilde og -flanke, som timeren/tælleren bruger til at øge (eller formindske) dens værdi. Timeren/tælleren er inaktiv, når der ikke er valgt en urkilde. Outputtet fra Clock Select-logikken omtales som timeruret (clkT0).

De dobbeltbuffede output-sammenligningsregistre (OCR0A og OCR0B) sammenlignes med timer/tæller-værdien til enhver tid. Resultatet af sammenligningen kan bruges af Waveform Generatoren til at generere et PWM- eller variabel frekvensoutput på Output Compare-benene (OC0A og OC0B). Se "Udgangssammenligningsenhed" på side 69. for detaljer. Hændelsen Compare Match vil også indstille Compare Flag (OCF0A eller OCF0B), som kan bruges til at generere en Output Compare afbrydelsesanmodning.

Definitioner

Mange register- og bitreferencer i dette afsnit er skrevet i generel form. Et lille bogstav "n" erstatter timer-/tællernummeret, i dette tilfælde 0. Et lille "x" erstatter Output Compare Unit, i dette tilfælde Compare Unit A eller Compare Unit B. Men når du bruger registret eller bit definerer i et program skal den præcise form bruges, dvs. TCNT0 for at få adgang til Timer/Counter0 tællerværdi og så videre.

Definitionerne i Tabel 11-1 bruges også meget i hele dokumentet.

Tabel 11-1. Definitioner

Konstant Beskrivelse
BUND Tælleren når BUNDEN, når den bliver 0x00
MAKS Tælleren når sit MAKSimum, når den bliver 0xFF (decimal 255)
TOP Tælleren når TOPPEN, når den bliver lig med den højeste værdi i tællesekvensen. TOP-værdien kan tildeles til at være den faste værdi 0xFF (MAX) eller værdien gemt i OCR0A-registret. Tildelingen afhænger af driftsformen

Timer/tæller forskalering og urkilder

Timeren/tælleren kan uret af en intern eller en ekstern urkilde. Klokkilden vælges af Clock Select-logikken, som styres af Clock Select (c)-bittene, der er placeret i Timer/TællerO kontrolregisteret (TCCROB).

Intern urkilde med Prescaler

Timer/tæller0 kan klokkes direkte af systemuret (ved at indstille CS0[2:0] = 1). Dette giver den hurtigste betjening med en maksimal timer/tællerfrekvens svarende til systemets clockfrekvens (fCLK_I/O). Alternativt kan et af fire tryk fra prescaleren bruges som urkilde. Det forskalerede ur har en frekvens på enten

Prescaler Reset

Prescaleren kører frit, dvs. den fungerer uafhængigt af urvalgslogikken for Timer/Tæller0. Da prescaleren ikke er påvirket af timeren/tællerens urvalg, vil tilstanden af ​​prescaleren have implikationer for situationer, hvor et forudskaleret ur bruges. En example af en præskaleringsartefakt er, når timeren/tælleren er aktiveret og clocket af prescaleren (6 > CS0[2:0] > 1). Antallet af systemurcyklusser, fra timeren er aktiveret, til den første optælling finder sted, kan være fra 1 til N+1 systemurcyklusser, hvor N er lig med forskaleringsdivisoren (8, 64, 256 eller 1024).

Det er muligt at bruge Prescaler Reset til at synkronisere timeren/tælleren til programudførelse.

Ekstern urkilde

En ekstern urkilde påført T0-stiften kan bruges som timer/tæller (clkT0). T0-stiften er sampledet én gang hver systemurcyklus af pin-synkroniseringslogikken. Den synkroniserede (sampled) signalet sendes derefter

gennem kantdetektoren. Figur 11-2 viser et funktionelt ækvivalent blokdiagram over T0-synkroniseringen og kantdetektorlogikken. Registrene clockes ved den positive kant af det interne systemur (clkI/O). Låsen er gennemsigtig i den høje periode af det interne systemur.

Kantdetektoren genererer én clkT0-impuls for hver positiv (CS0[2:0] = 7) eller negativ (CS0[2:0] = 6) flanke, den detekterer.

OCR0x-registrene er dobbelt buffer, når der bruges en af ​​Pulse Width Modulation (PWM)-tilstandene. For de normale og Clear Timer on Compare (CTC) driftstilstande er dobbelt buffering deaktiveret. Den dobbelte buffer synkroniserer opdateringen af ​​OCR0x-sammenligningsregistrene til enten toppen eller bunden af ​​tællesekvensen. Synkroniseringen forhindrer forekomsten af ​​ulige længder, ikke-symmetriske PWM-impulser, hvilket gør udgangen fejlfri.

OCR0x Register-adgangen kan virke kompleks, men dette er ikke tilfældet. Når dobbeltbuffring er aktiveret, har CPU'en adgang til OCR0x-bufferregistret, og hvis dobbeltbuffering er deaktiveret, vil CPU'en få direkte adgang til OCR0x.

Tving output-sammenligning

I ikke-PWM-bølgeformgenereringstilstande kan matchoutputtet fra komparatoren tvinges ved at skrive et et til Force Output Compare (FOC0x) bit. At tvinge sammenligningsmatch vil ikke indstille OCF0x-flaget eller genindlæse/rydde timeren, men OC0x-pinden vil blive opdateret, som om der var opstået en rigtig sammenligningsmatch (COM0x[1:0]-bitindstillingerne definerer, om OC0x-pinden er indstillet, ryddet eller slået til).

Sammenlign Match Blocking af TCNT0 Write

Alle CPU-skriveoperationer til TCNT0-registret vil blokere enhver sammenligningsmatch, der forekommer i den næste timer-urcyklus, selv når timeren er stoppet. Denne funktion gør det muligt at initialisere OCR0x til samme værdi som TCNT0 uden at udløse en afbrydelse, når timeren/tælleren er aktiveret.

Brug af output-sammenligningsenheden

Da skrivning af TCNT0 i en hvilken som helst driftstilstand vil blokere alle Sammenlign Matches for én timerur-cyklus, er der risici involveret, når du ændrer TCNT0, når du bruger Output Compare Unit, uafhængigt af om timeren/tælleren kører eller ej. Hvis værdien skrevet til TCNT0 er lig med OCR0x-værdien, vil Compare Match blive overset, hvilket resulterer i ukorrekt bølgeformgenerering. På samme måde må du ikke skrive TCNT0-værdien lig med BUND, når tælleren tæller ned.

Opsætningen af ​​OC0x skal udføres, før du indstiller dataretningsregistret for portstiften til output. Den nemmeste måde at indstille OC0x-værdien på er at bruge Force Output Compare (FOC0x) strobebits i normal tilstand. OC0x-registrene beholder deres værdier, selv når der skiftes mellem Waveform Generation-tilstande.

Vær opmærksom på, at COM0x[1:0]-bits ikke er dobbeltbuffret sammen med sammenligningsværdien. Ændring af COM0x[1:0]-bits vil træde i kraft med det samme.

Sammenlign Match Output Unit

Bittene til sammenligning af outputtilstand (COM0x[1:0]) har to funktioner. Bølgeformgeneratoren bruger COM0x[1:0]-bittene til at definere Output Compare-tilstanden (OC0x) ved næste Compare Match. Desuden styrer COM0x[1:0]-bittene OC0x-pin-outputkilden. Figur 11-6 viser et forenklet skema over logikken, der påvirkes af COM0x[1:0] bitindstillingen. I/O-registrene, I/O-bittene og I/O-benene i figuren er vist med fed skrift. Kun de dele af de generelle I/O-portkontrolregistre (DDR og PORT), der er påvirket af COM0x[1:0]-bits, vises. Når der refereres til OC0x-tilstanden, er referencen for det interne OC0x-register, ikke OC0x-stiften. Hvis der opstår en systemnulstilling, nulstilles OC0x-registret til "0".

Når OC0A/OC0B er forbundet til I/O-pinden, afhænger COM0A[1:0]/COM0B[1:0]-bittenes funktion af WGM0[2:0]-bit-indstillingen. Tabel 11-2 viser COM0x[1:0]-bitfunktionaliteten, når WGM0[2:0]-bittene er indstillet til normal eller CTC-tilstand (ikke-PWM).

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

COM0A1 COM0B1 COM0A0 COM0B0 Beskrivelse
0 0 Normal portdrift, OC0A/OC0B afbrudt.
0 1 Skift OC0A/OC0B på Sammenlign Match
1 0 Ryd OC0A/OC0B på Sammenlign Match
1 1 Indstil OC0A/OC0B på Sammenlign Match

Tabel 11-3 viser COM0x[1:0]-bitfunktionaliteten, når WGM0[2:0]-bittene er indstillet til hurtig PWM-tilstand.

Tabel 11-3. Sammenlign Output Mode, Fast PWM Mode(1)

COM0A1 COM0B1 COM0A0 COM0B0 Beskrivelse
0 0 Normal portdrift, OC0A/OC0B afbrudt.
0 1 Reserveret
1 0 Ryd OC0A/OC0B på Compare Match, indstil OC0A/OC0B til BUND (ikke-inverterende tilstand)
1 1 Indstil OC0A/OC0B på Sammenlign Match, ryd OC0A/OC0B i BUND (inverterende tilstand)

Bemærk: Et særligt tilfælde opstår, når OCR0A eller OCR0B er lig med TOP og COM0A1/COM0B1 er indstillet. I dette tilfælde ignoreres sammenligningsmatchen, men indstillingen eller sletningen udføres i BUNDEN. Se "Hurtig PWM-tilstand" på side 73 for flere detaljer.

Tabel 11-4 viser COM0x[1:0]-bitfunktionaliteten, når WGM0[2:0]-bittene er indstillet til fasekorrekt PWM-tilstand.

Tabel 11-4. Sammenlign Output Mode, Phase Correct PWM Mode(1)

COM0A1 COM0B1 COM0A0 COM0B0 Beskrivelse
0 0 Normal portdrift, OC0A/OC0B afbrudt.
0 1 Reserveret
1 0 Ryd OC0A/OC0B på Sammenlign Match ved optælling. Indstil OC0A/OC0B på Sammenlign Match ved nedtælling.
1 1 Indstil OC0A/OC0B på Sammenlign Match, når der optælles. Ryd OC0A/OC0B på Sammenlign Match ved nedtælling.

Bemærk: 1. Et særligt tilfælde opstår, når OCR0A eller OCR0B er lig med TOP og COM0A1/COM0B1 er indstillet. I dette tilfælde ignoreres Compare Match, men indstillingen eller sletningen udføres på TOP. Se "Phase Correct PWM Mode" på side 74 for flere detaljer.

Bits 3:2 – Res: Reserverede bits

Disse bits er reserverede bits i ATtiny25/45/85 og vil altid læses som nul.

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

Kombineret med WGM02-bitten, der findes i TCCR0B-registret, styrer disse bit tællerens tællesekvens, kilden til maksimal (TOP) tællerværdi, og hvilken type bølgeformgenerering, der skal bruges, se Tabel 11-5. Driftstilstande, der understøttes af timer/tællerenheden er: Normal tilstand (tæller), Clear Timer on Compare Match (CTC) tilstand og to typer Pulse Width Modulation (PWM) tilstande (se "Betjeningsmåder" på side 71).

Tabel 11-5. Waveform Generation Mode Bit Beskrivelse

Mode WGM 02 WGM 01 WGM 00 Timer/tæller funktionsmåde TOP Opdatering af OCRx kl TOV-flag sat på
0 0 0 0 Normal 0xFF Umiddelbar MAKS(1)
1 0 0 1 PWM, fasekorrekt 0xFF TOP BUND(2)
2 0 1 0 CTC OCRA Umiddelbar MAKS(1)
3 0 1 1 Hurtig PWM 0xFF BUND(2) MAKS(1)
4 1 0 0 Reserveret
5 1 0 1 PWM, fasekorrekt OCRA TOP BUND(2)
6 1 1 0 Reserveret
7 1 1 1 Hurtig PWM OCRA BUND(2) TOP

Bit 7 – FOC0A: Force Output Sammenligning A

FOC0A-bitten er kun aktiv, når WGM-bittene angiver en ikke-PWM-tilstand.

For at sikre kompatibilitet med fremtidige enheder skal denne bit dog sættes til nul, når TCCR0B skrives, når der arbejdes i PWM-tilstand. Når du skriver en logisk en til FOC0A-bitten, tvinges en øjeblikkelig Compare Match på Waveform Generation-enheden. OC0A-udgangen ændres i henhold til dens COM0A[1:0]-bit-indstilling. Bemærk, at FOC0A-bitten er implementeret som en stroboskop. Derfor er det værdien i COM0A[1:0]-bittene, der bestemmer effekten af ​​den tvungne sammenligning.

En FOC0A-strobe vil ikke generere nogen afbrydelse, og den vil heller ikke rydde timeren i CTC-tilstand ved at bruge OCR0A som TOP. FOC0A-bitten læses altid som nul.

Bit 6 – FOC0B: Tving output-sammenligning B

FOC0B-bitten er kun aktiv, når WGM-bittene angiver en ikke-PWM-tilstand.

For at sikre kompatibilitet med fremtidige enheder skal denne bit dog sættes til nul, når TCCR0B skrives, når der arbejdes i PWM-tilstand. Når du skriver en logisk til FOC0B-bitten, tvinges en øjeblikkelig Compare Match på Waveform Generation-enheden. OC0B-udgangen ændres i henhold til dens COM0B[1:0]-bit-indstilling. Bemærk, at FOC0B-bitten er implementeret som en strobe. Derfor er det værdien i COM0B[1:0]-bittene, der bestemmer effekten af ​​den tvungne sammenligning.

En FOC0B-strobe vil ikke generere nogen afbrydelse, og den vil heller ikke rydde timeren i CTC-tilstand ved at bruge OCR0B som TOP.

FOC0B-bitten læses altid som nul.

Bits 5:4 – Res: Reserverede bits

Disse bits er reserverede bits i ATtiny25/45/85 og vil altid læses som nul.

Bit 3 – WGM02: Waveform Generation Mode

Se beskrivelsen i "TCCR0A – Timer/tællerkontrolregister A" på side 77.

Bits 2:0 – CS0[2:0]: Urvalg

De tre Clock Select bits vælger den urkilde, der skal bruges af timeren/tælleren.

Tabel 11-6. Ur Vælg Bit Beskrivelse

CS02 CS01 CS00 Beskrivelse
0 0 0 Ingen urkilde (Timer/tæller stoppet)
0 0 1 clI/O/(Ingen forudskalering)
0 1 0 clkI/O/8 (Fra forskaler)
0 1 1 clkI/O/64 (Fra forskaler)
1 0 0 clkI/O/256 (Fra forskaler)
1 0 1 clkI/O/1024 (Fra forskaler)
1 1 0 Ekstern urkilde på T0 pin. Ur på faldende kant.
1 1 1 Ekstern urkilde på T0 pin. Ur på stigende kant.

Hvis der bruges eksterne pin-tilstande til Timer/Counter0, vil overgange på T0-pinden klokke tælleren, selvom pinden er konfigureret som en udgang. Denne funktion tillader softwarekontrol af optællingen.

Tæller og sammenlign enheder

Timer/Tæller1 generelle betjening er beskrevet i asynkron modus, og betjening i synkron modus er kun nævnt, hvis der er forskelle mellem disse to tilstande. Figur 12-2 viser Timer/Tæller 1 synkroniseringsregister blokdiagram og synkroniseringsforsinkelser mellem registrene. Bemærk, at alle detaljer om urporten ikke er vist på figuren. Timer/Tæller1 registerværdierne går gennem de interne synkroniseringsregistre, som forårsager inputsynkroniseringsforsinkelsen, før de påvirker tællerdriften. Registrene TCCR1, GTCCR, OCR1A, OCR1B og OCR1C kan læses tilbage lige efter at registret er skrevet. Tilbagelæsningsværdierne er forsinket for Timer/Counter1 (TCNT1) registeret og flag (OCF1A, OCF1B og TOV1), på grund af input- og outputsynkronisering.

Timer/Counter1 har en høj opløsning og en høj nøjagtighed med de lavere forudskaleringsmuligheder. Den kan også understøtte to nøjagtige, højhastigheds, 8-bit pulsbreddemodulatorer, der bruger clockhastigheder op til 64 MHz (eller 32 MHz i lavhastighedstilstand). I denne tilstand fungerer Timer/Counter1 og output-sammenligningsregistrene som dobbelte stand-alone PWM'er med ikke-overlappende ikke-inverterede og inverterede udgange. Der henvises til side 86 for en detaljeret beskrivelse af denne funktion. På samme måde gør de høje forudskaleringsmuligheder denne enhed nyttig til lavere hastighedsfunktioner eller nøjagtige timingfunktioner med sjældne handlinger.

Figur 12-2. Timer/tæller 1 Synkroniseringsregister blokdiagram.

Timer/tæller1 og prescaler tillader at køre CPU'en fra en hvilken som helst urkilde, mens prescaleren kører på det hurtige 64 MHz (eller 32 MHz i lavhastighedstilstand) PCK-ur i asynkron tilstand.

Bemærk, at systemets clockfrekvens skal være lavere end en tredjedel af PCK-frekvensen. Synkroniseringsmekanismen for den asynkrone timer/tæller1 har brug for mindst to kanter af PCK'en, når systemuret er højt. Hvis frekvensen af ​​systemuret er for høj, er der risiko for, at data eller kontrolværdier går tabt.

Følgende Figur 12-3 viser blokdiagrammet for Timer/Tæller1.

Tabel 12-1. Sammenlign tilstand Vælg i PWM-tilstand

COM1x1 COM1x0 Effekt på output Sammenlign pins
0 0 OC1x ikke tilsluttet. OC1x ikke tilsluttet.
0 1 OC1x ryddet ved sammenligningsmatch. Indstil når TCNT1 = $00. OC1x indstillet på sammenligne kamp. Ryddet, når TCNT1 = $00.
1 0 OC1x ryddet ved sammenligningsmatch. Indstil når TCNT1 = $00. OC1x ikke tilsluttet.
1 1 OC1x Sæt på sammenligne kamp. Ryddet, når TCNT1= $00. OC1x ikke tilsluttet.

ADC-karakteristika

Tabel 21-8. ADC-karakteristika, Single Ended Channels. TA = -40°C til +85°C

Symbol Parameter Tilstand Min Typ Maks Enheder
Opløsning 10 Bits
Absolut nøjagtighed (inklusive INL, DNL og kvantiserings-, forstærknings- og offset-fejl) VREF = 4V, VCC = 4V,

ADC ur = 200 kHz

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

ADC-ur = 1 MHz

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

ADC ur = 200 kHz

Støjreduktionstilstand

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

ADC-ur = 1 MHz

Støjreduktionstilstand

2.5 LSB
Integral ikke-linearitet (INL) (nøjagtighed efter offset og forstærkningskalibrering) VREF = 4V, VCC = 4V,

ADC ur = 200 kHz

1 LSB
Differentiel ikke-linearitet (DNL) VREF = 4V, VCC = 4V,

ADC ur = 200 kHz

0.5 LSB
Opnå fejl VREF = 4V, VCC = 4V,

ADC ur = 200 kHz

2.5 LSB
Offset-fejl VREF = 4V, VCC = 4V,

ADC ur = 200 kHz

1.5 LSB
Konverteringstid Gratis kørende konvertering 14 280 mikrosekunder
Urfrekvens 50 1000 kHz
VIN Input bindtage GND VREF V
Input båndbredde 38.4 kHz
AREF Ekstern reference Voltage 2.0 VCC V
VINT Intern voltage Reference 1.0 1.1 1.2 V
Intern 2.56V reference (1) VCC > 3.0V 2.3 2.56 2.8 V
RREF 32
REGN Analog indgangsmodstand 100
ADC udgang 0 1023 LSB

Bemærk: 1. Værdier er kun vejledende.

Tabel 21-9. ADC-karakteristika, differentielle kanaler (unipolær tilstand). TA = -40°C til +85°C

Symbol Parameter Tilstand Min Typ Maks Enheder
Opløsning Forstærkning = 1x 10 Bits
Forstærkning = 20x 10 Bits
Absolut nøjagtighed (inklusive INL, DNL og

Kvantiserings-, forstærknings- og offsetfejl)

Forstærkning = 1x

VREF = 4V, VCC = 5V

ADC ur = 50 – 200 kHz

10.0 LSB
Forstærkning = 20x

VREF = 4V, VCC = 5V

ADC ur = 50 – 200 kHz

20.0 LSB
Integral ikke-linearitet (INL) (nøjagtighed efter offset og forstærkningskalibrering) Forstærkning = 1x

VREF = 4V, VCC = 5V

ADC ur = 50 – 200 kHz

4.0 LSB
Forstærkning = 20x

VREF = 4V, VCC = 5V

ADC ur = 50 – 200 kHz

10.0 LSB
Opnå fejl Forstærkning = 1x 10.0 LSB
Forstærkning = 20x 15.0 LSB
Offset-fejl Forstærkning = 1x

VREF = 4V, VCC = 5V

ADC ur = 50 – 200 kHz

3.0 LSB
Forstærkning = 20x

VREF = 4V, VCC = 5V

ADC ur = 50 – 200 kHz

4.0 LSB
Konverteringstid Gratis kørende konvertering 70 280 mikrosekunder
Urfrekvens 50 200 kHz
VIN Input bindtage GND VCC V
VDIFF Input differential Voltage VREF/Gain V
Input båndbredde 4 kHz
AREF Ekstern reference Voltage 2.0 VCC – 1.0 V
VINT Intern voltage Reference 1.0 1.1 1.2 V
Intern 2.56V reference (1) VCC > 3.0V 2.3 2.56 2.8 V
RREF Referenceindgangsmodstand 32
REGN Analog indgangsmodstand 100
ADC-konverteringsoutput 0 1023 LSB

Bemærk: Værdier er kun vejledende.

Tabel 21-10. ADC-karakteristika, differentielle kanaler (bipolær tilstand). TA = -40°C til +85°C

Symbol Parameter Tilstand Min Typ Maks Enheder
Opløsning Forstærkning = 1x 10 Bits
Forstærkning = 20x 10 Bits
Absolut nøjagtighed (inklusive INL, DNL og

Kvantiserings-, forstærknings- og offsetfejl)

Forstærkning = 1x

VREF = 4V, VCC = 5V

ADC ur = 50 – 200 kHz

8.0 LSB
Forstærkning = 20x

VREF = 4V, VCC = 5V

ADC ur = 50 – 200 kHz

8.0 LSB
Integral ikke-linearitet (INL) (nøjagtighed efter offset og forstærkningskalibrering) Forstærkning = 1x

VREF = 4V, VCC = 5V

ADC ur = 50 – 200 kHz

4.0 LSB
Forstærkning = 20x

VREF = 4V, VCC = 5V

ADC ur = 50 – 200 kHz

5.0 LSB
Opnå fejl Forstærkning = 1x 4.0 LSB
Forstærkning = 20x 5.0 LSB
Offset-fejl Forstærkning = 1x

VREF = 4V, VCC = 5V

ADC ur = 50 – 200 kHz

3.0 LSB
Forstærkning = 20x

VREF = 4V, VCC = 5V

ADC ur = 50 – 200 kHz

4.0 LSB
Konverteringstid Gratis kørende konvertering 70 280 mikrosekunder
Urfrekvens 50 200 kHz
VIN Input bindtage GND VCC V
VDIFF Input differential Voltage VREF/Gain V
Input båndbredde 4 kHz
AREF Ekstern reference Voltage 2.0 VCC – 1.0 V
VINT Intern voltage Reference 1.0 1.1 1.2 V
Intern 2.56V reference (1) VCC > 3.0V 2.3 2.56 2.8 V
RREF Referenceindgangsmodstand 32
REGN Analog indgangsmodstand 100
ADC-konverteringsoutput -512 511 LSB

Opsummering af instruktionssæt

Mnemonics Operander Beskrivelse Operation Flag #Ure
REGNE- OG LOGISKE INSTRUKTIONER
TILFØJE Rd, Rr Tilføj to registre Rd ← Rd + Rr Z, C, N, V, H 1
ADC Rd, Rr Tilføj med Carry to registre Rd ← Rd + Rr + C Z, C, N, V, H 1
ADIW Rdl,K Tilføj Immediate til Word Rdh:Rdl ← Rdh:Rdl + K Z, C, N, V, S 2
SUB Rd, Rr Træk to registre fra Rd ← Rd – Rr Z, C, N, V, H 1
SUBI Rd, K Træk konstant fra register Rd ← Rd – K Z, C, N, V, H 1
SBC Rd, Rr Træk fra med Bær to registre Rd ← Rd – Rr – C Z, C, N, V, H 1
SBCI Rd, K Træk med bærekonstant fra reg. Rd ← Rd – K – C Z, C, N, V, H 1
SBIW Rdl,K Træk øjeblikkelig fra Word Rdh:Rdl ← Rdh:Rdl – K Z, C, N, V, S 2
OG Rd, Rr Logiske OG registre Rd ← Rd ∙ Rr Z,N,V 1
ANDI Rd, K Logisk OG Register og Konstant Rd ← Rd ∙ K Z,N,V 1
OR Rd, Rr Logiske ELLER-registre Rd ← Rd v Rr Z,N,V 1
ORI Rd, K Logisk ELLER Register og konstant Rd ← Rd v K Z,N,V 1
EOR Rd, Rr Eksklusive ELLER-registre Rd ← Rd ⊕ Rr Z,N,V 1
KOM Rd Ens komplement Rd ← 0xFF − Rd Z, C, N, V 1
NEG Rd To's komplement Rd ← 0x00 − Rd Z, C, N, V, H 1
SBR Rd,K Indstil Bit(s) i Register Rd ← Rd v K Z,N,V 1
CBR Rd,K Ryd bit(er) i register Rd ← Rd ∙ (0xFF – K) Z,N,V 1
INC Rd Forøgelse Rd ← Rd + 1 Z,N,V 1
DEC Rd Nedgang Rd ← Rd − 1 Z,N,V 1
TST Rd Test for nul eller minus Rd ← Rd ∙ Rd Z,N,V 1
CLR Rd Ryd register Rd ← Rd ⊕ Rd Z,N,V 1
SER Rd Indstil register Rd ← 0xFF Ingen 1
AFDELINGSINSTRUKTIONER
RJMP k Relativt spring PC ← PC + k + 1 Ingen 2
IJMP Indirekte hop til (Z) PC ← Z Ingen 2
RCALL k Relativt subrutineopkald PC ← PC + k + 1 Ingen 3
ICALL Indirekte opkald til (Z) PC ← Z Ingen 3
RET Subrutine Retur PC ← STAK Ingen 4
NETVÆRK Afbryd retur PC ← STAK I 4
CPSE Rd, Rr Sammenlign, Spring over hvis Lige hvis (Rd = Rr) PC ← PC + 2 eller 3 Ingen 1/2/3
CP Rd, Rr Sammenligne Rd − Rr Z, N, V, C, H 1
CPC Rd, Rr Sammenlign med Carry Rd − Rr − C Z, N, V, C, H 1
CPI Rd,K Sammenlign Register med Immediate Rd - K Z, N, V, C, H 1
SBRC Rr, b Spring over, hvis bit i register er ryddet hvis (Rr(b)=0) PC ← PC + 2 eller 3 Ingen 1/2/3
SBRS Rr, b Spring over, hvis bit i register er indstillet hvis (Rr(b)=1) PC ← PC + 2 eller 3 Ingen 1/2/3
SBIC P, b Spring over hvis bit i I/O-registret er ryddet hvis (P(b)=0) PC ← PC + 2 eller 3 Ingen 1/2/3
SBIS P, b Spring over, hvis Bit in I/O Register er indstillet hvis (P(b)=1) PC ← PC + 2 eller 3 Ingen 1/2/3
BRBS s, k Filial, hvis statusflag er indstillet hvis (SREG(s) = 1) så PC←PC+k + 1 Ingen 1/2
BRBC s, k Filial, hvis statusflaget er slettet hvis (SREG(s) = 0) så PC←PC+k + 1 Ingen 1/2
BREQ k Filial hvis Lige hvis (Z = 1) så PC ← PC + k + 1 Ingen 1/2
BRNE k Filial hvis ikke lige hvis (Z = 0) så PC ← PC + k + 1 Ingen 1/2
BRCS k Gren hvis bæresæt hvis (C = 1) så PC ← PC + k + 1 Ingen 1/2
BRCC k Filial hvis Carry Cleared hvis (C = 0) så PC ← PC + k + 1 Ingen 1/2
BRSH k Filial hvis samme eller højere hvis (C = 0) så PC ← PC + k + 1 Ingen 1/2
BRLO k Filial hvis lavere hvis (C = 1) så PC ← PC + k + 1 Ingen 1/2
BRMI k Filial hvis Minus hvis (N = 1) så PC ← PC + k + 1 Ingen 1/2
BRPL k Filial hvis Plus hvis (N = 0) så PC ← PC + k + 1 Ingen 1/2
BRGE k Filial, hvis større eller lige, underskrevet hvis (N ⊕ V= 0) så PC ← PC + k + 1 Ingen 1/2
BRLT k Filial, hvis mindre end nul, underskrevet hvis (N ⊕ V= 1) så PC ← PC + k + 1 Ingen 1/2
BRHS k Branch if Half Carry Flag Set hvis (H = 1) så PC ← PC + k + 1 Ingen 1/2
BRHC k Filial, hvis Half Carry Flag ryddet hvis (H = 0) så PC ← PC + k + 1 Ingen 1/2
BRTS k Gren hvis T Flag Sæt hvis (T = 1) så PC ← PC + k + 1 Ingen 1/2
BRTC k Gren hvis T-flaget er ryddet hvis (T = 0) så PC ← PC + k + 1 Ingen 1/2
BRVS k Forgrening, hvis overløbsflag er indstillet hvis (V = 1) så PC ← PC + k + 1 Ingen 1/2
BRVC k Forgrening, hvis overløbsflaget er slettet hvis (V = 0) så PC ← PC + k + 1 Ingen 1/2
BRIE k Filial, hvis afbrydelse er aktiveret hvis (I = 1) så PC ← PC + k + 1 Ingen 1/2
BRID k Filial, hvis afbrydelse er deaktiveret hvis (I = 0) så PC ← PC + k + 1 Ingen 1/2
BIT OG BIT-TEST INSTRUKTIONER
SBI P,b Indstil bit i I/O-register I/O(P,b) ← 1 Ingen 2
CBI P,b Ryd bit i I/O-register I/O(P,b) ← 0 Ingen 2
LSL Rd Logisk skift til venstre Rd(n+1) ← Rd(n), Rd(0) ← 0 Z, C, N, V 1
LSR Rd Logisk skift til højre Rd(n) ← Rd(n+1), Rd(7) ← 0 Z, C, N, V 1
ROLLE Rd Drej til venstre gennem bære Rd(0)←C,Rd(n+1)← Rd(n),C←Rd(7) Z, C, N, V 1
ROR Rd Drej lige igennem bære Rd(7)←C,Rd(n)← Rd(n+1),C←Rd(0) Z, C, N, V 1
ASR Rd Aritmetisk skift til højre Rd(n) ← Rd(n+1), n=0..6 Z, C, N, V 1
Mnemonics Operander Beskrivelse Operation Flag #Ure
BYT Rd Byt nibbles Rd(3..0)←Rd(7..4),Rd(7..4)←Rd(3..0) Ingen 1
BSET s Flag sæt SREG(er) ← 1 SREG(er) 1
BCLR s Flag klart SREG(er) ← 0 SREG(er) 1
BST Rr, b Bit Store fra Register til T T ← Rr(b) T 1
BLD Rd, b Bitbelastning fra T til Register Rd(b) ← T Ingen 1
SEC Sæt Carry C ← 1 C 1
CLC Clear Carry C ← 0 C 1
SEN Indstil negativt flag N ← 1 N 1
CLN Ryd negativt flag N ← 0 N 1
SEZ Indstil Zero Flag Z ← 1 Z 1
CLZ Clear Zero Flag Z ← 0 Z 1
SEI Aktiver global afbrydelse I ← 1 I 1
CLI Global interrupt deaktiver I ← 0 I 1
SES Sæt underskrevet testflag S ← 1 S 1
CLS Ryd signeret testflag S ← 0 S 1
SEV Sæt toer komplementoverløb. V ← 1 V 1
CLV Clear Twos Complement Overflow V ← 0 V 1
SÆT Indstil T i SREG T ← 1 T 1
CLT Ryd T i SREG T ← 0 T 1
SEH Sæt Half Carry Flag i SREG H ← 1 H 1
CLH Ryd Half Carry Flag i SREG H ← 0 H 1
DATAOVERFØRSELSINSTRUKTIONER
MOV Rd, Rr Flyt mellem registre Rd ← Rr Ingen 1
MOVW Rd, Rr Kopier Register Word Rd+1:Rd ← Rr+1:Rr Ingen 1
LDI Rd, K Indlæs øjeblikkeligt Rd ← K Ingen 1
LD Rd, X Indlæs indirekte Rd ← (X) Ingen 2
LD Rd, X+ Indlæs indirekte og Post-Inc. Rd ← (X), X ← X + 1 Ingen 2
LD Rd, – X Indlæs indirekte og før dec. X ← X – 1, Rd ← (X) Ingen 2
LD Rd, Y Indlæs indirekte Rd ← (Y) Ingen 2
LD Rd, Y+ Indlæs indirekte og Post-Inc. Rd ← (Y), Y ← Y + 1 Ingen 2
LD Rd, – Y Indlæs indirekte og før dec. Y ← Y – 1, Rd ← (Y) Ingen 2
LDD Rd,Y+q Belastning indirekte med forskydning Rd ← (Y + q) Ingen 2
LD Rd, Z Indlæs indirekte Rd ← (Z) Ingen 2
LD Rd, Z+ Indlæs indirekte og Post-Inc. Rd ← (Z), Z ← Z+1 Ingen 2
LD Rd, -Z Indlæs indirekte og før dec. Z ← Z – 1, Rd ← (Z) Ingen 2
LDD Rd, Z+q Belastning indirekte med forskydning Rd ← (Z + q) Ingen 2
LDS Rd, k Indlæs direkte fra SRAM Rd ← (k) Ingen 2
ST X, Rr Butik indirekte (X) ← Rr Ingen 2
ST X+, Rr Butik Indirect og Post-Inc. (X) ← Rr, X ← X + 1 Ingen 2
ST – X, Rr Butik indirekte og før dec. X ← X – 1, (X) ← Rr Ingen 2
ST Y, Rr Butik indirekte (Y) ← Rr Ingen 2
ST Y+, Rr Butik Indirect og Post-Inc. (Y) ← Rr, Y ← Y + 1 Ingen 2
ST – Y, Rr Butik indirekte og før dec. Y ← Y – 1, (Y) ← Rr Ingen 2
STD Y+q,Rr Opbevar indirekte med forskydning (Y + q) ← Rr Ingen 2
ST Z, Rr Butik indirekte (Z) ← Rr Ingen 2
ST Z+, Rr Butik Indirect og Post-Inc. (Z) ← Rr, Z ← Z + 1 Ingen 2
ST -Z, Rr Butik indirekte og før dec. Z ← Z – 1, (Z) ← Rr Ingen 2
STD Z+q,Rr Opbevar indirekte med forskydning (Z + q) ← Rr Ingen 2
STS k, Rr Gem direkte til SRAM (k) ← Rr Ingen 2
LPM Indlæs programhukommelse R0 ← (Z) Ingen 3
LPM Rd, Z Indlæs programhukommelse Rd ← (Z) Ingen 3
LPM Rd, Z+ Indlæs programhukommelse og Post-Inc Rd ← (Z), Z ← Z+1 Ingen 3
SPM Gem programhukommelse (z) ← R1:R0 Ingen
IN Rd, P I havn Rd ← P Ingen 1
UD P, Rr Ud havn P ← Rr Ingen 1
SKUBBE Rr Tryk Registrer på stak STAK ← Rr Ingen 2
POP Rd Pop Register fra Stack Rd ← STAK Ingen 2
MCU STYRING INSTRUKTIONER
NEJ Ingen operation Ingen 1
SOVE Sove (se specifik beskrivelse for Sleep-funktion) Ingen 1
WDR Nulstil vagthund (se specifik beskrivelse for WDR/Timer) Ingen 1
PAUSE Pause
Hastighed (MHz) (1) Forsyning Voltage (V) Temperaturområde Pakke (2) Bestillingskode (3)
10 1.8 – 5.5 Industriel

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

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

Bemærkninger: 1. For hastighed vs. forsyning voltage, se afsnit 21.3 "Hastighed" på side 163.

Alle pakker er Pb-fri, halogenidfri og helt grønne, og de overholder det europæiske direktiv for begrænsning af farlige stoffer (RoHS).

Kode indikatorer

H: NiPdAu bly finish

U: mat tin

R: tape og rulle

Disse enheder kan også leveres i waferform. Kontakt venligst dit lokale Atmel-salgskontor for detaljerede bestillingsoplysninger og minimumsmængder.

trykfejl

Errata ATtiny25

Revisionsbrevet i dette afsnit henviser til revisionen af ​​ATtiny25-enheden.

Rev D – F

Ingen kendte fejl.

Rev B – C

EEPROM-læsning kan mislykkes ved lav forsyningsvolumentage / lav clockfrekvens

EEPROM-læsning kan mislykkes ved lav forsyningsvolumentage / lav clockfrekvens

Forsøger at læse EEPROM ved lave clockfrekvenser og/eller lav forsyning voltage kan resultere i ugyldige data.

Problemløsning/løsning

Brug ikke EEPROM'en, når clockfrekvensen er under 1MHz og leverer voltage er under 2V. Hvis driftsfrekvensen ikke kan hæves over 1MHz, skal voltage skal være mere end 2V. Tilsvarende, hvis forsyning voltage kan ikke hæves over 2V, så skal driftsfrekvensen være mere end 1MHz.

Denne funktion er kendt for at være temperaturafhængig, men den er ikke blevet karakteriseret. Der gives kun retningslinjer for stuetemperatur.

Rev A

Ikke samplidt.

Errata ATtiny45

Revisionsbrevet i dette afsnit henviser til revisionen af ​​ATtiny45-enheden.

Rev F – G

Ingen kendte fejl

Rev D – E

EEPROM-læsning kan mislykkes ved lav forsyningsvolumentage / lav clockfrekvens

EEPROM-læsning kan mislykkes ved lav forsyningsvolumentage / lav clockfrekvens

Forsøger at læse EEPROM ved lave clockfrekvenser og/eller lav forsyning voltage kan resultere i ugyldige data.

Problemløsning/løsning

Brug ikke EEPROM'en, når clockfrekvensen er under 1MHz og leverer voltage er under 2V. Hvis driftsfrekvensen ikke kan hæves over 1MHz, skal voltage skal være mere end 2V. Tilsvarende, hvis forsyning voltage kan ikke hæves over 2V, så skal driftsfrekvensen være mere end 1MHz.

Denne funktion er kendt for at være temperaturafhængig, men den er ikke blevet karakteriseret. Der gives kun retningslinjer for stuetemperatur.

Rev B – C

PLL låser ikke

EEPROM læst fra applikationskode virker ikke i Lock Bit Mode 3

EEPROM-læsning kan mislykkes ved lav forsyningsvolumentage / lav clockfrekvens

Timer Counter 1 PWM-udgangsgenerering på OC1B-XOC1B fungerer ikke korrekt

PLL låser ikke

Ved frekvenser under 6.0 MHz vil PLL ikke låse

Problemløsning/løsning

Når du bruger PLL, skal du køre ved 6.0 ​​MHz eller højere.

EEPROM læst fra applikationskode virker ikke i Lock Bit Mode 3

Når hukommelseslåsbittene LB2 og LB1 er programmeret til tilstand 3, virker EEPROM-læsning ikke fra applikationskoden.

Problemløsning/omgå

Indstil ikke Lock Bit Protection Mode 3, når applikationskoden skal læses fra EEPROM.

EEPROM-læsning kan mislykkes ved lav forsyningsvolumentage / lav clockfrekvens

Forsøger at læse EEPROM ved lave clockfrekvenser og/eller lav forsyning voltage kan resultere i ugyldige data.

Problemløsning/løsning

Brug ikke EEPROM'en, når clockfrekvensen er under 1MHz og leverer voltage er under 2V. Hvis driftsfrekvensen ikke kan hæves over 1MHz, skal voltage skal være mere end 2V. Tilsvarende, hvis forsyning voltage kan ikke hæves over 2V, så skal driftsfrekvensen være mere end 1MHz.

Denne funktion er kendt for at være temperaturafhængig, men den er ikke blevet karakteriseret. Der gives kun retningslinjer for stuetemperatur.

Timer Counter 1 PWM-udgangsgenerering på OC1B – XOC1B fungerer ikke korrekt

Timer Counter1 PWM-udgang OC1B-XOC1B fungerer ikke korrekt. Kun i det tilfælde, hvor kontrolbittene COM1B1 og COM1B0 er i samme tilstand som henholdsvis COM1A1 og COM1A0, fungerer OC1B-XOC1B udgangen korrekt.

Problemløsning/omgå

Den eneste løsning er at bruge samme kontrolindstilling på COM1A[1:0] og COM1B[1:0] kontrolbits, se tabel 14-4 i dataarket. Problemet er blevet rettet for Tiny45 rev D.

Rev A

For højt strømforbrug

DebugWIRE mister kommunikationen, når man enkelt træder ind i interrupts

PLL låser ikke

EEPROM læst fra applikationskode virker ikke i Lock Bit Mode 3

EEPROM-læsning kan mislykkes ved lav forsyningsvolumentage / lav clockfrekvens

For højt strømforbrug

Tre situationer vil føre til et for højt strømforbrug. Disse er:

Et eksternt ur vælges af sikringer, men I/O-PORTEN er stadig aktiveret som udgang.

EEPROM'en aflæses, før strømmen slukkes.

VCC er 4.5 volt eller højere.

Ansvarsfraskrivelse: Oplysningerne i dette dokument er givet i forbindelse med Atmel-produkter. Ingen licens, hverken udtrykkelig eller underforstået, ved estoppel eller på anden måde, til nogen intellektuel ejendomsret er givet af dette dokument eller i forbindelse med salg af Atmel-produkter. UNDTAGET SOM ANGIVET I ATMEL VILKÅR OG SALGSBETINGELSER PLACERET PÅ ATMEL WEBWEBSTED, ATMEL PÅTAGER SIG INTET ANSVAR OG FRASKRIVER SIG ENHVER UDTRYKKELIG, UNDERFORSTÅET ELLER LOVBETLIG GARANTI I FORBINDELSE MED DETS PRODUKTER, INKLUSIVE, MEN IKKE BEGRÆNSET TIL, DEN UNDERFORSTÅEDE GARANTI FOR SALGBARHED, EGNETHED, EGNETHED IKKE-KRÆNKELSE. ATMEL KAN UNDER INGEN OMSTÆNDIGHEDER VÆRE ANSVARLIG FOR NOGEN DIREKTE, INDIREKTE, FØLGESKADER, STRAF-, SÆRLIGE ELLER TILFÆLDIGE SKADER (HERunder, UDEN BEGRÆNSNING, SKADER FOR TAB OG FORTJENESTE, FORRETNINGSAFBRYDELSE ELLER UDEN ELLER TAB AF BRUG) FOR AT BRUGE DETTE DOKUMENT, SELV HVIS ATMEL ER BLIVER UNDRETET OM MULIGHEDEN FOR SÅDANNE SKADER.

Atmel giver ingen erklæringer eller garantier med hensyn til nøjagtigheden eller fuldstændigheden af ​​indholdet af dette dokument og forbeholder sig retten til at foretage ændringer i specifikationer og produktbeskrivelser til enhver tid uden varsel. Atmel forpligter sig ikke til at opdatere oplysningerne heri. Medmindre andet specifikt er angivet, er Atmel-produkter ikke egnede til og må ikke bruges i bilapplikationer. Atmels produkter er ikke beregnet til, godkendt eller garanteret til brug som komponenter i applikationer, der er beregnet til at understøtte eller opretholde liv.

Referencer

Efterlad en kommentar

Din e-mailadresse vil ikke blive offentliggjort. Påkrævede felter er markeret *