Atmel

Microcontrolador AVR Atmel de 8 bits amb flaix programable al sistema de 2/4/8K bytesxip

 

Característiques

  • Microcontrolador AVR® de 8 bits d'alt rendiment i baixa potència
  • Arquitectura RISC avançada
  • 120 Instruccions potents: la majoria d'execucions de cicle de rellotge individual
  • Registres de treball d'ús general 32 x 8
  • Funcionament totalment estàtic
  • Memòries de dades i programes no volàtils
  • 2/4/8K bytes de Flash de memòria de programa programable al sistema
  • Resistència: 10,000 cicles d'escriptura/esborrat
  • 128/256/512 bytes EEPROM programable al sistema
  • Resistència: 100,000 cicles d'escriptura/esborrat
  • SRAM interna de 128/256/512 bytes
  • Bloqueig de programació per al programa Flash d'autoprogramació i seguretat de dades EEPROM

Característiques perifèriques

  • Temporitzador/comptador de 8 bits amb preescalador i dos canals PWM
  • Temporitzador/comptador d'alta velocitat de 8 bits amb preescalador independent
  • 2 sortides PWM d'alta freqüència amb registres de comparació de sortida separats
  • Generador de temps mort programable
  • USI - Interfície sèrie universal amb detector de condicions d'inici
  • ADC de 10 bits

4 canals únics

2 parells de canals ADC diferencials amb guany programable (1x, 20x)

Mesura de la temperatura

Temporitzador de Watchdog programable amb oscil·lador separat al xip

Comparador analògic en xip

Característiques especials del microcontrolador

Sistema de depuració en xip debugWIRE

Programable dins del sistema mitjançant el port SPI

Fonts d'interrupció externes i internes

Modes d'inactivitat de baixa potència, reducció de soroll ADC i modes d'apagada

Circuit de restabliment d'encesa millorat

Circuit programable de detecció d'apagada

Oscil·lador calibrat intern

E/S i paquets

Sis línies d'E/S programables

PDIP de 8 pins, SOIC de 8 pins, QFN/MLF de 20 pins i TSSOP de 8 pins (només ATtiny45/V)

Vol. Operatiutage
– 1.8 – 5.5 V per a ATtiny25V/45V/85V
– 2.7 – 5.5 V per ATtiny25/45/85

Grau de velocitat
– ATtiny25V/45V/85V: 0 – 4 MHz @ 1.8 – 5.5 V, 0 – 10 MHz @ 2.7 – 5.5 V
– ATtiny25/45/85: 0 – 10 MHz @ 2.7 – 5.5 V, 0 – 20 MHz @ 4.5 – 5.5 V

Interval de temperatura industrial

Baix consum d'energia

Mode actiu:

1 MHz, 1.8 V: 300 µA

Mode d'apagada:

Configuracions de pins

Pinout ATtiny25/45/85 Configuració

Descripcions de pins

VCC: Subministrament voltage.
GND: Terra.
Port B (PB5:PB0): el port B és un port d'E/S bidireccional de 6 bits amb resistències d'extracció internes (seleccionades per a cada bit). Els buffers de sortida del port B tenen característiques d'unitat simètriques amb una gran capacitat d'aigüe i font. Com a entrades, els pins del port B que s'estimen a baix externament generaran corrent si s'activen les resistències d'extracció. Els pins del port B s'estableixen en tres estats quan s'activa una condició de restabliment, fins i tot si el rellotge no està funcionant.

El port B també compleix les funcions de diverses característiques especials de l'ATtiny25/45/85 tal com s'enumeren
A ATtiny25, els ports d'E/S programables PB3 i PB4 (pins 2 i 3) s'intercanvien en mode de compatibilitat ATtiny15 per donar suport a la compatibilitat amb ATtiny15.

RESET: Reinicia l'entrada. Un nivell baix d'aquest pin durant més temps que la durada mínima del pols generarà un restabliment, fins i tot si el rellotge no funciona i sempre que el pin de restabliment no s'hagi desactivat. S'indica la durada mínima del pols Taula 21-4 a la pàgina 165. No es garanteix que els polsos més curts generin un reinici.

El pin de restabliment també es pot utilitzar com a pin d'E/S (feble).

Acabatview

L'ATtiny25/45/85 és un microcontrolador CMOS de 8 bits de baixa potència basat en l'arquitectura RISC millorada AVR. En executar instruccions potents en un sol cicle de rellotge, l'ATtiny25/45/85 aconsegueix rendiments que s'aproximen a 1 MIPS per MHz, permetent al dissenyador del sistema optimitzar el consum d'energia en comparació amb la velocitat de processament.

Diagrama de blocs Diagrama de blocs

El nucli AVR combina un ric conjunt d'instruccions amb 32 registres de treball d'ús general. Tots els 32 registres estan connectats directament a la Unitat Aritmètica Lògica (ALU), cosa que permet accedir a dos registres independents en una sola instrucció executada en un cicle de rellotge. L'arquitectura resultant és més eficient del codi alhora que aconsegueix un rendiment fins a deu vegades més ràpid que els microcontroladors CISC convencionals.

L'ATtiny25/45/85 ofereix les següents característiques: 2/4/8K bytes de flaix programable dins del sistema, 128/256/512 bytes EEPROM, 128/256/256 bytes SRAM, 6 línies d'E/S d'ús general, 32 registres de treball d'ús general, un mode de comparació de 8 bits i 8 bits. Temporitzador/comptador, interfície sèrie universal, interrupcions internes i externes, un ADC de 4 canals de 10 bits, un temporitzador de vigilància programable amb oscil·lador intern i tres modes d'estalvi d'energia seleccionables per programari. El mode inactiu atura la CPU mentre permet que el sistema SRAM, temporitzador/comptador, ADC, comparador analògic i interrupció continuïn funcionant. El mode d'apagada desa el contingut del registre, desactivant totes les funcions del xip fins a la següent interrupció o restabliment de maquinari. El mode de reducció de soroll ADC atura la CPU i tots els mòduls d'E/S excepte l'ADC, per minimitzar el soroll de commutació durant les conversions ADC.

El dispositiu es fabrica amb la tecnologia de memòria no volàtil d'alta densitat d'Atmel. El Flash ISP On-Chip permet que la memòria del programa es torni a programar dins del sistema mitjançant una interfície sèrie SPI, mitjançant un programador de memòria no volàtil convencional o mitjançant un codi d'arrencada en xip que s'executa al nucli AVR.

L'ATtiny25/45/85 AVR és compatible amb un conjunt complet d'eines de desenvolupament de programes i sistemes que inclouen: compiladors C, assembladors de macros, depuradors/simuladors de programes i kits d'avaluació.

Sobre Recursos

Hi ha disponible un conjunt complet d'eines de desenvolupament, notes d'aplicacions i fulls de dades per descarregar http://www.atmel.com/avr.

Codi Examples

Aquesta documentació conté codi senzill exampels que mostren breument com utilitzar diverses parts del dispositiu. Aquests codis exampSuposem que la capçalera específica de la part file s'inclou abans de la compilació. Tingueu en compte que no tots els proveïdors de compiladors C inclouen definicions de bits a la capçalera files i el maneig d'interrupcions en C depèn del compilador. Si us plau, confirmeu amb la documentació del compilador C per obtenir més detalls.

Per als registres d'E/S situats al mapa d'E/S ampliat, les instruccions "IN", "OUT", "SBIS", "SBIC", "CBI" i "SBI" s'han de substituir per instruccions que permetin l'accés a l'E/S ampliada. Normalment, això significa "LDS" i "STS" combinats amb "SBRS", "SBRC", "SBR" i "CBR". Tingueu en compte que no tots els dispositius AVR inclouen un mapa d'E/S estès.

Detecció tàctil capacitiva

La biblioteca Atmel QTouch ofereix una solució senzilla d'utilitzar per a interfícies tàctils dels microcontroladors Atmel AVR. La biblioteca QTouch inclou suport per als mètodes d'adquisició QTouch® i QMatrix®.

La detecció tàctil s'afegeix fàcilment a qualsevol aplicació enllaçant la biblioteca QTouch i utilitzant la interfície de programació d'aplicacions (API) de la biblioteca per definir els canals i sensors tàctils. Aleshores, l'aplicació truca a l'API per recuperar la informació del canal i determinar l'estat del sensor tàctil.

La biblioteca QTouch és gratuïta i es pot descarregar des d'Atmel weblloc. Per obtenir més informació i detalls de la implementació, consulteu la Guia d'usuari de la biblioteca QTouch, també disponible a Atmel weblloc.

Retenció de dades

Els resultats de la qualificació de fiabilitat mostren que la taxa de fallada de retenció de dades projectada és molt inferior a 1 PPM durant 20 anys a 85 °C o 100 anys a 25 °C.

Nucli de CPU AVR

Introducció

Aquesta secció tracta l'arquitectura bàsica de l'AVR en general. La funció principal del nucli de la CPU és garantir l'execució correcta del programa. Per tant, la CPU ha de poder accedir a les memòries, realitzar càlculs, controlar perifèrics i gestionar interrupcions.

Arquitectònic acabatview Arquitectura

Per tal de maximitzar el rendiment i el paral·lelisme, l'AVR utilitza una arquitectura de Harvard, amb memòries i busos separats per al programa i les dades. Les instruccions a la memòria del programa s'executen amb una canalització d'un sol nivell. Mentre s'executa una instrucció, la següent instrucció s'obté prèviament de la memòria del programa. Aquest concepte permet executar instruccions en cada cicle de rellotge. La memòria del programa és una memòria flash reprogramable dins del sistema.

El registre d'accés ràpid File conté 32 registres de treball de propòsit general de 8 bits amb un sol temps d'accés de cicle de rellotge. Això permet l'operació d'un sol cicle de la unitat lògica aritmètica (ALU). En una operació ALU típica, es produeixen dos operands del Registre File, l'operació s'executa i el resultat es torna a emmagatzemar al registre File- en un cicle de rellotge.

Sis dels 32 registres es poden utilitzar com a tres punters de registre d'adreces indirectes de 16 bits per a l'adreçament de l'espai de dades, permetent càlculs d'adreces eficients. Un d'aquests punters d'adreces també es pot utilitzar com a punter d'adreces per a taules de cerca a la memòria del programa Flash. Aquests registres de funcions afegits són els registres X, Y i Z de 16 bits, que es descriuen més endavant en aquesta secció.

L'ALU admet operacions aritmètiques i lògiques entre registres o entre una constant i un registre. Les operacions de registre únic també es poden executar a l'ALU. Després d'una operació aritmètica, el registre d'estat s'actualitza per reflectir informació sobre el resultat de l'operació.

El flux del programa es proporciona mitjançant instruccions de salt i trucada condicionals i incondicionals, capaços d'adreçar directament tot l'espai d'adreces. La majoria de les instruccions AVR tenen un únic format de paraula de 16 bits, però també hi ha instruccions de 32 bits.

Durant les interrupcions i les trucades de subrutines, l'adreça de retorn del comptador de programes (PC) s'emmagatzema a la pila. La pila s'assigna efectivament a la SRAM de dades generals i, per tant, la mida de la pila només està limitada per la mida total de la SRAM i l'ús de la SRAM. Tots els programes d'usuari han d'inicialitzar l'SP a la rutina Reset (abans que s'executin subrutines o interrupcions). El punter de pila (SP) és accessible de lectura/escriptura a l'espai d'E/S. Es pot accedir fàcilment a la SRAM de dades mitjançant els cinc modes d'adreçament diferents compatibles amb l'arquitectura AVR.

Els espais de memòria de l'arquitectura AVR són tots mapes de memòria lineals i regulars.

Un mòdul d'interrupció flexible té els seus registres de control a l'espai d'E/S amb un bit d'habilitació d'interrupció global addicional al registre d'estat. Totes les interrupcions tenen un vector d'interrupció independent a la taula de vectors d'interrupció. Les interrupcions tenen prioritat d'acord amb la seva posició del vector d'interrupció. Com més baixa sigui l'adreça del vector d'interrupció, més alta serà la prioritat.

L'espai de memòria d'E/S conté 64 adreces per a funcions perifèriques de la CPU com registres de control, SPI i altres funcions d'E/S. Es pot accedir a la memòria d'E/S directament o com a ubicacions de l'espai de dades seguint les del Registre File, 0x20 – 0x5F.

ALU – Unitat Aritmètica Lògica

L'AVR ALU d'alt rendiment funciona en connexió directa amb els 32 registres de treball d'ús general. Dins d'un sol cicle de rellotge, s'executen operacions aritmètiques entre registres de propòsit general o entre un registre i un immediat. Les operacions ALU es divideixen en tres categories principals: funcions aritmètiques, lògiques i de bits. Algunes implementacions de l'arquitectura també proporcionen un potent multiplicador que admet tant la multiplicació signada/no signada com el format fraccionari. Consulteu la secció "Conjunt d'instruccions" per obtenir una descripció detallada.

Registre d'estat

El registre d'estat conté informació sobre el resultat de la instrucció aritmètica executada més recentment. Aquesta informació es pot utilitzar per alterar el flux del programa per tal de realitzar operacions condicionals. Tingueu en compte que el registre d'estat s'actualitza després de totes les operacions ALU, tal com s'especifica a la referència del conjunt d'instruccions. Això en molts casos eliminarà la necessitat d'utilitzar les instruccions de comparació dedicades, donant lloc a un codi més ràpid i compacte.

El registre d'estat no s'emmagatzema automàticament quan s'introdueix una rutina d'interrupció i es restaura quan es torna d'una interrupció. Això s'ha de gestionar mitjançant programari.

SREG - Registre d'estat AVR

El registre d'estat de l'AVR - SREG - es defineix com:

Bit 7 6 5 4 3 2 1 0
0x3F I T H S V N Z C SREG
Llegir/Escriure R/W R/W R/W R/W R/W R/W R/W R/W
Valor inicial 0 0 0 0 0 0 0 0

Bit 7 – I: Habilitació d'interrupció global

El bit d'habilitació d'interrupcions globals s'ha d'establir perquè les interrupcions estiguin habilitades. A continuació, el control d'habilitació d'interrupció individual es realitza en registres de control separats. Si el Registre d'habilitació d'interrupcions globals s'esborra, cap de les interrupcions s'habilitarà independentment de la configuració individual d'habilitació d'interrupcions. El maquinari esborra l'I-bit després que s'hagi produït una interrupció i la instrucció RETI l'estableix per habilitar les interrupcions posteriors. L'aplicació també pot establir i esborrar l'I-bit amb les instruccions SEI i CLI, tal com es descriu a la referència del conjunt d'instruccions.

Bit 6 – T: Emmagatzematge de còpia de bits

Les instruccions de còpia de bits BLD (Bit LoaD) i BST (Bit Store) utilitzen el bit T com a font o destinació del bit operat. Una mica d'un registre al Registre File es pot copiar a T mitjançant la instrucció BST, i un bit a T es pot copiar a un bit en un registre del Registre File per la instrucció BLD.

Bit 5 – H: Bandera de transport mitjà

L'indicador Half Carry H indica un Half Carry en algunes operacions aritmètiques. Half Carry és útil en l'aritmètica BCD. Consulteu la "Descripció del conjunt d'instruccions" per obtenir informació detallada.

Bit 4 – S: bit de signe, S = N ⊕ V

El bit S és sempre un exclusiu o entre el senyal negatiu N i el indicador de desbordament del complement de dos V. Vegeu la "Descripció del conjunt d'instruccions" per obtenir informació detallada.

Bit 3 – V: Bandera de desbordament de complement a dos

La bandera de desbordament del complement a dos V admet l'aritmètica del complement a dos. Consulteu la "Descripció del conjunt d'instruccions" per obtenir informació detallada.

Bit 2 – N: Bandera negativa

El senyal negatiu N indica un resultat negatiu en una operació aritmètica o lògica. Consulteu la "Descripció del conjunt d'instruccions" per obtenir informació detallada.

Bit 1 – Z: Bandera zero

La bandera de zero Z indica un resultat zero en una operació aritmètica o lògica. Consulteu la "Descripció del conjunt d'instruccions" per obtenir informació detallada.

Bit 0 – C: Bandera de transport

La bandera de transport C indica un transport en una operació aritmètica o lògica. Consulteu la "Descripció del conjunt d'instruccions" per obtenir informació detallada.

Registre d'ús general File

El Registre File està optimitzat per al conjunt d'instruccions RISC millorat AVR. Per tal d'aconseguir el rendiment i la flexibilitat requerits, el Registre admet els següents esquemes d'entrada/sortida File:

Un operand de sortida de 8 bits i una entrada de resultat de 8 bits

Dos operands de sortida de 8 bits i una entrada de resultat de 8 bits

Dos operands de sortida de 8 bits i una entrada de resultat de 16 bits

Un operand de sortida de 16 bits i una entrada de resultat de 16 bits

Figura 4-2 mostra l'estructura dels 32 registres de treball de propòsit general a la CPU. Propòsit general

Com es mostra a Figura 4-2, a cada registre també se li assigna una adreça de memòria de dades, assignant-los directament a les 32 primeres ubicacions de l'espai de dades de l'usuari. Tot i que no s'ha implementat físicament com a ubicacions SRAM, aquesta organització de memòria proporciona una gran flexibilitat en l'accés als registres, ja que els registres de punter X, Y i Z es poden configurar per indexar qualsevol registre del file.La majoria de les instruccions que funcionen al Registre File tenen accés directe a tots els registres, i la majoria són instruccions d'un sol cicle.

El registre X, el registre Y i el registre Z

Els registres R26..R31 tenen algunes funcions afegides al seu ús general. Aquests registres són punters d'adreces de 16 bits per a l'adreçament indirecte de l'espai de dades. Els tres registres d'adreces indirectes X, Y i Z es defineixen tal com es descriu a Figura 4-3.

Registra't

En els diferents modes d'adreçament, aquests registres d'adreces tenen funcions com a desplaçament fix, increment automàtic i decrement automàtic (vegeu la referència del conjunt d'instruccions per a més detalls).

Apuntador de pila

La pila s'utilitza principalment per emmagatzemar dades temporals, per emmagatzemar variables locals i per emmagatzemar adreces de retorn després d'interrupcions i trucades de subrutines. El registre del punter de pila sempre apunta a la part superior de la pila. Tingueu en compte que la pila s'implementa a mesura que creix des d'ubicacions de memòria més altes a ubicacions de memòria més baixes. Això implica que una ordre Stack PUSH disminueix el punter de pila.

El punter de pila apunta a l'àrea de la pila SRAM de dades on es troben les piles de subrutina i d'interrupció. Aquest espai de pila a la SRAM de dades l'ha de definir el programa abans que s'executi qualsevol trucada de subrutina o s'habiliten les interrupcions. El punter de pila s'ha d'establir per sobre de 0x60. El punter de pila es disminueix en un quan les dades s'envien a la pila amb la instrucció PUSH, i es disminueix en dos quan l'adreça de retorn s'envia a la pila amb una trucada o interrupció de subrutina. El punter de pila s'incrementa en un quan les dades s'obtenen de la pila amb la instrucció POP, i s'incrementa en dos quan les dades surten de la pila amb retorn de la subrutina RET o retorn de la interrupció RETI.

L'AVR Stack Pointer s'implementa com a dos registres de 8 bits a l'espai d'E/S. El nombre de bits realment utilitzats depèn de la implementació. Tingueu en compte que l'espai de dades en algunes implementacions de l'arquitectura AVR és tan petit que només es necessita SPL. En aquest cas, el Registre SPH no estarà present.

SPH i SPL — Registre de punter de pila

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
Llegir/Escriure R/W R/W R/W R/W R/W R/W R/W R/W
Llegir/Escriure R/W R/W R/W R/W R/W R/W R/W R/W
Valor inicial RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND
Valor inicial RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND

Temps d'execució de les instruccions

Aquesta secció descriu els conceptes generals de temps d'accés per a l'execució d'instruccions. La CPU AVR és impulsada pel rellotge de la CPU clkCPU, generat directament a partir de la font de rellotge seleccionada per al xip. No s'utilitza cap divisió interna del rellotge.

Fig4.4

Figura 4-4 mostra les recuperacions d'instruccions paral·leles i les execucions d'instruccions habilitades per l'arquitectura de Harvard i el registre d'accés ràpid File concepte. Aquest és el concepte bàsic de canalització per obtenir fins a 1 MIPS per MHz amb els resultats únics corresponents per a funcions per cost, funcions per rellotge i funcions per unitat de potència.

Figura 4-5. Funcionament ALU d'un sol cicle

Fig4.5

Reinicialització i gestió d'interrupcions

L'AVR proporciona diverses fonts d'interrupció diferents. Aquestes interrupcions i el vector de restabliment independent tenen cadascun un vector de programa independent a l'espai de memòria del programa. A totes les interrupcions s'assignen bits d'habilitació individuals que s'han d'escriure un lògic juntament amb el bit d'habilitació d'interrupció global al registre d'estat per tal d'habilitar la interrupció.

Les adreces més baixes de l'espai de memòria del programa es defineixen per defecte com a vectors de restabliment i interrupció. La llista completa de vectors es mostra a "Interrupcions" a la pàgina 48. La llista també determina els nivells de prioritat de les diferents interrupcions. Com més baixa sigui l'adreça, més alt és el nivell de prioritat. RESET té la prioritat més alta, i el següent és INT0: la sol·licitud d'interrupció externa 0.

Quan es produeix una interrupció, el bit I d'habilitació d'interrupció global s'esborra i totes les interrupcions es desactiven. El programari d'usuari pot escriure un lògic al bit I per habilitar interrupcions imbricades. Totes les interrupcions habilitades poden interrompre la rutina d'interrupció actual. L'I-bit s'estableix automàticament quan s'executa una instrucció Return from Interrupt (RETI).

Bàsicament hi ha dos tipus d'interrupcions. El primer tipus s'activa per un esdeveniment que estableix la bandera d'interrupció. Per a aquestes interrupcions, el comptador de programa es vectoritza al vector d'interrupció real per tal d'executar la rutina de gestió d'interrupcions i el maquinari esborra el senyal d'interrupció corresponent. Els indicadors d'interrupció també es poden esborrar escrivint un lògic a les posicions dels bits de senyal que s'han d'esborrar. Si es produeix una condició d'interrupció mentre s'esborra el bit d'habilitació d'interrupció corresponent, el senyalador d'interrupció s'establirà i es recordarà fins que s'habiliten la interrupció o el programari esborra el senyalador. De la mateixa manera, si es produeix una o més condicions d'interrupció mentre s'esborra el bit d'habilitació d'interrupció global, s'establiran i es recordaran els indicadors d'interrupció corresponents fins que s'estableixi el bit d'habilitació d'interrupció global, i després s'executaran per ordre de prioritat.

El segon tipus d'interrupcions es desencadenarà sempre que la condició d'interrupció estigui present. Aquestes interrupcions no tenen necessàriament indicadors d'interrupció. Si la condició d'interrupció desapareix abans que la interrupció estigui habilitada, la interrupció no s'activarà.

Quan l'AVR surt d'una interrupció, sempre tornarà al programa principal i executarà una instrucció més abans de servir qualsevol interrupció pendent.

Tingueu en compte que el registre d'estat no s'emmagatzema automàticament quan s'introdueix una rutina d'interrupció, ni es restaura quan es torna d'una rutina d'interrupció. Això s'ha de gestionar mitjançant programari.

Quan utilitzeu la instrucció CLI per desactivar les interrupcions, les interrupcions es desactivaran immediatament. No s'executarà cap interrupció després de la instrucció CLI, encara que es produeixi simultàniament amb la instrucció CLI. El següent example mostra com això es pot utilitzar per evitar interrupcions durant la seqüència d'escriptura temporitzada de l'EEPROM.

Codi de muntatge Example
en r16, SREG ; emmagatzema el valor SREG

cli; desactiva les interrupcions durant la seqüència cronometrada

sbi EECR, EEMPE ; iniciar l'escriptura d'EEPROM

sbi EECR, EEPE

fora SREG, r16; restaurar el valor SREG (bit I)

Codi C Example
char cSREG;

cSREG = SREG; /* emmagatzema el valor SREG */

/* desactiva les interrupcions durant la seqüència cronometrada */

_CLI();

EECR |= (1<

EECR |= (1<

SREG = cSREG; /* restaura el valor SREG (bit I) */

Quan s'utilitza la instrucció SEI per habilitar interrupcions, la instrucció següent SEI s'executarà abans de qualsevol interrupció pendent, tal com es mostra en aquest exemple.ample.

Codi de muntatge Example
sei ; establiu l'habilitat d'interrupció global

dormir; entrar a dormir, esperant la interrupció

; nota: entrarà en repòs abans de qualsevol pendent

; interrupció(s)

Codi C Example
_SEI(); /* estableix l'habilitat d'interrupció global */

_SLEEP(); /* entra en repòs, esperant una interrupció */

/* nota: entrarà en repòs abans de qualsevol interrupció(es) pendent */

Temps de resposta a la interrupció

La resposta d'execució d'interrupcions per a totes les interrupcions de l'AVR habilitat és de quatre cicles de rellotge com a mínim. Després de quatre cicles de rellotge, s'executa l'adreça del vector de programa per a la rutina de gestió d'interrupcions real. Durant aquest període de quatre cicles de rellotge, el comptador de programes s'envia a la pila. El vector és normalment un salt a la rutina d'interrupció, i aquest salt requereix tres cicles de rellotge. Si es produeix una interrupció durant l'execució d'una instrucció multicicle, aquesta instrucció es completa abans que la interrupció es serveixi. Si es produeix una interrupció quan l'MCU està en mode de repòs, el temps de resposta de l'execució de la interrupció augmenta en quatre cicles de rellotge. Aquest augment s'afegeix al temps d'inici del mode de repòs seleccionat.

Un retorn d'una rutina de gestió d'interrupcions requereix quatre cicles de rellotge. Durant aquests quatre cicles de rellotge, el comptador de programa (dos bytes) es torna a sortir de la pila, el punter de pila s'incrementa en dos i s'estableix l'I-bit a SREG.

Memòries AVR

Aquesta secció descriu les diferents memòries de l'ATtiny25/45/85. L'arquitectura AVR té dos espais de memòria principals, la memòria de dades i l'espai de memòria de programa. A més, l'ATtiny25/45/85 inclou una memòria EEPROM per a l'emmagatzematge de dades. Els tres espais de memòria són lineals i regulars.

Memòria de programa flash reprogramable dins del sistema

L'ATtiny25/45/85 conté 2/4/8K bytes de memòria flaix reprogramable al sistema en xip per a l'emmagatzematge de programes. Com que totes les instruccions AVR tenen una amplada de 16 o 32 bits, el Flash s'organitza com a 1024/2048/4096 x 16.

La memòria flaix té una resistència d'almenys 10,000 cicles d'escriptura/esborrat. El comptador de programes (PC) ATtiny25/45/85 té una amplada de 10/11/12 bits, adreçant així les ubicacions de memòria del programa 1024/2048/4096. "Programa de memòria- ming” a la pàgina 147 conté una descripció detallada de la descàrrega en sèrie de dades Flash mitjançant els pins SPI.

Les taules de constants es poden assignar dins de tot l'espai d'adreces de memòria del programa (vegeu la descripció de les instruccions LPM - Load Memory Memory).

Figura 5-1. Mapa de memòria del programa Mapa de memòria

Memòria de dades SRAM

Figura 5-2 mostra com està organitzada la memòria SRAM ATtiny25/45/85.

Les ubicacions inferiors de memòria de dades 224/352/607 s'adrecen tant al Registre File, la memòria d'E/S i la SRAM de dades interna. Les primeres 32 ubicacions s'adrecen al Registre File, les 64 ubicacions següents la memòria d'E/S estàndard i les últimes 128/256/512 ubicacions s'adreça a la SRAM de dades interna.

Els cinc modes d'adreçament diferents per a la memòria de dades cobreixen: directe, indirecte amb desplaçament, indirecte, indirecte amb pre-disminució i indirecte amb post-increment. Al Registre File, els registres R26 a R31 presenten els registres de punter d'adreçament indirecte.

L'adreçament directe arriba a tot l'espai de dades.

El mode indirecte amb desplaçament arriba a 63 ubicacions d'adreces des de l'adreça base donada pel registre Y o Z.

Quan s'utilitzen modes d'adreçament indirecte de registre amb pre-decrement i post-increment automàtic, els registres d'adreces X, Y i Z es decreixen o s'incrementen.

Els 32 registres de treball de propòsit general, els 64 registres d'E/S i els 128/256/512 bytes de SRAM de dades internes a l'ATtiny25/45/85 són tots accessibles mitjançant tots aquests modes d'adreçament. El Registre File es descriu a “Gen- Registre de finalitats generals File” a la pàgina 10.

Figura 5-2. Mapa de memòria de dades Mapa de memòria 2

Accés a la memòria de dades Temps

Aquesta secció descriu els conceptes generals de temps d'accés per a l'accés a la memòria interna. L'accés a la SRAM a les dades internes es realitza en dos cicles clkCPU tal com es descriu a Figura 5-3.

Figura 5-3. Cicles d'accés SRAM de dades al xip Dades del xip Memòria de dades EEPROM

L'ATtiny25/45/85 conté 128/256/512 bytes de memòria EEPROM de dades. S'organitza com un espai de dades independent, en el qual es poden llegir i escriure bytes individuals. L'EEPROM té una resistència d'almenys 100,000 cicles d'escriptura/esborrat. L'accés entre l'EEPROM i la CPU es descriu a continuació, especificant els registres d'adreces de l'EEPROM, el registre de dades de l'EEPROM i el registre de control de l'EEPROM. Per a més detalls vegeu “Descàrrega en sèrie” a la pàgina 151.

Accés de lectura/escriptura EEPROM

Els registres d'accés a l'EEPROM són accessibles a l'espai d'E/S.

Els temps d'accés d'escriptura per a l'EEPROM es donen a Taula 5-1 a la pàgina 21. Tanmateix, una funció de cronometratge automàtic permet que el programari de l'usuari detecti quan es pot escriure el següent byte. Si el codi d'usuari conté instruccions que escriuen l'EEPROM, s'han de prendre algunes precaucions. En fonts d'alimentació molt filtrades, és probable que VCC pugi o baixi lentament

Encès/apagat. Això fa que el dispositiu funcioni a un volum durant un període de tempstage inferior a l'especificat com a mínim per a la freqüència de rellotge utilitzada. Mireu “Prevenció de la corrupció d'EEPROM” a la pàgina 19 per obtenir detalls sobre com evitar problemes en aquestes situacions.

Per evitar escriptures no intencionades d'EEPROM, s'ha de seguir un procediment d'escriptura específic. Consulteu “Atòmic Programació de bytes” a la pàgina 17 “Programació dividida en bytes” a la pàgina 17 per obtenir detalls sobre això.

Quan es llegeix l'EEPROM, la CPU s'atura durant quatre cicles de rellotge abans que s'executi la següent instrucció. Quan s'escriu l'EEPROM, la CPU s'atura durant dos cicles de rellotge abans que s'executi la següent instrucció.

Programació de bytes atòmics

L'ús de la programació de bytes atòmics és el mode més senzill. Quan escriu un byte a l'EEPROM, l'usuari ha d'escriure l'adreça al registre EEAR i les dades al registre EEDR. Si els bits de l'EEPMn són zero, l'escriptura d'EEPE (dins de quatre cicles després de l'escriptura d'EEMPE) activarà l'operació d'esborrat/escriptura. Tant el cicle d'esborrat com d'escriptura es fan en una sola operació i es dóna el temps total de programació Taula 5-1 a la pàgina 21. El bit EEPE roman activat fins que es completen les operacions d'esborrat i escriptura. Mentre el dispositiu està ocupat amb la programació, no és possible fer cap altra operació EEPROM.

Programació de bytes dividits

És possible dividir el cicle d'esborrat i d'escriptura en dues operacions diferents. Això pot ser útil si el sistema requereix un temps d'accés curt durant un període de temps limitat (normalment si la font d'alimentació voltage cau). Per tal d'aprofitar- tagD'aquest mètode, cal que les ubicacions a escriure s'hagin esborrat abans de l'operació d'escriptura. Però com que les operacions d'esborrat i d'escriptura estan dividides, és possible fer les operacions d'esborrat quan el sistema permet fer operacions crítiques en el temps (normalment després de l'encesa).

Esborrar

Per esborrar un byte, l'adreça s'ha d'escriure a EEAR. Si els bits EEPMn són 0b01, escriure l'EEPE (dins de quatre cicles després d'escriure EEMPE) activarà només l'operació d'esborrat (el temps de programació es dóna a Taula 5-1 sobre pàgina 21). El bit EEPE es manté activat fins que es completa l'operació d'esborrat. Mentre el dispositiu està ocupat programant, no és possible fer cap altra operació EEPROM.

Escriu

Per escriure una ubicació, l'usuari ha d'escriure l'adreça a l'EEAR i les dades a l'EEDR. Si els bits de l'EEPMn són 0b10, l'escriptura de l'EEPE (dins de quatre cicles després de l'escriptura d'EEMPE) activarà només l'operació d'escriptura (el temps de programació es dóna a Taula 5-1 a la pàgina 21). El bit EEPE roman establert fins que es completa l'operació d'escriptura. Si la ubicació a escriure no s'ha esborrat abans d'escriure, les dades que s'emmagatzemen s'han de considerar perdudes. Mentre el dispositiu està ocupat amb la programació, no és possible fer cap altra operació EEPROM.

L'oscil·lador calibrat s'utilitza per cronometrar els accessos a l'EEPROM. Assegureu-vos que la freqüència de l'oscil·lador estigui dins dels requisits descrits a “OSCCAL – Registre de calibració de l'oscil·lador” a la pàgina 31.

El següent codi exampEls fitxers mostren un conjunt i una funció C per esborrar, escriure o escriure atòmica de l'EEPROM. L'exampels assumeixen que les interrupcions es controlen (per exemple, desactivant les interrupcions globalment) de manera que no es produiran interrupcions durant l'execució d'aquestes funcions.

Codi de muntatge Example
EEPROM_write:

; Espereu que finalitzi l'escriptura anterior

sbic EECR,EEPE

rjmp EEPROM_write

; Estableix el mode de programació

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

fora EECR, r16

; Configura l'adreça (r18:r17) al registre d'adreces

fora EEARH, r18

fora EEARL, r17

; Escriu dades (r19) al registre de dades

fora EEDR, r19

; Escriu un lògic a EEMPE

sbi EECR,EEMPE

; Inicieu l'escriptura d'eeprom configurant EEPE

sbi EECR,EEPE

ret

Codi C Example
void EEPROM_write (unsigned char ucAddress, unsigned char ucData)

{

/* Espereu que finalitzi l'escriptura anterior */ while(EECR & (1<

;

/* Estableix el mode de programació */

EECR = (0<

/* Configura registres d'adreces i dades */ EEAR = ucAddress;

EEDR = ucData;

/* Escriu un lògic a EEMPE */

EECR |= (1<

/* Inicia l'escriptura d'eeprom configurant EEPE */

EECR |= (1<

}

El següent codi exampels fitxers mostren funcions de muntatge i C per llegir l'EEPROM. L'exampSuposem que les interrupcions es controlen de manera que no es produiran interrupcions durant l'execució d'aquestes funcions.

Codi de muntatge Example
EEPROM_lectura:

; Espereu que finalitzi l'escriptura anterior

sbic EECR,EEPE

rjmp EEPROM_read

; Configura l'adreça (r18:r17) al registre d'adreces

fora EEARH, r18

fora EEARL, r17

; Inicieu la lectura d'eeprom escrivint EERE

sbi EECR,EERE

; Llegir dades del registre de dades

en r16, EEDR

ret

Codi C Example
unsigned char EEPROM_read (unsigned char ucAddress)

{

/* Espereu que finalitzi l'escriptura anterior */

mentre que(EECR & (1<

;

/* Configura el registre d'adreces */ EEAR = ucAddress;

/* Inicia la lectura d'eeprom escrivint EERE */

EECR |= (1<

/* Retorna dades del registre de dades */

retorn EEDR;

}

Prevenció de la corrupció d'EEPROM

Durant els períodes de VCC baix, les dades de l'EEPROM es poden corrompre perquè el volum de subministramenttage és massa baix perquè la CPU i l'EEPROM funcionin correctament. Aquests problemes són els mateixos que els sistemes a nivell de placa que utilitzen EEPROM i s'han d'aplicar les mateixes solucions de disseny.

Una corrupció de dades EEPROM pot ser causada per dues situacions quan el voltage és massa baixa. En primer lloc, una seqüència d'escriptura normal a l'EEPROM requereix un volum mínimtage per funcionar correctament. En segon lloc, la CPU mateixa pot executar instruccions incorrectament, si el subministrament voltage és massa baixa.

La corrupció de dades d'EEPROM es pot evitar fàcilment seguint aquesta recomanació de disseny:

Mantingueu l'AVR RESET actiu (baix) durant els períodes d'alimentació insuficient voltage. Això es pot fer activant el detector d'abandonament intern (BOD). Si el nivell de detecció del DBO intern no coincideix amb el

nivell de detecció necessari, es pot utilitzar un circuit extern de protecció de reinici de VCC baix. Si es produeix un restabliment mentre una operació d'escriptura està en curs, l'operació d'escriptura es completarà sempre que la font d'alimentació voltage és suficient.

Memòria d'E/S

La definició d'espai d'E/S de l'ATtiny25/45/85 es mostra a “Resum del registre” a la pàgina 200.

Totes les E/S i perifèrics ATtiny25/45/85 es col·loquen a l'espai d'E/S. Es pot accedir a totes les ubicacions d'E/S mitjançant les instruccions LD/LDS/LDD i ST/STS/STD, transferint dades entre els 32 registres de treball de propòsit general i l'espai d'E/S. Els registres d'E/S dins del rang d'adreces 0x00 – 0x1F són directament accessibles per bits mitjançant les instruccions SBI i CBI. En aquests registres, el valor dels bits únics es pot comprovar mitjançant les instruccions SBIS i SBIC. Consulteu la secció del conjunt d'instruccions per obtenir més detalls. Quan s'utilitzen les ordres específiques d'E/S IN i OUT, s'han d'utilitzar les adreces d'E/S 0x00 – 0x3F. Quan s'adreça registres d'E/S com a espai de dades mitjançant instruccions LD i ST, s'ha d'afegir 0x20 a aquestes adreces.

Per a la compatibilitat amb dispositius futurs, els bits reservats s'han d'escriure a zero si s'hi accedeix. Les adreces de memòria d'E/S reservades no s'han d'escriure mai.

Alguns dels indicadors d'estat s'esborren escrivint-ne un de lògic. Tingueu en compte que les instruccions CBI i SBI només funcionaran en el bit especificat i, per tant, es poden utilitzar en registres que continguin aquests indicadors d'estat. Les instruccions CBI i SBI només funcionen amb els registres 0x00 a 0x1F.

Els registres de control d'E/S i perifèrics s'expliquen en seccions posteriors.

Descripció del registre

EEARH – Registre d'adreces EEPROM

Bit 7 6 5 4 3 2 1 0
0x1F EEAR8 EEARH
Llegir/Escriure R R R R R R R R/W
Valor inicial 0 0 0 0 0 0 0 X/0

Bits 7:1 - Res: Bits reservats

Aquests bits es reserven per a un ús futur i sempre es llegiran com a zero.

Bits 0 – EEAR8: Adreça EEPROM

Aquest és el bit d'adreça EEPROM més important d'ATtiny85. En dispositius amb menys EEPROM, és a dir, ATtiny25/ATtiny45, aquest bit està reservat i sempre llegirà zero. El valor inicial del registre d'adreces de l'EEPROM (EEAR) no està definit i, per tant, s'ha d'escriure un valor adequat abans d'accedir a l'EEPROM.

EEARL - Registre d'adreces EEPROM

Bit

0x1E EEAR7 EEAR6 EEAR5 EEAR4 EEAR3 EEAR2 EEAR1 EEAR0 EEARL
posterior/Escriure R/W R/W R/W R/W R/W R/W R/W R/W
Valor inicial X X X X X X X X

Bit 7 – EEAR7: Adreça EEPROM

Aquest és el bit d'adreça EEPROM més important d'ATtiny45. En dispositius amb menys EEPROM, és a dir, ATtiny25, aquest bit està reservat i sempre llegirà zero. El valor inicial de l'EEPROM Address Register (EEAR) no està definit i, per tant, s'ha d'escriure un valor adequat abans d'accedir a l'EEPROM.

Bits 6:0 – EEAR[6:0]: Adreça EEPROM

Aquests són els bits (baix) del registre d'adreces EEPROM. Els bytes de dades de l'EEPROM s'adrecen linealment en el rang 0...(128/256/512-1). El valor inicial d'EEAR no està definit i, per tant, s'ha d'escriure un valor adequat abans que es pugui accedir a l'EEPROM.

EEDR – Registre de dades EEPROM

Bit 7 6 5 4 3 2 1 0
0x1D EEDR7 EEDR6 EEDR5 EEDR4 EEDR3 EEDR2 EEDR1 EEDR0 EEDR
Llegir/Escriure R/W R/W R/W R/W R/W R/W R/W R/W
Valor inicial 0 0 0 0 0 0 0 0

Per a l'operació d'escriptura d'EEPROM, el registre EEDR conté les dades que s'han d'escriure a l'EEPROM a l'adreça proporcionada pel registre EEAR. Per a l'operació de lectura d'EEPROM, l'EEDR conté les dades llegides des del

EEPROM a l'adreça proporcionada per EEAR.

 

5.5.4 Registre de control EECR – EEPROM

Bit 7 6 5 4 3 2 1 0
0x1C        – EEPM1 EEPM0 ESPERANT EEMPE EEPE EERE EECR
Lectura/Escriptura R R R/W R/W R/W R/W R/W R/W
Valor inicial 0 0 X X 0 0 X 0

Bit 7 - Res: Bit reservat

Aquest bit està reservat per a un ús futur i sempre es llegirà com a 0 a ATtiny25/45/85. Per a la compatibilitat amb futurs dispositius AVR, escriviu sempre aquest bit a zero. Després de llegir, emmascareu aquesta part.

Bit 6 - Res: Bit reservat

Aquest bit està reservat a l'ATtiny25/45/85 i sempre es llegirà com a zero.

Bits 5:4 – EEPM[1:0]: Bits del mode de programació EEPROM

La configuració de bits del mode de programació d'EEPROM defineix quina acció de programació s'activarà en escriure EEPE. És possible programar dades en una operació atòmica (esborrar el valor antic i programar el nou valor) o dividir les operacions d'esborrar i escriure en dues operacions diferents. Els temps de programació dels diferents modes es mostren a Taula 5-1. Mentre l'EEPE estigui configurat, s'ignorarà qualsevol escriptura a EEPMn. Durant el restabliment, els bits de l'EEPMn es restabliran a 0b00 tret que l'EEPROM estigui ocupada programant.

Taula 5-1. Bits de mode EEPROM

EEPM1 EEPM0 Temps de programació Funcionament
0 0 3.4 ms Esborrar i escriure en una operació (operació atòmica)
0 1 1.8 ms Esborra només
1 0 1.8 ms Només escriure
1 1 Reservat per a ús futur

Bit 3 – EERIE: Activació d'interrupció preparada per EEPROM

Si escriu EERIE a un, s'habilita la interrupció preparada per EEPROM si el bit I a SREG està establert. Si escriu EERIE a zero, es desactiva la interrupció. La interrupció preparada per EEPROM genera una interrupció constant quan la memòria no volàtil està preparada per a la programació.

Bit 2 – EEMPE: Habilitació del programa mestre EEPROM

El bit EEMPE determina si escriure EEPE a un tindrà efecte o no.

Quan s'estableix EEMPE, establir EEPE dins de quatre cicles de rellotge programarà l'EEPROM a l'adreça seleccionada. Si EEMPE és zero, configurar EEPE no tindrà cap efecte. Quan EEMPE s'ha escrit a un per programari, el maquinari esborra el bit a zero després de quatre cicles de rellotge.

Bit 1 – EEPE: Habilitació del programa EEPROM

El senyal d'habilitació del programa EEPROM EEPE és el senyal d'habilitació de programació a l'EEPROM. Quan s'escriu EEPE, l'EEPROM es programarà segons la configuració de bits EEPMn. El bit EEMPE s'ha d'escriure en un abans que s'escrigui un de lògic a l'EEPE, en cas contrari no es produeix cap escriptura EEPROM. Quan ha transcorregut el temps d'accés d'escriptura, el maquinari esborra el bit EEPE. Quan s'ha configurat EEPE, la CPU s'atura durant dos cicles abans que s'executi la següent instrucció.

Bit 0 – EERE: Habilitat de lectura EEPROM

El senyal d'habilitació de lectura de l'EEPROM (EERE) és l'estroboscopi de lectura de l'EEPROM. Quan es configura l'adreça correcta al registre EEAR, el bit EERE s'ha d'escriure en un per activar la lectura de l'EEPROM. L'accés de lectura EEPROM pren una instrucció i les dades sol·licitades estan disponibles immediatament. Quan es llegeix l'EEPROM, la CPU s'atura durant quatre cicles abans que s'executi la següent instrucció. L'usuari hauria de consultar el bit EEPE abans d'iniciar l'operació de lectura. Si hi ha una operació d'escriptura en curs, no és possible llegir l'EEPROM ni canviar el registre EEAR.

Opcions de rellotge i rellotge del sistema

Sistemes de rellotge i la seva distribució

Distribució del rellotge

Rellotge de la CPU

El rellotge de la CPU s'encamina a parts del sistema relacionades amb el funcionament del nucli AVR. Exampels d'aquests mòduls són el Registre d'ús general File, el registre d'estat i la memòria de dades que conté el punter de pila. Aturar el rellotge de la CPU impedeix que el nucli faci operacions i càlculs generals.

Rellotge d'E/S - clkI/O

El rellotge d'E/S és utilitzat per la majoria dels mòduls d'E/S, com ara el temporitzador/comptador. El mòdul d'interrupció externa també utilitza el rellotge d'E/S, però tingueu en compte que algunes interrupcions externes es detecten per lògica asíncrona, la qual cosa permet detectar aquestes interrupcions fins i tot si el rellotge d'E/S s'atura.

Flash Clock - clkFLASH

El rellotge Flash controla el funcionament de la interfície Flash. El rellotge Flash sol estar actiu simultàniament amb el rellotge de la CPU.

Rellotge ADC - clkADC

L'ADC disposa d'un domini de rellotge dedicat. Això permet aturar la CPU i els rellotges d'E/S per tal de reduir el soroll generat pels circuits digitals. Això proporciona resultats de conversió ADC més precisos.

PLL intern per a la generació ràpida de rellotges perifèrics - clkPCK

El PLL intern a ATtiny25/45/85 genera una freqüència de rellotge que es multiplica 8x des d'una entrada d'origen. Per defecte, el PLL utilitza la sortida de l'oscil·lador RC intern de 8.0 MHz com a font. Alternativament, si s'estableix el bit LSM de PLLCSR, el PLL utilitzarà la sortida de l'oscil·lador RC dividida per dos. Així, la sortida del PLL, el rellotge perifèric ràpid és de 64 MHz. El rellotge perifèric ràpid, o un rellotge preescalat a partir d'aquest, es pot seleccionar com a font de rellotge per a Timer/Counter1 o com a rellotge del sistema. Mireu Figura 6-2. La freqüència del rellotge perifèric ràpid es divideix per dos quan s'estableix LSM de PLLCSR, donant lloc a una freqüència de rellotge de 32 MHz. Tingueu en compte que LSM no es pot configurar si s'utilitza PLLCLK com a rellotge del sistema.

Figura 6-2. Sistema de rellotge PCK. Rellotge PCK

El PLL està bloquejat a l'oscil·lador RC i ajustar l'oscil·lador RC mitjançant el registre OSCCAL ajustarà el rellotge perifèric ràpid al mateix temps. Tanmateix, fins i tot si l'oscil·lador RC es porta a una freqüència superior a 8 MHz, la freqüència del rellotge perifèric ràpid es satura a 85 MHz (el pitjor dels casos) i continua oscil·lant a la freqüència màxima. Cal tenir en compte que el PLL en aquest cas ja no està bloquejat amb el rellotge de l'oscil·lador RC. Per tant, es recomana no portar els ajustos OSCCAL a una freqüència superior a 8 MHz per tal de mantenir el PLL en el rang de funcionament correcte.

El PLL intern s'habilita quan:

El bit PLLE del registre PLLCSR està establert.

El fusible CKSEL està programat a '0001'.

El fusible CKSEL està programat a '0011'.

El bit PLLCSR PLOCK s'estableix quan PLL està bloquejat. Tant l'oscil·lador RC intern com el PLL estan apagats en els modes d'apagat i en espera.

PLL intern en mode de compatibilitat ATtiny15

Com que ATtiny25/45/85 és un dispositiu de migració per als usuaris d'ATtiny15, hi ha un mode de compatibilitat ATtiny15 per a la compatibilitat enrere. El mode de compatibilitat ATtiny15 es selecciona programant els fusibles CKSEL a '0011'.

En el mode de compatibilitat ATtiny15, la freqüència de l'oscil·lador RC intern es calibra fins a 6.4 MHz i el factor de multiplicació del PLL s'estableix en 4x. Mireu Figura 6-3. Amb aquests ajustos, el sistema de rellotge és compatible amb ATtiny15 i el rellotge perifèric ràpid resultant té una freqüència de 25.6 MHz (igual que en ATtiny15).

Figura 6-3. Sistema de rellotge PCK en mode de compatibilitat ATtiny15. Sistema de rellotge

Fonts del rellotge

El dispositiu té les opcions de font de rellotge següents, seleccionables per bits de Flash Fuse, tal com es mostra a continuació. El rellotge de la font seleccionada s'introdueix al generador de rellotges AVR i s'encamina als mòduls adequats.

Taula 6-1. Opcions de rellotge del dispositiu Seleccioneu

Opció de rellotge del dispositiu CKSEL[3:0](1)
Rellotge extern (veure pàgina 26) 0000
Rellotge PLL d'alta freqüència (veure pàgina 26) 0001
Oscil·lador intern calibrat (veure pàgina 27) 0010(2)
Oscil·lador intern calibrat (veure pàgina 27) 0011(3)
Oscil·lador intern de 128 kHz (veure pàgina 28) 0100
Oscil·lador de cristall de baixa freqüència (veure pàgina 29) 0110
Oscil·lador de cristall / Ressonador de ceràmica (veure pàgina 29) 1000 – 1111
Reservat 0101, 0111

Per a tots els fusibles, "1" significa no programat mentre que "0" significa programat.

El dispositiu s'envia amb aquesta opció seleccionada.

Això seleccionarà el mode de compatibilitat ATtiny15, on el rellotge del sistema es divideix per quatre, donant com a resultat una freqüència de rellotge d'1.6 MHz. Per a més informació, vegeu “Oscil·lador intern calibrat” a la pàgina 27.

Les diferents opcions per a cada opció de rellotge es mostren a les seccions següents. Quan la CPU es desperta des de l'apagada, la font de rellotge seleccionada s'utilitza per cronometrar l'inici, assegurant un funcionament estable de l'oscil·lador abans que comenci l'execució de les instruccions. Quan la CPU comença des del reinici, hi ha un retard addicional que permet que la potència assoleixi un nivell estable abans de començar el funcionament normal. L'oscil·lador Watchdog s'utilitza per cronometrar aquesta part en temps real del temps d'inici. El nombre de cicles d'oscil·lador WDT utilitzats per a cada temps d'espera es mostra a Taula 6-2.

Taula 6-2. Nombre de cicles d'oscil·lador Watchdog

Escriviu Temps d'espera Nombre de Cicles
4 ms 512
64 ms 8 8,192 (XNUMX)

Rellotge extern

Per conduir el dispositiu des d'una font de rellotge externa, CLKI s'ha de conduir tal com es mostra a Figura 6-4. Per fer funcionar el dispositiu amb un rellotge extern, els fusibles CKSEL s'han de programar a "00".

Figura 6-4. Configuració de la unitat de rellotge externa

Fig6.4

Quan se selecciona aquesta font de rellotge, els temps d'arrencada els determinen els fusibles SUT, tal com es mostra a Taula 6-3.

Taula 6-3. Hores d'inici de la selecció del rellotge extern

SUT[1:0] Temps d'inici des de l'apagada Retard addicional des del restabliment Ús recomanat
00 6 CK 14 CK BOD habilitat
01 6 CK 14CK + 4 ms Potència en augment ràpid
10 6 CK 14CK + 64 ms El poder augmenta lentament
11 Reservat

Quan s'aplica un rellotge extern, cal evitar canvis sobtats en la freqüència del rellotge aplicat per garantir un funcionament estable de l'MCU. Una variació de freqüència de més del 2% d'un cicle de rellotge a un altre pot provocar un comportament impredictible. Cal assegurar-se que l'MCU es manté en Reinicialització durant aquests canvis en la freqüència del rellotge.

Tingueu en compte que la prevenda del rellotge del sistema es pot utilitzar per implementar canvis en el temps d'execució de la freqüència del rellotge intern tot garantint un funcionament estable. Consulteu “Preescalador del rellotge del sistema” a la pàgina 31 per als detalls.

Rellotge PLL d'alta freqüència

Hi ha un PLL intern que proporciona una velocitat de rellotge nominal de 64 MHz bloquejada a l'oscil·lador RC per a l'ús del temporitzador/comptador perifèric1 i per a la font del rellotge del sistema. Quan es selecciona com a font de rellotge del sistema, programant els fusibles CKSEL a '0001', es divideix per quatre com es mostra a Taula 6-4.

Taula 6-4. Modes de funcionament del rellotge PLL d'alta freqüència

CKSEL[3:0] Freqüència nominal
0001 16 MHz

Quan es selecciona aquesta font de rellotge, els temps d'engegada els determinen els fusibles SUT tal com es mostra a Taula 6-5.

Taula 6-5. Hores d'arrencada del rellotge PLL d'alta freqüència

SUT[1:0] Temps d'engegada des de l'apagada Retard addicional des del restabliment de l'engegada (VCC = 5.0 V) Ús recomanat
00 14CK + 1K (1024) CK + 4 ms 4 ms BOD habilitat

Taula 6-5. Hores d'arrencada del rellotge PLL d'alta freqüència

SUT[1:0] Temps d'engegada des de l'apagada Retard addicional des del restabliment de l'engegada (VCC = 5.0 V) Ús recomanat
01 14CK + 16K (16384) CK + 4 ms 4 ms Potència en augment ràpid
10 14CK + 1K (1024) CK + 64 ms 4 ms El poder augmenta lentament
11 14CK + 16K (16384) CK + 64 ms 4 ms El poder augmenta lentament

Oscil·lador intern calibrat

Per defecte, l'oscil·lador RC intern proporciona un rellotge aproximat de 8.0 MHz. Encara que voltagi depenent de la temperatura, aquest rellotge pot ser calibrat amb molta precisió per l'usuari. Mireu "Acumulador d'oscil·lador RC intern calibrat atractiu” a la pàgina 164 "Velocitat de l'oscil·lador intern" a la pàgina 192 per a més detalls. El dispositiu s'envia amb el fusible CKDIV8 programat. Mireu “Preescalador del rellotge del sistema” a la pàgina 31 per a més detalls.

Aquest rellotge es pot seleccionar com a rellotge del sistema programant els fusibles CKSEL tal com es mostra a Taula 6-6 a la pàgina

27. Si se selecciona, funcionarà sense components externs. Durant el restabliment, el maquinari carrega el valor de calibratge preprogramat al registre OSCCAL i, per tant, calibra automàticament l'oscil·lador RC. La precisió d'aquesta calibració es mostra com a calibratge de fàbrica a Taula 21-2 a la pàgina 164.

En canviar el registre OSCCAL de SW, vegeu “OSCCAL – Registre de calibració de l'oscil·lador” a la pàgina 31, és possible obtenir una precisió de calibratge més alta que amb la calibració de fàbrica. La precisió d'aquesta calibració es mostra com a calibració d'usuari a Taula 21-2 a la pàgina 164.

Quan aquest oscil·lador s'utilitza com a rellotge de xip, l'oscil·lador Watchdog encara s'utilitzarà per al temporitzador Watchdog i per al temps d'espera de restabliment. Per obtenir més informació sobre el valor de calibratge preprogramat, consulteu la secció "Cali- Bytes de bració” a la pàgina 150.

L'oscil·lador intern també es pot configurar per proporcionar un rellotge de 6.4 MHz escrivint els fusibles CKSEL a "0011", tal com es mostra a Taula 6-6 a sota. Aquesta configuració s'anomena Mode de compatibilitat ATtiny15 i està pensada per proporcionar una font de rellotge calibrada a 6.4 MHz, com a ATtiny15. En el mode de compatibilitat ATtiny15, el PLL utilitza l'oscil·lador intern que funciona a 6.4 MHz per generar un senyal de rellotge perifèric de 25.6 MHz per a Timer/Counter1 (vegeu "Temporitzador/Comptador de 8 bits 1 polzada Mode ATtiny15” a la pàgina 95). Tingueu en compte que en aquest mode de funcionament el senyal de rellotge de 6.4 MHz sempre es divideix per quatre, proporcionant un rellotge del sistema d'1.6 MHz.

Taula 6-6. Modes de funcionament de l'oscil·lador RC calibrat intern

CKSEL[3:0] Freqüència nominal
0010(1) 8.0 MHz
0011(2) 6.4 MHz

El dispositiu s'envia amb aquesta opció seleccionada.

Aquesta configuració seleccionarà el mode de compatibilitat ATtiny15, on el rellotge del sistema es divideix per quatre, donant lloc a una freqüència de rellotge d'1.6 MHz.

Quan es selecciona l'oscil·lador intern calibrat de 8 MHz com a font de rellotge, els temps d'arrencada els determinen els fusibles SUT tal com es mostra a Taula 6-7 a sota.

Taula 6-7. Temps d'inici del rellotge d'oscil·lador RC calibrat intern

SUT[1:0] Temps d'inici des de l'apagada Retard addicional des del restabliment (VCC = 5.0 V) Ús recomanat
00 6 CK 14 CK(1) BOD habilitat
01 6 CK 14CK + 4 ms Potència en augment ràpid
10(2) 6 CK 14CK + 64 ms El poder augmenta lentament
11 Reservat

1. Si es programa el fusible RSTDISBL, aquest temps d'engegada s'augmentarà a 14CK + 4 ms per garantir que es pugui entrar en el mode de programació.
2. El dispositiu s'envia amb aquesta opció seleccionada.

En el mode de compatibilitat ATtiny15, els temps d'inici es determinen pels fusibles SUT, tal com es mostra a Taula 6-8 a sota.

Taula 6-8. Temps d'inici del rellotge d'oscil·lador RC calibrat intern (en mode ATtiny15)

SUT[1:0] Temps d'inici des de l'apagada Retard addicional des del restabliment (VCC = 5.0 V) Ús recomanat
00 6 CK 14CK + 64 ms
01 6 CK 14CK + 64 ms
10 6 CK 14CK + 4 ms
11 1 CK 14 CK(1)

Nota: Si es programa el fusible RSTDISBL, aquest temps d'engegada s'augmentarà a 14CK + 4 ms per garantir que es pugui entrar en el mode de programació.

En resum, es pot trobar més informació sobre el mode de compatibilitat ATtiny15 a les seccions "Port B (PB5:PB0)" activat pàgina 2“PLL intern en mode de compatibilitat ATtiny15” a la pàgina 24"Temporitzador/Comptador8 de 1 bits en mode ATtiny15" activat pàgina 95“Limitacions de debugWIRE” a la pàgina 140“Bytes de calibració” a la pàgina 150 i a la taula "Preescalador del rellotge Seleccioneu” a la pàgina 33.

Oscil·lador intern de 128 kHz

L'oscil·lador intern de 128 kHz és un oscil·lador de baixa potència que proporciona un rellotge de 128 kHz. La freqüència és nominal a 3V i 25°C. Aquest rellotge es pot seleccionar com a rellotge del sistema programant els fusibles CKSEL a "0100".

Quan se selecciona aquesta font de rellotge, els temps d'arrencada els determinen els fusibles SUT, tal com es mostra a Taula 6-9.

Taula 6-9. Temps d'arrencada de l'oscil·lador intern de 128 kHz

SUT[1:0] Temps d'inici des de l'apagada Retard addicional des del restabliment Ús recomanat
00 6 CK 14 CK(1) BOD habilitat
01 6 CK 14CK + 4 ms Potència en augment ràpid
10 6 CK 14CK + 64 ms El poder augmenta lentament
11 Reservat

Nota: Si es programa el fusible RSTDISBL, aquest temps d'engegada s'augmentarà a 14CK + 4 ms per garantir que es pugui entrar en el mode de programació.

Oscil·lador de cristall de baixa freqüència

Per utilitzar un cristall de rellotge de 32.768 kHz com a font de rellotge per al dispositiu, cal seleccionar l'oscil·lador de cristall de baixa freqüència configurant els fusibles CKSEL a '0110'. El cristall s'ha de connectar tal com es mostra a Figura 6-5. Per trobar la capacitat de càrrega adequada per a un cristall de 32.768 kHz, consulteu el full de dades del fabricant.

Quan se selecciona aquest oscil·lador, els temps d'arrencada els determinen els fusibles SUT tal com es mostra a Taula 6-10.

Taula 6-10. Temps d'arrencada per a la selecció del rellotge de l'oscil·lador de cristall de baixa freqüència

SUT[1:0] Temps d'engegada des de l'apagada Retard addicional des del restabliment (VCC = 5.0 V) Ús recomanat
00 1K (1024) CK(1) 4 ms Potència d'augment ràpid o BOD activat
01 1K (1024) CK(1) 64 ms El poder augmenta lentament
10 32K (32768) CK 64 ms Freqüència estable a la posada en marxa
11 Reservat

Nota: aquestes opcions només s'han d'utilitzar si l'estabilitat de freqüència a l'inici no és important.

L'oscil·lador de cristall de baixa freqüència proporciona una capacitat de càrrega interna, vegeu Taula 6-11 a cada pin TOSC.

Taula 6-11. Capacitat de l'oscil·lador de cristall de baixa freqüència

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

Oscil·lador de cristall / Ressonador de ceràmica

XTAL1 i XTAL2 són l'entrada i la sortida, respectivament, d'una inversió amplificador que es pot configurar per utilitzar-lo com a oscil·lador en xip, tal com es mostra a Figura 6-5. Es pot utilitzar un cristall de quars o un ressonador de ceràmica.

C1 i C2 han de ser sempre iguals tant per als cristalls com per als ressonadors. El valor òptim dels condensadors depèn del cristall o ressonador en ús, la quantitat de capacitat dispersa i el soroll electromagnètic de l'entorn. Es donen algunes pautes inicials per triar condensadors per utilitzar-los amb cristalls Taula 6-12 a sota. Per als ressonadors ceràmics, s'han d'utilitzar els valors dels condensadors donats pel fabricant.

Taula 6-12. Modes de funcionament de l'oscil·lador de cristall

CKSEL[3:1] Rang de freqüència (MHz) Interval recomanat per als condensadors C1 i C2 per utilitzar-los amb cristalls (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

Notes: aquesta opció no s'ha d'utilitzar amb cristalls, només amb ressonadors ceràmics.

L'oscil·lador pot funcionar en tres modes diferents, cadascun optimitzat per a un rang de freqüència específic. El mode de funcionament el seleccionen els fusibles CKSEL[3:1] tal com es mostra a Taula 6-12.

El fusible CKSEL0 juntament amb els fusibles SUT[1:0] seleccionen els temps d'encesa tal com es mostra a Taula 6-13.

Taula 6-13. Temps d'inici per a la selecció del rellotge de l'oscil·lador de cristall

CKSEL0 SUT[1:0] Temps d'inici des de l'apagada Retard addicional des del restabliment Ús recomanat
0 00 258 CK(1) 14CK + 4 ms Ressonador de ceràmica, potència d'augment ràpid
0 01 258 CK(1) 14CK + 64 ms Ressonador de ceràmica, potència en augment lent
0 10 1K (1024) CK(2) 14 CK Ressonador de ceràmica, DBO habilitat
0 11 1K (1024)CK(2) 14CK + 4 ms Ressonador de ceràmica, potència d'augment ràpid
1 00 1K (1024)CK(2) 14CK + 64 ms Ressonador de ceràmica, potència en augment lent
1 01 16K (16384) CK 14 CK Oscil·lador de cristall, BOD habilitat
1 10 16K (16384) CK 14CK + 4 ms Oscil·lador de cristall, potència d'augment ràpid
1 11 16K (16384) CK 14CK + 64 ms Oscil·lador de cristall, potència en augment lent

Notes

Aquestes opcions només s'han d'utilitzar quan no funcionen a prop de la freqüència màxima del dispositiu, i només si l'estabilitat de freqüència a l'inici no és important per a l'aplicació. Aquestes opcions no són adequades per a cristalls.

Aquestes opcions estan pensades per utilitzar-se amb ressonadors ceràmics i garantiran l'estabilitat de la freqüència a l'inici. També es poden utilitzar amb cristalls quan no funcionen a prop de la freqüència màxima del dispositiu, i si l'estabilitat de freqüència a l'engegada no és important per a l'aplicació.

Font del rellotge per defecte

El dispositiu s'envia amb CKSEL = "0010", SUT = "10" i CKDIV8 programat. La configuració predeterminada de la font de rellotge és, per tant, l'oscil·lador RC intern que funciona a 8 MHz amb el temps d'inici més llarg i una preescalada inicial del rellotge del sistema de 8, donant com a resultat un rellotge del sistema d'1.0 MHz. Aquesta configuració predeterminada garanteix que tots els usuaris puguin fer la configuració de la font del rellotge desitjada mitjançant un sistema integrat o d'alta voltage Programador.

Preescalador de rellotge del sistema

El rellotge del sistema ATtiny25/45/85 es pot dividir configurant el “CLKPR – Registre de preescala del rellotge” a la pàgina 32. Aquesta característica es pot utilitzar per reduir el consum d'energia quan el requisit de potència de processament és baix. Això es pot utilitzar amb totes les opcions de font de rellotge i afectarà la freqüència de rellotge de la CPU i tots els perifèrics síncrons. clkI/O, clkADC, clkCPU i clkFLASH es divideixen per un factor tal com es mostra a Taula 6-15 a la pàgina 33.

Hora de canvi

Quan es canvia entre els paràmetres de preescalador, el sistema de preescalador de rellotge assegura que no es produeixin errors en el sistema de rellotge i que cap freqüència intermèdia no sigui superior a la freqüència de rellotge corresponent a la configuració anterior ni a la freqüència de rellotge corresponent a la nova configuració.

El comptador de ondulacions que implementa el preescalador s'executa a la freqüència del rellotge indivis, que pot ser més ràpid que la freqüència de rellotge de la CPU. Per tant, no és possible determinar l'estat del preescalador, fins i tot si fos llegible, i el temps exacte que triga a canviar d'una divisió de rellotge a una altra no es pot predir amb exactitud.

Des del moment en què s'escriuen els valors CLKPS, es triga entre T1 + T2 i T1 + 2*T2 abans que la nova freqüència de rellotge estigui activa. En aquest interval, es produeixen 2 vores de rellotge actives. Aquí, T1 és el període de rellotge anterior i T2 és el període corresponent a la nova configuració del preescalador.

Buffer de sortida del rellotge

El dispositiu pot donar sortida al rellotge del sistema al pin CLKO (quan no s'utilitza com a pin XTAL2). Per habilitar la sortida, s'ha de programar el fusible CKOUT. Aquest mode és adequat quan el rellotge del xip s'utilitza per conduir altres circuits del sistema. Tingueu en compte que el rellotge no sortirà durant el reinici i que el funcionament normal del pin d'E/S s'anul·larà quan es programi el fusible. L'oscil·lador RC intern, l'oscil·lador WDT, el PLL i el rellotge extern (CLKI) es poden seleccionar quan el rellotge surt a CLKO. Els oscil·ladors de cristall (XTAL1, XTAL2) no es poden utilitzar per a la sortida del rellotge a CLKO. Si s'utilitza el preescalador de rellotge del sistema, és el rellotge del sistema dividit el que surt.

Descripció del registre

OSCCAL - Registre de calibració d'oscil·ladors

Bit 7 6 5 4 3 2 1 0
0 x 31 CAL7 CAL6 CAL5 CAL4 CAL3 CAL2 CAL1 CAL0 OSCCAL
Llegir/Escriure R/W R/W R/W R/W R/W R/W R/W R/W

Bits 7:0 – CAL[7:0]: valor de calibració de l'oscil·lador

El registre de calibració de l'oscil·lador s'utilitza per retallar l'oscil·lador RC intern calibrat per eliminar les variacions del procés de la freqüència de l'oscil·lador. Un valor de calibratge preprogramat s'escriu automàticament en aquest registre durant el restabliment del xip, donant la freqüència calibrada de fàbrica tal com s'especifica a Taula 21-2 a la pàgina 164. El programari d'aplicació pot escriure aquest registre per canviar la freqüència de l'oscil·lador. L'oscil·lador es pot calibrar a les freqüències tal com s'especifica a Taula 21-2 a la pàgina 164. El calibratge fora d'aquest rang no està garantit.

Tingueu en compte que aquest oscil·lador s'utilitza per cronometrar els accessos d'escriptura EEPROM i Flash, i aquests temps d'escriptura es veuran afectats en conseqüència. Si s'escriu l'EEPROM o Flash, no calibreu a més de 8.8 MHz. En cas contrari, l'escriptura EEPROM o Flash pot fallar.

El bit CAL7 determina el rang de funcionament de l'oscil·lador. Si estableix aquest bit a 0, s'obté el rang de freqüència més baix, mentre que aquest bit a 1 s'obté el rang de freqüència més alt. Els dos rangs de freqüències es superposen, és a dir, una configuració de OSCCAL = 0x7F dóna una freqüència més alta que OSCCAL = 0x80.

Els bits CAL[6:0] s'utilitzen per sintonitzar la freqüència dins del rang seleccionat. Un paràmetre de 0x00 dóna la freqüència més baixa en aquest rang, i un paràmetre de 0x7F dóna la freqüència més alta del rang.

Per garantir un funcionament estable de la MCU, el valor de calibratge s'ha de canviar en petit. Una variació de freqüència de més del 2% d'un cicle a l'altre pot provocar un comportament impredictible. Els canvis en OSCCAL no han de superar 0x20 per a cada calibratge. Cal assegurar-se que l'MCU es mantingui a Reset durant aquests canvis en la freqüència del rellotge

Taula 6-14. Interval de freqüència de l'oscil·lador RC

Valor OSCCAL Freqüència més baixa típica respecte a la freqüència nominal Freqüència més alta típica respecte a la freqüència nominal
0 x 00 50% 100%
0x3F 75% 150%
0x7F 100% 200%

CLKPR - Registre de preescala del rellotge

Bit 7 6 5 4 3 2 1 0
0 x 26 CLKPCE CLKPS3 CLKPS2 CLKPS1 CLKPS0 CLKPR
Llegir/Escriure R/W R R R R/W R/W R/W R/W

Valor inicial 0 0 0 0 Vegeu la descripció del bit

Bit 7 – CLKPCE: activació del canvi de preescala de rellotge

El bit CLKPCE s'ha d'escriure a un lògic per permetre el canvi dels bits CLKPS. El bit CLKPCE només s'actualitza quan els altres bits de CLKPR s'escriuen simultàniament a zero. El maquinari esborra CLKPCE quatre cicles després d'escriure o quan s'escriuen els bits CLKPS. Reescriure el bit CLKPCE dins d'aquest període de temps d'espera no amplia el període de temps d'espera ni esborra el bit CLKPCE.

Bits 6:4 - Res: Bits reservats

Aquests bits són bits reservats a l'ATtiny25/45/85 i sempre es llegiran com a zero.

Bits 3:0 – CLKPS[3:0]: Bits de selecció de preescalador de rellotge 3 – 0

Aquests bits defineixen el factor de divisió entre la font de rellotge seleccionada i el rellotge intern del sistema. Aquests bits es poden escriure en temps d'execució per variar la freqüència de rellotge per adaptar-se als requisits de l'aplicació. A mesura que el divisor divideix l'entrada del rellotge mestre a la MCU, la velocitat de tots els perifèrics síncrons es redueix quan s'utilitza un factor de divisió. Es donen els factors de divisió Taula 6-15.

Per evitar canvis no intencionats de la freqüència de rellotge, s'ha de seguir un procediment d'escriptura especial per canviar els bits CLKPS:

Escriviu el bit d'habilitació de canvi de preescalador de rellotge (CLKPCE) a un i tots els altres bits de CLKPR a zero.

En quatre cicles, escriviu el valor desitjat a CLKPS mentre escriviu un zero a CLKPCE.

Les interrupcions s'han de desactivar quan es canvia la configuració del preescalador per assegurar-se que el procediment d'escriptura no s'interromp.

El fusible CKDIV8 determina el valor inicial dels bits CLKPS. Si CKDIV8 no està programat, els bits CLKPS es restabliran a "0000". Si es programa CKDIV8, els bits CLKPS es restableixen a "0011", donant un factor de divisió de vuit a l'inici. Aquesta característica s'ha d'utilitzar si la font de rellotge seleccionada té una freqüència superior a la freqüència màxima del dispositiu en les condicions de funcionament actuals. Tingueu en compte que qualsevol valor es pot escriure als bits CLKPS independentment de la configuració del fusible CKDIV8. El programari d'aplicació ha de garantir que hi ha un factor de divisió suficient

triat si la font de rellotge seleccionada té una freqüència superior a la freqüència màxima del dispositiu en les condicions de funcionament actuals. El dispositiu s'envia amb el fusible CKDIV8 programat.

Taula 6-15. Selecció del preescalador del rellotge

CLKPS3 CLKPS2 CLKPS1 CLKPS0 Factor de divisió del rellotge
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 Reservat
1 0 1 0 Reservat
1 0 1 1 Reservat
1 1 0 0 Reservat
1 1 0 1 Reservat
1 1 1 0 Reservat
1 1 1 1 Reservat

Nota: el preescalador està desactivat en el mode de compatibilitat ATtiny15 i ni escriure a CLKPR ni programar el fusible CKDIV8 té cap efecte sobre el rellotge del sistema (que sempre serà d'1.6 MHz).

Gestió d'energia i modes de repòs

L'alt rendiment i l'eficiència del codi líder en la indústria fan que els microcontroladors AVR siguin una opció ideal per a aplicacions de baixa potència. A més, els modes de repòs permeten que l'aplicació tanqui els mòduls no utilitzats a l'MCU, estalviant així energia. L'AVR ofereix diversos modes de repòs que permeten a l'usuari adaptar el consum d'energia als requisits de l'aplicació.

Modes de son

Figura 6-1 a la pàgina 23 presenta els diferents sistemes de rellotge i la seva distribució a ATtiny25/45/85. La figura és útil per seleccionar un mode de repòs adequat. Taula 7-1 mostra els diferents modes de repòs i les seves fonts de despertar.

Taula 7-1. Dominis de rellotge actiu i fonts de despertar en els diferents modes de repòs

Dominis de rellotge actiu Oscil·ladors Fonts de despertar
Mode de repòs clkCPU clkFLASH clkIO clkADC clkPCK Font del rellotge principal activada INT0 i canvi de pin SPM/EEPROM

A punt

 

Condició d'inici de l'USI

ADC Altres E/S Gos guardià Interrupció
Inactiu X X X X X X X X X X
Reducció de soroll ADC X X X(1) X X X X
S'apagui X(1) X X

Nota: per a INT0, només interrupció de nivell.

Per entrar en qualsevol dels tres modes de repòs, el bit SE a MCUCR s'ha d'escriure a l'un lògic i s'ha d'executar una instrucció SLEEP. Els bits SM[1:0] del registre MCUCR seleccionen quin mode de repòs (Idle, ADC Noise Reduction o Power-down) s'activarà mitjançant la instrucció SLEEP. Mireu Taula 7-2 per a un resum.

Si es produeix una interrupció activada mentre l'MCU està en mode de repòs, l'MCU es desperta. A continuació, l'MCU s'atura durant quatre cicles a més del temps d'inici, executa la rutina d'interrupció i reprèn l'execució des de la instrucció que segueix SLEEP. El contingut del Registre File i SRAM no es modifiquen quan el dispositiu es desperta del son. Si es produeix un restabliment durant el mode de repòs, l'MCU es desperta i s'executa des del vector de restabliment.

Nota: si s'utilitza una interrupció activada per nivell per a l'activació, el nivell canviat s'ha de mantenir durant un temps per activar l'MCU (i perquè l'MCU entri a la rutina de servei d'interrupció). Mireu “Interrupcions externes” a la pàgina 49 per als detalls.

Mode d’espera

Quan els bits SM[1:0] s'escriuen a 00, la instrucció SLEEP fa que l'MCU entri en mode inactiu, aturant la CPU però permetent que el comparador analògic, ADC, USI, temporitzador/comptador, Watchdog i el sistema d'interrupció continuïn funcionant. Aquest mode de repòs atura bàsicament clkCPU i clkFLASH, alhora que permet que s'executin els altres rellotges.

El mode inactiu permet que l'MCU es desperti d'interrupcions activades externes, així com d'internes com el desbordament del temporitzador. Si no cal despertar des de la interrupció del comparador analògic, es pot apagar el comparador analògic configurant el bit ACD a “ACSR – Registre d'estat i control del comparador analògic” a la pàgina 120. Això reduirà el consum d'energia en mode inactiu. Si l'ADC està habilitat, una conversió s'inicia automàticament quan s'introdueix aquest mode.

Mode de reducció de soroll ADC

Quan els bits SM[1:0] s'escriuen a 01, la instrucció SLEEP fa que l'MCU entri en mode de reducció de soroll ADC, aturant la CPU però permetent que l'ADC, les interrupcions externes i el Watchdog continuïn funcionant (si està activat). Aquest mode de repòs atura clkI/O, clkCPU i clkFLASH, alhora que permet que s'executin els altres rellotges.

Això millora l'entorn de soroll per a l'ADC, permetent mesuraments de major resolució. Si l'ADC està habilitat, una conversió s'inicia automàticament quan s'introdueix aquest mode. A part de la interrupció completa de conversió de l'ADC, només un restabliment extern, un restabliment de Watchdog, un restabliment de Brown-out, una interrupció preparada per SPM/EEPROM, una interrupció de nivell extern a INT0 o una interrupció de canvi de pin poden despertar la MCU del mode de reducció de soroll ADC.

Mode d'apagada

Quan els bits SM[1:0] s'escriuen a 10, la instrucció SLEEP fa que l'MCU entri en mode d'apagada. En aquest mode, l'oscil·lador s'atura, mentre que les interrupcions externes, la detecció de la condició d'inici de l'USI i el Watchdog continua funcionant (si està activat). Només un restabliment extern, un restabliment de Watchdog, un restabliment de Brown-out, una interrupció de la condició d'inici de l'USI, una interrupció de nivell extern a INT0 o una interrupció de canvi de pin poden despertar la MCU. Aquest mode de repòs atura tots els rellotges generats, permetent només el funcionament dels mòduls asíncrons.

Desactivació del programari BOD

Quan el detector d'apagat (BOD) està activat per fusibles BODLEVEL (vegeu Taula 20-4 a la pàgina 148), el BOD està supervisant activament el volum de subministramenttage durant un període de son. En alguns dispositius és possible estalviar energia desactivant el BOD mitjançant el programari en mode de repòs d'apagada. Aleshores, el consum d'energia en mode de repòs estarà al mateix nivell que quan el BOD està desactivat globalment per fusibles.

Si el programari desactiva BOD, la funció BOD es desactiva immediatament després d'entrar al mode de repòs. En despertar-se del son, BOD es torna a activar automàticament. Això garanteix un funcionament segur en cas que el nivell de VCC hagi baixat durant el període de son.

Quan el BOD s'hagi desactivat, el temps de despertar des del mode de repòs serà el mateix que el de despertar-se des del RESET. L'usuari ha de configurar manualment els temps d'activació de manera que la referència del bandgap tingui temps d'iniciar-se i el BOD funcioni correctament abans que l'MCU continuï executant el codi. Vegeu els bits de fusible SUT[1:0] i CKSEL[3:0] a la taula “Fuse Low Byte” a la pàgina 149

La desactivació de BOD està controlada pel bit BODS (BOD Sleep) del registre de control de MCU, vegeu "MCUCR - Control MCU Registreu-vos” a la pàgina 37. Si escriu aquest bit a un, s'apaga el BOD a Power-Down, mentre que escriure un zero manté el BOD actiu. La configuració per defecte és zero, és a dir, BOD activa.

L'escriptura al bit BODS està controlada per una seqüència temporitzada i un bit d'habilitació, vegeu "MCUCR - MCU Control Regis- ter” a la pàgina 37.

Limitacions

La funcionalitat de desactivació de BOD només s'ha implementat als dispositius següents:

ATtiny25, revisió E i més recent

ATtiny45, revisió D i posteriors

ATtiny85, revisió C i més recents

Les revisions estan marcades al paquet del dispositiu i es poden localitzar de la següent manera:

Part inferior dels paquets 8P3 i 8S2

Part superior del paquet 20M1

Registre de reducció de potència

El registre de reducció de potència (PRR), vegeu “PRR – Registre de reducció de potència” a la pàgina 38, proporciona un mètode per reduir el consum d'energia aturant el rellotge als perifèrics individuals. L'estat actual del perifèric està congelat i els registres d'E/S no es poden llegir ni escriure. Els recursos utilitzats pel perifèric quan atura el rellotge romandran ocupats, per tant, el perifèric s'hauria de desactivar en la majoria dels casos abans d'aturar el rellotge. El despertar d'un mòdul, que es fa esborrant el bit a PRR, posa el mòdul en el mateix estat que abans de l'apagat.

L'apagat del mòdul es pot utilitzar en mode inactiu i mode actiu per reduir significativament el consum d'energia total. En tots els altres modes de repòs, el rellotge ja està aturat. Mireu “Corrent d'alimentació dels mòduls d'E/S” a la pàgina 177 per examples.

Minimització del consum d'energia

Hi ha diversos problemes a tenir en compte quan s'intenta minimitzar el consum d'energia en un sistema controlat AVR. En general, els modes de repòs s'han d'utilitzar tant com sigui possible i el mode de repòs s'ha de seleccionar de manera que funcionin el menor nombre possible de funcions del dispositiu. Totes les funcions no necessàries s'han de desactivar. En particular, els mòduls següents poden necessitar una consideració especial quan s'intenta aconseguir el menor consum d'energia possible.

Convertidor analògic a digital

Si està activat, l'ADC s'habilitarà en tots els modes de repòs. Per estalviar energia, l'ADC s'ha de desactivar abans d'entrar a qualsevol mode de repòs. Quan l'ADC s'apaga i torna a encendre, la següent conversió serà una conversió ampliada. Consulteu "Conversor d'analògic a digital" a la pàgina 122 per obtenir més informació sobre el funcionament de l'ADC.

Comparador analògic

Quan entreu al mode inactiu, el comparador analògic s'hauria d'inhabilitar si no s'utilitza. Quan entreu al mode de reducció de soroll ADC, el comparador analògic s'hauria d'inhabilitar. En els altres modes de repòs, el comparador analògic es desactiva automàticament. Tanmateix, si el comparador analògic està configurat per utilitzar el Vol interntage Referència com a entrada, el comparador analògic s'hauria d'inhabilitar en tots els modes de repòs. En cas contrari, el Vol interntagLa referència s'habilitarà, independentment del mode de repòs. Consulteu “Comparador analògic” a la pàgina 119 per obtenir més informació sobre com configurar el comparador analògic.

Detector d'apagats

Si no es necessita el detector d'apagada a l'aplicació, aquest mòdul s'hauria d'apagar. Si els fusibles BODLEVEL habiliten el detector d'apagada, s'habilitarà en tots els modes de repòs i, per tant, sempre consumirà energia. En els modes de repòs més profund, això contribuirà significativament al consum total de corrent. Mireu "Detecció d'apagats ció” a la pàgina 41 “Desactivació del BOD del programari” a la pàgina 35 per obtenir més informació sobre com configurar el detector de caiguda.

Volum interntage Referència

El vol interntagLa referència s'habilitarà quan ho necessiti la detecció d'apagada, el comparador analògic o l'ADC. Si aquests mòduls estan desactivats tal com es descriu a les seccions anteriors, el vol interntagLa referència estarà desactivada i no consumirà energia. Quan es torna a activar, l'usuari ha de permetre que la referència s'iniciï abans que s'utilitzi la sortida. Si la referència es manté activada en mode de repòs, la sortida es pot utilitzar immediatament. Consulteu “Vol. interntage Referència” a la pàgina 42 per obtenir detalls sobre l'hora d'inici.

Temporitzador de gos vigilant

Si el temporitzador Watchdog no és necessari a l'aplicació, aquest mòdul s'hauria d'apagar. Si el temporitzador Watchdog està habilitat, s'habilitarà en tots els modes de repòs i, per tant, sempre consumirà energia. En els modes de repòs més profund, això contribuirà significativament al consum total de corrent. Consulteu “Temporitzador de Watchdog” a la pàgina 42 per obtenir més informació sobre com configurar el temporitzador Watchdog.

Port Pins

Quan entreu en un mode de repòs, tots els pins del port s'han de configurar per utilitzar una potència mínima. Aleshores, el més important és assegurar-se que cap pin condueixi càrregues resistives. En els modes de repòs en què tant el rellotge d'E/S (clkI/O) com el rellotge ADC (clkADC) estan aturats, els buffers d'entrada del dispositiu es desactivaran. Això garanteix que no es consumeixi energia

per la lògica d'entrada quan no és necessari. En alguns casos, la lògica d'entrada és necessària per detectar condicions de despertar i

llavors s'habilitarà. Consulteu la secció "Modes d'activació d'entrada digital i de repòs" a la pàgina 57 per obtenir detalls sobre quins pins estan habilitats. Si el buffer d'entrada està habilitat i el senyal d'entrada es deixa flotant o té un nivell de senyal analògic proper al VCC/2, el buffer d'entrada utilitzarà una potència excessiva.

Per als pins d'entrada analògic, el buffer d'entrada digital s'ha d'inhabilitar en tot moment. Un nivell de senyal analògic proper a VCC/2 en un pin d'entrada pot provocar un corrent important fins i tot en mode actiu. Els buffers d'entrada digital es poden desactivar escrivint al registre de desactivació d'entrada digital (DIDR0). Consulteu “DIDR0 – Registre de desactivació d'entrada digital 0” a la pàgina 121 per als detalls.

Descripció del registre

MCUCR - Registre de control MCU

El registre de control de l'MCU conté bits de control per a la gestió de l'energia.

Bit 7 6 5 4 3 2 1 0
0 x 35 BODS PUD SE SM1 SM0 BODSE ISC01 ISC00 MCUCR
Llegir/Escriure R R/W R/W R/W R/W R R/W R/W
Valor inicial 0 0 0 0 0 0 0 0

Bit 7 – BODS: BOD Sleep

La funcionalitat de desactivació de BOD només està disponible en alguns dispositius. Vegeu "Limitacions" a la pàgina 36.

Per desactivar la DBO durant el son (vegeu Taula 7-1 a la pàgina 34) el bit BODS s'ha d'escriure a un lògic. Això està controlat per una seqüència temporitzada i el bit d'habilitació, BODSE a MCUCR. En primer lloc, tant BODS com BODSE s'han d'establir en un. En segon lloc, en quatre cicles de rellotge, BODS s'ha de posar a un i BODSE a zero. El bit BODS està actiu tres cicles de rellotge després que s'hagi configurat. S'ha d'executar una instrucció de repòs mentre el BODS està actiu per desactivar el BOD per al mode de repòs real. El bit BODS s'esborra automàticament després de tres cicles de rellotge.

En dispositius on no s'ha implementat Sleeping BOD, aquest bit no s'utilitza i sempre llegirà zero.

Bit 5 - SE: Habilita la repòs

El bit SE s'ha d'escriure a l'un lògic perquè l'MCU entri en el mode de repòs quan s'executa la instrucció SLEEP. Per evitar que l'MCU entri al mode de repòs tret que sigui el propòsit del programador, es recomana escriure el bit d'activació de la repòs (SE) just abans de l'execució de la instrucció SLEEP i esborrar-lo immediatament després de despertar-se.

Bits 4:3 - SM[1:0]: seleccioneu els bits 1 i 0 del mode de repòs

Aquests bits seleccionen entre els tres modes de repòs disponibles, tal com es mostra a Taula 7-2.

Taula 7-2. Selecció del mode de repòs

SM1 SM0 Mode de repòs
0 0 Inactiu
0 1 Reducció de soroll ADC
1 0 S'apagui
1 1 Reservat

Bit 2: BODSE: Habilitat BOD Sleep

La funcionalitat de desactivació de BOD només està disponible en alguns dispositius. Vegeu "Limitacions" a la pàgina 36.

El bit BODSE permet configurar el bit de control BODS, tal com s'explica a la descripció del bit BODS. La inhabilitació de BOD està controlada per una seqüència cronometrada.

Aquest bit no s'utilitza en dispositius on no s'ha implementat la desactivació del programari BOD i es llegirà com a zero en aquests dispositius.

PRR – Registre de reducció de potència

El registre de reducció d'energia proporciona un mètode per reduir el consum d'energia permetent desactivar les senyals del rellotge perifèric.

Bit 7 6 5 4 3 2 1 0
0 x 20 PRTIM1 PRTIM0 PRUSI PRADC PRR
Llegir/Escriure R R R R R/W R/W R/W R/W
Valor inicial 0 0 0 0 0 0 0 0

Bits 7:4 - Res: Bits reservats

Aquests bits són bits reservats a l'ATtiny25/45/85 i sempre es llegiran com a zero.

Bit 3 – PRTIM1: temporitzador/comptador de reducció de potència1

Si escriu un lògic en aquest bit, s'apaga el mòdul Timer/Counter1. Quan el temporitzador/comptador1 està habilitat, l'operació continuarà com abans de l'apagada.

Bit 2 – PRTIM0: temporitzador/comptador de reducció de potència0

Si escriu un lògic en aquest bit, s'apaga el mòdul Timer/Counter0. Quan el temporitzador/comptador0 està habilitat, l'operació continuarà com abans de l'apagada.

Bit 1 – PRUSI: USI de reducció de potència

Si escriu un lògic en aquest bit, s'atura l'USI aturant el rellotge del mòdul. Quan torneu a activar l'USI, l'USI s'ha de tornar a inicialitzar per garantir un funcionament correcte.

Bit 0 – PRADC: ADC de reducció de potència

Si escriu un lògic en aquest bit, s'apaga l'ADC. L'ADC s'ha de desactivar abans d'apagar-se. Tingueu en compte que algunes parts del comparador analògic també utilitzen el rellotge ADC, la qual cosa significa que el comparador analògic no es pot utilitzar quan aquest bit és alt.

Control i restabliment del sistema

Reinicialització de l'AVR

Durant el restabliment, tots els registres d'E/S s'estableixen als seus valors inicials i el programa comença a executar-se des del vector de restabliment. La instrucció col·locada al Vector de restabliment ha de ser una instrucció RJMP - Salt relatiu - a la rutina de gestió de restabliment. Si el programa mai activa una font d'interrupció, els vectors d'interrupció no s'utilitzen i el codi de programa normal es pot col·locar en aquestes ubicacions. L'esquema del circuit a Figura 8-1 mostra la lògica de reinici. Els paràmetres elèctrics del circuit de reinici es donen a “Característiques del sistema i restabliment” a la pàgina 165.

Figura 8-1 Restablir lògica Restableix la lògica

Els ports d'E/S de l'AVR es restableixen immediatament al seu estat inicial quan una font de restabliment s'activa. Això no requereix que s'executi cap font de rellotge.

Després que totes les fonts de restabliment hagin quedat inactives, s'invoca un comptador de retard, que allarga el restabliment intern. Això permet que la potència assoleixi un nivell estable abans que comenci el funcionament normal. El període de temps d'espera del comptador de retard el defineix l'usuari mitjançant els fusibles SUT i CKSEL. Les diferents seleccions per al període de retard es presenten a “Rellotge Fonts” a la pàgina 25.

Restableix les fonts

L'ATtiny25/45/85 té quatre fonts de restabliment:

Reinicialització d'encesa. L'MCU es reinicia quan el subministrament voltage està per sota del llindar de restabliment d'encesa (VPOT).

Reinicialització externa. L'MCU es reinicia quan hi ha un nivell baix al pin RESET durant més temps que la durada mínima del pols.

Reinicialització del gos vigilant. L'MCU es restableix quan el període del temporitzador de Watchdog expira i el Watchdog està habilitat.

Reinicialització de l'apagada. L'MCU es reinicia quan el subministrament voltagEl VCC està per sota del llindar de restabliment d'apagada (VBOT) i el detector d'apagada està habilitat.

Restabliment de l’engegada

Un pols de restabliment d'encesa (POR) es genera mitjançant un circuit de detecció en xip. El nivell de detecció es defineix a “Sys- tem i restableix les característiques” a la pàgina 165. El POR s'activa sempre que VCC està per sota del nivell de detecció. El circuit POR es pot utilitzar per activar el reinici d'arrencada, així com per detectar una fallada en el volum de subministramenttage.

Un circuit de restabliment d'encesa (POR) garanteix que el dispositiu es reinicia des de l'encesa. Aconseguint el llindar de restabliment d'encesa voltage invoca el comptador de retard, que determina quant de temps es manté el dispositiu en RESET després de l'augment del VCC. El senyal RESET s'activa de nou, sense cap retard, quan el VCC disminueix per sota del nivell de detecció.

Figura 8-2. Engegada de l'MCU, restabliment vinculat a VCC

RESET INTERN

Figura 8-3. Engegada de l'MCU, restabliment estès externament

Restabliment extern

Un restabliment extern es genera per un nivell baix al pin RESET si està activat. Restablir polsos més llargs que l'amplada mínima del pols (vegeu “Característiques del sistema i restabliment” a la pàgina 165) generarà un reinici, fins i tot si el rellotge no s'està executant. No es garanteix que els polsos més curts generin un reinici. Quan el senyal aplicat arriba al llindar de restabliment Voltage - VRST - al seu costat positiu, el comptador de retard inicia l'MCU després que hagi expirat el període de temps d'espera.

Figura 8-4. Reinicialització externa durant el funcionament Fig8.4

Detecció d'apagats

ATtiny25/45/85 té un circuit de detecció d'abandonament al xip (BOD) per controlar el nivell de VCC durant el funcionament comparant-lo amb un nivell d'activació fix. El nivell d'activació del BOD es pot seleccionar mitjançant els fusibles BODLEVEL. El nivell d'activació té una histèresi per garantir una detecció de caiguda sense pics. La histèresi al nivell de detecció s'ha d'interpretar com VBOT+ = VBOT + VHYST/2 i VBOT- = VBOT – VHYST/2.

Quan el BOD està habilitat i el VCC disminueix a un valor per sota del nivell d'activació (VBOT-in Figura 8-5), s'activa immediatament el reinici de l'apagada. Quan VCC augmenta per sobre del nivell d'activació (VBOT+ in Figura 8-5), el comptador de retard inicia l'MCU després que hagi expirat el període de temps d'espera tTOUT.

El circuit BOD només detectarà una caiguda de VCC si el voltage es manté per sota del nivell d'activació durant més temps que el tBOD donat “Característiques del sistema i restabliment” a la pàgina 165. Fig8.5

Reinicialització del gos vigilant

Quan el Watchdog s'acabi, generarà un breu pols de reinici d'un cicle de CK. En el front descendent d'aquest pols, el temporitzador de retard comença a comptar el període de temps d'espera tTOUT. Consulteu “Temporitzador de Watchdog” a la pàgina 42 per obtenir més informació sobre el funcionament del temporitzador Watchdog.

Voltage Referència senyals d'habilitació i hora d'arrencada

El voltagLa referència té un temps d'inici que pot influir en la manera com s'ha d'utilitzar. S'indica l'hora de posada en marxa “Característiques del sistema i restabliment” a la pàgina 165. Per estalviar energia, la referència no sempre està activada. La referència està activada durant les situacions següents:

Quan el BOD està habilitat (programant els bits de fusible BODLEVEL[2:0]).

Quan la referència del bandgap està connectada al comparador analògic (mitjant el bit ACBG a ACSR).

Quan l'ADC està habilitat.

Així, quan el BOD no està habilitat, després de configurar el bit ACBG o habilitar l'ADC, l'usuari sempre ha de permetre que la referència s'iniciï abans que s'utilitzi la sortida del comparador analògic o ADC. Per reduir el consum d'energia en el mode d'apagada, l'usuari pot evitar les tres condicions anteriors per assegurar-se que la referència s'apaga abans d'entrar al mode d'apagada.

Temporitzador de gos vigilant

El temporitzador Watchdog es registra des d'un oscil·lador en xip que funciona a 128 kHz. Controlant el preescalador del temporitzador Watchdog, es pot ajustar l'interval de restabliment del Watchdog tal com es mostra a Taula 8-3 a la pàgina 46. La instrucció WDR – Reinicialització de Watchdog – restableix el temporitzador de Watchdog. El temporitzador Watchdog també es reinicia quan està desactivat i quan es produeix un restabliment del xip. Es poden seleccionar deu períodes de cicle de rellotge diferents per determinar el període de reinici. Si el període de restabliment caduca sense un altre restabliment de Watchdog, l'ATtiny25/45/85 es reinicia i s'executa des del vector de restabliment. Per obtenir informació sobre el temps sobre el restabliment de Watchdog, consulteu Taula 8-3 a la pàgina 46.

El temporitzador Watchdog també es pot configurar per generar una interrupció en lloc d'un restabliment. Això pot ser molt útil quan s'utilitza el Watchdog per despertar-se des de l'apagada.

Per evitar la desactivació no intencionada del Watchdog o el canvi no intencionat del període de temps d'espera, el fusible WDTON selecciona dos nivells de seguretat diferents, tal com es mostra a Taula 8-1 Consulteu "Seqüències cronometrades per canviar les con- figuració del temporitzador Watchdog” a la pàgina 43 per als detalls.

Taula 8-1. Configuració WDT com a funció de la configuració de fusibles de WDTON

WDTON Nivell de seguretat Estat inicial del WDT Com desactivar el WDT Com canviar el temps d'espera
Sense programar 1 Inhabilitat Seqüència cronometrada Sense limitacions
Programat 2 Habilitat Sempre habilitat Seqüència cronometrada

Figura 8-7. Temporitzador de gos vigilant Gos guardià

Seqüències cronometrades per canviar la configuració del temporitzador Watchdog

La seqüència per canviar la configuració difereix lleugerament entre els dos nivells de seguretat. Es descriuen procediments separats per a cada nivell.

Nivell de seguretat 1: en aquest mode, el temporitzador Watchdog està desactivat inicialment, però es pot activar escrivint el bit WDE a un sense cap restricció. Es necessita una seqüència cronometrada quan es desactiva un temporitzador de Watchdog activat. Per desactivar un temporitzador de Watchdog habilitat, cal seguir el procediment següent:

En la mateixa operació, escriviu una lògica a WDCE i WDE. S'ha d'escriure una lògica a WDE independentment del valor anterior del bit WDE.

Dins dels quatre cicles de rellotge següents, en la mateixa operació, escriviu els bits WDE i WDP com vulgueu, però amb el bit WDCE esborrat.

Nivell de seguretat 2: en aquest mode, el temporitzador Watchdog sempre està habilitat i el bit WDE sempre es llegirà com un. Es necessita una seqüència cronometrada quan es canvia el període de temps d'espera del Watchdog. Per canviar el temps d'espera del Watchdog, s'ha de seguir el procediment següent:

En la mateixa operació, escriviu una de lògica a WDCE i WDE. Tot i que el WDE sempre està configurat, el WDE s'ha d'escriure en un per iniciar la seqüència cronometrada.

Dins dels quatre cicles de rellotge següents, en la mateixa operació, escriviu els bits WDP com vulgueu, però amb el bit WDCE esborrat. El valor escrit al bit WDE és irrellevant.

Codi Example

El següent codi example mostra un conjunt i una funció C per apagar el WDT. L'exampEl fitxer assumeix que les interrupcions es controlen (per exemple, desactivant les interrupcions globalment) de manera que no es produiran interrupcions durant l'execució d'aquestes funcions.

Codi de muntatge Example(1)
WDT_off:

wdr

; Esborra WDRF a MCUSR

ldi r16, (0<

fora MCUSR, r16

; Escriu un lògic a WDCE i WDE

; Mantingueu la configuració anterior de l'escalador per evitar el restabliment involuntari de Watchdog

a r16, WDTCR

ori r16, (1<

sortida WDTCR, r16

; Apagueu WDT

ldi r16, (0<

sortida WDTCR, r16

ret

Codi C Example(1)
void WDT_off(void)

{

_WDR();

/* Esborra WDRF a MCUSR */ MCUSR = 0x00

/* Escriu un lògic a WDCE i WDE */ WDTCR |= (1<

/* Desactiva WDT */ WDTCR = 0x00;

}

Nota: 1. Vegeu “Codi Examples” a la pàgina 6.

Descripció del registre

MCUSR - Registre d'estat de MCU

El registre d'estat de l'MCU proporciona informació sobre quina font de restabliment ha provocat un restabliment de l'MCU.

Bit 7 6 5 4 3 2 1 0
0 x 34 WDRF BORF EXTRF PORF MCUSR
Llegir/Escriure R R R R R/W R/W R/W R/W

Valor inicial 0 0 0 0 Vegeu la descripció del bit

Bits 7:4 - Res: Bits reservats

Aquests bits són bits reservats a l'ATtiny25/45/85 i sempre es llegiran com a zero.

Bit 3: WDRF: Bandera de restabliment de Watchdog

Aquest bit s'estableix si es produeix un restabliment de Watchdog. El bit es reinicia mitjançant un restabliment d'engegada o escrivint un zero lògic a la bandera.

Bit 2 – BORF: Bandera de restabliment d'apagada

Aquest bit s'activa si es produeix un restabliment d'apagada. El bit es reinicia mitjançant un restabliment d'engegada o escrivint un zero lògic a la bandera.

Bit 1 – EXTRF: bandera de restabliment extern

Aquest bit s'estableix si es produeix un restabliment extern. El bit es reinicia mitjançant un restabliment d'engegada o escrivint un zero lògic a la bandera.

Bit 0 - PORF: Bandera de restabliment d'encesa

Aquest bit s'estableix si es produeix un restabliment d'encesa. El bit només es reinicia escrivint un zero lògic a la bandera.

Per utilitzar els indicadors de restabliment per identificar una condició de restabliment, l'usuari ha de llegir i reiniciar el MCUSR tan aviat com sigui possible al programa. Si el registre s'esborra abans que es produeixi un altre restabliment, es pot trobar l'origen del restabliment examinant els indicadors de restabliment.

WDTCR - Registre de control del temporitzador de vigilant

Bit 7 6 5 4 3 2 1 0
0 x 21 WDIF WDIE WDP3 WDCE WDE WDP2 WDP1 WDP0 WDTCR
Llegir/Escriure R/W R/W R/W R/W R/W R/W R/W R/W
Valor inicial 0 0 0 0 X 0 0 0

Bit 7 - WDIF: indicador d'interrupció del temps d'espera del gos de vigilància

Aquest bit s'estableix quan es produeix un temps d'espera al temporitzador Watchdog i el temporitzador Watchdog està configurat per a la interrupció. El maquinari esborra WDIF quan s'executa el vector de gestió d'interrupcions corresponent. Alternativament, WDIF s'esborra escrivint un lògic a la bandera. Quan s'estableixen els bits I a SREG i WDIE, s'executa la interrupció del temps d'espera de Watchdog.

Bit 6 - WDIE: activació de la interrupció del temps d'espera de Watchdog

Quan aquest bit s'escriu en un, s'esborra el WDE i s'estableix el bit I del registre d'estat, s'habilita la interrupció del temps d'espera del Watchdog. En aquest mode, s'executa la interrupció corresponent en lloc d'un restabliment si es produeix un temps d'espera al temporitzador Watchdog.

Si s'estableix WDE, el maquinari esborra automàticament el WDIE quan es produeix un temps d'espera. Això és útil per mantenir la seguretat de restabliment de Watchdog mentre s'utilitza la interrupció. Un cop esborrat el bit WDIE, el proper temps d'espera generarà un restabliment. Per evitar el restabliment de Watchdog, s'ha de configurar WDIE després de cada interrupció.

Taula 8-2. Configuració del temporitzador de Watchdog

WDE WDIE Estat del temporitzador del vigilant Acció sobre el temps mort
0 0 Parat Cap
0 1 Córrer Interrupció
1 0 Córrer Restableix
1 1 Córrer Interrupció

Bit 4: WDCE: activació del canvi de Watchdog

Aquest bit s'ha d'establir quan el bit WDE s'escriu al zero lògic. En cas contrari, el Watchdog no es desactivarà. Un cop escrit en un, el maquinari esborrarà aquest bit després de quatre cicles de rellotge. Consulteu la descripció del bit WDE per obtenir un procediment d'inhabilitació de Watchdog. Aquest bit també s'ha d'establir quan es canvien els bits del preescalador. Vegeu “Seqüències cronometrades per canviar la configuració del temporitzador Watchdog” a la pàgina 43.

Bit 3 - WDE: Habilitat de Watchdog

Quan el WDE s'escriu a un lògic, el temporitzador Watchdog s'habilita, i si el WDE s'escriu al zero lògic, la funció Watchdog Timer està desactivada. El WDE només es pot esborrar si el bit WDCE té un nivell lògic. Per desactivar un temporitzador de Watchdog habilitat, cal seguir el procediment següent:

En la mateixa operació, escriviu una lògica a WDCE i WDE. S'ha d'escriure una lògica a WDE encara que estigui establerta en una abans que comenci l'operació de desactivació.

Dins dels quatre cicles de rellotge següents, escriviu un 0 lògic a WDE. Això desactiva el Watchdog.

Al nivell de seguretat 2, no és possible desactivar el temporitzador Watchdog, fins i tot amb l'algoritme descrit anteriorment. Mireu “Seqüències cronometrades per canviar la configuració del temporitzador Watchdog” a la pàgina 43.

En el nivell de seguretat 1, WDRF anul·la el WDE a MCUSR. Mireu “MCUSR – Registre d'estat de MCU” a la pàgina 44 per a la descripció de WDRF. Això vol dir que WDE sempre s'estableix quan s'estableix WDRF. Per esborrar WDE, s'ha d'esborrar WDRF abans de desactivar el Watchdog amb el procediment descrit anteriorment. Aquesta característica garanteix múltiples restabliments durant les condicions que causen una fallada i un engegada segur després de la fallada.

Nota: si el temporitzador del gos de vigilància no s'utilitzarà a l'aplicació, és important passar per un procediment de desactivació del gos de vigilància en la inicialització del dispositiu. Si el Watchdog està activat per error, per exempleampSi el punter no és fugitiu o la condició d'esgotament, el dispositiu es reiniciarà, cosa que al seu torn donarà lloc a un nou restabliment del gos vigilant. Per evitar aquesta situació, el programari de l'aplicació ha d'esborrar sempre el senyalador WDRF i el bit de control WDE a la rutina d'inicialització.

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

Els bits WDP[3:0] determinen la preescala del temporitzador Watchdog quan el Watchdog Timer està habilitat. Es mostren els diferents valors de preescala i els seus corresponents períodes de temps d'espera Taula 8-3.

Taula 8-3. Selecció de preescala del temporitzador de vigilant

WDP3 WDP2 WDP1 WDP0 Nombre de cicles d'oscil·lador WDT Temps d'espera típic a VCC = 5.0 V
0 0 0 0 2K (2048) cicles 16 ms
0 0 0 1 4K (4096) cicles 32 ms
0 0 1 0 8K (8192) cicles 64 ms
0 0 1 1 16K (16384) cicles 0.125 s
0 1 0 0 32K (32764) cicles 0.25 s
0 1 0 1 64K (65536) cicles 0.5 s
0 1 1 0 128K (131072) cicles 1.0 s
0 1 1 1 256K (262144) cicles 2.0 s
1 0 0 0 512K (524288) cicles 4.0 s
1 0 0 1 1024K (1048576) cicles 8.0 s

Taula 8-3. Selecció prèvia de l'escala del temporitzador de vigilant (continuació)

WDP3 WDP2 WDP1 WDP0 Nombre de cicles d'oscil·lador WDT Temps d'espera típic a VCC = 5.0 V
1 0 1 0 Reservat(1)
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1

Nota: 1. Si se selecciona, s'utilitzarà un dels paràmetres vàlids inferiors a 0b1010.

Interrupcions

Aquesta secció descriu les especificitats de la gestió d'interrupcions tal com es realitza a ATtiny25/45/85. Per obtenir una explicació general del maneig d'interrupcions de l'AVR, consulteu "Reinicialització i gestió d'interrupcions" a la pàgina 12.

Vectors d'interrupció a ATtiny25/45/85

Els vectors d'interrupció d'ATtiny25/45/85 es descriuen a Taula 9-1a sota.

Taula 9-1. Restablir i interrompre vectors

Vector núm. Adreça del programa Font Definició d'interrupció
1 0 x 0000 RESET Pin extern, restabliment de l'engegada, restabliment de l'apagada, restabliment del watchdog
2 0 x 0001 INT0 Sol·licitud d'interrupció externa 0
3 0 x 0002 PCINT0 Sol·licitud d'interrupció de canvi de pin 0
4 0 x 0003 TIMER1_COMPA Temporitzador/Comptador 1 Compara la coincidència A
5 0 x 0004 TIMER1_OVF Desbordament del temporitzador/comptador1
6 0 x 0005 TIMER0_OVF Desbordament del temporitzador/comptador0
7 0 x 0006 EE_RDY EEPROM llest
8 0 x 0007 ANA_COMP Comparador analògic
9 0 x 0008 ADC Conversió ADC completada
10 0 x 0009 TIMER1_COMPB Temporitzador/Comptador 1 Compara el partit B
11 0x000A TIMER0_COMPA Temporitzador/Comptador 0 Compara la coincidència A
12 0x000B TIMER0_COMPB Temporitzador/Comptador 0 Compara el partit B
13 0x000C WDT Temps mort del gos guardià
14 0x000D USI_START USI START
15 0x000E USI_OVF Desbordament de la USI

Si el programa mai activa una font d'interrupció, els vectors d'interrupció no s'utilitzen i el codi de programa normal es pot col·locar en aquestes ubicacions.

Una configuració típica i general per a adreces de vectors d'interrupció a ATtiny25/45/85 es mostra al programa ex.ampel més avall.

Codi de muntatge Example
.org 0x0000 ;Estableix l'adreça del següent declaració
rjmp RESET ; Adreça 0x0000
rjmp INT0_ISR ; Adreça 0x0001
rjmp PCINT0_ISR ; Adreça 0x0002
rjmp TIM1_COMPA_ISR ; Adreça 0x0003
rjmp TIM1_OVF_ISR ; Adreça 0x0004
rjmp TIM0_OVF_ISR ; Adreça 0x0005
rjmp EE_RDY_ISR ; Adreça 0x0006
rjmp ANA_COMP_ISR ; Adreça 0x0007
rjmp ADC_ISR ; Adreça 0x0008
rjmp TIM1_COMPB_ISR ; Adreça 0x0009
rjmp TIM0_COMPA_ISR ; Adreça 0x000A
rjmp TIM0_COMPB_ISR ; Adreça 0x000B
rjmp WDT_ISR ; Adreça 0x000C
rjmp USI_START_ISR ; Adreça 0x000D
rjmp USI_OVF_ISR ; Adreça 0x000E
RESET: ; Inici del programa principal
; Adreça 0x000F

Nota: Vegeu “Codi Examples” a la pàgina 6.

Interrupcions externes

Les interrupcions externes es desencadenen pel pin INT0 o qualsevol dels pins PCINT[5:0]. Observeu que, si s'habilita, les interrupcions es desencadenen encara que els pins INT0 o PCINT[5:0] estiguin configurats com a sortides. Aquesta característica proporciona una manera de generar una interrupció de programari. El canvi de pin interromp que el PCI s'activarà si algun pin de PCINT[5:0] activat canvia. El registre PCMSK controla quins pins contribueixen a les interrupcions de canvi de pins. Les interrupcions de canvi de pin a PCINT[5:0] es detecten de manera asíncrona. Això implica que aquestes interrupcions es poden utilitzar per activar la part també des de modes de repòs diferents del mode inactiu.

Les interrupcions INT0 es poden activar per un front descendent o ascendent o un nivell baix. Això es configura tal com s'indica a l'especificació per al Registre de control MCU - MCUCR. Quan la interrupció INT0 està habilitada i es configura com a nivell activat, la interrupció s'activarà sempre que el pin es mantingui baix. Tingueu en compte que el reconeixement d'interrupcions de front descendent o ascendent a INT0 requereix la presència d'un rellotge d'E/S, descrit a "Els sistemes de rellotge i la seva distribució". pàgina 23.

Interrupció de baix nivell

Es detecta una interrupció de baix nivell a INT0 de manera asíncrona. Això implica que aquesta interrupció es pot utilitzar per despertar la part també des de modes de repòs diferents del mode inactiu. El rellotge d'E/S s'atura en tots els modes de repòs excepte en el mode inactiu.

Tingueu en compte que si s'utilitza una interrupció activada per nivell per activar-se des de l'apagada, el nivell requerit s'ha de mantenir el temps suficient perquè l'MCU completi el despertar per activar la interrupció de nivell. Si el nivell desapareix abans del final del temps d'inici, l'MCU encara es despertarà, però no es generarà cap interrupció. El temps d'arrencada el defineixen els fusibles SUT i CKSEL tal com es descriu a “Opcions de rellotge i rellotge del sistema” a la pàgina 23.

Si el nivell baix del pin d'interrupció s'elimina abans que el dispositiu s'hagi despertat, l'execució del programa no es desviarà a la rutina de servei d'interrupció, sinó que continuarà des de la instrucció seguint l'ordre SLEEP.

Temps d'interrupció del canvi de pin

Un exampEs mostra el fitxer de temps d'una interrupció de canvi de pin Figura 9-1.

Descripció del registre

MCUCR - Registre de control MCU

El registre A de control d'interrupcions externs conté bits de control per al control de sensació d'interrupcions.

Bit 7 6 5 4 3 2 1 0
0 x 35 BODS PUD SE SM1 SM0 BODSE ISC01 ISC00 MCUCR
Llegir/Escriure R R/W R/W R/W R/W R R/W R/W
Valor inicial 0 0 0 0 0 0 0 0

Bits 1:0 – ISC0[1:0]: Control de detecció d'interrupcions 0 Bit 1 i Bit 0

La interrupció externa 0 s'activa pel pin extern INT0 si s'estableixen la bandera I SREG i la màscara d'interrupció corresponent. El nivell i les vores del pin extern INT0 que activen la interrupció es defineixen a Taula 9-2. El valor del pin INT0 és sampled abans de detectar vores. Si se selecciona una interrupció de vora o de commutació, els polsos que durin més d'un període de rellotge generaran una interrupció. No es garanteix que els polsos més curts generin una interrupció. Si se selecciona interrupció de nivell baix, s'ha de mantenir el nivell baix fins a la finalització de la instrucció en execució per generar una interrupció.

Taula 9-2. Interrupció 0 Control de sentit

ISC01 ISC00 Descripció
0 0 El nivell baix d'INT0 genera una sol·licitud d'interrupció.
0 1 Qualsevol canvi lògic a INT0 genera una sol·licitud d'interrupció.
1 0 El front descendent d'INT0 genera una sol·licitud d'interrupció.
1 1 El front ascendent d'INT0 genera una sol·licitud d'interrupció.

GIMSK – Registre general de màscares d'interrupció

Bit 7 6 5 4 3 2 1 0
0x3B INT0 PCIe GIMSK
Llegir/Escriure R R/W R/W R R R R R
Valor inicial 0 0 0 0 0 0 0 0

Bits 7, 4:0 – Res: Bits reservats

Aquests bits són bits reservats a l'ATtiny25/45/85 i sempre es llegiran com a zero.

Bit 6 – INT0: Sol·licitud d'interrupció externa 0 Habilita

Quan s'estableix el bit INT0 (un) i el bit I del registre d'estat (SREG) s'estableix (un), s'habilita la interrupció del pin extern. Els bits 0/1 de control de detecció d'interrupcions (ISC0 i ISC01) del registre de control de l'MCU (MCUCR) defineixen si la interrupció externa s'activa en el front ascendent i/o descendent del pin INT00 o del nivell detectat. L'activitat al pin provocarà una sol·licitud d'interrupció encara que INT0 estigui configurat com a sortida. La interrupció corresponent de la petició d'interrupció externa 0 s'executa des del vector d'interrupció INT0.

Bit 5 - PCIE: activació d'interrupció de canvi de pin

Quan s'estableix el bit PCIE (un) i el bit I del registre d'estat (SREG) s'estableix (un), s'habilita la interrupció de canvi de pin. Qualsevol canvi a qualsevol pin PCINT[5:0] habilitat provocarà una interrupció. La interrupció corresponent de la sol·licitud d'interrupció de canvi de pin s'executa des del vector d'interrupció PCI. Els pins PCINT[5:0] s'activen individualment pel registre PCMSK0.

GIFR - Registre general de bandera d'interrupció

Bit 7 6 5 4 3 2 1 0
0x3A INTF0 PCIF GIFR
Llegir/Escriure R R/W R/W R R R R R
Valor inicial 0 0 0 0 0 0 0 0

Bits 7, 4:0 – Res: Bits reservats

Aquests bits són bits reservats a l'ATtiny25/45/85 i sempre es llegiran com a zero.

Bit 6 - INTF0: bandera d'interrupció externa 0

Quan un canvi de vora o de lògica al pin INT0 desencadena una sol·licitud d'interrupció, INTF0 s'estableix (un). Si el bit I a SREG i el bit INT0 a GIMSK estan establerts (un), la MCU saltarà al vector d'interrupció corresponent. El senyalador s'esborra quan s'executa la rutina d'interrupció. Alternativament, la bandera es pot esborrar escrivint-hi una de lògica. Aquest senyalador sempre s'esborra quan INT0 es configura com a interrupció de nivell.

Bit 5 - PCIF: indicador d'interrupció de canvi de pin

Quan un canvi de lògica en qualsevol pin PCINT[5:0] desencadena una sol·licitud d'interrupció, el PCIF s'estableix (un). Si el bit I a SREG i el bit PCIE a GIMSK estan establerts (un), l'MCU saltarà al vector d'interrupció corresponent. El senyalador s'esborra quan s'executa la rutina d'interrupció. Alternativament, la bandera es pot esborrar escrivint-hi una de lògica.

PCMSK - Registre de màscara de canvi de pin

Bit 7 6 5 4 3 2 1 0
0 x 15 PCINT5 PCINT4 PCINT3 PCINT2 PCINT1 PCINT0 PCMSK
Llegir/Escriure R R R/W R/W R/W R/W R/W R/W
Valor inicial 0 0 0 0 0 0 0 0

Bits 7:6 - Res: Bits reservats

Aquests bits són bits reservats a l'ATtiny25/45/85 i sempre es llegiran com a zero.

Bits 5:0 – PCINT[5:0]: activació de la màscara de canvi de pin 5:0

Cada bit PCINT[5:0] selecciona si la interrupció de canvi de pin està habilitada al pin d'E/S corresponent. Si s'estableix PCINT[5:0] i s'estableix el bit PCIE a GIMSK, s'habilita la interrupció de canvi de pin al pin d'E/S corresponent. Si s'esborra PCINT[5:0], la interrupció de canvi de pin al pin d'E/S corresponent està desactivada.

Ports d'E/S

Introducció

Tots els ports AVR tenen una veritable funcionalitat de lectura, modificació i escriptura quan s'utilitzen com a ports d'E/S digitals generals. Això significa que la direcció d'un pin del port es pot canviar sense canviar involuntàriament la direcció de cap altre pin amb les instruccions SBI i CBI. El mateix s'aplica quan es canvia el valor de la unitat (si es configura com a sortida) o s'habilita/desactiva les resistències pull-up (si es configura com a entrada). Cada buffer de sortida té característiques d'unitat simètriques amb una gran capacitat d'aigüe i font. El controlador de pin és prou fort per conduir pantalles LED directament. Tots els pins de port tenen resistències d'extracció seleccionables individualment amb un volum de subministramenttage resistència invariant. Tots els pins d'E/S tenen díodes de protecció tant a VCC com a terra, tal com s'indica a Figura 10-1. Consulteu “Característiques elèctriques” a la pàgina 161 per obtenir una llista completa de paràmetres.

Figura 10-1. Esquema equivalent de pins d'E/S

Fig10

Tots els registres i referències de bits d'aquesta secció s'escriuen de forma general. Una "x" minúscula representa la lletra de numeració del port, i una "n" minúscula representa el número de bits. Tanmateix, quan s'utilitza el registre o la definició de bits en un programa, s'ha d'utilitzar la forma precisa. Per example, PORTB3 per al bit núm. 3 al port B, aquí documentat generalment com a PORTxn. Els registres físics d'E/S i les ubicacions de bits es mostren a "Registrar descripció" activat pàgina 64.

S'assignen tres ubicacions d'adreces de memòria d'E/S per a cada port, una per al registre de dades - PORTx, el registre de direcció de dades - DDRx i els pins d'entrada del port - PINx. La ubicació d'E/S dels pins d'entrada del port és només de lectura, mentre que el registre de dades i el registre de direcció de dades són de lectura/escriptura. Tanmateix, escriure un lògic en un bit al Registre PINx, donarà lloc a una commutació del bit corresponent al Registre de dades. A més, el bit Pull-up Disable - PUD a MCUCR desactiva la funció de pull-up per a tots els pins de tots els ports quan s'estableix.

L'ús del port d'E/S com a E/S digital general es descriu a “Ports com a E/S digital general” a la pàgina 53. La majoria de pins de port es multiplexen amb funcions alternatives per a les funcions perifèriques del dispositiu. Com cada funció alternativa interfereix amb el pin del port es descriu a “Funcions de port alternatives” a la pàgina 57. Consulteu les seccions dels mòduls individuals per obtenir una descripció completa de les funcions alternatives.

Tingueu en compte que habilitar la funció alternativa d'alguns dels pins del port no afecta l'ús dels altres pins del port com a E/S digital general.

Ports com a E/S digital general

Els ports són ports d'E/S bidireccionals amb pull-ups interns opcionals. Figura 10-2 mostra una descripció funcional d'un pin del port d'E/S, aquí anomenat genèricament Pxn.

Figura 10-2. E/S digital general(1)

Fig10

Configuració del Pin

Cada pin de port consta de tres bits de registre: DDxn, PORTxn i PINxn. Com es mostra a "Registrar descripció" activat pàgina 64, s'accedeix als bits DDxn a l'adreça d'E/S DDRx, als bits PORTxn a l'adreça d'E/S PORTx i als bits PINxn a l'adreça d'E/S PINx.

El bit DDxn del registre DDRx selecciona la direcció d'aquest pin. Si DDxn és un lògic escrit, Pxn es configura com a pin de sortida. Si DDxn s'escriu zero lògic, Pxn es configura com a pin d'entrada.

Si PORTxn s'escriu lògic quan el pin està configurat com a pin d'entrada, s'activa la resistència pull-up. Per apagar la resistència pull-up, PORTxn s'ha d'escriure zero lògic o el pin s'ha de configurar com a pin de sortida. Els pins del port s'estableixen en tres estats quan la condició de restabliment s'activa, fins i tot si no hi ha rellotges en funcionament.

Si PORTxn s'escriu com a lògic quan el pin està configurat com a pin de sortida, el pin del port s'impulsa alt (un). Si PORTxn s'escriu com a zero lògic quan el pin es configura com a pin de sortida, el pin del port es baixa (zero).

Commutant el PIN

Si escriu un lògic a PINxn, es canvia el valor de PORTxn, independentment del valor de DDRxn. Tingueu en compte que la instrucció SBI es pot utilitzar per canviar un sol bit en un port.

Canvi entre entrada i sortida

Quan es canvia entre tres estats ({DDxn, PORTxn} = 0b00) i una sortida alta ({DDxn, PORTxn} = 0b11), s'ha de produir un estat intermedi amb pull-up habilitat {DDxn, PORTxn} = 0b01) o una sortida baixa ({DDxn, PORTxn} = 0b.10). Normalment, l'estat activat per pull-up és totalment acceptable, ja que un entorn d'alt impedància no notarà la diferència entre un controlador alt fort i un pull-up. Si no és així, el bit PUD del registre MCUCR es pot configurar per desactivar tots els pull-ups a tots els ports.

Canviar entre entrada amb pull-up i sortida baixa genera el mateix problema. L'usuari ha d'utilitzar l'estat tri-estat ({DDxn, PORTxn} = 0b00) o l'estat alt de sortida ({DDxn, PORTxn} = 0b10) com a pas intermedi.

Taula 10-1 resumeix els senyals de control per al valor del pin.

Taula 10-1. Configuracions del pin del port

DDxn PORTxn PUD

(en MCUCR)

E/S Pull-up Comenta
0 0 X Entrada No Tri-estat (Hi-Z)
0 1 0 Entrada Pxn generarà corrent si ext. tirat baix.
0 1 1 Entrada No Tri-estat (Hi-Z)
1 0 X Sortida No Sortida baixa (aigüera)
1 1 X Sortida No Sortida alta (font)

Lectura del valor del pin

Independentment de la configuració del bit de direcció de dades DDxn, el pin del port es pot llegir a través del bit de registre PINxn. Com es mostra a Figura 10-2, el bit de registre PINxn i el tancament anterior constitueixen un sincronitzador. Això és necessari per evitar la metaestabilitat si el pin físic canvia de valor a prop de la vora del rellotge intern, però també introdueix un retard. Figura 10-3 mostra un diagrama de temps de la sincronització en llegir un valor de pin aplicat externament. Els retards de propagació màxim i mínim es denoten tpd,max i tpd,min respectivament.

Considereu el període de rellotge que comença poc després de la primera vora descendent del rellotge del sistema. El pestell es tanca quan el rellotge és baix i es torna transparent quan el rellotge és alt, tal com indica la regió ombrejada del senyal "SYNC LATCH". El valor del senyal es bloqueja quan el rellotge del sistema baixa. Es registra al registre PINxn al límit del rellotge positiu següent. Tal com indiquen les dues fletxes tpd,max i tpd,min, una transició de senyal única al pin es retardarà entre ½ i 1½ període de rellotge del sistema depenent del moment de l'afirmació.

En tornar a llegir un valor de pin assignat al programari, s'ha d'inserir una instrucció nop tal com s'indica a Figura 10-4. La instrucció de sortida estableix el senyal "SYNC LATCH" al front positiu del rellotge. En aquest cas, el retard tpd a través del sincronitzador és un període de rellotge del sistema.

El següent codi exampel li mostra com configurar els pins del port B 0 i 1 alt, 2 i 3 baix i definir els pins del port del 4 al 5 com a entrada amb un pull-up assignat al pin del port 4. Els valors del pin resultants es tornen a llegir, però com s'ha comentat anteriorment, s'inclou una instrucció nop per poder llegir el valor assignat recentment a alguns dels pins.

Codi de muntatge Example(1)

; Definir pull-ups i establir sortides altes

; Definiu les direccions per als pins del port

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

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

fora PORTB,r16

fora DDRB,r17

; Insereix nop per a la sincronització

nop

; Llegeix els pins del port

a r16, PINB

Nota: Per al programa de muntatge, s'utilitzen dos registres temporals per minimitzar el temps des que s'estableixen pull-ups als pins 0, 1 i 4, fins que els bits de direcció s'estableixin correctament, definint els bits 2 i 3 com a baix i redefinint els bits 0 i 1 com a controladors alts forts.

Codi C Example
char i sense signar;

/* Definir pull-ups i establir sortides altes */

/* Definir direccions per als pins del port */ PORTB = (1<

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

/* Insereix nop per a la sincronització*/

_NOP();

/* Llegir els pins del port */ i = PINB;

Modes d'activació d'entrada digital i repòs

Com es mostra a Figura 10-2, el senyal d'entrada digital pot ser clamped a terra a l'entrada del disparador Schmitt. El senyal indicat SLEEP a la figura l'estableix el controlador de son MCU en mode d'apagada per evitar un consum elevat d'energia si alguns senyals d'entrada es deixen flotant o tenen un nivell de senyal analògic proper a VCC/2.

SLEEP està anul·lat per als pins de port habilitats com a pins d'interrupció externs. Si la sol·licitud d'interrupció externa no està habilitada, SLEEP també està actiu per a aquests pins. SLEEP també està anul·lat per diverses altres funcions alternatives tal com es descriu a “Funcions de port alternatives” a la pàgina 57.

Si hi ha un nivell lògic alt ("un") en un pin d'interrupció extern asíncron configurat com a "Interrupció al marge ascendent, al front descendent o qualsevol canvi lògic al pin" mentre la interrupció externa no està habilitada, s'establirà la bandera d'interrupció externa corresponent quan es reprèn des del mode de repòs esmentat anteriorment, ja que el clampEn aquest mode de repòs es produeix el canvi lògic sol·licitat.

Pins sense connexió

Si algunes agulles no s'utilitzen, es recomana assegurar-se que aquestes agulles tenen un nivell definit. Tot i que la majoria de les entrades digitals estan desactivades en els modes de repòs profund tal com es descriu anteriorment, s'han d'evitar les entrades flotants per reduir el consum de corrent en tots els altres modes on les entrades digitals estan habilitades (Reinicialització, Mode actiu i Mode inactiu).

El mètode més senzill per assegurar un nivell definit d'un pin no utilitzat és habilitar el pull-up intern. En aquest cas, el pull-up es desactivarà durant el restabliment. Si és important un baix consum d'energia durant el restabliment, es recomana utilitzar un pull-up o pulldown extern. No es recomana connectar els pins no utilitzats directament a VCC o GND, ja que això pot provocar corrents excessives si el pin es configura accidentalment com a sortida.

Funcions alternatives del port

La majoria de pins de port tenen funcions alternatives a més de ser E/S digitals generals. Figura 10-5 mostra com els senyals de control del pin del port des del simplificat Figura 10-2 es pot substituir per funcions alternatives. És possible que els senyals d'anul·lació no estiguin presents a tots els pins del port, però la figura serveix com a descripció genèrica aplicable a tots els pins del port de la família de microcontroladors AVR.

Taula 10-2. Descripció genèrica de senyals d'anul·lació per a funcions alternatives

Nom del senyal Nom complet Descripció
PUOE Activació d'anul·lació pull-up Si s'estableix aquest senyal, l'habilitat de pull-up està controlat pel senyal PUOV. Si aquest senyal s'esborra, el pull-up s'habilitarà quan

{DDxn, PORTxn, PUD} = 0b010.

PUOV Valor d'anul·lació de pull-up Si s'estableix PUOE, el pull-up s'habilita/desactiva quan s'estableix/esborra PUOV, independentment de la configuració dels bits de registre DDxn, PORTxn i PUD.
DDOE Activació de la substitució de la direcció de dades Si s'estableix aquest senyal, l'habilitat del controlador de sortida està controlat pel senyal DDOV. Si s'esborra aquest senyal, el bit de registre DDxn activa el controlador de sortida.
DDOV Valor de substitució de la direcció de les dades Si s'estableix DDOE, el controlador de sortida s'habilita/desactiva quan s'estableix/esborra DDOV, independentment de la configuració del bit de registre DDxn.
PVOE Habilita la substitució del valor del port Si s'estableix aquest senyal i el controlador de sortida està habilitat, el valor del port està controlat pel senyal PVOV. Si s'esborra PVOE i el controlador de sortida està habilitat, el valor del port està controlat pel bit de registre PORTxn.
PVOV Valor de substitució del valor del port Si s'estableix PVOE, el valor del port s'estableix en PVOV, independentment de la configuració del bit de registre PORTxn.
PTOE Habilita la substitució de commutació de port Si s'estableix PTOE, el bit de registre PORTxn s'inverteix.
DIEOE Activació d'entrada digital Activació de substitució Si s'estableix aquest bit, l'habilitat d'entrada digital està controlat pel senyal DIEOV. Si s'esborra aquest senyal, l'habilitat d'entrada digital es determina per l'estat de la MCU (mode normal, mode de repòs).
DIEOV Valor de substitució d'habilitat d'entrada digital Si s'estableix DIEOE, l'entrada digital s'habilita/desactiva quan s'estableix/esborra DIEOV, independentment de l'estat de l'MCU (mode normal, mode de repòs).
DI Entrada digital Aquesta és l'entrada digital per alternar funcions. A la figura, el senyal està connectat a la sortida del disparador schmitt però abans del sincronitzador. A menys que l'entrada digital s'utilitzi com a font de rellotge, el mòdul amb la funció alternativa utilitzarà el seu propi sincronitzador.
AIO Entrada / sortida analògica Aquesta és l'entrada/sortida analògica a/des de funcions alternatives. El senyal està connectat directament al pad i es pot utilitzar de manera bidireccional.

Les subseccions següents descriuen breument les funcions alternatives per a cada port i relacionen els senyals d'anul·lació amb la funció alternativa. Consulteu la descripció de la funció alternativa per obtenir més detalls.

Funcions alternatives del port B

Els pins del port B amb funció alternativa es mostren a Taula 10-3.

Taula 10-3. Pins del port B Funcions alternatives

Pin del Port Funció alternativa
PB5

RESET: Restableix el PIN

dW: debugWIRE I/O ADC0: Canal d'entrada ADC 0

PCINT5: interrupció de canvi de pin, font 5

PB4 XTAL2: Sortida d'oscil·lador de cristall CLKO: Sortida de rellotge del sistema ADC2: Canal d'entrada ADC 2

OC1B: temporitzador/comptador1 comparació de la sortida B PCINT4: interrupció de canvi de pin 0, font 4

PB3 XTAL1: Entrada d'oscil·lador de cristall CLKI: Entrada de rellotge externa ADC3: Canal d'entrada ADC 3

OC1B: temporitzador/comptador complementari 1 Comparació de la sortida B PCINT3: interrupció de canvi de pin 0, font 3

PB2 SCK: Entrada de rellotge sèrie ADC1: Canal d'entrada ADC 1

T0: Font del rellotge del temporitzador/comptador0 USCK: Rellotge USI (mode de tres fils) SCL: rellotge USI (mode de dos fils) INT0: interrupció externa 0 Entrada PCINT2: interrupció de canvi de pin 0, font 2

PB1 MISO: entrada de dades mestres SPI / sortida de dades esclau AIN1: comparador analògic, entrada negativa OC0B: temporitzador/comptador0 comparació de la sortida B OC1A: temporitzador/comptador1 comparació de la sortida A DO: sortida de dades USI (mode de tres fils) PCINT1: interrupció de canvi de pin 0, font 1
PB0 MOSI:: Sortida de dades mestres SPI / Entrada de dades esclau AIN0: Comparador analògic, entrada positiva

OC0A: Temporitzador/Comptador0 Compara la sortida A

OC1A: temporitzador/comptador complementari 1 Comparació de la sortida A DI: entrada de dades USI (mode de tres fils)

SDA: entrada de dades USI (mode de dos fils) AREF: referència analògica externa PCINT0: interrupció de canvi de pin 0, font 0

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

RESET: L'entrada de restabliment extern està activament baixa i s'habilita desprogramant ("1") el fusible RSTDISBL. Pullup s'activa i el controlador de sortida i l'entrada digital es desactiven quan el pin s'utilitza com a pin RESET.

dW: quan es programa el fusible debugWIRE Enable (DWEN) i els bits de bloqueig no estan programats, s'activa el sistema debugWIRE dins del dispositiu objectiu. El pin del port RESET es configura com un pin d'E/S bidireccional de cable I (drenatge obert) amb pull-up habilitat i es converteix en la passarel·la de comunicació entre l'objectiu i l'emulador.

ADC0: convertidor analògic a digital, canal 0.

PCINT5: Font d'interrupció de canvi de pin 5.

Port B, bit 4: XTAL2/CLKO/ADC2/OC1B/PCINT4

XTAL2: Pin 2 de l'oscil·lador del rellotge del xip. S'utilitza com a pin del rellotge per a totes les fonts del rellotge del xip, excepte l'oscil·lador RC calibrable intern i el rellotge extern. Quan s'utilitza com a pin de rellotge, el pin no es pot utilitzar com a pin d'E/S. Quan s'utilitza un oscil·lador RC calibrable intern o un rellotge extern com a fonts de rellotge de xip, PB4 serveix com a pin d'E/S normal.

CLKO: el rellotge del sistema dividit es pot sortir al pin PB4. El rellotge del sistema dividit sortirà si es programa el fusible CKOUT, independentment de la configuració de PORTB4 i DDB4. També sortirà durant el reinici.

ADC2: convertidor analògic a digital, canal 2.

OC1B: Sortida Compare Match Output: El pin PB4 pot servir com a sortida externa per al Timer/Counter1 Compare Match B quan es configura com a sortida (conjunt DDB4). El pin OC1B també és el pin de sortida per a la funció de temporitzador en mode PWM.

PCINT4: Font d'interrupció de canvi de pin 4.

Port B, bit 3: XTAL1/CLKI/ADC3/OC1B/PCINT3

XTAL1: Pin 1 de l'oscil·lador del rellotge del xip. S'utilitza per a totes les fonts del rellotge del xip, excepte l'oscil·lador RC calibrable intern. Quan s'utilitza com a pin de rellotge, el pin no es pot utilitzar com a pin d'E/S.

CLKI: Entrada de rellotge des d'una font de rellotge externa, vegeu “Rellotge extern” a la pàgina 26.

ADC3: convertidor analògic a digital, canal 3.

OC1B: Sortida invertida Compare Match Sortida: El pin PB3 pot servir com a sortida externa per al Timer/Counter1 Compare Match B quan es configura com a sortida (conjunt DDB3). El pin OC1B també és el pin de sortida invertit per a la funció de temporitzador en mode PWM.

PCINT3: Font d'interrupció de canvi de pin 3.

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

SCK: sortida de rellotge mestre, pin d'entrada de rellotge esclau per al canal SPI. Quan l'SPI està habilitat com a esclau, aquest pin es configura com a entrada independentment de la configuració de DDB2. Quan l'SPI està habilitat com a mestre, la direcció de dades d'aquest pin està controlada per DDPB2. Quan el pin és forçat per l'SPI a ser una entrada, el pull-up encara es pot controlar amb el bit PORTB2.

ADC1: convertidor analògic a digital, canal 1.

T0: font del comptador del temporitzador/comptador0.

USCK: Rellotge d'interfície sèrie universal en mode de tres fils.

SCL: Rellotge sèrie en mode de dos cables per a mode de dos fils USI.

INT0: font d'interrupció externa 0.

PCINT2: Font d'interrupció de canvi de pin 2.

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

MISO: entrada de dades mestres, pin de sortida de dades esclau per al canal SPI. Quan l'SPI està habilitat com a mestre, aquest pin es configura com a entrada independentment de la configuració de DDB1. Quan l'SPI està habilitat com a esclau, la direcció de dades d'aquest pin està controlada per DDB1. Quan el pin és forçat per l'SPI a ser una entrada, el pull-up encara es pot controlar amb el bit PORTB1.

AIN1: Entrada negativa del comparador analògic. Configureu el pin del port com a entrada amb el pull-up intern apagat per evitar que la funció del port digital interfereixi amb la funció del comparador analògic.

OC0B: Sortida Compare Match output. El pin PB1 pot servir com a sortida externa per al Timer/Counter0 Compare Match B. El pin PB1 s'ha de configurar com a sortida (conjunt DDB1 (un)) per servir aquesta funció. El pin OC0B també és el pin de sortida per a la funció de temporitzador en mode PWM.

OC1A: Sortida Compare Match Sortida: El pin PB1 pot servir com a sortida externa per al Timer/Counter1 Compare Match B quan es configura com a sortida (conjunt DDB1). El pin OC1A també és el pin de sortida per a la funció de temporitzador en mode PWM.

DO: Sortida de dades de la interfície sèrie universal en mode de tres cables. Mode de tres cables La sortida de dades anul·la el valor PORTB1 i es dirigeix ​​al port quan s'estableix el bit de direcció de dades DDB1 (un). PORTB1 encara activa el pull-up, si s'introdueix la direcció i PORTB1 està configurat (un).

PCINT1: Font d'interrupció de canvi de pin 1.

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

MOSI: sortida de dades mestres SPI, entrada de dades esclau per al canal SPI. Quan l'SPI està habilitat com a esclau, aquest pin es configura com a entrada independentment de la configuració de DDB0. Quan l'SPI està habilitat com a mestre, la direcció de dades d'aquest pin està controlada per DDB0. Quan el pin és forçat per l'SPI a ser una entrada, el pull-up encara es pot controlar amb el bit PORTB0.

AIN0: Entrada positiva del comparador analògic. Configureu el pin del port com a entrada amb el pull-up intern apagat per evitar que la funció del port digital interfereixi amb la funció del comparador analògic.

OC0A: Sortida Compare Match output. El pin PB0 pot servir com a sortida externa per al Timer/Counter0 Compare Match A quan es configura com a sortida (conjunt DDB0 (un)). El pin OC0A també és el pin de sortida per a la funció de temporitzador en mode PWM.

OC1A: Sortida invertida Compare Match: el pin PB0 pot servir com a sortida externa per al Timer/Counter1 Compare Match B quan es configura com a sortida (conjunt DDB0). El pin OC1A també és el pin de sortida invertit per a la funció de temporitzador en mode PWM.

SDA: Dades de la interfície sèrie en mode de dos cables.

AREF: Referència analògica externa per a ADC. Pullup i controlador de sortida estan desactivats a PB0 quan el pin s'utilitza com a referència externa o Vol interntage Referència amb condensador extern al pin AREF.

DI: Entrada de dades en mode USI de tres fils. El mode de tres cables USI no anul·la les funcions normals del port, de manera que el pin s'ha de configurar com a entrada per a la funció DI.

PCINT0: Font d'interrupció de canvi de pin 0.

Taula 10-4 Taula 10-5 Relacioneu les funcions alternatives del port B amb els senyals d'anul·lació que es mostren a Figura 10-5 a continuació pàgina 58.

Taula 10-4. Anul·lació de senyals per a funcions alternatives en PB[5:3]

Nom del senyal PB5/RESET/ADC0/PCINT5 PB4/ADC2/XTAL2/ OC1B/PCINT4 PB3/ADC3/XTAL1/ OC1B/PCINT3
PUOE

RSTDISBL(1) • DWEN(1)

0 0
PUOV 1 0 0
DDOE RSTDISBL(1) • DWEN(1) 0 0
DDOV debugWire Transmissió 0 0
PVOE 0 Habilitació d'OC1B

Habilitació d'OC1B

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 Entrada PCINT5 Entrada PCINT4 Entrada PCINT3
AIO Entrada de RESET, entrada ADC0 Entrada ADC2 Entrada ADC3

Nota: quan el fusible és "0" (programat).

Taula 10-5. Anul·lació de senyals per a funcions alternatives en PB[2:0]

Nom del senyal 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_DOS_CABLES 0 USI_DOS_CABLES
PUOV 0 0 0
DDOE USI_DOS_CABLES 0 USI_DOS_CABLES
DDOV (USI_SCL_HOLD + PORTB2) • DDB2 0  

(SDA + PORTB0) • DDB0

PVOE USI_DOS_CABLES • DDB2 OC0B Habilita + OC1A Habilita + USI_THREE_WIRE

OC0A Habilita + OC1A Habilita + (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/

Entrada PCINT2

Entrada PCINT1 Entrada DI/SDA/PCINT0
AIO Entrada ADC1 Entrada negativa del comparador analògic Entrada positiva del comparador analògic

Descripció del registre

MCUCR - Registre de control MCU

Bit 7 6 5 4 3 2 1 0
0 x 35 BODS PUD SE SM1 SM0 BODSE ISC01 ISC00 MCUCR
Llegir/Escriure R R/W R/W R/W R/W R R/W R/W
Valor inicial 0 0 0 0 0 0 0 0

Bit 6 – PUD: Desactivació de la tracció amunt

Quan aquest bit s'escriu a u, els pull-ups als ports d'E/S es desactiven fins i tot si els registres DDxn i PORTxn estan configurats per habilitar els pull-ups ({DDxn, PORTxn} = 0b01). Vegeu “Configuració del PIN” a la pàgina 54 per obtenir més detalls sobre aquesta funció.

PORTB – Registre de dades del port B

Bit 7 6 5 4 3 2 1 0
0 x 18 PORTB5 PORTB4 PORTB3 PORTB2 PORTB1 PORTB0 PORTB
Llegir/Escriure R R R/W R/W R/W R/W R/W R/W
Valor inicial 0 0 0 0 0 0 0 0

DDRB – Registre de direcció de dades del port B

Bit 7 6 5 4 3 2 1 0
0 x 17 DDB5 DDB4 DDB3 DDB2 DDB1 DDB0 DDRB
Llegir/Escriure R R R/W R/W R/W R/W R/W R/W
Valor inicial 0 0 0 0 0 0 0 0

PINB – Adreça dels pins d'entrada del port B

Bit 7 6 5 4 3 2 1 0
0 x 16 PINB5 PINB4 PINB3 PINB2 PINB1 PINB0 PINB
Llegir/Escriure R R R/W R/W R/W R/W R/W R/W
Valor inicial 0 0 N/A N/A N/A N/A N/A N/A

Temporitzador/Comptador de 8 bits amb PWM

Característiques

Dues unitats de comparació de sortida independents

Registres de comparació de sortida amb doble memòria intermèdia

Esborra el temporitzador en Comparar coincidències (Recàrrega automàtica)

Modulador d'amplada de pols (PWM) de fase correcta i sense errors

Període PWM variable

Generador de freqüències

Tres fonts d'interrupció independents (TOV0, OCF0A i OCF0B)

Acabatview

Timer/Counter0 és un mòdul temporitzador/comptador de 8 bits d'ús general, amb dues unitats de comparació de sortida independents i amb suport PWM. Permet una sincronització precisa de l'execució del programa (gestió d'esdeveniments) i la generació d'ones.

Un diagrama de blocs simplificat del temporitzador/comptador de 8 bits es mostra a Figura 11-1Per a la col·locació real dels pins d'E/S, consulteu “Configuració de pins ATtiny25/45/85” a la pàgina 2Els registres d'E/S accessibles per la CPU, inclosos els bits d'E/S i els pins d'E/S, es mostren en negreta. El registre d'E/S i les ubicacions dels bits específics del dispositiu es mostren a la “Descripció del registre” a la pàgina 77.

Els registres de temporitzador/comptador (TCNT0) i de comparació de sortida (OCR0A i OCR0B) són registres de 8 bits. Els senyals de sol·licitud d'interrupció (abreujat com a Int.Req. a la figura) són tots visibles al registre de senyals d'interrupció del temporitzador (TIFR). Totes les interrupcions estan emmascarades individualment amb el registre de màscara d'interrupció del temporitzador (TIMSK). TIFR i TIMSK no es mostren a la figura.

El temporitzador/comptador es pot sincronitzar internament, a través del preescalador o mitjançant una font de rellotge externa al pin T0. El bloc lògic de selecció de rellotge controla quina font de rellotge i flanc utilitza el temporitzador/comptador per incrementar (o decrementar) el seu valor. El temporitzador/comptador està inactiu quan no es selecciona cap font de rellotge. La sortida de la lògica de selecció de rellotge es coneix com a rellotge del temporitzador (clkT0).

Els registres de comparació de sortida amb doble memòria intermèdia (OCR0A i OCR0B) es comparen amb el valor del temporitzador/comptador en tot moment. El resultat de la comparació pot ser utilitzat pel generador de formes d'ona per generar una sortida PWM o de freqüència variable als pins de comparació de sortida (OC0A i OC0B). Vegeu “Unitat de comparació de sortida” a la pàgina 69. per a més detalls. L'esdeveniment Compare Match també establirà el senyalador de comparació (OCF0A o OCF0B), que es pot utilitzar per generar una sol·licitud d'interrupció de comparació de sortida.

Definicions

Moltes referències de registres i bits en aquesta secció s'escriuen en forma general. Una "n" minúscula substitueix el número del temporitzador/comptador, en aquest cas 0. Una "x" minúscula substitueix la unitat de comparació de sortida, en aquest cas la unitat de comparació A o la unitat de comparació B. Tanmateix, quan s'utilitzen les definicions de registre o bit en un programa, s'ha d'utilitzar la forma precisa, és a dir, TCNT0 per accedir al valor del comptador del temporitzador/comptador0, etc.

Les definicions en Taula 11-1 també s'utilitzen àmpliament al llarg del document.

Taula 11-1. Definicions

Constant Descripció
INFERIOR El comptador arriba al PART INDERIOR quan esdevé 0x00
MAX El comptador arriba al seu MÀXIM quan esdevé 0xFF (decimal 255)
TOP El comptador arriba al TOP quan esdevé igual al valor més alt de la seqüència de recompte. El valor TOP es pot assignar com a valor fix 0xFF (MAX) o com a valor emmagatzemat al registre OCR0A. L'assignació depèn del mode de funcionament.

Preescalador de temporitzador/comptador i fonts de rellotge

El temporitzador/comptador pot ser sincronitzat per una font de rellotge interna o externa. La font del rellotge es selecciona mitjançant la lògica de selecció de rellotge, que es controla mitjançant els bits de selecció de rellotge (c) situats al registre de control del temporitzador/comptador0 (TCCR0B).

Font de rellotge interna amb prescalador

El temporitzador/comptador0 pot ser sincronitzat directament pel rellotge del sistema (estableint CS0[2:0] = 1). Això proporciona el funcionament més ràpid, amb una freqüència màxima de rellotge del temporitzador/comptador igual a la freqüència del rellotge del sistema (fCLK_I/O). Alternativament, es pot utilitzar un dels quatre taps del preescalador com a font de rellotge. El rellotge preescalat té una freqüència de

Restabliment del prescalador

El preescalador funciona de manera lliure, és a dir, funciona independentment de la lògica de selecció de rellotge del temporitzador/comptador0. Com que el preescalador no es veu afectat per la selecció de rellotge del temporitzador/comptador, l'estat del preescalador tindrà implicacions per a situacions en què s'utilitza un rellotge preescalat. Un exempleampEl primer artefacte de preescalat és quan el temporitzador/comptador està habilitat i sincronitzat pel preescalador (6 > CS0[2:0] > 1). El nombre de cicles de rellotge del sistema des que el temporitzador està habilitat fins que es produeix el primer recompte pot ser d'1 a N+1 cicles de rellotge del sistema, on N és igual al divisor del preescalador (8, 64, 256 o 1024).

És possible utilitzar el reinici del prescalador per sincronitzar el temporitzador/comptador amb l'execució del programa.

Font del rellotge extern

Una font de rellotge externa aplicada al pin T0 es pot utilitzar com a temporitzador/comptador (clkT0). El pin T0 és sampconduït un cop cada cicle de rellotge del sistema per la lògica de sincronització de pins. El sincronitzat (sampel senyal led) es passa

a través del detector de vores. Figura 11-2 mostra un diagrama de blocs funcional equivalent de la sincronització T0 i la lògica del detector de flancs. Els registres es sincronitzen al flanc positiu del rellotge intern del sistema (clkI/O). El latch és transparent en el període alt del rellotge intern del sistema.

El detector de vores genera un pols clkT0 per cada vora positiva (CS0[2:0] = 7) o negativa (CS0[2:0] = 6) que detecta.

Els registres OCR0x tenen una doble memòria intermèdia quan s'utilitza qualsevol dels modes de modulació d'amplada de pols (PWM). Per als modes de funcionament normal i Clear Timer on Compare (CTC), la doble memòria intermèdia està desactivada. La doble memòria intermèdia sincronitza l'actualització dels registres de comparació OCR0x a la part superior o inferior de la seqüència de recompte. La sincronització evita l'aparició de polsos PWM no simètrics i de longitud imparell, fent així que la sortida no tingui errors.

L'accés al registre OCR0x pot semblar complex, però no és així. Quan el doble buffering està habilitat, la CPU té accés al registre de buffer OCR0x, i si el doble buffering està desactivat, la CPU accedirà directament a l'OCR0x.

Comparació de la sortida de força

En els modes de generació de formes d'ona que no són PWM, la sortida de coincidència del comparador es pot forçar escrivint un u al bit Forçar la comparació de sortida (FOC0x). Forçar la coincidència de comparació no establirà el senyalador OCF0x ni recarregarà/esborrarà el temporitzador, però el pin OC0x s'actualitzarà com si s'hagués produït una coincidència de comparació real (la configuració dels bits COM0x[1:0] defineix si el pin OC0x està establert, esborrat o commutat).

Compara el bloqueig de coincidències per escriptura TCNT0

Totes les operacions d'escriptura de la CPU al registre TCNT0 bloquejaran qualsevol coincidència de comparació que es produeixi en el següent cicle de rellotge del temporitzador, fins i tot quan el temporitzador estigui aturat. Aquesta característica permet inicialitzar OCR0x al mateix valor que TCNT0 sense desencadenar una interrupció quan el rellotge del temporitzador/comptador està habilitat.

Ús de la unitat de comparació de sortida

Com que escriure TCNT0 en qualsevol mode d'operació bloquejarà totes les coincidències de comparació durant un cicle de rellotge del temporitzador, hi ha riscos quan es canvia TCNT0 quan s'utilitza la unitat de comparació de sortida, independentment de si el temporitzador/comptador està en funcionament o no. Si el valor escrit a TCNT0 és igual al valor OCR0x, la coincidència de comparació es perdrà, cosa que provocarà una generació incorrecta de forma d'ona. De la mateixa manera, no escriviu el valor TCNT0 igual a BOTTOM quan el comptador estigui comptant en descens.

La configuració de l'OC0x s'ha de dur a terme abans de definir el registre de direcció de dades perquè el pin del port doni sortida. La manera més fàcil de definir el valor de l'OC0x és utilitzar els bits estroboscòpics de comparació de força de sortida (FOC0x) en mode normal. Els registres OC0x mantenen els seus valors fins i tot quan es canvia entre els modes de generació de formes d'ona.

Tingueu en compte que els bits COM0x[1:0] no s'emmagatzemen dues vegades en memòria intermèdia juntament amb el valor de comparació. Canviar els bits COM0x[1:0] tindrà efecte immediatament.

Comparar la unitat de sortida de coincidència

Els bits del mode de sortida de comparació (COM0x[1:0]) tenen dues funcions. El generador de formes d'ona utilitza els bits COM0x[1:0] per definir l'estat de comparació de sortida (OC0x) a la següent coincidència de comparació. A més, els bits COM0x[1:0] controlen la font de sortida del pin OC0x. Figura 11-6 mostra un esquema simplificat de la lògica afectada per la configuració del bit COM0x[1:0]. Els registres d'E/S, els bits d'E/S i els pins d'E/S de la figura es mostren en negreta. Només es mostren les parts dels registres de control de ports d'E/S generals (DDR i PORT) que es veuen afectades pels bits COM0x[1:0]. Quan es fa referència a l'estat OC0x, la referència és per al registre OC0x intern, no per al pin OC0x. Si es produeix un reinici del sistema, el registre OC0x es reinicia a "0".

Quan OC0A/OC0B està connectat al pin d'E/S, la funció dels bits COM0A[1:0]/COM0B[1:0] depèn de la configuració del bit WGM0[2:0]. Taula 11-2 mostra la funcionalitat del bit COM0x[1:0] quan els bits WGM0[2:0] estan definits com a mode normal o CTC (sense PWM).

Taula 11-2. Comparació entre el mode de sortida i el mode sense PWM

COM0A1 COM0B1 COM0A0 COM0B0 Descripció
0 0 Funcionament normal del port, OC0A/OC0B desconnectat.
0 1 Activa/desactiva OC0A/OC0B a Comparar coincidències
1 0 Esborra OC0A/OC0B a la comparació de coincidències
1 1 Estableix OC0A/OC0B a Comparació de coincidències

Taula 11-3 mostra la funcionalitat del bit COM0x[1:0] quan els bits WGM0[2:0] estan configurats en mode PWM ràpid.

Taula 11-3. Comparació entre el mode de sortida i el mode PWM ràpid(1)

COM0A1 COM0B1 COM0A0 COM0B0 Descripció
0 0 Funcionament normal del port, OC0A/OC0B desconnectat.
0 1 Reservat
1 0 Esborra OC0A/OC0B a Comparació de coincidències, estableix OC0A/OC0B a la part INFERIOR (mode sense inversió)
1 1 Estableix OC0A/OC0B a Comparació de coincidències, esborra OC0A/OC0B a la part INFERIOR (mode d'inversió)

Nota: Es produeix un cas especial quan OCR0A o OCR0B és igual a TOP i COM0A1/COM0B1 està definit. En aquest cas, la coincidència de comparació s'ignora, però el paràmetre definit o esborrat es fa a BOTTOM. Vegeu “Mode PWM ràpid” a la pàgina 73 per a més detalls.

Taula 11-4 mostra la funcionalitat del bit COM0x[1:0] quan els bits WGM0[2:0] estan configurats al mode PWM de fase correcta.

Taula 11-4. Comparació del mode de sortida, mode PWM de fase correcta(1)

COM0A1 COM0B1 COM0A0 COM0B0 Descripció
0 0 Funcionament normal del port, OC0A/OC0B desconnectat.
0 1 Reservat
1 0 Esborra OC0A/OC0B a Comparació de coincidències quan es compta cap amunt. Estableix OC0A/OC0B a Comparació de coincidències quan es compta cap avall.
1 1 Estableix OC0A/OC0B a Comparar coincidència quan es compta cap amunt. Esborra OC0A/OC0B a Comparar coincidència quan es compta cap avall.

Nota: 1. Es produeix un cas especial quan OCR0A o OCR0B és igual a TOP i COM0A1/COM0B1 està definit. En aquest cas, la comparació de coincidències s'ignora, però el paràmetre es configura o s'esborra a TOP. Vegeu “Mode PWM de correcció de fase” a la pàgina 74 per a més detalls.

Bits 3:2 - Res: Bits reservats

Aquests bits són bits reservats a l'ATtiny25/45/85 i sempre es llegiran com a zero.

Bits 1:0 – WGM0[1:0]: Mode de generació de formes d'ona

Combinats amb el bit WGM02 que es troba al registre TCCR0B, aquests bits controlen la seqüència de recompte del comptador, la font del valor màxim (TOP) del comptador i quin tipus de generació de forma d'ona s'ha d'utilitzar, vegeu Taula 11-5Els modes de funcionament compatibles amb la unitat temporitzador/comptador són: mode normal (comptador), mode d'esborrat del temporitzador en comparació (CTC) i dos tipus de modes de modulació d'amplada de pols (PWM) (vegeu "Modes de funcionament" a la pàgina 71).

Taula 11-5. Descripció del bit del mode de generació de formes d'ona

Mode WGM 02 WGM 01 WGM 00 Mode de funcionament del temporitzador/comptador TOP Actualització d'OCRx a Bandera TOV activada
0 0 0 0 Normal 0xFF Immediatament MAX(1)
1 0 0 1 PWM, correcció de fase 0xFF TOP INFERIOR(2)
2 0 1 0 CTC OCRA Immediatament MAX(1)
3 0 1 1 PWM ràpid 0xFF INFERIOR(2) MAX(1)
4 1 0 0 Reservat
5 1 0 1 PWM, correcció de fase OCRA TOP INFERIOR(2)
6 1 1 0 Reservat
7 1 1 1 PWM ràpid OCRA INFERIOR(2) TOP

Bit 7 – FOC0A: Comparació de sortida forçada A

El bit FOC0A només està actiu quan els bits WGM especifiquen un mode que no és PWM.

Tanmateix, per garantir la compatibilitat amb futurs dispositius, aquest bit s'ha de posar a zero quan s'escriu TCCR0B en mode PWM. Quan s'escriu un bit lògic al bit FOC0A, es força una comparació immediata a la unitat de generació de formes d'ona. La sortida OC0A canvia segons la configuració dels bits COM0A[1:0]. Cal tenir en compte que el bit FOC0A s'implementa com a estroboscòpic. Per tant, és el valor present als bits COM0A[1:0] el que determina l'efecte de la comparació forçada.

Un estroboscopi FOC0A no generarà cap interrupció, ni tampoc esborrarà el temporitzador en mode CTC utilitzant OCR0A com a TOP. El bit FOC0A sempre es llegeix com a zero.

Bit 6 – FOC0B: Força la comparació de sortida B

El bit FOC0B només està actiu quan els bits WGM especifiquen un mode que no és PWM.

Tanmateix, per garantir la compatibilitat amb futurs dispositius, aquest bit s'ha de posar a zero quan s'escriu TCCR0B quan s'opera en mode PWM. Quan s'escriu un u lògic al bit FOC0B, es força una coincidència de comparació immediata a la unitat de generació de formes d'ona. La sortida OC0B es canvia segons la configuració dels bits COM0B[1:0]. Cal tenir en compte que el bit FOC0B s'implementa com a estroboscòpic. Per tant, és el valor present als bits COM0B[1:0] el que determina l'efecte de la comparació forçada.

Un estroboscopi FOC0B no generarà cap interrupció, ni esborrarà el temporitzador en mode CTC utilitzant OCR0B com a TOP.

El bit FOC0B sempre es llegeix com a zero.

Bits 5:4 - Res: Bits reservats

Aquests bits són bits reservats a l'ATtiny25/45/85 i sempre es llegiran com a zero.

Bit 3 – WGM02: Mode de generació de formes d'ona

Vegeu la descripció a la “TCCR0A – Registre de control del temporitzador/comptador A” a la pàgina 77.

Bits 2:0 – CS0[2:0]: Selecció de rellotge

Els tres bits de selecció de rellotge seleccionen la font de rellotge que utilitzarà el temporitzador/comptador.

Taula 11-6. Descripció del bit de selecció de rellotge

CS02 CS01 CS00 Descripció
0 0 0 Sense font de rellotge (temporitzador/comptador aturat)
0 0 1 clkI/O/(Sense preescalat)
0 1 0 clkI/O/8 (del preescalador)
0 1 1 clkI/O/64 (del preescalador)
1 0 0 clkI/O/256 (del preescalador)
1 0 1 clkI/O/1024 (del preescalador)
1 1 0 Font de rellotge externa al pin T0. Rellotge en flanc de baixada.
1 1 1 Font de rellotge externa al pin T0. Rellotge en flanc de pujada.

Si s'utilitzen modes de pin externs per al Timer/Counter0, les transicions al pin T0 marcaran el comptador fins i tot si el pin està configurat com a sortida. Aquesta característica permet el control per programari del recompte.

Comptar i comparar unitats

El funcionament general del Temporitzador/Comptador1 es descriu en el mode asíncron i el funcionament en el mode síncron només s'esmenta si hi ha diferències entre aquests dos modes. Figura 12-2 mostra el diagrama de blocs del registre de sincronització del temporitzador/comptador 1 i els retards de sincronització entre registres. Tingueu en compte que no es mostren tots els detalls de la porta de rellotge a la figura. Els valors del registre del temporitzador/comptador1 passen pels registres de sincronització interns, que provoquen el retard de sincronització d'entrada, abans d'afectar el funcionament del comptador. Els registres TCCR1, GTCCR, OCR1A, OCR1B i OCR1C es poden tornar a llegir just després d'escriure el registre. Els valors de lectura es retarden per al registre del temporitzador/comptador1 (TCNT1) i els indicadors (OCF1A, OCF1B i TOV1), a causa de la sincronització d'entrada i sortida.

El Temporitzador/Comptador1 presenta una alta resolució i un ús d'alta precisió amb les oportunitats de preescalat més baixes. També pot admetre dos Moduladors d'Ample de Pols de 8 bits precisos i d'alta velocitat que utilitzen velocitats de rellotge de fins a 64 MHz (o 32 MHz en mode de baixa velocitat). En aquest mode, el Temporitzador/Comptador1 i els registres de comparació de sortida serveixen com a PWM autònoms duals amb sortides no superposades, invertides i no invertides. Consulteu pàgina 86 per a una descripció detallada d'aquesta funció. De la mateixa manera, les altes oportunitats de preescalat fan que aquesta unitat sigui útil per a funcions de baixa velocitat o funcions de sincronització exacta amb accions poc freqüents.

Figura 12-2. Diagrama de blocs del registre de sincronització del temporitzador/comptador 1.

El temporitzador/comptador1 i el preescalador permeten executar la CPU des de qualsevol font de rellotge mentre el preescalador funciona amb el rellotge PCK ràpid de 64 MHz (o 32 MHz en mode de baixa velocitat) en mode asíncron.

Tingueu en compte que la freqüència del rellotge del sistema ha de ser inferior a un terç de la freqüència del PCK. El mecanisme de sincronització del temporitzador/comptador asíncron 1 necessita almenys dos flancs del PCK quan el rellotge del sistema és alt. Si la freqüència del rellotge del sistema és massa alta, hi ha el risc que es perdin dades o valors de control.

El següent Figura 12-3 mostra el diagrama de blocs del Temporitzador/Comptador1.

Taula 12-1. Selecció de mode de comparació en mode PWM

COM1x1 COM1x0 Efecte en la sortida Comparar pins
0 0 OC1x no connectat. OC1x no connectat.
0 1 OC1x aclarit en la comparació de coincidències. Establert quan TCNT1 = $00. OC1x establert en la comparació de coincidències. Aclarit quan TCNT1 = $00.
1 0 OC1x esborrat en la comparació de coincidències. S'estableix quan TCNT1 = $00. OC1x no està connectat.
1 1 OC1x Establert en comparació de coincidències. Esborrat quan TCNT1 = $00. OC1x no connectat.

Característiques de l'ADC

Taula 21-8. Característiques de l'ADC, canals d'un sol extrem. TA = -40 °C a +85 °C

Símbol Paràmetre Condició Min Tip Màx Unitats
Resolució 10 Bits
Precisió absoluta (inclosos INL, DNL i errors de quantificació, guany i offset) VREF = 4V, VCC = 4V,

Rellotge ADC = 200 kHz

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

Rellotge ADC = 1 MHz

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

Rellotge ADC = 200 kHz

Mode de reducció de soroll

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

Rellotge ADC = 1 MHz

Mode de reducció de soroll

2.5 LSB
No linealitat integral (INL) (precisió després de la calibració de desplaçament i guany) VREF = 4V, VCC = 4V,

Rellotge ADC = 200 kHz

1 LSB
No linealitat diferencial (DNL) VREF = 4V, VCC = 4V,

Rellotge ADC = 200 kHz

0.5 LSB
Guany d'error VREF = 4V, VCC = 4V,

Rellotge ADC = 200 kHz

2.5 LSB
Error de desplaçament VREF = 4V, VCC = 4V,

Rellotge ADC = 200 kHz

1.5 LSB
Temps de conversió Conversió de funcionament lliure 14 280 µs
Freqüència del rellotge 50 1000 kHz
VIN Entrada Voltage GND VREF V
Ample de banda d'entrada 38.4 kHz
AREF Referència externa Voltage 2.0 VCC V
VINT Volum interntage Referència 1.0 1.1 1.2 V
Referència interna de 2.56 V (1) VCC > 3.0V 2.3 2.56 2.8 V
RREF 32
PLUJA Resistència d'entrada analògica 100
Sortida ADC 0 1023 LSB

Nota: 1. Els valors són només orientatius.

Taula 21-9. Característiques de l'ADC, canals diferencials (mode unipolar). TA = de -40 °C a +85 °C

Símbol Paràmetre Condició Min Tip Màx Unitats
Resolució Guany = 1x 10 Bits
Guany = 20x 10 Bits
Precisió absoluta (inclosos INL, DNL i

Errors de quantització, guany i desplaçament)

Guany = 1x

VREF = 4V, VCC = 5V

Rellotge ADC = 50 – 200 kHz

10.0 LSB
Guany = 20x

VREF = 4V, VCC = 5V

Rellotge ADC = 50 – 200 kHz

20.0 LSB
No linealitat integral (INL) (precisió després de la calibració de desplaçament i guany) Guany = 1x

VREF = 4V, VCC = 5V

Rellotge ADC = 50 – 200 kHz

4.0 LSB
Guany = 20x

VREF = 4V, VCC = 5V

Rellotge ADC = 50 – 200 kHz

10.0 LSB
Guany d'error Guany = 1x 10.0 LSB
Guany = 20x 15.0 LSB
Error de desplaçament Guany = 1x

VREF = 4V, VCC = 5V

Rellotge ADC = 50 – 200 kHz

3.0 LSB
Guany = 20x

VREF = 4V, VCC = 5V

Rellotge ADC = 50 – 200 kHz

4.0 LSB
Temps de conversió Conversió de funcionament lliure 70 280 µs
Freqüència del rellotge 50 200 kHz
VIN Entrada Voltage GND VCC V
VDIFF Volum diferencial d'entradatage VREF/Guany V
Ample de banda d'entrada 4 kHz
AREF Referència externa Voltage 2.0 VCC – 1.0 V
VINT Volum interntage Referència 1.0 1.1 1.2 V
Referència interna de 2.56 V (1) VCC > 3.0V 2.3 2.56 2.8 V
RREF Resistència d'entrada de referència 32
PLUJA Resistència d'entrada analògica 100
Sortida de conversió ADC 0 1023 LSB

Nota: Els valors són només orientatius.

Taula 21-10. Característiques del convertidor ADC, canals diferencials (mode bipolar). TA = -40 °C a +85 °C

Símbol Paràmetre Condició Min Tip Màx Unitats
Resolució Guany = 1x 10 Bits
Guany = 20x 10 Bits
Precisió absoluta (inclosos INL, DNL i

Errors de quantització, guany i desplaçament)

Guany = 1x

VREF = 4V, VCC = 5V

Rellotge ADC = 50 – 200 kHz

8.0 LSB
Guany = 20x

VREF = 4V, VCC = 5V

Rellotge ADC = 50 – 200 kHz

8.0 LSB
No linealitat integral (INL) (precisió després de la calibració de desplaçament i guany) Guany = 1x

VREF = 4V, VCC = 5V

Rellotge ADC = 50 – 200 kHz

4.0 LSB
Guany = 20x

VREF = 4V, VCC = 5V

Rellotge ADC = 50 – 200 kHz

5.0 LSB
Guany d'error Guany = 1x 4.0 LSB
Guany = 20x 5.0 LSB
Error de desplaçament Guany = 1x

VREF = 4V, VCC = 5V

Rellotge ADC = 50 – 200 kHz

3.0 LSB
Guany = 20x

VREF = 4V, VCC = 5V

Rellotge ADC = 50 – 200 kHz

4.0 LSB
Temps de conversió Conversió de funcionament lliure 70 280 µs
Freqüència del rellotge 50 200 kHz
VIN Entrada Voltage GND VCC V
VDIFF Volum diferencial d'entradatage VREF/Guany V
Ample de banda d'entrada 4 kHz
AREF Referència externa Voltage 2.0 VCC – 1.0 V
VINT Volum interntage Referència 1.0 1.1 1.2 V
Referència interna de 2.56 V (1) VCC > 3.0V 2.3 2.56 2.8 V
RREF Resistència d'entrada de referència 32
PLUJA Resistència d'entrada analògica 100
Sortida de conversió ADC -512 511 LSB

Resum del conjunt d'instruccions

Mnemotècnia Operands Descripció Funcionament Banderes #Rellotges
INSTRUCCIONS ARITMÈTIQUES I LÒGIQUES
AFEGIR Rd, Rr Afegiu dos registres Ctrl ← Ctrl + Ctrl Z,C,N,V,H 1
ADC Rd, Rr Afegiu amb Carry two Registres Rd ← Rd + Rr + C Z,C,N,V,H 1
ADIW Rdl, K Afegeix Immediatament al Word Rdh:Rdl ← Rdh:Rdl + K Z, C, N, V, S 2
SUB Rd, Rr Resta dos registres Ctra. ← Ctra. – Ctra. Z,C,N,V,H 1
SUBI Carretera, K Resta la constant del registre Carretera ← Carretera – K Z,C,N,V,H 1
SBC Rd, Rr Resta amb Carry two Registres Ctra. ← Ctra. – Ctra. – C Z,C,N,V,H 1
SBCI Carretera, K Resta amb Carry Constant de Reg. Carretera ← Carretera – K – C Z,C,N,V,H 1
SBIW Rdl, K Restar Immediate de Word Rdh:Rdl ← Rdh:Rdl – K Z, C, N, V, S 2
I Rd, Rr Registres I lògics Ctra. ← Ctra. ∙ Ctra. Z,N,V 1
ANDI Carretera, K Registre AND lògic i constant Carretera ← Carretera ∙ K Z,N,V 1
OR Rd, Rr Registres OR lògics Ctra. ← Ctra. contra Ctra. Z,N,V 1
ORI Carretera, K Registre OR lògic i constant Carretera ← Carretera contra K Z,N,V 1
EOR Rd, Rr Registres OR exclusius Rd ← Rd ⊕ Rr Z,N,V 1
COM Rd El complement d'un Rd ← 0xFF − Rd Z,C,N,V 1
NEG Rd Complement de dos Rd ← 0x00 − Rd Z,C,N,V,H 1
SBR Rd, K Establiu Bit(s) al Registre Carretera ← Carretera contra K Z,N,V 1
CBR Rd, K Esborra bits al registre Rd ← Rd ∙ (0xFF – K) Z,N,V 1
INC Rd Increment Carretera ← Carretera + 1 Z,N,V 1
DES Rd Disminució Rd ← Rd − 1 Z,N,V 1
TST Rd Prova de zero o menys Ctra. ← Ctra. ∙ Ctra. Z,N,V 1
CLR Rd Esborra el registre Ctra. ← Ctra. ⊕ Ctra. Z,N,V 1
SER Rd Establir registre Rd ← 0xFF Cap 1
INSTRUCCIONS DE LA SUCURSAL
RJMP k Salt relatiu PC ← PC + k + 1 Cap 2
IJMP Salt indirecte a (Z) PC ← Z Cap 2
RCALL k Crida de subrutina relativa PC ← PC + k + 1 Cap 3
ICALL Crida indirecta a (Z) PC ← Z Cap 3
RET Retorn de subrutina PC ← PILA Cap 4
XARXES Retorn interromput PC ← PILA I 4
CPSE Rd, Rr Compara, salta si és igual si (Rd = Rr) PC ← PC + 2 o 3 Cap 1/2/3
CP Rd, Rr Compara Rd − Rr Z, N, V, C, H 1
CPC Rd, Rr Compara amb Carry Rd − Rr − C Z, N, V, C, H 1
IPC Rd, K Compara Registre amb Immediate Rd − K Z, N, V, C, H 1
SBRC Rr, b Omet si el bit al registre està esborrat si (Rr(b)=0) PC ← PC + 2 o 3 Cap 1/2/3
SBRS Rr, b Omet si el bit al registre està establert si (Rr(b)=1) PC ← PC + 2 o 3 Cap 1/2/3
SBIC P, b Omet si s'ha esborrat el bit al registre d'E/S si (P(b)=0) PC ← PC + 2 o 3 Cap 1/2/3
SBIS P, b Omet si el bit al registre d'E/S està establert si (P(b)=1) PC ← PC + 2 o 3 Cap 1/2/3
BRBS s, k Branca si s'ha establert la bandera d'estat si (SREG(s) = 1) aleshores PC←PC+k + 1 Cap 1/2
BRBC s, k Branca si s'ha esborrat la bandera d'estat si (SREG(s) = 0) aleshores PC←PC+k + 1 Cap 1/2
BREQ k Branca si és igual si (Z = 1) aleshores PC ← PC + k + 1 Cap 1/2
BRNE k Branca si no és igual si (Z = 0) aleshores PC ← PC + k + 1 Cap 1/2
BRCS k Branca si Carry Set si (C = 1) aleshores PC ← PC + k + 1 Cap 1/2
BRCC k Sucursal si es porta aprovat si (C = 0) aleshores PC ← PC + k + 1 Cap 1/2
BRSH k Branca si és igual o superior si (C = 0) aleshores PC ← PC + k + 1 Cap 1/2
BRLO k Branca si Inferior si (C = 1) aleshores PC ← PC + k + 1 Cap 1/2
BRMI k Branca si Menys si (N = 1) aleshores PC ← PC + k + 1 Cap 1/2
BRPL k Branca si Plus si (N = 0) aleshores PC ← PC + k + 1 Cap 1/2
BRGE k Sucursal si és major o igual, signada si (N ⊕ V = 0) aleshores PC ← PC + k + 1 Cap 1/2
BRLT k Sucursal si és inferior a zero, signat si (N ⊕ V = 1) aleshores PC ← PC + k + 1 Cap 1/2
BRHS k Branca si s'ha posat la meitat de la bandera si (H = 1) aleshores PC ← PC + k + 1 Cap 1/2
BRHC k Sucursal si s'ha eliminat la meitat de la bandera si (H = 0) aleshores PC ← PC + k + 1 Cap 1/2
BRTS k Branca si T Flag Set si (T = 1) aleshores PC ← PC + k + 1 Cap 1/2
BRTC k Branca si la bandera T s'esborra si (T = 0) aleshores PC ← PC + k + 1 Cap 1/2
BRVS k Branca si la bandera de desbordament està establerta si (V = 1) aleshores PC ← PC + k + 1 Cap 1/2
BRVC k Branca si la bandera de desbordament està esborrada si (V = 0) aleshores PC ← PC + k + 1 Cap 1/2
BRIE k Branca si la interrupció està habilitada si (I = 1) aleshores PC ← PC + k + 1 Cap 1/2
NOVIA k Branca si la interrupció està desactivada si (I = 0) aleshores PC ← PC + k + 1 Cap 1/2
INSTRUCCIONS DE PROVA DE BIT I BIT
SBI P,b Establiu el bit al registre d'E/S E/S(P,b) ← 1 Cap 2
CBI P,b Esborra bit al registre d'E/S E/S(P,b) ← 0 Cap 2
LSL Rd Desplaçament lògic a l'esquerra Rd(n+1) ← Rd(n), Rd(0) ← 0 Z,C,N,V 1
LSR Rd Desplaçament lògic a la dreta Rd(n) ← Rd(n+1), Rd(7) ← 0 Z,C,N,V 1
ROL Rd Gira a l'esquerra a través de Carry Rd(0)←C,Rd(n+1)← Rd(n),C←Rd(7) Z,C,N,V 1
ROR Rd Gira a la dreta a través de Carry Rd(7)←C,Rd(n)← Rd(n+1),C←Rd(0) Z,C,N,V 1
ASR Rd Desplaçament aritmètic a la dreta Rd(n) ← Rd(n+1), n=0..6 Z,C,N,V 1
Mnemotècnia Operands Descripció Funcionament Banderes #Rellotges
CANVI Rd Intercanvia Nibbles Rd(3..0)←Rd(7..4),Rd(7..4)←Rd(3..0) Cap 1
BSET s Conjunt de Banderes SREG(s) ← 1 SREG(s) 1
BCLR s Bandera clara SREG(s) ← 0 SREG(s) 1
BST Rr, b Botiga de bits de registre a T T ← Rr(b) T 1
BLD Rd, b Càrrega de bits de T a Registre Rd(b) ← T Cap 1
SEC Set Carry C ← 1 C 1
CLC Clear Carry C ← 0 C 1
SEN Estableix una bandera negativa N ← 1 N 1
CLN Esborra la bandera negativa N ← 0 N 1
SEZ Establir bandera zero Z ← 1 Z 1
CLZ Esborra la bandera zero Z ← 0 Z 1
SEI Activació d'interrupció global Jo ← 1 I 1
CLI Desactivació d'interrupció global Jo ← 0 I 1
SES Estableix una bandera de prova signada S ← 1 S 1
CLS Esborra la bandera de prova signada S ← 0 S 1
SEV Desbordament de complements de dos. V ← 1 V 1
CLV Desbordament del complement de dos clars V ← 0 V 1
SET Establiu T a SREG T ← 1 T 1
CLT Netegeu la T a SREG T ← 0 T 1
VEURE Estableix la meitat de la bandera de transport a SREG H ← 1 H 1
CLH Netegeu la meitat de la bandera de transport a SREG H ← 0 H 1
INSTRUCCIONS DE TRANSFERÈNCIA DE DADES
MOV Rd, Rr Moure's entre registres Rd ← Rr Cap 1
MOVW Rd, Rr Copiar paraula de registre Rd+1:Rd ← Rd+1:Rd Cap 1
LDI Carretera, K Carrega immediata Carretera ← K Cap 1
LD Carretera, X Càrrega indirecta Carretera ← (X) Cap 2
LD Rd, X+ Càrrega indirecta i post-inc. Rd ← (X), X ← X + 1 Cap 2
LD Carretera, – X Càrrega indirecta i predec. X ← X – 1, Rd ← (X) Cap 2
LD Carretera, Y Càrrega indirecta Carretera ← (Y) Cap 2
LD Rd, Y+ Càrrega indirecta i post-inc. Rd ← (Y), Y ← Y + 1 Cap 2
LD Carretera, – Y Càrrega indirecta i predec. Y ← Y – 1, Rd ← (Y) Cap 2
LDD Rd, Y+q Càrrega indirecta amb desplaçament Rd ← (Y + q) Cap 2
LD Carretera, Z Càrrega indirecta Carretera ← (Z) Cap 2
LD Carretera, Z+ Càrrega indirecta i post-inc. Rd ← (Z), Z ← Z+1 Cap 2
LD Carretera, -Z Càrrega indirecta i predec. Z ← Z – 1, Rd ← (Z) Cap 2
LDD Rd, Z+q Càrrega indirecta amb desplaçament Rd ← (Z + q) Cap 2
LDS Carretera, k Carrega directament des de la SRAM Rd ← (k) Cap 2
ST X, Rr Botiga indirecta (X) ← Rr Cap 2
ST X+, Rr Botiga indirecta i post-incorporació. (X) ← Rr, X ← X + 1 Cap 2
ST – X, Rr Botiga indirecta i pre-desembre. X ← X – 1, (X) ← Rr Cap 2
ST Y, Rr Botiga indirecta (Y) ← Rr Cap 2
ST Y+, Rr Botiga indirecta i post-incorporació. (Y) ← Rr, Y ← Y + 1 Cap 2
ST – Y, Rr Botiga indirecta i pre-desembre. Y ← Y – 1, (Y) ← Rr Cap 2
STD Y+q,Rr Botiga indirecta amb desplaçament (Y + q) ← Rr Cap 2
ST Z, Rr Botiga indirecta (Z) ← Rr Cap 2
ST Z+, Rr Botiga indirecta i post-incorporació. (Z) ← Rr, Z ← Z + 1 Cap 2
ST -Z, Rr Botiga indirecta i pre-desembre. Z ← Z – 1, (Z) ← Rr Cap 2
STD Z+q,Rr Botiga indirecta amb desplaçament (Z + q) ← Rr Cap 2
STS k, Rr Emmagatzemar directament a la SRAM (k) ← Rr Cap 2
LPM Carregar la memòria del programa R0 ← (Z) Cap 3
LPM Carretera, Z Carregar la memòria del programa Carretera ← (Z) Cap 3
LPM Carretera, Z+ Carregar memòria del programa i Post-Inc Rd ← (Z), Z ← Z+1 Cap 3
SPM Emmagatzemar la memòria del programa (z) ← R1:R0 Cap
IN Carretera, P A Port Carretera ← P Cap 1
FORA P, Rr Port de sortida P ← Rr Cap 1
EMPUJAR Rr Empènyer el registre a la pila PILA ← Rr Cap 2
POP Rd Registre emergent de Stack Carretera ← PILA Cap 2
INSTRUCCIONS DE CONTROL DE LA MCU
NOP Sense operació Cap 1
DORMIR Dormir (vegeu la descripció específica de la funció Sleep) Cap 1
WDR Reinicialització del gos vigilant (vegeu la descripció específica per a WDR/temporitzador) Cap 1
BREAK Trenca
Velocitat (MHz) (1) Subministrament Voltage (V) Interval de temperatura paquet (2) Codi de comanda (3)
10 1.8 – 5.5 Industrial

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

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

Notes: 1. Per a la velocitat en funció del volum de subministramenttage, vegeu la secció 21.3 “Velocitat” a la pàgina 163.

Tots els envasos no contenen plom, no contenen halurs i són totalment ecològics, i compleixen amb la directiva europea de restricció de substàncies perilloses (RoHS).

Indicadors de codi

H: Acabat de plom de NiPdAu

U: llauna mat

R: cinta i bobina

Aquests dispositius també es poden subministrar en format de làmina. Poseu-vos en contacte amb la vostra oficina de vendes local d'Atmel per obtenir informació detallada sobre comandes i quantitats mínimes.

Errada

Errates ATtiny25

La carta de revisió d'aquesta secció fa referència a la revisió del dispositiu ATtiny25.

Rev. D – F

No es coneix cap errata.

Rev. B – C

La lectura de l'EEPROM pot fallar amb un baix volum de subministramenttage / baixa freqüència de rellotge

La lectura de l'EEPROM pot fallar amb un baix volum de subministramenttage / baixa freqüència de rellotge

Intentant llegir EEPROM a baixes freqüències de rellotge i/o baix volum de subministramenttage pot resultar en dades no vàlides.

Solució/correcció de problemes

No utilitzeu l'EEPROM quan la freqüència de rellotge sigui inferior a 1 MHz i el volum de subministrament sigui inferior.tage és inferior a 2V. Si la freqüència de funcionament no es pot augmentar per sobre d'1MHz, aleshores el volum de subministramenttage hauria de ser superior a 2V. De la mateixa manera, si el volum de subministramenttagSi e no es pot augmentar per sobre de 2 V, la freqüència de funcionament ha de ser superior a 1 MHz.

Se sap que aquesta característica depèn de la temperatura, però no s'ha caracteritzat. Les directrius només es donen per a la temperatura ambient.

Rev. A

No sampdirigit.

Errates ATtiny45

La carta de revisió d'aquesta secció fa referència a la revisió del dispositiu ATtiny45.

Rev. F – G

No es coneixen errors

Rev. D – E

La lectura de l'EEPROM pot fallar amb un baix volum de subministramenttage / baixa freqüència de rellotge

La lectura de l'EEPROM pot fallar amb un baix volum de subministramenttage / baixa freqüència de rellotge

Intentant llegir EEPROM a baixes freqüències de rellotge i/o baix volum de subministramenttage pot resultar en dades no vàlides.

Solució/correcció de problemes

No utilitzeu l'EEPROM quan la freqüència de rellotge sigui inferior a 1 MHz i el volum de subministrament sigui inferior.tage és inferior a 2V. Si la freqüència de funcionament no es pot augmentar per sobre d'1MHz, aleshores el volum de subministramenttage hauria de ser superior a 2V. De la mateixa manera, si el volum de subministramenttagSi e no es pot augmentar per sobre de 2 V, la freqüència de funcionament ha de ser superior a 1 MHz.

Se sap que aquesta característica depèn de la temperatura, però no s'ha caracteritzat. Les directrius només es donen per a la temperatura ambient.

Rev. B – C

PLL no es bloqueja

La lectura de l'EEPROM del codi de l'aplicació no funciona en el mode de bit de bloqueig 3

La lectura de l'EEPROM pot fallar amb un baix volum de subministramenttage / baixa freqüència de rellotge

Generació de sortida PWM del comptador temporitzador 1 a OC1B-XOC1B no funciona correctament

PLL no es bloqueja

Quan es troben a freqüències inferiors a 6.0 MHz, el PLL no es bloquejarà.

Solució de problemes / Solució alternativa

Quan utilitzeu el PLL, feu-lo funcionar a 6.0 MHz o superior.

La lectura de l'EEPROM del codi de l'aplicació no funciona en el mode de bit de bloqueig 3

Quan els bits de bloqueig de memòria LB2 i LB1 estan programats en mode 3, la lectura d'EEPROM no funciona des del codi d'aplicació.

Solució/Solució alternativa del problema

No configureu el mode de protecció de bits de bloqueig 3 quan el codi de l'aplicació hagi de llegir des de l'EEPROM.

La lectura de l'EEPROM pot fallar amb un baix volum de subministramenttage / baixa freqüència de rellotge

Intentant llegir EEPROM a baixes freqüències de rellotge i/o baix volum de subministramenttage pot resultar en dades no vàlides.

Solució/correcció de problemes

No utilitzeu l'EEPROM quan la freqüència de rellotge sigui inferior a 1 MHz i el volum de subministrament sigui inferior.tage és inferior a 2V. Si la freqüència de funcionament no es pot augmentar per sobre d'1MHz, aleshores el volum de subministramenttage hauria de ser superior a 2V. De la mateixa manera, si el volum de subministramenttagSi e no es pot augmentar per sobre de 2 V, la freqüència de funcionament ha de ser superior a 1 MHz.

Se sap que aquesta característica depèn de la temperatura, però no s'ha caracteritzat. Les directrius només es donen per a la temperatura ambient.

Generació de sortida PWM del comptador temporitzador 1 a OC1B – XOC1B no funciona correctament

La sortida PWM del comptador del temporitzador 1 OC1B-XOC1B no funciona correctament. Només en el cas que els bits de control COM1B1 i COM1B0 estiguin en el mateix mode que COM1A1 i COM1A0, respectivament, la sortida OC1B-XOC1B funciona correctament.

Solució/Solució alternativa del problema

L'única solució alternativa és utilitzar la mateixa configuració de control als bits de control COM1A[1:0] i COM1B[1:0], vegeu la taula 14-4 de la fitxa tècnica. El problema s'ha solucionat per a Tiny45 rev D.

Rev. A

Consum d'energia massa alt

DebugWIRE perd la comunicació quan fa un pas únic en interrupcions.

PLL no es bloqueja

La lectura de l'EEPROM del codi de l'aplicació no funciona en el mode de bit de bloqueig 3

La lectura de l'EEPROM pot fallar amb un baix volum de subministramenttage / baixa freqüència de rellotge

Consum d'energia massa alt

Tres situacions comportaran un consum d'energia massa elevat. Aquestes són:

Un rellotge extern es selecciona mitjançant fusibles, però el PORT D'E/S encara està habilitat com a sortida.

L'EEPROM es llegeix abans d'apagar l'aparell.

VCC és de 4.5 volts o superior.

Exempció de responsabilitat: la informació d'aquest document es proporciona en relació amb els productes Atmel. No s'atorga cap llicència, expressa o implícita, per preclusió o d'una altra manera, a cap dret de propietat intel·lectual en aquest document o en relació amb la venda de productes Atmel. EXCEPTE EL QUE ESTABLECTE ALS TERMES I CONDICIONS DE VENDA D'ATMEL UBICATS A L'ATMEL WEBLLOC, ATMEL NO ASSUMIR RESPONSABILITAT I RENUNCIA A QUALSEVOL GARANTIA EXPRESSA, IMPLÍCITA O LEGAL RELACIONADA AMB ELS SEUS PRODUCTES, INCLOSA, PERÒ NO LIMITADA A, LA GARANTIA IMPLÍCITA DE COMERCIABILITAT, IDONEIDAD PER A UN FINS NO PARTICULAR, INFRACCIÓ. EN CAP CAS, ATMEL SERÀ RESPONSABLE DE CAP DANYS DIRECTS, INDIRECTS, CONSEQUENTS, PUNITIUS, ESPECIALS O INCIDENTALS (INCLOSOS, SENSE LIMITACIÓ, DANYS PER PÈRDUES I BENEFICIS, INTERRUPCIÓ DE NEGOCI O PÈRDUA D'INFORMACIÓ) QUE SORRIREN DE LA POSIBILITAT D'ÚS PER A L'ÚS. AQUEST DOCUMENT, TOT I QUE ATMEL S'HA AVISAT DE LA POSSIBILITAT D'AQUESTS DANYS.

Atmel no fa representacions ni garanteix pel que fa a l'exactitud o la integritat del contingut d'aquest document i es reserva el dret de fer canvis a les especificacions i descripcions dels productes en qualsevol moment sense previ avís. Atmel no es compromet a actualitzar la informació aquí continguda. Llevat que s'especifiqui el contrari, els productes Atmel no són adequats ni s'han d'utilitzar en aplicacions d'automoció. Els productes Atmel no estan pensats, autoritzats o garantits per utilitzar-los com a components en aplicacions destinades a donar suport o mantenir la vida.

Referències

Deixa un comentari

La teva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats *