Microcontrolador Atmel AVR de 8 bits con flash programable en sistema de 2/4/8K bytes
Características
- Microcontrolador AVR® de 8 bits de alto rendemento e baixa potencia
- Arquitectura RISC avanzada
- 120 instrucións potentes: a execución do ciclo de reloxo máis simple
- 32 x 8 Rexistros de traballo de propósito xeral
- Operación totalmente estática
- Memoria de datos e programas non volátiles
- 2/4 / 8K bytes de memoria de programa programable dentro do sistema
- Resistencia: 10,000 ciclos de escritura/borrado
- EEPROM programable no sistema 128/256/512 bytes
- Resistencia: 100,000 ciclos de escritura/borrado
- 128/256/512 Bytes SRAM interno
- Bloqueo de programación para o programa Flash de autoprogramación e seguridade de datos EEPROM
Características periféricas
- Temporizador / contador de 8 bits con precalificador e dous canles PWM
- Temporizador / Contador de alta velocidade de 8 bits con precalificador separado
- 2 saídas PWM de alta frecuencia con rexistros de comparación de saída separada
- Xerador de tempo morto programable
- USI - Interface serie universal con detector de condición inicial
- ADC de 10 bits
4 canles de fin único
2 pares de canles ADC diferenciais con ganancia programable (1x, 20x)
Medición de temperatura
Temporizador de vixilancia programable con oscilador separado no chip
Comparador analóxico en chip
Características especiais do microcontrolador
debugWIRE Sistema de depuración no chip
Programable dentro do sistema a través do porto SPI
Fontes de interrupción externa e interna
Modos de ralentí de baixa potencia, redución de ruído ADC e modos de apagado
Circuíto de reinicio de potencia mellorada
Circuíto de detección programable de Brown-out
Oscilador interno calibrado
E / S e paquetes
Seis liñas de E / S programables
PDIP de 8 pines, SOIC de 8 pines, QFN / MLF de 20 pads e TSSOP de 8 pines (só ATtiny45 / V)
Vol. Operativotage
- 1.8 - 5.5 V para ATtiny25V / 45V / 85V
- 2.7 - 5.5 V para ATtiny25 / 45/85
Grao de velocidade
- ATtiny25V / 45V / 85V: 0 - 4 MHz @ 1.8 - 5.5V, 0 - 10 MHz @ 2.7 - 5.5V
- ATtiny25 / 45/85: 0-10 MHz @ 2.7 - 5.5V, 0 - 20 MHz @ 4.5 - 5.5V
Rango de temperatura industrial
Baixo consumo de enerxía
Modo activo:
1 MHz, 1.8 V: 300 µA
Modo de apagado:
Configuracións de pin
Pinout ATtiny25 / 45/85
Descricións de Pin
VCC: oferta voltage.
GND: Terra.
Porto B (PB5:PB0): o porto B é un porto de E/S bidireccional de 6 bits con resistencias de extracción internas (seleccionadas para cada bit). Os búfers de saída do porto B teñen características de unidade simétricas con capacidade de fonte e sumidoiro elevadas. Como entradas, os pinos do porto B que son baixos externamente xerarán corrente se se activan as resistencias de extracción. Os pinos do porto B están en tres estados cando se activa unha condición de reinicio, aínda que o reloxo non estea a funcionar.
O porto B tamén serve as funcións de varias funcións especiais do ATtiny25 / 45/85 como se indican
En ATtiny25, os portos de E / S programables PB3 e PB4 (pines 2 e 3) trocanse no modo de compatibilidade ATtiny15 para soportar a compatibilidade con ATtiny15.
RESET: entrada de reinicio. Un nivel baixo neste pin durante máis tempo que a duración mínima do pulso xerará un reinicio, aínda que o reloxo non estea en funcionamento e sempre que o pin de reinicio non estea desactivado. Indícase a lonxitude mínima do pulso Táboa 21-4 na páxina 165. Os impulsos máis curtos non están garantidos para xerar un reinicio.
O pin de restablecemento tamén se pode usar como pin de E / S (débil).
Acabadoview
O ATtiny25 / 45/85 é un microcontrolador CMOS de 8 bits de baixa potencia baseado na arquitectura RISC mellorada AVR. Ao executar instrucións potentes nun só ciclo de reloxo, o ATtiny25 / 45/85 consegue rendementos aproximados a 1 MIPS por MHz permitindo ao deseñador do sistema optimizar o consumo de enerxía fronte á velocidade de procesamento.
Diagrama de bloques
O núcleo AVR combina un rico conxunto de instrucións con 32 rexistros de traballo de propósito xeral. Os 32 rexistros están directamente conectados á unidade lóxica aritmética (ALU), o que permite acceder a dous rexistros independentes nunha soa instrución executada nun ciclo de reloxo. A arquitectura resultante é máis eficiente no código ao tempo que consegue rendementos ata dez veces máis rápidos que os microcontroladores CISC convencionais.
O ATtiny25 / 45/85 ofrece as seguintes características: 2/4 / 8K bytes de Flash programable dentro do sistema, 128/256/512 bytes EEPROM, 128/256/256 bytes SRAM, 6 liñas de E / S de propósito xeral, 32 xerais rexistros de traballo específicos, un temporizador / contador de 8 bits con modos de comparación, un temporizador / contador de alta velocidade de 8 bits, interfaz serie universal, interrupcións internas e externas, un ADC de 4 canles de 10 bits, un temporizador de vixilancia programable con control interno Oscilador e tres modos de aforro de enerxía seleccionables por software. O modo inactivo detén a CPU mentres permite que o SRAM, o temporizador / contador, o ADC, o comparador analóxico e o sistema de interrupcións sigan funcionando. O modo de apagado garda os contidos do rexistro, desactivando todas as funcións do chip ata a próxima interrupción ou restablecemento de hardware. O modo de redución de ruído ADC detén a CPU e todos os módulos de E / S excepto ADC, para minimizar o ruído de conmutación durante as conversións de ADC.
O dispositivo está fabricado usando a tecnoloxía de memoria non volátil de alta densidade de Atmel. O Flash ISP On-chip permite que a memoria do programa poida ser reprogramada no sistema a través dunha interface serie SPI, por un programador de memoria non volátil convencional ou por un código de arranque On-chip que se executa no núcleo AVR.
O AVR ATtiny25 / 45/85 é compatible cun conxunto completo de ferramentas de desenvolvemento de programas e sistemas que inclúen: compiladores C, ensambladores de macros, depurador / simuladores de programas e kits de avaliación.
Sobre os recursos
Está dispoñible para descargar un conxunto completo de ferramentas de desenvolvemento, notas de aplicacións e follas de datos http://www.atmel.com/avr.
Código Examples
Esta documentación contén código sinxelo exampque mostran brevemente como usar varias partes do dispositivo. Estes códigos exampasumimos que a cabeceira específica da parte file inclúese antes da compilación. Teña en conta que non todos os provedores de compiladores C inclúen definicións de bits na cabeceira files e o manexo de interrupcións en C depende do compilador. Confirme coa documentación do compilador C para obter máis detalles.
Para os rexistros de E / S situados no mapa de E / S ampliado, as instrucións "IN", "OUT", "SBIS", "SBIC", "CBI" e "SBI" deben substituírse por instrucións que permitan o acceso ao I ampliado / O. Normalmente, isto significa "LDS" e "STS" combinados con "SBRS", "SBRC", "SBR" e "CBR". Ten en conta que non todos os dispositivos AVR inclúen un mapa de E / S ampliado.
Detección táctil capacitiva
Atmel QTouch Library ofrece unha solución sinxela de usar para interfaces sensibles ao tacto nos microcontroladores Atmel AVR. A biblioteca QTouch inclúe soporte para os métodos de adquisición QTouch® e QMatrix®.
A detección táctil engádese facilmente a calquera aplicación ligando a biblioteca QTouch e empregando a interface de programación de aplicacións (API) da biblioteca para definir as canles táctiles e os sensores. A aplicación chama entón á API para recuperar a información da canle e determinar o estado do sensor táctil.
A biblioteca QTouch é gratuíta e pódese descargar desde Atmel websitio. Para obter máis información e detalles sobre a implementación, consulte a Guía do usuario da biblioteca QTouch, tamén dispoñible en Atmel websitio.
Retención de datos
Fiabilidade Os resultados da cualificación mostran que a taxa de falla de retención de datos proxectada é moito menos de 1 PPM durante 20 anos a 85 ° C ou 100 anos a 25 ° C.
Núcleo da CPU AVR
Introdución
Esta sección trata sobre a arquitectura central AVR en xeral. A función principal do núcleo da CPU é garantir a execución correcta do programa. Polo tanto, a CPU debe ser capaz de acceder ás memorias, realizar cálculos, controlar periféricos e xestionar as interrupcións.
Acabou Arquitectónicoview
Para maximizar o rendemento e o paralelismo, o AVR usa unha arquitectura de Harvard, con memorias e autobuses separados para o programa e os datos. As instrucións na memoria do programa execútanse cunha canalización dun só nivel. Mentres se está a executar unha instrución, a seguinte instrución faise previamente na memoria do programa. Este concepto permite executar instrucións en cada ciclo de reloxo. A memoria do programa é memoria Flash reprogramable no sistema.
O rexistro de acceso rápido File contén 32 rexistros de traballo de propósito xeral de 8 bits cun único tempo de acceso ao ciclo de reloxo. Isto permite a operación de Unidade Lóxica Aritmética (ALU) dun ciclo. Nunha operación ALU típica, súmanse dous operandos do Rexistro File, a operación execútase e o resultado gárdase de novo no Rexistro File- nun ciclo de reloxo.
Seis dos 32 rexistros pódense usar como tres punteiros indirectos de 16 bits de rexistro de enderezos do espazo de datos, o que permite cálculos de enderezos eficientes. Un destes punteiros de enderezos tamén se pode usar como punteiro de enderezos para buscar táboas na memoria do programa Flash. Estes rexistros de funcións engadidos son os rexistros X, Y e Z de 16 bits, descritos máis adiante nesta sección.
A ALU admite operacións aritméticas e lóxicas entre rexistros ou entre unha constante e un rexistro. Tamén se poden executar operacións de rexistro único no ALU. Despois dunha operación aritmética, o Rexistro de estado actualízase para reflectir información sobre o resultado da operación.
O fluxo do programa é proporcionado por instrucións de salto e chamada condicionadas e incondicionales, capaces de abordar directamente todo o espazo de enderezos. A maioría das instrucións AVR teñen un único formato de palabra de 16 bits, pero tamén hai instrucións de 32 bits.
Durante as interrupcións e as chamadas de subrutina, o enderezo de retorno Contador de programas (PC) almacénase na pila. A pila está efectivamente asignada nos datos xerais SRAM e, en consecuencia, o tamaño da pila só está limitado polo tamaño total da SRAM e o uso da SRAM. Todos os programas de usuario deben inicializar o SP na rutina Restablecer (antes de que se executen subrutinas ou interrupcións). O Stack Pointer (SP) é de lectura / escritura accesible no espazo de E / S. Pódese acceder facilmente aos datos SRAM a través dos cinco modos de dirección diferentes soportados na arquitectura AVR.
Os espazos de memoria na arquitectura AVR son mapas de memoria lineais e regulares.
Un módulo de interrupción flexible ten os seus rexistros de control no espazo de E / S cun bit de activación de interrupción global adicional no rexistro de estado. Todas as interrupcións teñen un vector de interrupción separado na táboa de vector de interrupción. As interrupcións teñen prioridade de acordo coa súa posición de vector de interrupción. Canto máis baixa sexa a dirección do vector de interrupción, maior será a prioridade.
O espazo de memoria de E/S contén 64 enderezos para funcións de periféricos da CPU como rexistros de control, SPI e outras funcións de E/S. Pódese acceder directamente á memoria de E/S ou como localizacións do espazo de datos seguindo as do Rexistro File, 0x20 – 0x5F.
ALU - Unidade lóxica aritmética
O AVR ALU de alto rendemento funciona en conexión directa con todos os 32 rexistros de traballo de propósito xeral. Dentro dun só ciclo de reloxo, execútanse operacións aritméticas entre rexistros de propósito xeral ou entre un rexistro e un inmediato. As operacións ALU divídense en tres categorías principais: funcións aritméticas, lóxicas e de bits. Algunhas implementacións da arquitectura tamén proporcionan un poderoso multiplicador que soporta a multiplicación asinada / non asinada e o formato fraccionado. Vexa a sección "Set de instrucións" para unha descrición detallada.
Rexistro de estado
O rexistro de estado contén información sobre o resultado da instrución aritmética máis recente executada. Esta información pódese empregar para alterar o fluxo do programa para realizar operacións condicionadas. Teña en conta que o rexistro de estado actualízase despois de todas as operacións de ALU, como se especifica na referencia do conxunto de instrucións. En moitos casos, isto eliminará a necesidade de usar as instrucións de comparación dedicadas, dando lugar a un código máis rápido e compacto.
O rexistro de estado non se almacena automaticamente ao entrar nunha rutina de interrupción e restáurase ao volver dunha interrupción. Isto debe ser manexado por software.
SREG - Rexistro de estado AVR
O Rexistro de estado AVR - SREG - defínese como:
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3F | I | T | H | S | V | N | Z | C | SREG |
Ler/Escribir | 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: Activación da interrupción global
O bit de habilitación de interrupción global debe estar configurado para que se activen as interrupcións. A continuación, o control de habilitación de interrupcións individuais realízase en rexistros de control separados. Se se borra o Rexistro de habilitación de interrupción global, ningunha das interrupcións está habilitada independentemente da configuración de habilitación de interrupción individual. O I-bit bórrase por hardware despois de producirse unha interrupción e configúrase coa instrución RETI para habilitar as interrupcións posteriores. A aplicación tamén pode configurar e borrar o I-bit coas instrucións SEI e CLI, como se describe na referencia do conxunto de instrucións.
Bit 6 - T: Almacenamento de copia de bits
As instrucións de copia de bits BLD (Bit LoaD) e BST (Bit Store) usan o bit T como fonte ou destino para o bit operado. Un pouco dun rexistro no Rexistro File pódese copiar en T pola instrución BST, e un bit en T pódese copiar nun bit nun rexistro no Rexistro File pola instrución BLD.
Bit 5 - H: Bandeira de medio porte
A bandeira Half Carry H indica a Half Carry nalgunhas operacións aritméticas. Half Carry é útil en aritmética BCD. Consulte a "Descrición do conxunto de instrucións" para obter información detallada.
Bit 4 – S: bit de signo, S = N ⊕ V
O bit S sempre é exclusivo ou entre a bandeira negativa N e a bandeira de desbordamento de complemento dos dous. Consulte a "Descrición do conxunto de instrucións" para obter información detallada.
Bit 3 - V: bandeira de desbordamento de complemento de Two
A bandeira V de desbordamento de complementos dos dous admite a aritmética do complemento de dous. Consulte a "Descrición do conxunto de instrucións" para obter información detallada.
Bit 2 - N: bandeira negativa
A bandeira negativa N indica un resultado negativo nunha operación aritmética ou lóxica. Consulte a "Descrición do conxunto de instrucións" para obter información detallada.
Bit 1 - Z: bandeira cero
A bandeira cero Z indica un resultado cero nunha operación aritmética ou lóxica. Consulte a "Descrición do conxunto de instrucións" para obter información detallada.
Bit 0 - C: bandeira de transporte
A bandeira Carry C indica un transporte nunha operación aritmética ou lóxica. Consulte a "Descrición do conxunto de instrucións" para obter información detallada.
Rexistro de fins xerais File
O Rexistro File está optimizado para o conxunto de instrucións AVR Enhanced RISC. Para acadar o rendemento e a flexibilidade requiridos, o Rexistro admite os seguintes esquemas de entrada/saída File:
Un operando de saída de 8 bits e un resultado de 8 bits
Dous operandos de saída de 8 bits e unha entrada de resultados de 8 bits
Dous operandos de saída de 8 bits e unha entrada de resultados de 16 bits
Un operando de saída de 16 bits e un resultado de 16 bits
Figura 4-2 mostra a estrutura dos 32 rexistros de traballo de propósito xeral na CPU.
Como se mostra en Figura 4-2, a cada rexistro tamén se lle asigna un enderezo de memoria de datos, mapeándoos directamente nas primeiras 32 localizacións do espazo de datos do usuario. Aínda que non se implementa fisicamente como localizacións SRAM, esta organización de memoria ofrece unha gran flexibilidade no acceso aos rexistros, xa que os rexistros de punteiros X, Y e Z poden configurarse para indexar calquera rexistro do file.A maioría das instrucións que operan no Rexistro File teñen acceso directo a todos os rexistros, e a maioría deles son instrucións de ciclo único.
O rexistro X, o rexistro Y e o rexistro Z
Os rexistros R26..R31 teñen algunhas funcións engadidas ao seu uso xeral. Estes rexistros son punteiros de enderezos de 16 bits para a dirección indirecta do espazo de datos. Os tres rexistros de enderezos indirectos X, Y e Z defínense como se describe en Figura 4-3.
Nos distintos modos de direccionamento estes rexistros de direccións teñen funcións como desprazamento fixo, incremento automático e decremento automático (ver a referencia do conxunto de instrucións para máis detalles).
Punteiro de pila
A pila úsase principalmente para almacenar datos temporais, para almacenar variables locais e para almacenar enderezos de devolución despois de interrupcións e chamadas de subrutina. O Rexistro de punteiros da pila sempre apunta á parte superior da pila. Teña en conta que a pila está implementada a medida que vai crecendo desde situacións de memoria máis elevadas ata situacións de memoria inferiores. Isto implica que un comando Stack PUSH diminúe o punteiro de pila.
O punteiro de pila apunta á área de pila SRAM de datos onde se atopan as pila de subrutina e interrupción. Este espazo de pila no SRAM de datos debe ser definido polo programa antes de executar calquera chamada de subrutina ou activar as interrupcións. O punteiro de pila debe axustarse a un punto superior a 0x60. O punteiro de pila decrementase un cando os datos se empuxan na pila coa instrución PUSH e decrementa dous cando a dirección de retorno se empuxa na pila con chamada ou interrupción da subrutina. O punteiro de pila increméntase nun cando se saen datos da pila coa instrución POP e increméntase en dous cando se saen datos da pila con retorno da subrutina RET ou retorno da interrupción RETI.
O AVR Stack Pointer está implementado como dous rexistros de 8 bits no espazo de E / S. O número de bits realmente empregados depende da implementación. Teña en conta que o espazo de datos nalgunhas implementacións da arquitectura AVR é tan pequeno que só se precisa SPL. Neste caso, o Rexistro SPH non estará presente.
SPH e SPL - Rexistro de punteiros 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 | ||
Ler/Escribir | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Ler/Escribir | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Valor inicial | RAMENDO | RAMENDO | RAMENDO | RAMENDO | RAMENDO | RAMENDO | RAMENDO | RAMENDO | |
Valor inicial | RAMENDO | RAMENDO | RAMENDO | RAMENDO | RAMENDO | RAMENDO | RAMENDO | RAMENDO |
Temporalización de execución de instrucións
Esta sección describe os conceptos xerais de temporización de acceso para a execución de instrucións. A CPU AVR está dirixida polo reloxo da CPU clkCPU, xerado directamente a partir da fonte de reloxo seleccionada para o chip. Non se utiliza ningunha división interna do reloxo.
Figura 4-4 mostra as obtencións de instrucións paralelas e as execucións de instrucións habilitadas pola arquitectura de Harvard e o rexistro de acceso rápido File concepto. Este é o concepto básico de canalización para obter ata 1 MIPS por MHz cos resultados únicos correspondentes para funcións por custo, funcións por reloxos e funcións por unidade de potencia.
Figura 4-5. Operación ALU de ciclo único
Restablecer e manipular a interrupción
O AVR proporciona varias fontes de interrupción diferentes. Estas interrupcións e o vector de restablecemento separado teñen un vector de programa separado no espazo de memoria do programa. Todas as interrupcións teñen asignados bits de habilitación individuais que deben ser escritos como unha lóxica xunto co bit de habilitación de interrupción global no rexistro de estado para habilitar a interrupción.
Os enderezos máis baixos no espazo de memoria do programa defínense por defecto como Restablecer e interromper os vectores. A lista completa de vectores móstrase en "Interrupcións" na páxina 48. A lista tamén determina os niveis de prioridade das diferentes interrupcións. Canto menor sexa o enderezo maior será o nivel de prioridade. RESET ten a máxima prioridade e o seguinte é INT0: a solicitude de interrupción externa 0.
Cando se produce unha interrupción, bórrase o I-bit de interrupción global e todas as interrupcións están desactivadas. O software de usuario pode escribir unha lóxica no I-bit para habilitar as interrupcións anidadas. Todas as interrupcións habilitadas poden entón interromper a rutina de interrupcións actual. O bit I configúrase automaticamente cando se executa unha instrución Return from Interrupt (RETI).
Hai basicamente dous tipos de interrupcións. O primeiro tipo é desencadeado por un evento que establece a marca de interrupción. Para estas interrupcións, o contador de programas vectorízase ao vector de interrupción real para executar a rutina de tratamento de interrupcións e o hardware borra a bandeira de interrupción correspondente. As bandeiras de interrupción tamén se poden borrar escribindo unha lóxica na (s) posición (s) de bit de bandeira a borrar. Se se produce unha condición de interrupción mentres se borra o bit de habilitación de interrupción correspondente, establecerase e recordarase a bandeira de interrupción ata que se active a interrupción ou o software borre a bandeira. Do mesmo xeito, se se producen unha ou máis condicións de interrupción mentres se limpa o bit de activación de interrupción global, estableceranse e recordaranse as bandeiras de interrupción correspondentes ata que se estableza o bit de habilitación de interrupción global e entón executaranse por orde de prioridade.
O segundo tipo de interrupcións activarase mentres estea presente a condición de interrupción. Estas interrupcións non teñen necesariamente bandeiras de interrupción. Se a condición de interrupción desaparece antes de que a interrupción estea activada, a interrupción non se activará.
Cando o AVR sae dunha interrupción, sempre regresará ao programa principal e executará unha instrución máis antes de que se produza algunha interrupción pendente.
Teña en conta que o rexistro de estado non se almacena automaticamente ao entrar nunha rutina de interrupcións, nin se restaura cando volve dunha rutina de interrupcións. Isto debe ser manexado por software.
Cando se utiliza a instrución CLI para desactivar as interrupcións, as interrupcións desactivaranse inmediatamente. Non se executará ningunha interrupción despois da instrución CLI, aínda que se produza simultaneamente coa instrución CLI. O seguinte example mostra como se pode usar isto para evitar interrupcións durante a secuencia de escritura temporizada da EEPROM.
Código de montaxe Example |
en r16, SREG ; almacenar o valor SREG
cli; desactivar as interrupcións durante a secuencia cronometrada sbi EECR, EEMPE ; iniciar a escritura de EEPROM sbi EECR, EEPE fóra SREG, r16; restaurar o valor SREG (I-bit) |
Código C Example |
char cSREG;
cSREG = SREG; /* almacena o valor SREG */ /* desactiva as interrupcións durante a secuencia cronometrada */ _CLI (); EECR |= (1< CEER | = (1 < SREG = cSREG; /* restaurar o valor SREG (I-bit) */ |
Cando se utiliza a instrución SEI para activar interrupcións, a instrución seguinte a SEI executarase antes de calquera interrupción pendente, como se mostra neste ex.ample.
Código de montaxe Example |
sei ; establecer a activación de interrupción global
durmir; entrar en sono, esperando a interrupción ; nota: entrará en suspensión antes de calquera pendente ; interrupción (s) |
Código C Example |
_SEI(); /* activar a interrupción global */
_DURMIR(); /* entrar en suspensión, esperando a interrupción */ / * nota: entrará en suspensión antes de calquera interrupción pendente * / |
Tempo de resposta de interrupción
A resposta de execución de interrupción para todas as interrupcións AVR habilitadas é mínima de catro ciclos de reloxo. Despois de catro ciclos de reloxo execútase o enderezo Vector Program para a rutina de tratamento de interrupcións. Durante este período de catro reloxos, o Contador de programas empúxase á pila. O vector normalmente é un salto á rutina de interrupcións, e este salto leva tres ciclos de reloxo. Se se produce unha interrupción durante a execución dunha instrución multiciclo, esta instrución complétase antes de que se produza a interrupción. Se se produce unha interrupción cando a MCU está en modo de suspensión, o tempo de resposta de execución da interrupción aumenta en catro ciclos de reloxo. Este aumento súmase ao tempo de inicio desde o modo de suspensión seleccionado.
O retorno dunha rutina de manipulación de interrupcións leva catro ciclos de reloxo. Durante estes catro ciclos de reloxo, o Contador de programas (dous bytes) volve aparecer da pila, o punteiro de pila increméntase en dous e establécese o I-bit en SREG.
Lembranzas AVR
Esta sección describe as diferentes memorias do ATtiny25 / 45/85. A arquitectura AVR ten dous espazos de memoria principais, a memoria de datos e o espazo de memoria de programa. Ademais, o ATtiny25 / 45/85 conta cunha memoria EEPROM para almacenamento de datos. Os tres espazos de memoria son lineais e regulares.
Memoria de programa Flash reprogramable no sistema
O ATtiny25 / 45/85 contén 2/4 / 8K bytes Memoria Flash reprogramable no sistema no chip para o almacenamento de programas. Dado que todas as instrucións AVR teñen 16 ou 32 bits de ancho, o Flash está organizado como 1024/2048/4096 x 16.
A memoria Flash ten unha resistencia de polo menos 10,000 ciclos de escritura / borrado. O contador de programas ATtiny25 / 45/85 (PC) ten un ancho de 10/11/12 bits, abordando así as localizacións de memoria do programa 1024/2048/4096. “Programa de memoria- ming ”na páxina 147 contén unha descrición detallada da descarga en serie de datos Flash usando os pins SPI.
As táboas constantes pódense asignar dentro de todo o espazo de enderezos da memoria do programa (consulte a descrición das instrucións de memoria LPM - Cargar programa de memoria).
Figura 5-1. Mapa de memoria do programa
Memoria de datos SRAM
Figura 5-2 mostra como está organizada a memoria SRAM ATtiny25 / 45/85.
As localizacións de memoria de datos 224/352/607 inferiores abordan tanto o Rexistro File, a memoria de E/S e a SRAM de datos interna. As primeiras 32 localizacións dirixíronse ao Rexistro File, as seguintes 64 localizacións a memoria de E/S estándar e as últimas 128/256/512 localizacións abordan a SRAM de datos interna.
Os cinco modos de direccionamento diferentes para a memoria de datos abarcan: directo, indirecto con desprazamento, indirecto, indirecto con pre-decremento e indirecto con post-incremento. No Rexistro File, os rexistros R26 a R31 presentan os rexistros de punteiro de enderezo indirecto.
A dirección directa chega a todo o espazo de datos.
O modo indirecto con desprazamento alcanza 63 localizacións de enderezos desde o enderezo base indicado polo rexistro Y- ou Z-.
Cando se utilizan modos de enderezos indirectos de rexistro con pre-decrecemento e post-incremento automáticos, os rexistros de enderezos X, Y e Z diminúense ou aumentan.
Os 32 rexistros de traballo de propósito xeral, os 64 rexistros de E/S e os 128/256/512 bytes de SRAM de datos internos no ATtiny25/45/85 son accesibles a través de todos estes modos de direccionamento. O Rexistro File descríbese en “Xen- Rexistro de fins xerais File” na páxina 10.
Figura 5-2. Mapa de memoria de datos
Acceso a memoria de datos Tempos
Esta sección describe os conceptos xerais de temporización de acceso para o acceso á memoria interna. O acceso a datos internos SRAM realízase en dous ciclos clkCPU como se describe en Figura 5-3.
Figura 5-3. Ciclos de acceso a SRAM de datos no chip Memoria de datos EEPROM
O ATtiny25 / 45/85 contén 128/256/512 bytes de memoria EEPROM de datos. Organízase como un espazo de datos separado, no que se poden ler e escribir únicos bytes. A EEPROM ten unha resistencia de polo menos 100,000 ciclos de escritura / borrado. O acceso entre a EEPROM e a CPU descríbese a continuación, especificando os rexistros de enderezos EEPROM, o rexistro de datos da EEPROM e o rexistro de control da EEPROM. Para máis detalles, consulte "Descarga en serie" na páxina 151.
Acceso de lectura / escritura EEPROM
Os rexistros de acceso EEPROM son accesibles no espazo de E / S.
Os tempos de acceso de escritura para a EEPROM están indicados en Táboa 5-1 na páxina 21. Non obstante, unha función de temporización automática permite que o software do usuario detecte cando se pode escribir o seguinte byte. Se o código de usuario contén instrucións que escriben a EEPROM, hai que tomar algunhas precaucións. En fontes de alimentación moi filtradas, é probable que o VCC suba ou caia lentamente
Encendido/abaixo. Isto fai que o dispositivo funcione a un volume durante un período de tempotage inferior ao especificado como mínimo para a frecuencia de reloxo utilizada. Ver "Prevención da corrupción por EEPROM" na páxina 19 para máis detalles sobre como evitar problemas nestas situacións.
Para evitar escrituras EEPROM involuntarias, débese seguir un procedemento de escritura específico. Refírense a “Atómica Programación de bytes ”na páxina 17 e "Programación de bytes divididos" na páxina 17 para máis detalles sobre isto.
Cando se le a EEPROM, a CPU detense durante catro ciclos de reloxo antes de executarse a seguinte instrución. Cando se escribe a EEPROM, a CPU detense durante dous ciclos de reloxo antes de executarse a seguinte instrución.
Programación de bytes atómicos
Usar a programación de bytes atómicos é o modo máis sinxelo. Ao escribir un byte na EEPROM, o usuario debe escribir a dirección no Rexistro EEAR e os datos no Rexistro EEDR. Se os bits EEPMn son nulos, escribir EEPE (dentro de catro ciclos despois de que se escriba EEMPE) desencadeará a operación de borrado / escritura. Tanto o ciclo de borrado como o de escritura realízanse nunha operación e o tempo total de programación está indicado en Táboa 5-1 na páxina 21. O bit EEPE permanece configurado ata completar as operacións de borrado e escritura. Mentres o dispositivo está ocupado coa programación, non é posible facer ningunha outra operación EEPROM.
Programación de división de bytes
É posible dividir o ciclo de borrado e escritura en dúas operacións diferentes. Isto pode ser útil se o sistema require un tempo de acceso curto durante un período de tempo limitado (normalmente se a fonte de alimentación voltage cae). Para aproveitar tage deste método, requírese que as localizacións que se van escribir foron borradas antes da operación de escritura. Pero dado que as operacións de borrado e escritura están divididas, é posible facer as operacións de borrado cando o sistema permite facer operacións críticas para o tempo (normalmente despois do encendido).
Borrar
Para borrar un byte, o enderezo debe escribirse en EEAR. Se os bits EEPMn son 0b01, escribir o EEPE (dentro de catro ciclos despois de escribir EEMPE) desencadeará só a operación de borrado (o tempo de programación dáse en Táboa 5-1 páxina 21). O bit EEPE permanece configurado ata que finalice a operación de borrado. Mentres o dispositivo está ocupado programando, non é posible facer ningunha outra operación EEPROM.
Escribe
Para escribir unha situación, o usuario debe escribir a dirección en EEAR e os datos en EEDR. Se os bits EEPMn son 0b10, escribir o EEPE (dentro de catro ciclos despois de escribir EEMPE) desencadeará só a operación de escritura (o tempo de programación dáse en Táboa 5-1 na páxina 21). O bit EEPE permanece configurado ata que finaliza a operación de escritura. Se a localización que se escribiu non se borrou antes da escritura, os datos almacenados deberán considerarse perdidos. Mentres o dispositivo está ocupado coa programación, non é posible facer ningunha outra operación EEPROM.
O oscilador calibrado úsase para cronometrar os accesos á EEPROM. Asegúrese de que a frecuencia do oscilador está dentro dos requisitos descritos en “OSCCAL - Rexistro de calibración do oscilador” na páxina 31.
O seguinte código exampos ficheiros mostran un conxunto e unha función C para borrar, escribir ou escribir atómicos da EEPROM. O exampos asumen que as interrupcións están controladas (por exemplo, desactivando as interrupcións globalmente) para que non se produzan interrupcións durante a execución destas funcións.
Código de montaxe Example |
EEPROM_write:
; Agarde a finalización da escritura anterior sbic EECR,EEPE rjmp EEPROM_write ; Establecer o modo de programación ldi r16, (0<<EEPM1)|(0<<EEPM0) fóra EECR, r16 ; Configure o enderezo (r18: r17) no rexistro de enderezos fóra EEARH, r18 fóra EEARL, r17 ; Escribe datos (r19) no rexistro de datos fóra EEDR, r19 ; Escribe unha lóxica a EEMPE sbi EECR,EEMPE ; Comeza a escribir eeprom configurando EEPE sbi EECR,EEPE ret |
Código C Example |
void EEPROM_write(unsigned char ucAddress, unsigned char ucData)
{ /* Agarda a que se complete a escritura anterior */ while(EECR & (1< ; /* Establecer o modo de programación */ EECR = (0 < / * Configurar os rexistros de enderezos e datos * / EEAR = ucAddress; EEDR = ucData; /* Escribe un lóxico en EEMPE */ CEER | = (1 < / * Comezar a escribir eeprom configurando EEPE * / CEER | = (1 < } |
O seguinte código exampos ficheiros mostran as funcións de montaxe e C para ler a EEPROM. O exampas asumen que as interrupcións están controladas para que non se produzan interrupcións durante a execución destas funcións.
Código de montaxe Example |
EEPROM_rea:
; Agarde a finalización da escritura anterior sbic EECR,EEPE rjmp EEPROM_read ; Configure o enderezo (r18: r17) no rexistro de enderezos fóra EEARH, r18 fóra EEARL, r17 ; Comeza a ler eeprom escribindo EERE sbi EECR,EERE ; Ler datos do rexistro de datos en r16,EEDR ret |
Código C Example |
unsigned char EEPROM_read (unsigned char ucAddress)
{ / * Agarde a finalización da escritura anterior * / mentres (EECR & (1 < ; / * Configurar rexistro de enderezos * / EEAR = ucAddress; /* Inicia a lectura de eeprom escribindo EERE */ CEER | = (1 < / * Devolver datos do rexistro de datos * / devolver EEDR; } |
Prevención da corrupción por EEPROM
Durante períodos de baixo VCC, os datos da EEPROM poden corromperse porque o volume de subministracióntage é demasiado baixo para que a CPU e a EEPROM funcionen correctamente. Estes problemas son os mesmos que para os sistemas de nivel de placa que usan EEPROM, e deben aplicarse as mesmas solucións de deseño.
Unha corrupción de datos EEPROM pode ser causada por dúas situacións nas que o voltage é demasiado baixa. En primeiro lugar, unha secuencia de escritura normal na EEPROM require un volumen mínimotage para funcionar correctamente. En segundo lugar, a propia CPU pode executar instrucións incorrectamente, se a subministración voltage é demasiado baixo.
A corrupción de datos da EEPROM pode evitarse facilmente seguindo esta recomendación de deseño:
Manteña o AVR RESET activo (baixo) durante períodos de alimentación insuficiente voltage. Isto pódese facer activando o detector interno de Brown-out (BOD). Se o nivel de detección do DBO interno non coincide co
nivel de detección necesario, pódese utilizar un circuíto externo de protección de reinicio de VCC baixo. Se se produce un reinicio mentres está en curso unha operación de escritura, a operación de escritura completarase sempre que a fonte de alimentación voltage é suficiente.
Memoria de E / S
A definición do espazo de E / S do ATtiny25 / 45/85 móstrase en "Resumo do rexistro" na páxina 200.
Todos os E / S e periféricos ATtiny25 / 45/85 sitúanse no espazo de E / S. As instrucións LD / LDS / LDD e ST / STS / STD poden acceder a todas as localizacións de E / S, transferindo datos entre os 32 rexistros de traballo de propósito xeral e o espazo de E / S. Os rexistros de E / S dentro do rango de enderezos 0x00 - 0x1F son directamente accesibles en bits usando as instrucións SBI e CBI. Nestes rexistros pódese comprobar o valor dos bits individuais empregando as instrucións SBIS e SBIC. Consulte a sección do conxunto de instrucións para obter máis detalles. Cando se usan os comandos específicos de E / S IN e OUT, débense empregar os enderezos de E / S 0x00 - 0x3F. Cando se dirixen rexistros de E / S como espazo de datos mediante instrucións LD e ST, hai que engadir 0x20 a estes enderezos.
Para a compatibilidade con futuros dispositivos, os bits reservados deben escribirse a cero se se accede. Os enderezos de memoria de E / S reservados nunca deben escribirse.
Algunhas das bandeiras de estado bórranse escribíndolles unha lóxica. Teña en conta que as instrucións CBI e SBI só funcionarán no bit especificado e, polo tanto, poden usarse nos rexistros que conteñan tales bandeiras de estado. As instrucións CBI e SBI funcionan só cos rexistros de 0x00 a 0x1F.
Os rexistros de control de E / S e periféricos explícanse en seccións posteriores.
Descrición do rexistro
EEARH - Rexistro de enderezos EEPROM
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x1F | – | – | – | – | – | – | – | EEAR8 | EEARH |
Ler/Escribir | 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 reservados
Estes bits están reservados para o seu uso futuro e sempre se lerán como cero.
Bits 0 - EEAR8: Enderezo EEPROM
Este é o bit de dirección EEPROM máis significativo de ATtiny85. Nos dispositivos con menos EEPROM, é dicir, ATtiny25 / ATtiny45, este bit está reservado e sempre lerá cero. O valor inicial do rexistro de enderezos EEPROM (EEAR) non está definido e, polo tanto, debe escribirse un valor adecuado antes de acceder á EEPROM.
EEARL - Rexistro de enderezos EEPROM
Bit
0x1E | EEAR7 | EEAR6 | EEAR5 | EEAR4 | EEAR3 | EEAR2 | EEAR1 | EEAR0 | EEARL |
Traseira / Escritura | 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: Enderezo EEPROM
Este é o bit de dirección EEPROM máis significativo de ATtiny45. Nos dispositivos con menos EEPROM, é dicir, ATtiny25, este bit resérvase e sempre lerá cero. O valor inicial do Rexistro de enderezos da EEPROM (EEAR) non está definido e, polo tanto, debe escribirse un valor adecuado antes de acceder á EEPROM.
Bits 6: 0 - EEAR [6: 0]: Enderezo EEPROM
Estes son os bits (baixos) do rexistro de enderezos EEPROM. Os bytes de datos EEPROM diríxense linealmente no rango 0 ... (128/256 / 512-1). O valor inicial de EEAR non está definido e, polo tanto, debe escribirse un valor adecuado antes de que se poida acceder á EEPROM.
EEDR - Rexistro de datos EEPROM
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x1D | EEDR7 | EEDR6 | EEDR5 | EEDR4 | EEDR3 | EEDR2 | EEDR1 | EEDR0 | EEDR |
Ler/Escribir | 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 |
Para a operación de escritura EEPROM, o Rexistro EEDR contén os datos que se escribirán na EEPROM no enderezo indicado polo Rexistro EEAR. Para a operación de lectura EEPROM, o EEDR contén os datos lidos desde o
EEPROM no enderezo indicado por EEAR.
5.5.4 Rexistro de control EECR - EEPROM |
|||||||||
Bit 7 6 5 | 4 | 3 | 2 | 1 | 0 | ||||
0x1C – | – | EEPM1 | EEPM0 | ANTERIOR | EEMPE | EEPE | EERE | CEER | |
Ler / escribir 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 reservado
Este bit está reservado para o seu uso futuro e sempre se lerá como 0 en ATtiny25 / 45/85. Para a compatibilidade con futuros dispositivos AVR, escriba sempre este bit a cero. Despois de ler, máscara este anaco.
Bit 6 - Res: Bit reservado
Este bit está reservado no ATtiny25 / 45/85 e sempre se lerá como cero.
Bits 5: 4 - EEPM [1: 0]: Bits de modo de programación EEPROM
A configuración de bits de modo de programación EEPROM define a acción de programación que se desencadeará ao escribir EEPE. É posible programar datos nunha operación atómica (borrar o valor antigo e programar o novo valor) ou dividir as operacións de borrado e escritura en dúas operacións diferentes. Os tempos de programación para os diferentes modos móstranse en Táboa 5-1. Mentres EEPE está configurado, calquera escritura en EEPMn ignorarase. Durante o reinicio, os bits de EEPMn restableceranse a 0b00 a menos que a EEPROM estea ocupada programando.
Táboa 5-1. Bits de modo EEPROM
EEPM1 | EEPM0 | Tempo de programación | Operación |
0 | 0 | 3.4 ms | Borrar e escribir nunha operación (operación atómica) |
0 | 1 | 1.8 ms | Só borrar |
1 | 0 | 1.8 ms | Só escribir |
1 | 1 | – | Reservado para uso futuro |
Bit 3 - EERIE: Activar a interrupción lista para EEPROM
Escribir EERIE nun permite activar a interrupción EEPROM Ready se o I-bit en SREG está configurado. Escribir EERIE a cero desactiva a interrupción. A interrupción preparada EEPROM xera unha interrupción constante cando a memoria non volátil está lista para a programación.
Bit 2 - EEMPE: Activación do programa mestre EEPROM
O bit EEMPE determina se escribir EEPE nun terá efecto ou non.
Cando se establece EEMPE, axustar EEPE dentro de catro ciclos de reloxo programará a EEPROM no enderezo seleccionado. Se EEMPE é cero, a configuración de EEPE non terá efecto. Cando o software escribiu a EEMPE nun, o hardware limpa o bit a cero despois de catro ciclos de reloxo.
Bit 1 - EEPE: Activación do programa EEPROM
O sinal de habilitación do programa EEPROM EEPE é o sinal de habilitación de programación para a EEPROM. Cando se escribe EEPE, a EEPROM programarase de acordo coa configuración de bits EEPMn. O bit EEMPE debe escribirse nun antes de que se escriba un lóxico en EEPE, se non, non se produce ningunha escritura EEPROM. Cando transcorreu o tempo de acceso de escritura, o bit EEPE bórrase por hardware. Cando se estableceu o EEPE, a CPU detense durante dous ciclos antes de executarse a seguinte instrución.
Bit 0 - EERE: habilitación de lectura EEPROM
O sinal de habilitación de lectura EEPROM (EERE) é o estroboscópico de lectura da EEPROM. Cando a dirección correcta está configurada no rexistro EEAR, o bit EERE debe escribirse nun para activar a lectura EEPROM. O acceso de lectura EEPROM leva unha instrución e os datos solicitados están dispoñibles de inmediato. Cando se le a EEPROM, a CPU detense durante catro ciclos antes de executarse a seguinte instrución. O usuario debería sondear o bit EEPE antes de iniciar a operación de lectura. Se está en curso unha operación de escritura, non é posible ler a EEPROM nin cambiar o rexistro de EEAR.
Opcións de reloxo e reloxo do sistema
Sistemas de reloxo e a súa distribución
Reloxo da CPU
O reloxo da CPU envíase a partes do sistema relacionadas co funcionamento do núcleo AVR. Exampos destes módulos son o Rexistro de Finalidade Xeral File, o Rexistro de estado e a memoria de datos que contén o punteiro de pila. Parar o reloxo da CPU impide que o núcleo realice operacións e cálculos xerais.
I / O Clock - clkI / O
O reloxo de E / S é usado pola maioría dos módulos de E / S, como Timer / Counter. O reloxo de E / S tamén o usa o módulo de interrupción externa, pero teña en conta que algunhas interrupcións externas son detectadas por lóxica asíncrona, o que permite detectar estas interrupcións aínda que o reloxo de E / S estea detido.
Flash Clock - clkFLASH
O reloxo Flash controla o funcionamento da interface Flash. O reloxo Flash adoita estar activo simultaneamente co reloxo da CPU.
ADC Clock - clkADC
O ADC está provisto dun dominio de reloxo dedicado. Isto permite deter a CPU e os reloxos de E / S para reducir o ruído xerado polos circuítos dixitais. Isto proporciona resultados de conversión ADC máis precisos.
PLL interno para a xeración de reloxo periférico rápido - clkPCK
O PLL interno en ATtiny25 / 45/85 xera unha frecuencia de reloxo que se multiplica por 8 veces a partir dunha entrada de orixe. Por defecto, o PLL usa a saída do oscilador RC interno de 8.0 MHz como fonte. Alternativamente, se se establece o bit LSM de PLLCSR, o PLL empregará a saída do oscilador RC dividido por dous. Así, a saída do PLL, o reloxo periférico rápido é de 64 MHz. O reloxo periférico rápido, ou un reloxo precalificado a partir diso, pódese seleccionar como fonte de reloxo para Timer / Counter1 ou como reloxo do sistema. Ver Figura 6-2. A frecuencia do reloxo periférico rápido divídese por dous cando se configura o LSM de PLLCSR, o que resulta nunha frecuencia de reloxo de 32 MHz. Teña en conta que non se pode configurar LSM se se usa PLLCLK como reloxo do sistema.
Figura 6-2. Sistema de reloj PCK.
O PLL está bloqueado no oscilador RC e axustando o oscilador RC mediante o rexistro OSCCAL axustarase o reloxo periférico rápido ao mesmo tempo. Non obstante, aínda que o oscilador RC se leve a unha frecuencia superior a 8 MHz, a frecuencia de reloxo periférico rápido satura a 85 MHz (no peor dos casos) e segue oscilando coa frecuencia máxima. Nótese que o PLL neste caso xa non está bloqueado co reloxo do oscilador RC. Polo tanto, recoméndase non levar os axustes OSCCAL a unha frecuencia superior a 8 MHz para manter o PLL no rango de funcionamento correcto.
O PLL interno está habilitado cando:
O bit PLLE no rexistro PLLCSR está configurado.
O fusible CKSEL está programado en '0001'.
O fusible CKSEL está programado en '0011'.
O bit PLLCSR PLOCK está establecido cando PLL está bloqueado. Tanto o oscilador RC interno como o PLL apáganse nos modos de suspensión e de suspensión.
PLL interno en modo de compatibilidade ATtiny15
Dado que ATtiny25 / 45/85 é un dispositivo de migración para usuarios de ATtiny15, existe un modo de compatibilidade ATtiny15 para a compatibilidade posterior. O modo de compatibilidade ATtiny15 selecciónase programando os fusibles CKSEL en '0011'.
No modo de compatibilidade ATtiny15 a frecuencia do oscilador RC interno está calibrada ata 6.4 MHz e o factor de multiplicación do PLL establécese en 4x. Ver Figura 6-3. Con estes axustes o sistema de reloxo é compatible con ATtiny15 e o reloxo periférico rápido resultante ten unha frecuencia de 25.6 MHz (igual que en ATtiny15).
Figura 6-3. Sistema de reloj PCK en modo de compatibilidade ATtiny15.
Fontes do reloxo
O dispositivo ten as seguintes opcións de fonte de reloxo, seleccionables por bits de fusibles Flash como se mostra a continuación. O reloxo da fonte seleccionada introdúcese no xerador de reloxo AVR e diríxese aos módulos apropiados.
Táboa 6-1. Opcións de reloxo do dispositivo Seleccione
Opción de reloxo de dispositivo | CKSEL[3:0](1) |
Reloxo Externo (ver páxina 26) | 0000 |
Reloxo PLL de alta frecuencia (ver páxina 26) | 0001 |
Oscilador interno calibrado (ver páxina 27) | 0010(2) |
Oscilador interno calibrado (ver páxina 27) | 0011(3) |
Oscilador interno a 128 kHz (ver páxina 28) | 0100 |
Oscilador de cristal de baixa frecuencia (ver páxina 29) | 0110 |
Oscilador de cristal / resonador de cerámica (ver páxina 29) | 1000 - 1111 |
Reservado | 0101, 0111 |
Para todos os fusibles "1" significa non programado mentres que "0" significa programado.
O dispositivo envíase con esta opción seleccionada.
Isto seleccionará o modo de compatibilidade ATtiny15, onde o reloxo do sistema está dividido por catro, obtendo unha frecuencia de reloxo de 1.6 MHz. Para obter máis información, consulte "Oscilador interno calibrado" na páxina 27.
As seguintes opcións para cada opción de reloxo danse nas seguintes seccións. Cando a CPU esperta dende o apagado, a fonte de reloxo seleccionada úsase para programar o inicio, asegurando un funcionamento estable do oscilador antes de que comece a execución da instrución. Cando a CPU comeza a reiniciarse, hai un atraso adicional que permite que a potencia alcance un nivel estable antes de comezar o funcionamento normal. O oscilador Watchdog úsase para programar esta parte en tempo real do tempo de inicio. O número de ciclos de oscilador WDT empregados para cada tempo de espera móstrase en Táboa 6-2.
Táboa 6-2. Número de ciclos do oscilador Watchdog
Tempo de espera típico | Número de Ciclos |
4 ms | 512 |
64 ms | 8K (8,192) |
Reloxo Externo
Para dirixir o dispositivo desde unha fonte de reloxo externa, debe dirixirse CLKI como se mostra en Figura 6-4. Para executar o dispositivo nun reloxo externo, os fusibles CKSEL deben programarse en "00".
Figura 6-4. Configuración da unidade de reloxo externo
Cando se selecciona esta fonte de reloxo, os fusibles SUT determinan os tempos de inicio como se mostra en Táboa 6-3.
Táboa 6-3. Horas de inicio para a selección do reloxo externo
SUT[1:0] | Tempo de inicio desde o apagado | Retraso adicional desde o reinicio | Uso recomendado |
00 | 6 CK | 14 CK | BOD activado |
01 | 6 CK | 14CK + 4 ms | Potencia en rápido aumento |
10 | 6 CK | 14CK + 64 ms | Lentamente subindo o poder |
11 | Reservado |
Ao aplicar un reloxo externo, é necesario evitar cambios bruscos na frecuencia de reloxo aplicada para garantir un funcionamento estable da MCU. Unha variación de frecuencia superior ao 2% dun ciclo de reloxo ao seguinte pode levar a un comportamento imprevisible. É necesario asegurarse de que a MCU se mantén en Restablecer durante estes cambios na frecuencia do reloxo.
Teña en conta que a revenda do reloxo do sistema pode usarse para implementar cambios de tempo de execución da frecuencia do reloxo interno mentres se garante un funcionamento estable. Refírense a "Sistema de precalificación do reloxo do sistema" na páxina 31 para os detalles.
Reloxo PLL de alta frecuencia
Hai un PLL interno que proporciona unha velocidade de reloxo nominal de 64 MHz bloqueada no oscilador RC para o uso do temporizador periférico / contador1 e para a fonte do reloxo do sistema. Cando se selecciona como fonte de reloxo do sistema, programando os fusibles CKSEL a '0001', divídese por catro como se mostra en Táboa 6-4.
Táboa 6-4. Modos de funcionamento do reloxo PLL de alta frecuencia
CKSEL[3:0] | Frecuencia nominal |
0001 | 16 MHz |
Cando se selecciona esta fonte de reloxo, os fusibles SUT determinan os tempos de inicio como se mostra en Táboa 6-5.
Táboa 6-5. Horas de inicio do reloxo PLL de alta frecuencia
SUT[1:0] | Tempo de inicio desde o apagado | Retraso adicional desde o restablecemento do encendido (VCC = 5.0 V) | Uso recomendado |
00 | 14CK + 1K (1024) CK + 4 ms | 4 ms | BOD activado |
Táboa 6-5. Horas de inicio do reloxo PLL de alta frecuencia
SUT[1:0] | Tempo de inicio desde o apagado | Retraso adicional desde o restablecemento do encendido (VCC = 5.0 V) | Uso recomendado |
01 | 14CK + 16K (16384) CK + 4 ms | 4 ms | Potencia en rápido aumento |
10 | 14CK + 1K (1024) CK + 64 ms | 4 ms | Lentamente subindo o poder |
11 | 14CK + 16K (16384) CK + 64 ms | 4 ms | Lentamente subindo o poder |
Oscilador interno calibrado
Por defecto, o oscilador RC interno proporciona un reloxo aproximado de 8.0 MHz. Aínda que voltagDependendo da temperatura e, este reloxo pode ser calibrado con moita precisión polo usuario. Ver “Oscilador RC calibrado interno racy ”na páxina 164 e "Velocidade do oscilador interno" na páxina 192 para máis detalles. O dispositivo envíase co fusible CKDIV8 programado. Ver "Sistema de precalificación do reloxo do sistema" na páxina 31 para máis detalles.
Este reloxo pódese seleccionar como o reloxo do sistema programando os fusibles CKSEL como se mostra en Táboa 6-6 na páxina
27. Se se selecciona, funcionará sen compoñentes externos. Durante o reinicio, o hardware carga o valor de calibración preprogramado no rexistro OSCCAL e, polo tanto, calibra automaticamente o oscilador RC. A precisión desta calibración móstrase como calibración de fábrica en Táboa 21-2 na páxina 164.
Cambiando o rexistro OSCCAL de SW, ver “OSCCAL - Rexistro de calibración do oscilador” na páxina 31, é posible obter unha precisión de calibración maior que empregando a calibración de fábrica. A precisión desta calibración móstrase como calibración do usuario en Táboa 21-2 na páxina 164.
Cando se usa este oscilador como reloxo de chip, o oscilador Watchdog seguirá sendo usado para o temporizador Watchdog e para o tempo de espera de reinicio. Para obter máis información sobre o valor de calibración preprogramado, consulte a sección "Cali- bytes de bración ”na páxina 150.
O oscilador interno tamén se pode configurar para proporcionar un reloxo de 6.4 MHz escribindo fusibles CKSEL en "0011", como se mostra en Táboa 6-6 abaixo. Esta configuración refírese a Modo de compatibilidade ATtiny15 e está destinada a proporcionar unha fonte de reloxo calibrada a 6.4 MHz, como en ATtiny15. No modo de compatibilidade ATtiny15, o PLL usa o oscilador interno que funciona a 6.4 MHz para xerar un sinal de reloxo periférico de 25.6 MHz para o temporizador / contador1 (ver "Temporizador / contador de 8 bits 1 in Modo ATtiny15 ”na páxina 95). Nótese que neste modo de funcionamento o sinal de reloxo de 6.4 MHz sempre se divide por catro, proporcionando un reloxo de sistema de 1.6 MHz.
Táboa 6-6. Modos de funcionamento do oscilador RC calibrado interno
CKSEL[3:0] | Frecuencia nominal |
0010(1) | 8.0 MHz |
0011(2) | 6.4 MHz |
O dispositivo envíase con esta opción seleccionada.
Esta configuración seleccionará o modo de compatibilidade ATtiny15, onde o reloxo do sistema está dividido por catro, obtendo unha frecuencia de reloxo de 1.6 MHz.
Cando se selecciona o oscilador interno calibrado de 8 MHz como fonte de reloxo, os tempos de arranque están determinados polos fusibles SUT como se mostra en Táboa 6-7 abaixo.
Táboa 6-7. Horas de arranque do reloxo oscilador RC calibrado interno
SUT[1:0] | Tempo de inicio desde o apagado | Retraso adicional desde o reinicio (VCC = 5.0 V) | Uso recomendado |
00 | 6 CK | 14 CK(1) | BOD activado |
01 | 6 CK | 14CK + 4 ms | Potencia en rápido aumento |
10(2) | 6 CK | 14CK + 64 ms | Lentamente subindo o poder |
11 | Reservado |
1. Se o fusible RSTDISBL está programado, este tempo de inicio aumentarase a 14CK + 4 ms para garantir que se poida ingresar o modo de programación.
2. O dispositivo envíase con esta opción seleccionada.
No modo de compatibilidade ATtiny15 os tempos de inicio determínanse mediante fusibles SUT como se mostra en Táboa 6-8 abaixo.
Táboa 6-8. Horas de inicio para o reloxo de oscilador RC calibrado interno (en modo ATtiny15)
SUT[1:0] | Tempo de inicio desde o apagado | Retraso adicional desde o reinicio (VCC = 5.0 V) | Uso recomendado |
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: Se se programa o fusible RSTDISBL, este tempo de arranque aumentarase a 14CK + 4 ms para garantir que se poida entrar no modo de programación.
En resumo, pódese atopar máis información sobre o modo de compatibilidade ATtiny15 en seccións "Porto B (PB5: PB0)" activado páxina 2, "PLL interno en modo de compatibilidade ATtiny15" na páxina 24, "Temporizador / contador de 8 bits en modo ATtiny1" activado páxina 95, "Limitacións de debugWIRE" na páxina 140, "Bytes de calibración" na páxina 150 e na táboa “Prescalador de reloxo Selecciona ”na páxina 33.
Oscilador interno a 128 kHz
O oscilador interno de 128 kHz é un oscilador de baixa potencia que proporciona un reloxo de 128 kHz. A frecuencia é nominal a 3V e 25°C. Este reloxo pódese seleccionar como reloxo do sistema programando os fusibles CKSEL en "0100".
Cando se selecciona esta fonte de reloxo, os fusibles SUT determinan os tempos de inicio como se mostra en Táboa 6-9.
Táboa 6-9. Tempos de arranque do oscilador interno de 128 kHz
SUT[1:0] | Tempo de inicio desde o apagado | Retraso adicional desde o reinicio | Uso recomendado |
00 | 6 CK | 14 CK(1) | BOD activado |
01 | 6 CK | 14CK + 4 ms | Potencia en rápido aumento |
10 | 6 CK | 14CK + 64 ms | Lentamente subindo o poder |
11 | Reservado |
Nota: Se se programa o fusible RSTDISBL, este tempo de arranque aumentarase a 14CK + 4 ms para garantir que se poida entrar no modo de programación.
Oscilador de cristal de baixa frecuencia
Para usar un reloxo de cristal de 32.768 kHz como fonte de reloxo do dispositivo, o Oscilador de cristal de baixa frecuencia debe seleccionarse configurando os fusibles CKSEL en '0110'. O cristal debería conectarse como se mostra en Figura 6-5. Para atopar a capacidade de carga adecuada para un crisal de 32.768 kHz, consulte a ficha técnica do fabricante.
Cando se selecciona este oscilador, os fusibles SUT determinan os tempos de arranque como se mostra en Táboa 6-10.
Táboa 6-10. Horas de inicio para a selección do reloxo do oscilador de cristal de baixa frecuencia
SUT[1:0] | Tempo de inicio desde o apagado | Retraso adicional desde o reinicio (VCC = 5.0 V) | Uso recomendado |
00 | 1K (1024) CK(1) | 4 ms | Potencia de aumento rápido ou DBO activado |
01 | 1K (1024) CK(1) | 64 ms | Lentamente subindo o poder |
10 | 32K (32768) CK | 64 ms | Frecuencia estable ao arranque |
11 | Reservado |
Nota: Estas opcións deberían utilizarse só se a estabilidade da frecuencia no inicio non é importante.
O oscilador de cristal de baixa frecuencia proporciona unha capacidade de carga interna, ver Táboa 6-11 en cada pin TOSC.
Táboa 6-11. Capacitancia do oscilador de cristal de baixa frecuencia
Dispositivo | 32 kHz Osc. Tipo | Cap (Xtal1 / Tosc1) | Cap (Xtal2 / Tosc2) |
ATtiny25 / 45/85 | Sistema Osc. | 16 pF | 6 pF |
Oscilador de cristal / resonador de cerámica
XTAL1 e XTAL2 son de entrada e saída, respectivamente, dun inversor amplifier que se pode configurar para usar como un oscilador en chip, como se mostra en Figura 6-5. Pódese usar un cristal de cuarzo ou un resonador cerámico.
C1 e C2 deben ser sempre iguais tanto para os cristais como para os resonadores. O valor óptimo dos capacitores depende do cristal ou do resonador en uso, da cantidade de capacidade perdida e do ruído electromagnético do ambiente. Algunhas pautas iniciais para escoller capacitores para usar con cristais danse Táboa 6-12 abaixo. Para os resonadores cerámicos, deben usarse os valores do condensador dados polo fabricante.
Táboa 6-12. Modos de funcionamento do oscilador de cristal
CKSEL[3:1] | Rango de frecuencia (MHz) | Alcance recomendado para condensadores C1 e C2 para uso con cristais (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 |
Notas: Esta opción non debe usarse con cristais, só con resonadores cerámicos.
O oscilador pode funcionar en tres modos diferentes, cada un optimizado para un rango de frecuencia específico. Os fusibles CKSEL [3: 1] seleccionan o modo de funcionamento como se mostra en Táboa 6-12.
Os fusibles CKSEL0 xunto cos fusibles SUT [1: 0] seleccionan os tempos de inicio como se mostra en Táboa 6-13.
Táboa 6-13. Horas de inicio para a selección do reloxo do oscilador de cristal
CKSEL0 | SUT[1:0] | Tempo de inicio desde o apagado | Retraso adicional desde o reinicio | Uso recomendado |
0 | 00 | 258 CK(1) | 14CK + 4 ms | Resonador cerámico, de rápido aumento |
0 | 01 | 258 CK(1) | 14CK + 64 ms | Resonador cerámico, subindo lentamente |
0 | 10 | 1K (1024) CK(2) | 14 CK | Resonador de cerámica, DBO activado |
0 | 11 | 1K (1024) CK(2) | 14CK + 4 ms | Resonador cerámico, de rápido aumento |
1 | 00 | 1K (1024) CK(2) | 14CK + 64 ms | Resonador cerámico, subindo lentamente |
1 | 01 | 16K (16384) CK | 14 CK | Oscilador de cristal, DBO activado |
1 | 10 | 16K (16384) CK | 14CK + 4 ms | Oscilador de cristal, potencia de rápido aumento |
1 | 11 | 16K (16384) CK | 14CK + 64 ms | Oscilador de cristal, subindo lentamente |
Notas
Estas opcións só se deben empregar cando non funcionan preto da frecuencia máxima do dispositivo e só se a estabilidade de frecuencia no arranque non é importante para a aplicación. Estas opcións non son adecuadas para cristais.
Estas opcións están pensadas para usarse con resonadores cerámicos e garantirán a estabilidade de frecuencia ao iniciar. Tamén se poden empregar con cristais cando non funcionan preto da frecuencia máxima do dispositivo e se a estabilidade de frecuencia no arranque non é importante para a aplicación.
Fonte de reloxo predeterminada
O dispositivo envíase con CKSEL = "0010", SUT = "10" e CKDIV8 programado. A configuración predeterminada da fonte de reloxo é, polo tanto, o oscilador RC interno que funciona a 8 MHz cun tempo de inicio máis longo e unha preescalada inicial do reloxo do sistema de 8, o que resulta nun reloxo do sistema de 1.0 MHz. Esta configuración predeterminada garante que todos os usuarios poidan configurar a súa fonte de reloxo desexada mediante un sistema integrado ou de alto volumentage Programador.
Sistema de precalificación do reloxo
O reloxo do sistema ATtiny25 / 45/85 pódese dividir configurando o "CLKPR - Rexistro de preamplificación do reloxo" na páxina 32. Esta función pódese usar para diminuír o consumo de enerxía cando a necesidade de potencia de procesamento é baixa. Isto pódese usar con todas as opcións de fonte de reloxo e afectará a frecuencia de reloxo da CPU e de todos os periféricos sincrónicos. clkI/O, clkADC, clkCPU e clkFLASH divídense por un factor como se mostra en Táboa 6-15 na páxina 33.
Tempo de cambio
Ao cambiar entre a configuración do precalificador, o Sistema de precalificación do reloxo garante que non se producen fallos no sistema do reloxo e que ningunha frecuencia intermedia sexa superior nin á frecuencia do reloxo correspondente á configuración anterior nin á frecuencia do reloxo correspondente á nova configuración.
O contador de ondas que implementa o precalificador funciona coa frecuencia do reloxo indiviso, que pode ser máis rápida que a frecuencia de reloxo da CPU. Polo tanto, non é posible determinar o estado do precalificador, aínda que fose lexible e non se pode predicir exactamente o tempo preciso para cambiar dunha división de reloxo a outra.
Desde que se escriben os valores CLKPS, leva entre T1 + T2 e T1 + 2 * T2 antes de que a nova frecuencia do reloxo estea activa. Neste intervalo prodúcense 2 arestas de reloxo activas. Aquí, T1 é o período de reloxo anterior e T2 é o período correspondente á nova configuración de precalificador.
Buffer de saída do reloxo
O dispositivo pode emitir o reloxo do sistema no pin CLKO (cando non se usa como pin XTAL2). Para habilitar a saída, hai que programar o fusible CKOUT. Este modo é adecuado cando o reloxo de chip se usa para dirixir outros circuítos do sistema. Teña en conta que o reloxo non se emitirá durante o reinicio e que o funcionamento normal do pin de E / S será anulado cando se programa o fusible. O oscilador RC interno, o oscilador WDT, PLL e reloxo externo (CLKI) pódense seleccionar cando o reloxo sae en CLKO. Os osciladores de cristal (XTAL1, XTAL2) non se poden usar para a saída de reloxo en CLKO. Se se usa o sistema de precalificación do reloxo do sistema, é o reloxo do sistema dividido o que sae.
Descrición do rexistro
OSCCAL - Rexistro de calibración do oscilador
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x31 | CAL7 | CAL6 | CAL5 | CAL4 | CAL3 | CAL2 | CAL1 | CAL0 | OSCAL |
Ler/Escribir | 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ón do oscilador
O rexistro de calibración do oscilador úsase para recortar o oscilador RC interno calibrado para eliminar as variacións do proceso da frecuencia do oscilador. Un valor de calibración preprogramado escríbese automaticamente neste rexistro durante o reinicio do chip, dando á frecuencia calibrada de fábrica como se especifica en Táboa 21-2 na páxina 164. O software da aplicación pode escribir este rexistro para cambiar a frecuencia do oscilador. O oscilador pódese calibrar ás frecuencias especificadas en Táboa 21-2 na páxina 164. A calibración fóra dese rango non está garantida.
Teña en conta que este oscilador úsase para cronometrar os accesos de escritura EEPROM e Flash, e estes tempos de escritura veranse afectados en consecuencia. Se a EEPROM ou Flash están escritos, non calibrar a máis de 8.8 MHz. Se non, a escritura EEPROM ou Flash pode fallar.
O bit CAL7 determina o rango de operación do oscilador. Establecer este bit a 0 proporciona o rango de frecuencia máis baixo, o axustar este bit a 1 proporciona o rango de frecuencia máis alto. Os dous rangos de frecuencia están superpostos, noutras palabras, unha configuración de OSCCAL = 0x7F dá unha frecuencia máis alta que OSCCAL = 0x80.
Os bits CAL [6: 0] úsanse para sintonizar a frecuencia dentro do rango seleccionado. Un axuste de 0x00 dá a frecuencia máis baixa nese rango e un axuste de 0x7F dá a frecuencia máis alta do rango.
Para garantir un funcionamento estable da MCU, o valor de calibración debe cambiarse en pequeno. Unha variación de frecuencia superior ao 2% dun ciclo ao seguinte pode levar a un comportamento impredecible. Os cambios en OSCCAL non deben exceder 0x20 para cada calibración. É necesario asegurarse de que a MCU se mantén en Restablecer durante estes cambios na frecuencia do reloxo
Táboa 6-14. Rango de frecuencia do oscilador RC interno
Valor OSCCAL | Frecuencia máis baixa típica con respecto á frecuencia nominal | Frecuencia máis alta típica con respecto á frecuencia nominal |
0x00 | 50 % | 100 % |
0x3F | 75 % | 150 % |
0x7F | 100 % | 200 % |
CLKPR - Rexistro de preamplificación do reloxo
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x26 | CLKPCE | – | – | – | CLKPS3 | CLKPS2 | CLKPS1 | CLKPS0 | CLKPR |
Ler/Escribir | R/W | R | R | R | R/W | R/W | R/W | R/W |
Valor inicial 0 0 0 0 Ver descrición de bits
Bit 7 - CLKPCE: Habilitar cambio de precalificador de reloxo
O bit CLKPCE debe escribirse na lóxica un para permitir o cambio dos bits CLKPS. O bit CLKPCE só se actualiza cando os outros bits de CLKPR se escriben simultaneamente a cero. CLKPCE bórrase por hardware catro ciclos despois de que se escriba ou cando se escriben os bits CLKPS. Reescribir o bit CLKPCE dentro deste período de tempo de espera non amplía o período de tempo de espera nin borra o bit CLKPCE.
Bits 6: 4 - Res: Bits reservados
Estes bits son bits reservados no ATtiny25 / 45/85 e sempre se lerán como cero.
Bits 3: 0 - CLKPS [3: 0]: Seleccionar Bits 3-0
Estes bits definen o factor de división entre a fonte de reloxo seleccionada e o reloxo interno do sistema. Estes bits pódense escribir en tempo de execución para variar a frecuencia do reloxo de acordo cos requisitos da aplicación. A medida que o divisor divide a entrada do reloxo mestre á MCU, a velocidade de todos os periféricos síncronos redúcese cando se usa un factor de división. Os factores de división danse en Táboa 6-15.
Para evitar cambios involuntarios de frecuencia de reloxo, débese seguir un procedemento especial de escritura para cambiar os bits CLKPS:
Escribe o bit Clock Prescaler Change Enable (CLKPCE) nun e todos os outros bits en CLKPR a cero.
Dentro de catro ciclos, escribe o valor desexado en CLKPS mentres escribes un cero en CLKPCE.
As interrupcións deben estar desactivadas ao cambiar a configuración do precalador para asegurarse de que o procedemento de escritura non se interrompe.
O fusible CKDIV8 determina o valor inicial dos bits CLKPS. Se CKDIV8 non está programado, os bits CLKPS restableceranse a "0000". Se se programa CKDIV8, os bits CLKPS restablecen a "0011", dando un factor de división de oito ao inicio. Esta función debería utilizarse se a fonte de reloxo seleccionada ten unha frecuencia superior á frecuencia máxima do dispositivo nas condicións actuais de funcionamento. Teña en conta que se pode escribir calquera valor nos bits CLKPS independentemente da configuración do fusible CKDIV8. O software da aplicación debe garantir que hai un factor de división suficiente
escollido se a fonte de reloxo seleccionada ten unha frecuencia superior á frecuencia máxima do dispositivo nas condicións actuais de funcionamento. O dispositivo envíase co fusible CKDIV8 programado.
Táboa 6-15. Seleccionar preescalador de reloxo
CLKPS3 | CLKPS2 | CLKPS1 | CLKPS0 | Factor de división do reloxo |
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 | Reservado |
1 | 0 | 1 | 0 | Reservado |
1 | 0 | 1 | 1 | Reservado |
1 | 1 | 0 | 0 | Reservado |
1 | 1 | 0 | 1 | Reservado |
1 | 1 | 1 | 0 | Reservado |
1 | 1 | 1 | 1 | Reservado |
Nota: O preescalador está desactivado no modo de compatibilidade ATtiny15 e nin escribir en CLKPR nin programar o fusible CKDIV8 teñen ningún efecto no reloxo do sistema (que sempre será de 1.6 MHz).
Xestión de enerxía e modos de sono
O alto rendemento e a eficiencia de código líder na industria fan dos microcontroladores AVR unha opción ideal para aplicacións de baixa potencia. Ademais, os modos de suspensión permiten á aplicación pechar os módulos non utilizados na MCU, aforrando así enerxía. O AVR ofrece varios modos de suspensión que permiten ao usuario adaptar o consumo de enerxía aos requirimentos da aplicación.
Modos de sono
Figura 6-1 na páxina 23 presenta os diferentes sistemas de reloxo e a súa distribución en ATtiny25 / 45/85. A figura é útil para seleccionar un modo de sono adecuado. Táboa 7-1 mostra os diferentes modos de sono e as súas fontes de espertar.
Táboa 7-1. Dominios de reloxo activo e fontes de espertar nos diferentes modos de sono
Dominios de reloxo activos | Osciladores | Fontes de espertar | ||||||||||
Modo de sono | clkCPU | clkFLASH | clkIO | clkADC | clkPCK | Fonte de reloxo principal habilitada | INT0 e Pin Change | SPM / EEPROM
Listo |
USI Condición inicial |
ADC | Outras E/S | Can vixiante Interrupción |
Inactivo | X | X | X | X | X | X | X | X | X | X | ||
Redución de ruído ADC | X | X | X(1) | X | X | X | X | |||||
Apague | X(1) | X | X |
Nota: para INT0, só interrupción de nivel.
Para introducir calquera dos tres modos de suspensión, o bit SE en MCUCR debe escribirse na lóxica primeiro e executar unha instrución SLEEP. Os bits SM [1: 0] do Rexistro MCUCR seleccionan o modo de suspensión (ralentí, redución de ruído ADC ou apagado) que se activará coa instrución SLEEP. Ver Táboa 7-2 para un resumo.
Se se produce unha interrupción activada mentres a MCU está en modo de suspensión, a MCU esperta. Despois, o MCU deténse durante catro ciclos ademais do tempo de inicio, executa a rutina de interrupción e retoma a execución desde a instrución que segue a SLEEP. O contido do Rexistro File e SRAM non se alteran cando o dispositivo esperta do modo de suspensión. Se se produce un reinicio durante o modo de suspensión, o MCU esperta e execútase desde o vector de reinicio.
Nota: se se usa unha interrupción activada por nivel para a activación, o nivel modificado debe manterse durante algún tempo para espertar a MCU (e para que a MCU entre na rutina de servizo de interrupción). Ver "Interrupcións externas" na páxina 49 para os detalles.
Modo inactivo
Cando os bits SM[1:0] se escriben en 00, a instrución SLEEP fai que o MCU entre en modo inactivo, parando a CPU pero permitindo que o comparador analóxico, ADC, USI, temporizador/contador, watchdog e o sistema de interrupción continúen funcionando. comendo. Este modo de suspensión basicamente detén clkCPU e clkFLASH, mentres permite que os outros reloxos funcionen.
O modo de espera permite que a MCU esperte tanto de interrupcións activadas externas como internas como o Timer Overflow. Se non é necesario espertar desde a interrupción do comparador analóxico, o comparador analóxico pode apagarse configurando o bit ACD en “ACSR - Rexistro de control e estado do comparador analóxico” na páxina 120. Isto reducirá o consumo de enerxía no modo de espera. Se o ADC está habilitado, unha conversión comeza automaticamente cando se introduce este modo.
Modo de redución de ruído ADC
Cando os bits SM[1:0] se escriben en 01, a instrución SLEEP fai que o MCU entre no modo de redución de ruído ADC, parando a CPU pero permitindo que o ADC, as interrupcións externas e o Watchdog sigan funcionando (se está habilitado). Este modo de suspensión detén clkI/O, clkCPU e clkFLASH, mentres permite que os outros reloxos funcionen.
Isto mellora o ambiente de ruído do ADC, permitindo medicións de maior resolución. Se o ADC está activado, unha conversión comeza automaticamente cando se introduce este modo. Ademais da interrupción ADC Conversion Complete, só un restablecemento externo, un restablecemento do vixilante, un restablecemento de Brown-out, unha interrupción preparada para SPM / EEPROM, unha interrupción de nivel externo en INT0 ou unha interrupción de cambio de pino pode espertar a MCU da redución de ruído de ADC. modo.
Modo de apagado
Cando os bits SM [1: 0] se escriben en 10, a instrución SLEEP fai que a MCU entre en modo de apagado. Neste modo, o oscilador está parado, mentres que as interrupcións externas, a detección da condición de inicio do USI e o Watchdog continúan funcionando (se está activado). Só un restablecemento externo, un restablecemento do vixilante, un restablecemento de Brown-out, unha interrupción de condición de inicio USI, unha interrupción de nivel externo en INT0 ou unha interrupción de cambio de pin poden activar a MCU. Este modo de suspensión detén todos os reloxos xerados, permitindo só o funcionamento de módulos asíncronos.
Desactivar o software BOD
Cando o fusible BODLEVEL está activado co detector de marrón (BOD) (ver Táboa 20-4 na páxina 148), o BOD está vixiando activamente a oferta voltage durante un período de sono. Nalgúns dispositivos é posible aforrar enerxía desactivando o BOD mediante o software no modo de suspensión de apagado. O consumo de enerxía do modo de suspensión estará entón ao mesmo nivel que cando o BOD está desactivado globalmente por fusibles.
Se o software desactiva BOD, a función BOD desactivarase inmediatamente despois de entrar no modo de suspensión. Ao espertar do sono, BOD habilitarase automaticamente de novo. Isto garante un funcionamento seguro no caso de que o nivel de VCC baixase durante o período de sono.
Cando a DBO está desactivada, o tempo de espertar desde o modo de suspensión será o mesmo que para o espertar de RESET. O usuario debe configurar manualmente os tempos de espertar de tal xeito que a referencia do intervalo de banda teña tempo de iniciarse e o DBO estea funcionando correctamente antes de que a MCU continúe executando código. Vexa bits de fusibles SUT [1: 0] e CKSEL [3: 0] na táboa "Fuse Low Byte" na páxina 149
A desactivación de BOD está controlada polo bit BODS (BOD Sleep) do Rexistro de control MCU, ver “MCUCR - Control MCU Rexistrarse ”na páxina 37. Escribir este bit a un desactiva a DBO no apagado, mentres que escribir un cero mantén a DBO activa. A configuración predeterminada é cero, é dicir, BOD activo.
A escritura no bit BODS está controlada por unha secuencia cronometrada e un bit de habilitación, ver “MCUCR - MCU Control Regis- ter ”na páxina 37.
Limitacións
A funcionalidade de desactivación de BOD só se implementou nos seguintes dispositivos:
ATtiny25, revisión E e máis recente
ATtiny45, revisión D e máis recente
ATtiny85, revisión C e máis recente
As revisións están marcadas no paquete do dispositivo e pódense localizar do seguinte xeito:
Parte inferior dos paquetes 8P3 e 8S2
Parte superior do paquete 20M1
Rexistro de redución de potencia
O rexistro de redución de potencia (PRR), ver "PRR - Rexistro de redución de potencia" na páxina 38, proporciona un método para reducir o consumo de enerxía ao parar o reloxo a periféricos individuais. O estado actual do periférico está conxelado e os rexistros de E / S non se poden ler nin escribir. Os recursos empregados polo periférico ao parar o reloxo seguirán ocupados, polo que o periférico debería estar desactivado na maioría dos casos antes de parar o reloxo. Espertar un módulo, que se fai borrando o bit en PRR, coloca o módulo no mesmo estado que antes do apagado.
O apagado do módulo pode usarse no modo de espera e no modo activo para reducir significativamente o consumo total de enerxía. No resto de modos de suspensión, o reloxo xa está parado. Ver "Corrente de subministración de módulos de E / S" na páxina 177 por examples.
Minimizando o consumo de enerxía
Hai varios problemas a ter en conta cando se trata de minimizar o consumo de enerxía nun sistema controlado por AVR. En xeral, os modos de suspensión deben usarse na medida do posible e o modo de suspensión debe seleccionarse para que o menor número posible de funcións do dispositivo estean operando. Todas as funcións non necesarias deberían estar desactivadas. En particular, os seguintes módulos poden necesitar unha consideración especial cando se intenta conseguir o menor consumo de enerxía posible.
Conversor de analóxico a dixital
Se está activado, o ADC activarase en todos os modos de suspensión. Para aforrar enerxía, o ADC debería estar desactivado antes de entrar en calquera modo de suspensión. Cando o ADC estea desactivado e acendido de novo, a seguinte conversión será unha conversión prolongada. Refírense a "Conversor analóxico a dixital" na páxina 122 para máis detalles sobre o funcionamento de ADC.
Comparador analóxico
Ao entrar no modo inactivo, o comparador analóxico debería estar desactivado se non se usa. Ao entrar no modo de redución de ruído ADC, o comparador analóxico debería estar desactivado. Nos outros modos de suspensión, o comparador analóxico desactivarase automaticamente. Non obstante, se o comparador analóxico está configurado para usar o Voltage Referencia como entrada, o comparador analóxico debería estar desactivado en todos os modos de suspensión. En caso contrario, o Vol internotage Referencia activarase, independentemente do modo de suspensión. Refírense a "Comparador analóxico" na páxina 119 para máis detalles sobre como configurar o comparador analóxico.
Detector marrón
Se non é necesario o detector de marrón na aplicación, este módulo debería estar desactivado. Se os fusibles BODLEVEL habilitan o detector marrón, activarase en todos os modos de suspensión e, polo tanto, sempre consumirá enerxía. Nos modos de sono máis profundo, isto contribuirá significativamente ao consumo actual total. Ver "Detección de desgaste ción ”na páxina 41 e "Desactivación do software BOD" na páxina 35 para máis detalles sobre como configurar o detector de marrón.
Vol. Internotage Referencia
O interno voltagA Referencia activarase cando o necesite a Detección de Brown-out, o Comparador Analóxico ou o ADC. Se estes módulos están desactivados como se describe nas seccións anteriores, o voltagA referencia estará desactivada e non consumirá enerxía. Cando se acende de novo, o usuario debe permitir que a referencia se inicie antes de utilizar a saída. Se a referencia se mantén activada no modo de suspensión, a saída pódese utilizar inmediatamente. Refírense a "Vol. internotage Referencia” na páxina 42 para máis detalles sobre a hora de inicio.
Temporizador Watchdog
Se non é necesario o temporizador de vixilancia na aplicación, este módulo debería estar desactivado. Se o temporizador de vixilancia está activado, activarase en todos os modos de suspensión e, polo tanto, sempre consumirá enerxía. Nos modos de sono máis profundo, isto contribuirá significativamente ao consumo actual total. Refírense a "Temporizador de vixilancia" na páxina 42 para obter detalles sobre como configurar o temporizador Watchdog.
Pins do porto
Ao entrar nun modo de suspensión, todos os pinos dos portos deberían estar configurados para usar a potencia mínima. O máis importante é entón asegurarse de que ningún pino impulse cargas resistivas. Nos modos de suspensión nos que tanto o reloxo de E/S (clkI/O) como o reloxo ADC (clkADC) están parados, os búfers de entrada do dispositivo desactivaranse. Isto garante que non se consuma enerxía
pola lóxica de entrada cando non é necesario. Nalgúns casos, a lóxica de entrada é necesaria para detectar as condicións de espertar e
entón activarase. Consulte a sección "Activación de entrada dixital e modos de suspensión" na páxina 57 para obter detalles sobre cales son os pinos habilitados. Se o búfer de entrada está activado e o sinal de entrada queda flotando ou ten un nivel de sinal analóxico próximo a VCC/2, o búfer de entrada usará potencia excesiva.
Para os pines de entrada analóxica, o búfer de entrada dixital debe estar desactivado en todo momento. Un nivel de sinal analóxico próximo a VCC/2 nun pin de entrada pode provocar unha corrente significativa incluso no modo activo. Os búfers de entrada dixital pódense desactivar escribindo no rexistro de desactivación de entrada dixital (DIDR0). Refírense a "DIDR0 - Rexistro de desactivación de entrada dixital 0" na páxina 121 para os detalles.
Descrición do rexistro
MCUCR - Rexistro de control MCU
O Rexistro de control da MCU contén bits de control para a xestión de enerxía.
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | BODS | PUD | SE | SM1 | SM0 | BODSE | ISC01 | ISC00 | MCUCR |
Ler/Escribir | 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
A funcionalidade de desactivación do BOD só está dispoñible nalgúns dispositivos. Ver "Limitacións" na páxina 36.
Para desactivar a DBO durante o sono (ver Táboa 7-1 na páxina 34) o bit BODS debe escribirse na lóxica. Isto está controlado por unha secuencia cronometrada e o bit de habilitación, BODSE en MCUCR. En primeiro lugar, BODS e BODSE deben definirse como un. En segundo lugar, dentro de catro ciclos de reloxo, BODS debe axustarse a un e BODSE debe axustarse a cero. O bit BODS está activo tres ciclos de reloxo despois de configuralo. Debe executarse unha instrución de sono mentres BODS está activo para desactivar o BOD no modo de suspensión real. O bit BODS bórrase automaticamente despois de tres ciclos de reloxo.
Nos dispositivos onde Sleeping BOD non se implementou este bit non se usa e sempre lerá cero.
Bit 5 - SE: Activar o sono
O bit SE debe escribirse en un lóxico para que o MCU entre no modo de suspensión cando se execute a instrución SLEEP. Para evitar que o MCU entre no modo de suspensión a non ser que sexa o propósito do programador, recoméndase escribir o bit de activación de suspensión (SE) nun pouco antes da execución da instrución SLEEP e borralo inmediatamente despois de espertar.
Bits 4: 3 - SM [1: 0]: modo Sleep Seleccione os bits 1 e 0
Estes bits seleccionan entre os tres modos de suspensión dispoñibles como se mostra en Táboa 7-2.
Táboa 7-2. Selección do modo de suspensión
SM1 | SM0 | Modo de sono |
0 | 0 | Inactivo |
0 | 1 | Redución de ruído ADC |
1 | 0 | Apague |
1 | 1 | Reservado |
Bit 2 - BODSE: BOD Sleep Enable
A funcionalidade de desactivación do BOD só está dispoñible nalgúns dispositivos. Ver "Limitacións" na páxina 36.
O bit BODSE habilita a configuración do bit de control BODS, como se explica na descrición do bit BODS. A desactivación do DBO está controlada por unha secuencia cronometrada.
Este bit non se usa en dispositivos onde non se implementou a desactivación do software BOD e lerase como cero neses dispositivos.
PRR - Rexistro de redución de potencia
O rexistro de redución de enerxía proporciona un método para reducir o consumo de enerxía ao permitir a desactivación das sinais de reloxo periféricas.
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x20 | – | – | – | – | PRIM1 | PRIM0 | PRUSI | PRADC | PRR |
Ler/Escribir | 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 reservados
Estes bits son bits reservados no ATtiny25 / 45/85 e sempre se lerán como cero.
Bit 3 - PRTIM1: temporizador / contador de redución de enerxía1
Escribir unha lóxica neste bit apaga o módulo Temporizador / Contador1. Cando o temporizador / contador1 está activado, a operación continuará como antes do apagado.
Bit 2 - PRTIM0: temporizador / contador de redución de enerxía0
Escribir unha lóxica neste bit apaga o módulo Temporizador / Contador0. Cando o temporizador / contador0 está activado, a operación continuará como antes do apagado.
Bit 1 - PRUSI: redución de potencia USI
Escribir un lóxico neste bit apaga o USI ao deter o reloxo do módulo. Ao espertar de novo o USI, debería inicializarse de novo para garantir un bo funcionamento.
Bit 0 - PRADC: redución de potencia ADC
Escribir unha lóxica neste bit pecha o ADC. O ADC debe estar desactivado antes de apagalo. Teña en conta que o reloxo ADC tamén o usan algunhas partes do comparador analóxico, o que significa que o comparador analóxico non se pode usar cando este bit é alto.
Control e reinicio do sistema
Restablecemento do AVR
Durante o restablecemento, todos os rexistros de E / S están configurados nos seus valores iniciais e o programa comeza a execución a partir do Reset Vector. A instrución colocada no Vector de restablecemento debe ser unha instrución RJMP - Relative Jump - para a rutina de manipulación de restablecemento. Se o programa nunca habilita unha fonte de interrupción, non se usan os vectores de interrupción e pódese colocar código normal do programa nestes lugares. O diagrama do circuíto en Figura 8-1 mostra a lóxica de reinicio. Os parámetros eléctricos dos circuítos de reset restablécense "Características do sistema e restablecemento" na páxina 165.
Figura 8-1 Restablecer lóxica
Os portos de E / S do AVR restablécense inmediatamente ao seu estado inicial cando se activa unha fonte de restablecemento. Isto non require que se faga ningunha fonte de reloxo.
Despois de que todas as fontes de restablecemento quedasen inactivas, invócase un contador de atrasos que estende o restablecemento interno. Isto permite que a potencia alcance un nivel estable antes de que comece a operación normal. O período de tempo de espera do contador de retraso é definido polo usuario a través dos fusibles SUT e CKSEL. As diferentes seleccións para o período de atraso preséntanse en “Reloxo Fontes ”na páxina 25.
Restablecer fontes
O ATtiny25 / 45/85 ten catro fontes de restablecemento:
Restablecemento de encendido. O MCU restablece cando o voltage está por debaixo do limiar de reinicio de encendido (VPOT).
Restablecemento externo. A MCU restablécese cando hai un nivel baixo no pin RESET por máis tempo que a lonxitude mínima do pulso.
Restablecemento do can vixiante. A MCU restablécese cando expira o período do temporizador Watchdog e o Watchdog está activado.
Restablecemento desactivado. O MCU restablece cando o volume de subministracióntagO VCC está por debaixo do limiar de restablecemento de Brown-out (VBOT) e o Detector de Brown-out está activado.
Restablecemento de acendido
Un circuíto de detección On-chip xera un pulso de reinicio de enerxía (POR). O nivel de detección defínese en "Sys- Características de restauración e restauración ”na páxina 165. O POR actívase sempre que o VCC está por debaixo do nivel de detección. O circuíto POR pódese utilizar para activar o reinicio de arranque, así como para detectar un fallo no voltage.
Un circuíto de reinicio ao encendido (POR) garante que o dispositivo se restableza desde o inicio. Alcanzar o limiar de reinicio de encendido voltage invoca o contador de atraso, que determina canto tempo se mantén o dispositivo en RESET despois do aumento do VCC. O sinal RESET actívase de novo, sen ningún atraso, cando o VCC diminúe por debaixo do nivel de detección.
Figura 8-2. Inicio do MCU, RESET vinculado a VCC
RESET INTERNO
Figura 8-3. Inicio do MCU, RESET extendido externamente
Restablecemento externo
Un restablecemento externo xérase cun nivel baixo no pin RESET se está activado. Restablece os pulsos superiores ao ancho mínimo do pulso (ver "Características do sistema e restablecemento" na páxina 165) xerará un reinicio, aínda que o reloxo non estea a funcionar. Non se garante que os pulsos máis curtos xeren un reinicio. Cando o sinal aplicado alcance o umbral de restablecemento Voltage - VRST - no seu bordo positivo, o contador de atraso inicia a MCU despois de que expire o período de tempo de espera.
Figura 8-4. Restablecemento externo durante o funcionamento
Detección de marrón
ATtiny25/45/85 ten un circuíto de detección de caída no chip (BOD) para controlar o nivel de VCC durante o funcionamento comparándoo cun nivel de disparo fixo. O nivel de disparo para o BOD pódese seleccionar mediante os fusibles BODLEVEL. O nivel de disparo ten unha histérese para garantir a detección de Brown-out sen picos. A histérese no nivel de detección debe interpretarse como VBOT+ = VBOT + VHYST/2 e VBOT- = VBOT – VHYST/2.
Cando o BOD está activado e o VCC diminúe ata un valor inferior ao nivel de activación (VBOT-in Figura 8-5), o restablecemento por extinción activarase inmediatamente. Cando VCC aumenta por riba do nivel de disparo (VBOT+ in Figura 8-5), o contador de atraso inicia a MCU despois de que expirou o período de tempo de espera tTOUT.
O circuíto BOD só detectará unha caída no VCC se o voltage permanece por debaixo do nivel de activación durante máis tempo que o tBOD indicado "Características do sistema e restablecemento" na páxina 165.
Restablecemento do can vixiante
Cando o Watchdog se agote, xerará un breve pulso de reinicio dunha duración de ciclo CK. No bordo descendente deste pulso, o temporizador de retardo comeza a contar o período de tempo de espera tTOUT. Refírense a "Temporizador de vixilancia" na páxina 42 para máis detalles sobre o funcionamento do temporizador de vixilancia.
Voltage Referencia Sinais de habilitación e hora de inicio
O voltagA referencia ten un tempo de inicio que pode influír na forma en que se debe usar. Dáse o tempo de posta en marcha "Características do sistema e restablecemento" na páxina 165. Para aforrar enerxía, a referencia non sempre está activada. A referencia está activada durante as seguintes situacións:
Cando o BOD está habilitado (mediante a programación do BODLEVEL [2: 0] Fuse Bits).
Cando a referencia de bandgap está conectada ao comparador analóxico (configurando o bit ACBG en ACSR).
Cando o ADC está activado.
Así, cando o BOD non está habilitado, despois de configurar o bit ACBG ou habilitar o ADC, o usuario sempre debe permitir que a referencia se inicie antes de que se use a saída do comparador analóxico ou ADC. Para reducir o consumo de enerxía no modo Apagado, o usuario pode evitar as tres condicións anteriores para asegurarse de que a referencia está desactivada antes de entrar no modo Apagado.
Temporizador Watchdog
O temporizador Watchdog está reloxado desde un oscilador On-chip que funciona a 128 kHz. Ao controlar o precalificador do reloxo de vixilancia, pódese axustar o intervalo de restablecemento do vixilante como se mostra en Táboa 8-3 na páxina 46. A instrución WDR - Watchdog Reset - restablece o temporizador Watchdog. O temporizador Watchdog tamén se restablece cando está desactivado e cando se produce un restablecemento de chips. Pódense seleccionar dez períodos de ciclo de reloxo diferentes para determinar o período de restablecemento. Se o período de restablecemento expira sen outro restablecemento do vixilante, o ATtiny25 / 45/85 restablécese e execútase a partir do vector de restablecemento. Para obter información sobre a sincronización do Restablecemento do vixilante, consulte Táboa 8-3 na páxina 46.
O temporizador Watchdog tamén se pode configurar para xerar unha interrupción no canto de restablecela. Isto pode ser moi útil cando se usa o Watchdog para espertar do apagado.
Para evitar a desactivación involuntaria do Watchdog ou o cambio involuntario do período de espera, o fusible WDTON selecciona dous niveis de seguridade diferentes como se mostra en Táboa 8-1 Consulte “Secuencias cronometradas para cambiar as condicións figuración do reloxo de vixilancia ”na páxina 43 para os detalles.
Táboa 8-1. Configuración de WDT como función da configuración de fusibles de WDTON
WDTON | Nivel de seguridade | Estado inicial WDT | Como desactivar o WDT | Como cambiar o tempo de espera |
Non programado | 1 | Desactivado | Secuencia cronometrada | Sen limitacións |
Programado | 2 | Activado | Sempre habilitado | Secuencia cronometrada |
Figura 8-7. Temporizador Watchdog
Secuencias temporizadas para cambiar a configuración do temporizador de vixilancia
A secuencia para cambiar a configuración difire lixeiramente entre os dous niveis de seguridade. Descríbense procedementos separados para cada nivel.
Nivel de seguridade 1: neste modo, o temporizador Watchdog está inicialmente desactivado, pero pódese activar escribindo o bit WDE nun sen ningunha restrición. É necesaria unha secuencia cronometrada cando se desactiva un temporizador de Watchdog activado. Para desactivar un temporizador Watchdog activado, débese seguir o seguinte procedemento:
Na mesma operación, escribe unha lóxica en WDCE e WDE. Debe escribirse unha lóxica en WDE sen ter en conta o valor anterior do bit WDE.
Dentro dos seguintes catro ciclos de reloxo, na mesma operación, escriba os bits WDE e WDP como queira, pero co bit WDCE limpo.
Nivel de seguridade 2: neste modo, o temporizador Watchdog sempre está activado e o bit WDE sempre lerase como un. É necesaria unha secuencia cronometrada cando se cambia o período de tempo de espera do Watchdog. Para cambiar o tempo de espera do Watchdog, débese seguir o seguinte procedemento:
Na mesma operación, escribe unha lóxica en WDCE e WDE. Aínda que o WDE sempre está configurado, o WDE debe escribirse nun para iniciar a secuencia cronometrada.
Nos seguintes catro ciclos de reloxo, na mesma operación, escriba os bits WDP como queira, pero co bit WDCE limpo. O valor escrito no bit WDE é irrelevante.
Código Example
O seguinte código example mostra un conxunto e unha función C para apagar o WDT. O exampLe asume que as interrupcións están controladas (por exemplo, desactivando as interrupcións globalmente) para que non se produzan interrupcións durante a execución destas funcións.
Código de montaxe Example(1) |
WDT_off:
wdr ; Borrar WDRF en MCUSR ldi r16, (0< fóra MCUSR, r16 ; Escribe un lóxico en WDCE e WDE ; Mantén a configuración antiga de precaler para evitar o restablecemento involuntario do vixilante en r16, WDTCR ori r16, (1< saída WDTCR, r16 ; Desactiva WDT ldi r16, (0< saída WDTCR, r16 ret |
Código C Example(1) |
void WDT_off(void)
{ _WDR (); /* Borrar WDRF en MCUSR */ MCUSR = 0x00 /* Escribe un lóxico en WDCE e WDE */ WDTCR |= (1< / * Desactivar WDT * / WDTCR = 0x00; } |
Nota: 1. Ver “Código Examples" na páxina 6.
Descrición do rexistro
MCUSR - Rexistro de estado MCU
O Rexistro de estado da MCU proporciona información sobre a fonte de restablecemento que provocou un reinicio da MCU.
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x34 | – | – | – | – | WDRF | BORF | EXTRF | PORF | MCUSR |
Ler/Escribir | R | R | R | R | R/W | R/W | R/W | R/W |
Valor inicial 0 0 0 0 Ver descrición de bits
Bits 7: 4 - Res: Bits reservados
Estes bits son bits reservados no ATtiny25 / 45/85 e sempre se lerán como cero.
Bit 3 - WDRF: bandeira de restablecemento do can vixiante
Este bit configúrase se se produce un reinicio do vixilante. O bit restablécese mediante un reinicio de encendido ou escribindo un cero lóxico na bandeira.
Bit 2 - BORF: bandeira de reinicio de Brown-out
Este bit configúrase se se produce un Restablecemento de Brown-out. O bit restablécese mediante un reinicio de encendido ou escribindo un cero lóxico na bandeira.
Bit 1 - EXTRF: sinal de restablecemento externo
Este bit configúrase se se produce un Restablecemento externo. O bit restablécese mediante un reinicio de encendido ou escribindo un cero lóxico na bandeira.
Bit 0 - PORF: bandeira de reinicio de acendido
Este bit configúrase se se produce un reinicio de encendido. O bit só se restablece escribindo un cero lóxico na bandeira.
Para facer uso das bandeiras de restablecemento para identificar unha condición de restablecemento, o usuario debería ler e despois restablecer o MCUSR o antes posible no programa. Se se borra o rexistro antes de que se produza outro restablecemento, a fonte do restablecemento pódese atopar examinando as bandeiras de restablecemento.
WDTCR - Rexistro de control do temporizador de vixilancia
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x21 | WDIF | WDIE | WDP3 | WDCE | WDE | WDP2 | WDP1 | WDP0 | WDTCR |
Ler/Escribir | 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: bandeira de interrupción do tempo de espera do vixilante
Este bit configúrase cando se produce un tempo de espera no temporizador de vixilancia e o temporizador de vixilancia está configurado para a interrupción. O hardware limpa WDIF ao executar o vector de tratamento de interrupcións correspondente. Alternativamente, WDIF bórrase escribindo unha lóxica na bandeira. Cando se establece o I-bit en SREG e WDIE, execútase a interrupción do tempo de espera do vixilante.
Bit 6 - WDIE: Activación da interrupción do tempo de espera do vixilante
Cando se escribe este bit nun, WDE bórrase e o I-bit no rexistro de estado está configurado, a interrupción do tempo de espera do vixilante está activada. Neste modo execútase a interrupción correspondente no canto de restablecerse se se produce un tempo de espera no temporizador de vixilancia.
Se se define WDE, o hardware elimina automaticamente WDIE cando se produce un tempo de espera. Isto é útil para manter a seguridade do Restablecemento do vixilante mentres se usa a interrupción. Despois de borrar o bit WDIE, o seguinte tempo de espera xerará un restablecemento. Para evitar o restablecemento do vixilante, hai que establecer WDIE despois de cada interrupción.
Táboa 8-2. Configuración do temporizador Watchdog
WDE | WDIE | Estado do temporizador de vixilancia | Acción no tempo de espera |
0 | 0 | Detido | Ningún |
0 | 1 | Correndo | Interrupción |
1 | 0 | Correndo | Restablecer |
1 | 1 | Correndo | Interrupción |
Bit 4 - WDCE: Activar o cambio de can de vixilancia
Este bit debe configurarse cando o bit WDE está escrito en cero lóxico. En caso contrario, non se desactivará o vixilante. Unha vez escrito nun, o hardware borrará este bit despois de catro ciclos de reloxo. Consulte a descrición do bit WDE para obter un procedemento de desactivación de Watchdog. Este bit tamén debe configurarse ao cambiar os bits de precalificación. Ver “Secuencias cronometradas para cambiar a configuración do temporizador de vixilancia ”na páxina 43.
Bit 3 - WDE: Activación do can de vixilancia
Cando o WDE se escribe na lóxica un, o temporizador de vixilancia está activado e, se o WDE está escrito en cero lóxico, a función Temporizador de vixilancia está desactivada. WDE só se pode borrar se o bit WDCE ten un nivel lóxico. Para desactivar un temporizador de vixilancia habilitado, débese seguir o seguinte procedemento:
Na mesma operación, escribe unha lóxica en WDCE e WDE. Debe escribirse unha lóxica en WDE aínda que estea definida como unha antes de que comece a operación de desactivación.
Nos próximos catro ciclos de reloxo, escribe un lóxico 0 a WDE. Isto desactiva o Watchdog.
No nivel de seguridade 2, non é posible desactivar o temporizador Watchdog, nin sequera co algoritmo descrito anteriormente. Ver "Secuencias temporizadas para cambiar a configuración do temporizador de vixilancia" na páxina 43.
No nivel de seguridade 1, WDE é anulado por WDRF en MCUSR. Ver "MCUSR - Rexistro de estado MCU" na páxina 44 para a descrición de WDRF. Isto significa que WDE sempre está configurado cando se define WDRF. Para borrar WDE, WDRF debe borrarse antes de desactivar o Watchdog co procedemento descrito anteriormente. Esta característica garante varios restablecementos durante as condicións que provocan un fallo e un arranque seguro despois do fallo.
Nota: Se o temporizador do watchdog non se vai utilizar na aplicación, é importante pasar por un procedemento de desactivación do watchdog na inicialización do dispositivo. Se o Watchdog está activado accidentalmente, por exemploamppor un punteiro descontrolado ou unha condición de apagado, o dispositivo restablecerase, o que á súa vez levará a un novo reinicio do watchdog. Para evitar esta situación, o software da aplicación debe borrar sempre a bandeira WDRF e o bit de control WDE na rutina de inicialización.
Bits 5, 2: 0 - WDP [3: 0]: Timer de vixilancia precalificador 3, 2, 1 e 0
Os bits WDP [3: 0] determinan a precalificación do temporizador de vixilancia cando o temporizador de vixilancia está activado. Os diferentes valores de precalificación e os seus correspondentes períodos de tempo de espera móstranse en Táboa 8-3.
Táboa 8-3. Selección de preescala do temporizador Watchdog
WDP3 | WDP2 | WDP1 | WDP0 | Número de ciclos de osciladores WDT | Tempo de espera típico en VCC = 5.0 V |
0 | 0 | 0 | 0 | 2K (2048) ciclos | 16 ms |
0 | 0 | 0 | 1 | 4K (4096) ciclos | 32 ms |
0 | 0 | 1 | 0 | 8K (8192) ciclos | 64 ms |
0 | 0 | 1 | 1 | 16K (16384) ciclos | 0.125 s |
0 | 1 | 0 | 0 | 32K (32764) ciclos | 0.25 s |
0 | 1 | 0 | 1 | 64K (65536) ciclos | 0.5 s |
0 | 1 | 1 | 0 | 128K (131072) ciclos | 1.0 s |
0 | 1 | 1 | 1 | 256K (262144) ciclos | 2.0 s |
1 | 0 | 0 | 0 | 512K (524288) ciclos | 4.0 s |
1 | 0 | 0 | 1 | 1024K (1048576) ciclos | 8.0 s |
Táboa 8-3. Selección de preescala do temporizador Watchdog (continuación)
WDP3 | WDP2 | WDP1 | WDP0 | Número de ciclos de osciladores WDT | Tempo de espera típico en VCC = 5.0 V |
1 | 0 | 1 | 0 | Reservado(1) | |
1 | 0 | 1 | 1 | ||
1 | 1 | 0 | 0 | ||
1 | 1 | 0 | 1 | ||
1 | 1 | 1 | 0 | ||
1 | 1 | 1 | 1 |
Nota: 1. Se se selecciona, empregarase unha das opcións válidas abaixo de 0b1010.
Interrupcións
Esta sección describe as especificidades do tratamento de interrupcións realizadas en ATtiny25 / 45/85. Para unha explicación xeral do tratamento de interrupcións AVR, consulte "Restablecer e tratar de interromper" na páxina 12.
Vectores de interrupción en ATtiny25 / 45/85
Os vectores de interrupción de ATtiny25 / 45/85 descríbense en Táboa 9-1abaixo.
Táboa 9-1. Restablecer e interromper vectores
Vector núm. | Enderezo do programa | Fonte | Definición de interrupción |
1 | 0x0000 | RESET | Pin externo, restablecemento de encendido, restablecemento de marrón, restablecemento do vixilante |
2 | 0x0001 | INT0 | Solicitude de interrupción externa 0 |
3 | 0x0002 | PCINT0 | Solicitude de interrupción de cambio de pin 0 |
4 | 0x0003 | TIMER1_COMPA | Temporizador / Contador1 Comparar Match A |
5 | 0x0004 | TIMER1_OVF | Timer / Counter1 Overflow |
6 | 0x0005 | TIMER0_OVF | Timer / Counter0 Overflow |
7 | 0x0006 | EE_RDY | EEPROM lista |
8 | 0x0007 | ANA_COMP | Comparador analóxico |
9 | 0x0008 | ADC | Conversión ADC completa |
10 | 0x0009 | TIMER1_COMPB | Temporizador / Contador1 Compare Match B |
11 | 0x000A | TIMER0_COMPA | Temporizador / Contador0 Comparar Match A |
12 | 0x000B | TIMER0_COMPB | Temporizador / Contador0 Compare Match B |
13 | 0x000C | WDT | Tempo de espera do vixiante |
14 | 0x000D | USI_START | USI START |
15 | 0x000E | USI_OVF | Desbordamento USI |
Se o programa nunca habilita unha fonte de interrupción, non se empregan os vectores de interrupción e pódese colocar código normal do programa nestes lugares.
Unha configuración típica e xeral para os enderezos de vector de interrupción en ATtiny25/45/85 móstrase no programa example a continuación.
Código de montaxe Example | ||
.org 0x0000 | ; Axuste o enderezo do seguinte | declaración |
rjmp RESET | ; Enderezo 0x0000 | |
rjmp INT0_ISR | ; Enderezo 0x0001 | |
rjmp PCINT0_ISR | ; Enderezo 0x0002 | |
rjmp TIM1_COMPA_ISR | ; Enderezo 0x0003 | |
rjmp TIM1_OVF_ISR | ; Enderezo 0x0004 | |
rjmp TIM0_OVF_ISR | ; Enderezo 0x0005 | |
rjmp EE_RDY_ISR | ; Enderezo 0x0006 | |
rjmp ANA_COMP_ISR | ; Enderezo 0x0007 | |
rjmp ADC_ISR | ; Enderezo 0x0008 | |
rjmp TIM1_COMPB_ISR | ; Enderezo 0x0009 | |
rjmp TIM0_COMPA_ISR | ; Enderezo 0x000A | |
rjmp TIM0_COMPB_ISR | ; Enderezo 0x000B | |
rjmp WDT_ISR | ; Enderezo 0x000C | |
rjmp USI_START_ISR | ; Enderezo 0x000D | |
rjmp USI_OVF_ISR | ; Enderezo 0x000E | |
RESET: | ; Inicio do programa principal | |
; Enderezo 0x000F | ||
… |
Nota: Ver “Código Examples" na páxina 6.
Interrupcións externas
As interrupcións externas son activadas polo pin INT0 ou por calquera dos pins PCINT [5: 0]. Teña en conta que, se está activado, as interrupcións activaranse aínda que os pines INT0 ou PCINT [5: 0] estean configurados como saídas. Esta característica proporciona un xeito de xerar unha interrupción de software. O cambio de pin interrompe o PCI cando algún pin PCINT [5: 0] activado se alterne. O rexistro PCMSK controla que pinos contribúen ás interrupcións do cambio de pin. As interrupcións do cambio de pin en PCINT [5: 0] detéctanse de forma asíncrona. Isto implica que estas interrupcións poden usarse para espertar a peza tamén desde modos de suspensión distintos do modo inactivo.
As interrupcións INT0 poden desencadearse por un bordo descendente ou ascendente ou un nivel baixo. Isto configúrase como se indica na especificación para o Rexistro de control MCU - MCUCR. Cando a interrupción INT0 está activada e configúrase como nivel desencadeado, a interrupción activarase mentres o pin se manteña baixo. Teña en conta que o recoñecemento de interrupcións de caída ou ascenso no INT0 require a presenza dun reloxo de E / S, descrito en "Sistemas de reloxo e a súa distribución" activado páxina 23.
Interrupción de baixo nivel
Detéctase de xeito asíncrono unha interrupción de baixo nivel en INT0. Isto implica que esta interrupción pode usarse para espertar a peza tamén desde modos de suspensión distintos do modo inactivo. O reloxo de E / S detense en todos os modos de suspensión agás o modo de espera.
Teña en conta que se se usa unha interrupción activada por nivel para a activación desde a apagada, o nivel necesario debe manterse o tempo suficiente para que a MCU complete a activación para activar a interrupción de nivel. Se o nivel desaparece antes de que remate o tempo de inicio, o MCU aínda se espertará, pero non se xerará ningunha interrupción. O tempo de arranque está definido polos fusibles SUT e CKSEL como se describe en "Opcións de reloxo e reloxo do sistema" na páxina 23.
Se se elimina o nivel baixo do pin de interrupción antes de que o dispositivo espertase, a execución do programa non se desviará á rutina do servizo de interrupción, senón que continuará desde a instrución que segue o comando SLEEP.
Temporalización da interrupción do cambio de pin
Un exampmóstrase o tempo dunha interrupción de cambio de pin Figura 9-1.
Descrición do rexistro
MCUCR - Rexistro de control MCU
O rexistro de control de interrupción externo A contén bits de control para o control de detección de interrupción.
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | BODS | PUD | SE | SM1 | SM0 | BODSE | ISC01 | ISC00 | MCUCR |
Ler/Escribir | 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ón de sentido 0 bit 1 e bit 0
A interrupción externa 0 actívase co pin externo INT0 se se establece a bandeira SREG I e a máscara de interrupción correspondente. O nivel e os bordos do pin INT0 externo que activan a interrupción están definidos en Táboa 9-2. O valor do pin INT0 é sampled antes de detectar bordos. Se se selecciona unha interrupción de borde ou alternar, os pulsos que duren máis dun período de reloxo xerarán unha interrupción. Non se garante que os pulsos máis curtos xeren unha interrupción. Se se selecciona unha interrupción de baixo nivel, o nivel baixo debe manterse ata que se complete a instrución en execución para xerar unha interrupción.
Táboa 9-2. Interrupción 0 Control de detección
ISC01 | ISC00 | Descrición |
0 | 0 | O baixo nivel de INT0 xera unha solicitude de interrupción. |
0 | 1 | Calquera cambio lóxico en INT0 xera unha solicitude de interrupción. |
1 | 0 | O bordo descendente de INT0 xera unha solicitude de interrupción. |
1 | 1 | O bordo ascendente de INT0 xera unha solicitude de interrupción. |
GIMSK - Rexistro xeral de máscaras de interrupción
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3B | – | INT0 | PCIe | – | – | – | – | – | GIMSK |
Ler/Escribir | 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 reservados
Estes bits son bits reservados no ATtiny25 / 45/85 e sempre se lerán como cero.
Bit 6 - INT0: Activación da solicitude de interrupción externa 0
Cando o bit INT0 está configurado (un) e o bit I no rexistro de estado (SREG) está configurado (un), a interrupción do pin externo está activada. Os Interrupt Sense Sense0 bits 1/0 (ISC01 e ISC00) do MCU Control Register (MCUCR) definen se a interrupción externa está activada no bordo ascendente e / ou descendente do pin INT0 ou nivel detectado. A actividade no pin provocará unha solicitude de interrupción aínda que INT0 estea configurado como saída. A interrupción correspondente da petición de interrupción externa 0 execútase desde o vector de interrupción INT0.
Bit 5 - PCIE: activar a interrupción do cambio de pin
Cando o bit PCIE está definido (un) e o bit I no rexistro de estado (SREG) está configurado (un), a interrupción do cambio de pin está activada. Calquera cambio en calquera pin PCINT [5: 0] habilitado provocará unha interrupción. A correspondente interrupción da solicitude de interrupción de cambio de pin execútase desde o Vector de interrupción PCI. Os pinos PCINT [5: 0] están habilitados individualmente no rexistro PCMSK0.
GIFR - Rexistro xeral de bandeiras de interrupción
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3A | – | INTF0 | PCIF | – | – | – | – | – | GIFR |
Ler/Escribir | 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 reservados
Estes bits son bits reservados no ATtiny25 / 45/85 e sempre se lerán como cero.
Bit 6 - INTF0: sinal de interrupción externa 0
Cando un bordo ou un cambio de lóxica no pin INT0 desencadena unha solicitude de interrupción, INTF0 configúrase (un). Se o bit I en SREG e o bit INT0 en GIMSK están configurados (un), a MCU saltará ao vector de interrupción correspondente. A bandeira bórrase cando se executa a rutina de interrupción. Como alternativa, pódese borrar a bandeira escribíndolle unha lóxica. Esta marca sempre se borra cando INT0 está configurado como unha interrupción de nivel.
Bit 5 - PCIF: bandeira de interrupción de cambio de pin
Cando un cambio de lóxica en calquera pin PCINT [5: 0] desencadea unha solicitude de interrupción, o PCIF configúrase (un). Se o bit I en SREG e o bit PCIE en GIMSK están definidos (un), a MCU saltará ao vector de interrupción correspondente. A bandeira bórrase cando se executa a rutina de interrupción. Como alternativa, pódese borrar a bandeira escribíndolle unha lóxica.
PCMSK - Rexistro de máscara de cambio de pin
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x15 | – | – | PCINT5 | PCINT4 | PCINT3 | PCINT2 | PCINT1 | PCINT0 | PCMSK |
Ler/Escribir | 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 reservados
Estes bits son bits reservados no ATtiny25 / 45/85 e sempre se lerán como cero.
Bits 5: 0 - PCINT [5: 0]: Máscara de activación do cambio de pin 5: 0
Cada bit PCINT [5: 0] selecciona se a interrupción do cambio de pin está activada no pin de E / S correspondente. Se se define PCINT [5: 0] e se establece o bit PCIE en GIMSK, a interrupción do cambio de pin está habilitada no pin de E / S correspondente. Se PCINT [5: 0] está borrado, a interrupción do cambio de pin no pin de E / S correspondente está desactivada.
Portos de E/S
Introdución
Todos os portos AVR teñen verdadeira funcionalidade de lectura, modificación e escritura cando se usan como portos de E/S dixitais xerais. Isto significa que a dirección dun pin de porto pódese cambiar sen cambiar involuntariamente a dirección de ningún outro pin coas instrucións SBI e CBI. O mesmo aplícase ao cambiar o valor do convertidor (se está configurado como saída) ou á activación/desactivación das resistencias pull-up (se se configura como entrada). Cada búfer de saída ten características de unidade simétricas con capacidade de fonte e sumidoiro elevadas. O controlador de pin é o suficientemente forte como para conducir pantallas LED directamente. Todos os pinos dos portos teñen resistencias pull-up seleccionables individualmente cun volume de subministracióntage resistencia invariante. Todos os pinos de E/S teñen díodos de protección tanto para VCC como para a terra como se indica en Figura 10-1. Consulte "Características eléctricas" na páxina 161 para unha lista completa de parámetros.
Figura 10-1. Esquema equivalente de pin de E/S
Todos os rexistros e referencias de bits desta sección están escritos en forma xeral. Unha "x" minúscula representa a letra de numeración do porto e unha "n" minúscula representa o número de bit. Non obstante, cando se usa o rexistro ou as definicións de bit nun programa, débese utilizar a forma precisa. Por example, PORTB3 para o bit no. 3 no porto B, aquí documentado xeralmente como PORTxn. Os rexistros de E/S físicas e as localizacións de bits están listados en "Rexistro Descrición" activado páxina 64.
Asignanse tres localizacións de enderezos de memoria de E / S para cada porto, un para o Rexistro de datos - PORTx, Rexistro de dirección de datos - DDRx e os pines de entrada de porto - PINx. A localización de E / S dos pines de entrada de porto só é de lectura, mentres que o rexistro de datos e o rexistro de dirección de datos se len / escriben. Non obstante, escribir unha lóxica de un a un no rexistro PINx dará lugar a unha conmutación no bit correspondente no rexistro de datos. Ademais, o Pull-up Disable - bit PUD en MCUCR desactiva a función pull-up para todos os pins de todos os portos cando está configurado.
O uso do porto de E / S como E / S dixital xeral descríbese en "Portos como E / S dixitais xerais" na páxina 53. A maioría dos pines de porto multiplexanse con funcións alternativas para as funcións periféricas do dispositivo. Como se interfire cada función alternativa co pin do porto descríbese en "Funcións de porto alternativas" na páxina 57. Consulte as seccións individuais do módulo para obter unha descrición completa das funcións alternativas.
Teña en conta que habilitar a función alternativa dalgúns pinos do porto non afecta o uso dos outros pinos do porto como E / S dixitais xerais.
Portos como E / S dixital xeral
Os portos son portos de E / S bidireccionais con extracción interna opcional. Figura 10-2 mostra unha descrición funcional dun pin de porto de E / S, aquí chamado xenéricamente Pxn.
Figura 10-2. E/S dixital xeral(1)
Configurando o Pin
Cada pin de porto consta de tres bits de rexistro: DDxn, PORTxn e PINxn. Como se mostra en "Rexistro Descrición" activado páxina 64, accédese aos bits DDxn na dirección de E / S DDRx, aos bits PORTxn na dirección de E / S PORTx e aos bits PINxn na dirección de E / S PINx.
O bit DDxn no rexistro DDRx selecciona a dirección deste pin. Se DDxn é unha lóxica escrita, Pxn configúrase como un pin de saída. Se DDxn está escrito en cero lóxico, Pxn configúrase como un pin de entrada.
Se PORTxn está escrito como lóxico cando o pin está configurado como pin de entrada, a resistencia pull-up está activada. Para desactivar a resistencia de extracción, PORTxn ten que escribir cero lóxico ou o pin debe configurarse como pin de saída. Os pines do porto son triplicados cando se activa a condición de restablecemento, aínda que non haxa reloxos en funcionamento.
Se PORTxn está escrito como lóxico cando o pin está configurado como un pin de saída, o pin do porto é elevado (un). Se se escribe PORTxn cero lóxico cando o pin está configurado como pin de saída, o pin do porto está baixo (cero).
Cambiando o pin
Escribir un lóxico para PINxn alterna o valor de PORTxn, independentemente do valor de DDRxn. Teña en conta que a instrución SBI pode usarse para alternar un só bit nun porto.
Cambio entre entrada e saída
Cando se cambia entre tres estados ({DDxn, PORTxn} = 0b00) e unha saída alta ({DDxn, PORTxn} = 0b11), un estado intermedio con pull-up activado {DDxn, PORTxn} = 0b01) ou saída baixa. ({DDxn, PORTxn} = 0b10) debe ocorrer. Normalmente, o estado activado pull-up é totalmente aceptable, xa que un ambiente de alto impedancia non notará a diferenza entre un controlador alto forte e un pull-up. Se non é o caso, o bit PUD no Rexistro MCUCR pódese configurar para desactivar todos os pull-ups en todos os portos.
Cambiar entre entrada con pull-up e saída baixa xera o mesmo problema. O usuario debe usar o estado tri- ({DDxn, PORTxn} = 0b00) ou o estado alto de saída ({DDxn, PORTxn} = 0b10) como paso intermedio.
Táboa 10-1 resume os sinais de control do valor do pin.
Táboa 10-1. Configuracións de pins do porto
DDxn | PORTxn | PUD
(en MCUCR) |
E/S | Pull-up | Comenta |
0 | 0 | X | Entrada | Non | Triestado (Hi-Z) |
0 | 1 | 0 | Entrada | Si | Pxn xerará corrente se ext. baixou. |
0 | 1 | 1 | Entrada | Non | Triestado (Hi-Z) |
1 | 0 | X | Saída | Non | Saída baixa (pía) |
1 | 1 | X | Saída | Non | Saída alta (fonte) |
Lectura do valor do pin
Independentemente da configuración do bit de dirección de datos DDxn, o pin do porto pódese ler a través do bit de rexistro PINxn. Como se mostra en Figura 10-2, o bit PINxn Register e o latch anterior constitúen un sincronizador. Isto é necesario para evitar a metastabilidade se o pin físico cambia de valor preto do bordo do reloxo interno, pero tamén introduce un atraso. Figura 10-3 mostra un diagrama de tempo da sincronización ao ler un valor de pin aplicado externamente. Os atrasos máximos e mínimos de propagación denomínanse tpd,max e tpd,min respectivamente.
Considere o período do reloxo que comeza pouco despois do primeiro bordo descendente do reloxo do sistema. O pestillo péchase cando o reloxo está baixo e queda transparente cando o reloxo está alto, como indica a rexión sombreada do sinal "SYNC LATCH". O valor do sinal está bloqueado cando o reloxo do sistema baixa. Engádese ao rexistro PINxn no seguinte bordo positivo do reloxo. Como indican as dúas frechas tpd, max e tpd, min, unha única transición de sinal no pin atrasarase entre o período de reloxo do sistema ½ e 1½ dependendo do tempo de afirmación.
Ao ler un valor de pin asignado ao software, debe inserirse unha instrución nop como se indica en Figura 10-4. A instrución de saída establece o sinal "SYNC LATCH" no bordo positivo do reloxo. Neste caso, o atraso tpd a través do sincronizador é dun período de reloxo do sistema.
O seguinte código example mostra como configurar os pinos do porto B 0 e 1 alto, 2 e 3 baixo, e definir os pinos do porto de 4 a 5 como entrada cun pull-up asignado ao pin do porto 4. Os valores dos pin resultantes volven ler de novo, pero como se comentou anteriormente, inclúese unha instrución nop para poder ler o valor recentemente asignado a algúns dos pinos.
Código de montaxe Example(1) |
…
; Definir pull-ups e establecer saídas altas ; Define as direccións para os pinos do porto ldi r16,(1<<PB4)|(1<<PB1)|(1<<PB0) ldi r17,(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0) fóra PORTB,r16 fóra DDRB,r17 ; Insire nop para sincronización non ; Ler os pinos do porto en r16, PINB … |
Nota: Para o programa de ensamblaxe, utilízanse dous rexistros temporais para minimizar o tempo desde que se establecen pull-ups nos pinos 0, 1 e 4, ata que os bits de dirección estean configurados correctamente, definindo os bits 2 e 3 como baixos e redefinindo os bits 0 e 1. XNUMX como fortes condutores altos.
Código C Example |
char i sen asinar;
… /* Definir pull-ups e establecer saídas altas */ /* Definir direccións para os pinos de porto */ PORTB = (1< DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0); /* Inserir nop para sincronización*/ _NOP (); /* Ler os pinos do porto */ i = PINB; … |
Activación de entrada dixital e modos de suspensión
Como se mostra en Figura 10-2, o sinal de entrada dixital pode ser clamped a terra na entrada do disparador Schmitt. O sinal indicado SLEEP na figura, está configurado polo MCU Sleep Controller no modo de apagado para evitar un alto consumo de enerxía se algúns sinais de entrada quedan flotando ou teñen un nivel de sinal analóxico próximo a VCC/2.
SLEEP é anulado para os pins de porto habilitados como pins de interrupción externos. Se a solicitude de interrupción externa non está habilitada, SLEEP tamén está activo para estes pins. SLEEP tamén está anulado por outras funcións alternativas como se describe en "Funcións de porto alternativas" na páxina 57.
Se un nivel lóxico alto ("un") está presente nun pin de interrupción externa asíncrona configurado como "Interrupción no bordo ascendente, borde descendente ou calquera cambio lóxico no pin" mentres a interrupción externa non está activada, a bandeira de interrupción externa correspondente establecerase ao retomar o modo de suspensión mencionado anteriormente, xa que o clampEstes modos de suspensión producen o cambio lóxico solicitado.
Pines sen conexión
Se algúns pins non se usan, recoméndase asegurarse de que estes pins teñen un nivel definido. Aínda que a maioría das entradas dixitais están desactivadas nos modos de sono profundo como se describiu anteriormente, deberíanse evitar as entradas flotantes para reducir o consumo de corrente no resto de modos nos que as entradas dixitais están habilitadas (Restablecer, modo activo e modo inactivo).
O método máis sinxelo para garantir un nivel definido dun pin non utilizado é activar o pull-up interno. Neste caso, o pull-up desactivarase durante o reinicio. Se é importante un baixo consumo de enerxía durante o reinicio, recoméndase utilizar un pull-up ou pulldown externo. Non se recomenda conectar os pins non utilizados directamente a VCC ou GND, xa que isto pode provocar correntes excesivas se o pin se configura accidentalmente como saída.
Funcións de porto alternativas
A maioría dos pines de porto teñen funcións alternativas ademais de ser E / S dixitais xerais. Figura 10-5 mostra como o pin do porto controla os sinais do simplificado Figura 10-2 pode ser anulado por funcións alternativas. É posible que os sinais primarios non estean presentes en todos os pinos de porto, pero a figura serve como descrición xenérica aplicable a todos os pinos de porto da familia de microcontroladores AVR.
Táboa 10-2. Descrición xenérica dos sinais de anulación para funcións alternativas
Nome do sinal | Nome completo | Descrición |
PUOE | Activar a anulación extraída | Se se establece este sinal, a activación do pull-up está controlada polo sinal PUOV. Se se limpa este sinal, o pull-up está activado cando
{DDxn, PORTxn, PUD} = 0b010. |
PUOV | Valor de anulación do pull-up | Se se establece PUOE, a extracción activarase / desactivarase cando PUOV estea configurado / borrado, independentemente da configuración dos bits de rexistro DDxn, PORTxn e PUD. |
DDOE | Activación de anulación de dirección de datos | Se se establece este sinal, a activación do controlador de saída está controlada polo sinal DDOV. Se se borra este sinal, o controlador de saída está activado polo bit de rexistro DDxn. |
DDOV | Valor de anulación de dirección de datos | Se se establece DDOE, o controlador de saída está habilitado / desactivado cando se establece / borra DDOV, independentemente da configuración do bit de rexistro DDxn. |
PVOE | Activación de anulación do valor do porto | Se se establece este sinal e o controlador de saída está activado, o valor do porto está controlado polo sinal PVOV. Se PVOE se borra e o controlador de saída está activado, o valor do porto está controlado polo bit de rexistro PORTxn. |
PVOV | Valor de anulación do valor do porto | Se se establece PVOE, o valor do porto establécese en PVOV, independentemente da configuración do bit de rexistro PORTxn. |
PTOE | Activar a anulación do cambio de porto | Se se establece PTOE, invístese o bit de rexistro PORTxn. |
DIEOE | Activar entrada dixital Activar anulación | Se este bit está configurado, a entrada de entrada dixital está controlada polo sinal DIEOV. Se se borra este sinal, o estado de MCU determina o habilitación de entrada dixital (modo normal, modo de suspensión). |
DIEOV | Valor de anulación de habilitación de entrada dixital | Se DIEOE está configurado, a entrada dixital está activada / desactivada cando DIEOV está configurado / borrado, independentemente do estado da MCU (modo normal, modo de suspensión). |
DI | Entrada dixital | Esta é a entrada dixital para alternar funcións. Na figura, o sinal está conectado á saída do disparador schmitt pero antes do sincronizador. A non ser que se use a entrada dixital como fonte de reloxo, o módulo coa función alternativa usará o seu propio sincronizador. |
AIO | Entrada / Saída analóxica | Esta é a entrada / saída analóxica de / a funcións alternativas. O sinal está conectado directamente á almofada e pode usarse bidireccionalmente. |
As seguintes subseccións describen en breve as funcións alternativas de cada porto e relacionan os sinais primordiais coa función alternativa. Consulte a descrición da función alternativa para obter máis detalles.
Funcións alternativas do porto B.
Os pines do porto B con función alternativa móstranse en Táboa 10-3.
Táboa 10-3. Pins do porto B Funcións alternativas
Pin do porto | Función alternativa |
PB5 | ![]() RESET: Restablecer o pin dW: debugWIRE I / O ADC0: ADC Canle de entrada 0 PCINT5: interrupción do cambio de pin, fonte 5 |
PB4 | XTAL2: saída do oscilador de cristal CLKO: saída do reloxo do sistema ADC2: canle de entrada ADC 2
OC1B: Temporizador / Contador1 Comparar saída de coincidencia B PCINT4: interrupción de cambio de pin 0, fonte 4 |
PB3 | XTAL1: Entrada de oscilador de cristal CLKI: Entrada de reloxo externo ADC3: Canle de entrada ADC 3
OC1B: temporizador / contador complementario1 Comparar saída de coincidencia B PCINT3: interrupción de cambio de pin 0, fonte 3 |
PB2 | SCK: entrada de reloxo serie ADC1: canle de entrada ADC 1
T0: Timer / Counter0 Clock Source USCK: USI Clock (Three Wire Mode) SCL: USI Clock (Two Wire Mode) INT0: Interrupción externa 0 Entrada PCINT2: Interrupción de cambio de pin 0, Fonte 2 |
PB1 | MISO: Entrada de datos mestres SPI / Saída de datos escravos AIN1: Comparador analóxico, Entrada negativa OC0B: Temporizador / Contador0 Comparar Saída Match B OC1A: Temporizador / Contador1 Comparar Saída Match A DO: Saída de datos USI (modo de tres fíos) PCINT1: Interrupción de cambio de pin 0, fonte 1 |
PB0 | MOSI :: Saída de datos mestres SPI / Entrada de datos escravos AIN0: Comparador analóxico, Entrada positiva
OC0A: Timer/Counter0 Compare Match A output OC1A: temporizador / contador complementario1 Comparar unha saída DI: entrada de datos USI (modo de tres fíos) SDA: entrada de datos USI (modo de dous cables) AREF: referencia analóxica externa PCINT0: interrupción de cambio de pin 0, fonte 0 |
Porto B, bit 5: RESET / dW / ADC0 / PCINT5
RESET: A entrada Restablecer externo está activa baixo e está habilitada ao non programar ("1") o fusible RSTDISBL. O pullup está activado e o controlador de saída e a entrada dixital desactívanse cando o pin se usa como PIN RESET.
dW: Cando o fusible debugWIRE Enable (DWEN) está programado e os bits de bloqueo non están programados, o sistema debugWIRE dentro do dispositivo de destino está activado. O pin de porto RESET configúrase como un pin de E / S bidireccional con fío AND (drenaxe aberta) co pull-up activado e convértese na pasarela de comunicación entre o destino e o emulador.
ADC0: conversor analóxico a dixital, canle 0.
PCINT5: fonte de interrupción de cambio de pin 5.
Porto B, bit 4 - XTAL2 / CLKO / ADC2 / OC1B / PCINT4
XTAL2: Pino 2. Oscilador de reloxo con chip. Utilízase como pin de reloxo para todas as fontes de reloxo de chip, excepto oscilador RC calibrableble interno e reloxo externo. Cando se usa como pin de reloxo, o pin non se pode usar como pin de E / S. Cando se usa un oscilador RC calibrable interno ou un reloxo externo como fontes de reloxo Chip, o PB4 serve como pin normal de E / S.
CLKO: o reloxo do sistema desviado pódese emitir no pin PB4. O reloxo do sistema dividido emitirase se o fusible CKOUT está programado, independentemente da configuración PORTB4 e DDB4. Tamén se emitirá durante o reinicio.
ADC2: conversor analóxico a dixital, canle 2.
OC1B: Saída de comparación de saída: o pin PB4 pode servir como saída externa para o temporizador / contador1 Comparación de partida B cando se configura como saída (conxunto DDB4). O pin OC1B tamén é o pin de saída para a función de temporizador en modo PWM.
PCINT4: fonte de interrupción de cambio de pin 4.
Porto B, bit 3 - XTAL1 / CLKI / ADC3 / OC1B / PCINT3
XTAL1: Pin do oscilador do reloxo de chip 1. Utilízase para todas as fontes de reloxo de chip, agás o oscilador RC calibrable interno. Cando se usa como pin de reloxo, o pin non se pode usar como pin de E / S.
CLKI: entrada de reloxo dunha fonte de reloxo externa, ver "Reloxo externo" na páxina 26.
ADC3: conversor analóxico a dixital, canle 3.
OC1B: saída de comparación de saída invertida: o pin PB3 pode servir como saída externa para o temporizador / contador de comparación Match Match B cando se configura como saída (conxunto DDB1). O pin OC3B tamén é o pin de saída invertido para a función de temporizador en modo PWM.
PCINT3: fonte de interrupción de cambio de pin 3.
Porto B, bit 2 - SCK / ADC1 / T0 / USCK / SCL / INT0 / PCINT2
SCK: saída Master Clock, pin de entrada Slave Clock para canle SPI. Cando o SPI está habilitado como escravo, este pin configúrase como entrada independentemente da configuración de DDB2. Cando o SPI está habilitado como Mestre, a dirección de datos deste pin está controlada por DDPB2. Cando o pin é forzado polo SPI a ser unha entrada, o pull-up aínda pode ser controlado polo bit PORTB2.
ADC1: conversor analóxico a dixital, canle 1.
T0: fonte de contador de temporizador / contador0.
USCK: reloxo de interface universal en modo de tres fíos.
SCL: reloxo serie de modo de dous fíos para o modo de dous fíos USI.
INT0: fonte de interrupción externa 0.
PCINT2: fonte de interrupción de cambio de pin 2.
Porto B, bit 1 - MISO / AIN1 / OC0B / OC1A / DO / PCINT1
MISO: entrada de datos mestres, pin de saída de datos escravos para a canle SPI. Cando o SPI está habilitado como mestre, este pin configúrase como entrada independentemente da configuración de DDB1. Cando o SPI está habilitado como escravo, a dirección de datos deste pin está controlada por DDB1. Cando o pin é forzado polo SPI a ser unha entrada, o pull-up aínda pode ser controlado polo bit PORTB1.
AIN1: Entrada negativa do comparador analóxico. Configure o pin do porto como entrada co pull-up interno desactivado para evitar que a función do porto dixital interfira coa función do comparador analóxico.
OC0B: Saída Comparación de saída. O pin PB1 pode servir como saída externa para o xogo Timer / Counter0 Compare Match B. O pin PB1 ten que configurarse como unha saída (conxunto DDB1 (un)) para cumprir esta función. O pin OC0B tamén é o pin de saída para a función de temporizador en modo PWM.
OC1A: Saída de comparación de saída: o pin PB1 pode servir como saída externa para o temporizador / contador 1 de comparación de partida B cando se configura como saída (conxunto DDB1). O pin OC1A tamén é o pin de saída para a función de temporizador en modo PWM.
DO: modo de tres fíos Saída de datos da interface serie universal. Modo de tres fíos A saída de datos anula o valor PORTB1 e diríxese ao porto cando se establece o bit de dirección de datos DDB1 (un). PORTB1 aínda habilita o pull-up, se se introduce a dirección e PORTB1 está definido (un).
PCINT1: fonte de interrupción de cambio de pin 1.
Porto B, bit 0 - MOSI / AIN0 / OC0A / OC1A / DI / SDA / AREF / PCINT0
MOSI: saída de datos mestres SPI, entrada de datos escravos para a canle SPI. Cando o SPI está habilitado como escravo, este pin configúrase como entrada independentemente da configuración de DDB0. Cando o SPI está activado como Master, a dirección de datos deste pin está controlada por DDB0. Cando o pin é forzado polo SPI a ser unha entrada, o pull-up aínda pode ser controlado polo bit PORTB0.
AIN0: Entrada positiva do comparador analóxico. Configure o pin do porto como entrada co pull-up interno desactivado para evitar que a función do porto dixital interfira coa función do comparador analóxico.
OC0A: Saída Comparación de saída. O pin PB0 pode servir como saída externa para o temporizador / contador0 Match Match A cando se configura como saída (conxunto DDB0 (un)). O pin OC0A tamén é o pin de saída para a función de temporizador en modo PWM.
OC1A: Saída de comparación de saída invertida: o pin PB0 pode servir como saída externa para o temporizador / contador de comparación Match B cando se configura como saída (conxunto DDB1). O pin OC0A tamén é o pin de saída invertido para a función de temporizador en modo PWM.
SDA: datos de interface serie en modo de dous fíos.
AREF: Referencia analóxica externa para ADC. Pullup e controlador de saída están desactivados en PB0 cando o pin se usa como referencia externa ou Vol internotage Referencia con capacitor externo no pin AREF.
DI: entrada de datos en modo USI de tres fíos. O modo de tres fíos USI non anula as funcións de porto normais, polo que o pin debe configurarse como entrada para a función DI.
PCINT0: fonte de interrupción de cambio de pin 0.
Táboa 10-4 e Táboa 10-5 relaciona as funcións alternativas do porto B cos sinais sobresalientes mostrados en Figura 10-5 páxina 58.
Táboa 10-4. Anulación de sinais para funcións alternativas en PB[5:3]
Nome do sinal | PB5 / RESET / ADC0 / PCINT5 | PB4/ADC2/XTAL2/ OC1B/PCINT4 | PB3/ADC3/XTAL1/ OC1B/PCINT3 |
PUOE | ![]() |
0 | 0 |
PUOV | 1 | 0 | 0 |
DDOE | RSTDISBL(1) • DWEN(1) | 0 | 0 |
DDOV | debugWire Transmit | 0 | 0 |
PVOE | 0 | Habilitar OC1B | ![]() Habilitar 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 RESET, entrada ADC0 | Entrada ADC2 | Entrada ADC3 |
Nota: cando o fusible é "0" (programado).
Táboa 10-5. Anulación de sinais para funcións alternativas en PB[2:0]
Nome do sinal | PB2/SCK/ADC1/T0/ USCK/SCL/INT0/PCINT2 | PB1/MISO/DO/AIN1/ OC1A/OC0B/PCINT1 | PB0/MOSI/DI/SDA/AIN0/AR EF/OC1A/OC0A/
PCINT0 |
PUOE | USI_TWO_WIRE | 0 | USI_TWO_WIRE |
PUOV | 0 | 0 | 0 |
DDOE | USI_TWO_WIRE | 0 | USI_TWO_WIRE |
DDOV | (USI_SCL_HOLD + PORTB2) • DDB2 | 0 | ![]() ![]() (SDA + PORTB0) • DDB0 |
PVOE | USI_TWO_WIRE • DDB2 | Activar OC0B + Activar OC1A + USI_THREE_WIRE | ![]() Activar OC0A + Activar OC1A + (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 do comparador analóxico | Comparativa analóxica Entrada positiva |
Descrición do rexistro
MCUCR - Rexistro de control MCU
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | BODS | PUD | SE | SM1 | SM0 | BODSE | ISC01 | ISC00 | MCUCR |
Ler/Escribir | 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: Desactivar pull-up
Cando se escribe este bit nun, os pull-ups nos portos de E / S están desactivados mesmo se os rexistros DDxn e PORTxn están configurados para habilitar os pull-ups ({DDxn, PORTxn} = 0b01). Ver "Configuración do pin" na páxina 54 para obter máis detalles sobre esta función.
PORTB - Rexistro de datos do porto B
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x18 | – | – | PORTB5 | PORTB4 | PORTB3 | PORTB2 | PORTB1 | PORTB0 | PORTB |
Ler/Escribir | 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 - Rexistro de dirección de datos do porto B
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x17 | – | – | DDB5 | DDB4 | DDB3 | DDB2 | DDB1 | DDB0 | DDRB |
Ler/Escribir | 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 - Enderezo de entrada de porto B
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x16 | – | – | PINB5 | PINB4 | PINB3 | PINB2 | PINB1 | PINB0 | PINB |
Ler/Escribir | 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 |
Temporizador / Contador de 8 bits con PWM
Características
Dúas unidades de comparación de saída independentes
Rexistros de comparación de saída dobre almacenada
Limpar o temporizador na comparación da partida (recarga automática)
Modulador de ancho de pulso correcto de fase (PWM) sen fallas
Período PWM variable
Xerador de frecuencia
Tres fontes de interrupción independentes (TOV0, OCF0A e OCF0B)
Acabadoview
O temporizador / contador0 é un módulo temporizador / contador de 8 bits de propósito xeral, con dúas unidades de comparación de saída independentes e con soporte PWM. Permite a sincronización precisa da execución do programa (xestión de eventos) e a xeración de ondas.
Un diagrama de bloques simplificado do temporizador / contador de 8 bits móstrase en Figura 11-1. Para a colocación real dos pines de E / S, consulte "Pinout ATtiny25 / 45/85" na páxina 2. Os rexistros de E / S accesibles á CPU, incluídos bits de E / S e pines de E / S, móstranse en negra. O rexistro de E / S específico do dispositivo e as localizacións de bits aparecen no "Descrición do rexistro" na páxina 77.
O temporizador/contador (TCNT0) e os rexistros de comparación de saída (OCR0A e OCR0B) son rexistros de 8 bits. Os sinais de solicitude de interrupción (abreviado como Int.Req. na figura) son visibles no Rexistro de bandeiras de interrupción do temporizador (TIFR). Todas as interrupcións están enmascaradas individualmente co Rexistro de Máscara de Interrupción do Temporizador (TIMSK). TIFR e TIMSK non aparecen na figura.
O temporizador/contador pódese sincronizar internamente, mediante o preescalador ou mediante unha fonte de reloxo externa no pin T0. O bloque lóxico Clock Select controla que orixe e borde do reloxo usa o temporizador/contador para incrementar (ou diminuír) o seu valor. O temporizador/contador está inactivo cando non se selecciona ningunha fonte de reloxo. A saída da lóxica de selección de reloxo denomínase reloxo do temporizador (clkT0).
Os rexistros de comparación de saída dobre buffer (OCR0A e OCR0B) compáranse co valor do temporizador / contador en todo momento. O xerador de formas de onda pode usar o resultado da comparación para xerar unha saída PWM ou de frecuencia variable nos pines de comparación de saída (OC0A e OC0B). Consulte "Unidade de comparación de saída" na páxina 69. para máis detalles. O evento Compare Match tamén configurará a bandeira Compare (OCF0A ou OCF0B) que se pode usar para xerar unha solicitude de interrupción de comparación de saída.
Definicións
Moitas referencias de rexistros e bits nesta sección están escritas de forma xeral. Unha minúscula "n" substitúe ao número do temporizador / contador, neste caso 0. Unha minúscula "x" substitúe á unidade de comparación de saída, neste caso compare a unidade A ou comparar a unidade B. Non obstante, cando se usa o rexistro ou o bit define nun programa, debe empregarse a forma precisa, é dicir, TCNT0 para acceder ao valor do contador Timer / Counter0, etc.
As definicións en Táboa 11-1 tamén se usan extensamente en todo o documento.
Táboa 11-1. Definicións
Constante | Descrición |
FONDO | O contador chega a BOTTOM cando pasa a ser 0x00 |
MAX | O contador alcanza o seu máximo cando se converte en 0xFF (decimal 255) |
TOP | O contador alcanza o TOP cando chega a ser o valor máis alto da secuencia de reconto. O valor TOP pódese asignar ao valor fixo 0xFF (MAX) ou ao valor almacenado no rexistro OCR0A. A asignación depende do modo de operación |
Fontes de reloxo e precalificador de contador / contador
O temporizador / contador pode ser reloxado por unha fonte de reloxo interna ou externa. A fonte do reloxo é seleccionada pola lóxica Clock Select que está controlada polos bits Clock Select (c) situados no rexistro de control do temporizador / contador0 (TCCR0B).
Fonte de reloxo interno con precalador
Timer/Counter0 pode ser marcado directamente polo reloxo do sistema (axustando o CS0[2:0] = 1). Isto proporciona o funcionamento máis rápido, cunha frecuencia máxima do temporizador/reloxo contador igual á frecuencia do reloxo do sistema (fCLK_I/O). Alternativamente, unha das catro toques do preescalador pódese usar como fonte de reloxo. O reloxo preescalado ten unha frecuencia de calquera
Restablecer precalificador
O preescalador funciona libremente, é dicir, funciona independentemente da lóxica de selección de reloxo de Timer/Counter0. Dado que o preescalador non se ve afectado pola selección do reloxo do temporizador/contador, o estado do preescalador terá implicacións nas situacións nas que se use un reloxo preescalado. Un exampO ficheiro dun artefacto de preescala é cando o temporizador/contador está activado e marcado polo preescalador (6 > CS0[2:0] > 1). O número de ciclos de reloxo do sistema desde que se activa o temporizador ata que se produce o primeiro reconto pode ser de 1 a N+1 ciclos de reloxo do sistema, onde N é igual ao divisor do preescalador (8, 64, 256 ou 1024).
É posible usar o Prescaler Reset para sincronizar o temporizador / contador coa execución do programa.
Fonte de reloxo externo
Pódese usar unha fonte de reloxo externa aplicada ao pin T0 como temporizador/reloxo contador (clkT0). O pin T0 é sampliderado unha vez cada ciclo de reloxo do sistema pola lóxica de sincronización de pins. O sincronizado (sampled) entón pasa o sinal
a través do detector de bordos. Figura 11-2 mostra un diagrama de bloques equivalente funcional da sincronización T0 e da lóxica do detector de bordes. Os rexistros son reloxos no bordo positivo do reloxo do sistema interno (clkI/O). O peche é transparente no período alto do reloxo do sistema interno.
O detector de borde xera un pulso clkT0 por cada borde positivo (CS0[2:0] = 7) ou negativo (CS0[2:0] = 6) que detecta.
Os rexistros OCR0x están dobremente almacenados en buffer cando se usa calquera dos modos de modulación de ancho de pulso (PWM). Para os modos de operación normal e Clear Timer on Compare (CTC), o búfer dobre está desactivado. O dobre almacenamento sincroniza a actualización dos rexistros de comparación OCR0x coa parte superior ou inferior da secuencia de contado. A sincronización impide a aparición de pulsos PWM non simétricos de lonxitude impar, facendo así que a saída estea libre de fallos.
O acceso ao rexistro OCR0x pode parecer complexo, pero non é así. Cando o dobre búfer está activado, a CPU ten acceso ao rexistro de búfer OCR0x e, se o búfer dobre está desactivado, a CPU accederá directamente ao OCR0x.
Comparar forza de saída
En modos de xeración de formas de onda non PWM, a saída de correspondencia do comparador pode forzarse escribindo un ao bit de comparación de saída forzada (FOC0x). Ao forzar a comparación de comparación non se establecerá a bandeira OCF0x nin se volverá a cargar / borrar o temporizador, pero o pin OC0x actualizarase coma se se producise unha comparación real (a configuración de bits COM0x [1: 0] define se o pin OC0x está definido, borrado ou alternado).
Compara o bloqueo de coincidencia mediante TCNT0 Write
Todas as operacións de escritura da CPU no rexistro TCNT0 bloquearán calquera comparación de comparación que se produza no seguinte ciclo de reloxo, mesmo cando o temporizador está parado. Esta característica permite inicializar OCR0x co mesmo valor que TCNT0 sen provocar unha interrupción cando o reloxo Timer / Counter está activado.
Usando a unidade de comparación de saída
Dado que escribir TCNT0 en calquera modo de operación bloqueará todas as coincidencias de comparación para un ciclo de reloxo de temporizador, hai riscos implicados ao cambiar TCNT0 cando se usa a unidade de comparación de saída, independentemente de que o temporizador / contador estea en funcionamento ou non. Se o valor escrito en TCNT0 é igual ao valor OCR0x, perderase a comparación de comparación, o que producirá unha xeración de forma de onda incorrecta. Do mesmo xeito, non escriba o valor TCNT0 igual a INFERIOR cando o contador está en conta atrás.
A configuración do OC0x debe realizarse antes de configurar o rexistro de dirección de datos para que saia o pin do porto. O xeito máis sinxelo de establecer o valor OC0x é empregar os bits estroboscópicos de comparación forzada (FOC0x) no modo Normal. Os rexistros OC0x manteñen os seus valores incluso cando cambian entre os modos de xeración de formas de onda.
Teña en conta que os bits COM0x [1: 0] non están dobremente almacenados xunto co valor de comparación. Cambiar os bits COM0x [1: 0] terá efecto inmediatamente.
Compara a unidade de saída de coincidencia
Os bits de modo de saída de comparación (COM0x [1: 0]) teñen dúas funcións. O xerador de formas de onda usa os bits COM0x [1: 0] para definir o estado de comparación de saída (OC0x) na seguinte comparación de comparación. Ademais, os bits COM0x [1: 0] controlan a fonte de saída do pin OC0x. Figura 11-6 mostra un esquema simplificado da lóxica afectada pola configuración de bits COM0x [1: 0]. Os rexistros de E / S, os bits de E / S e os pines de E / S da figura móstranse en negra. Só se amosan as partes dos rexistros xerais de control de portos (DDR e PORT) afectados polos bits COM0x [1: 0]. Cando se refire ao estado OC0x, a referencia é para o rexistro interno OC0x, non para o pin OC0x. Se se produce un restablecemento do sistema, o rexistro OC0x restablécese a "0".
Cando OC0A / OC0B está conectado ao pin de E / S, a función dos bits COM0A [1: 0] / COM0B [1: 0] depende da configuración de bits WGM0 [2: 0]. Táboa 11-2 mostra a funcionalidade COM0x [1: 0] bit cando os bits WGM0 [2: 0] están configurados nun modo normal ou CTC (non PWM).
Táboa 11-2. Comparar modo de saída, modo non PWM
COM0A1 COM0B1 | COM0A0 COM0B0 | Descrición |
0 | 0 | Funcionamento normal do porto, OC0A / OC0B desconectado. |
0 | 1 | Activa / desactiva OC0A / OC0B na comparación de comparación |
1 | 0 | Borrar OC0A / OC0B na comparación de coincidencias |
1 | 1 | Configure OC0A / OC0B en Comparar coincidencia |
Táboa 11-3 mostra a funcionalidade COM0x [1: 0] bit cando os bits WGM0 [2: 0] están configurados no modo PWM rápido.
Táboa 11-3. Compara o modo de saída, o modo PWM rápido(1)
COM0A1 COM0B1 | COM0A0 COM0B0 | Descrición |
0 | 0 | Funcionamento normal do porto, OC0A / OC0B desconectado. |
0 | 1 | Reservado |
1 | 0 | Borrar OC0A / OC0B na comparación de comparación, axustar OC0A / OC0B na parte inferior (modo sen inversión) |
1 | 1 | Configure OC0A / OC0B en Match Match, borre OC0A / OC0B en INFERIOR (modo de inversión) |
Nota: ocorre un caso especial cando OCR0A ou OCR0B é igual a TOP e se configura COM0A1/COM0B1. Neste caso, a coincidencia de comparación é ignorada, pero o conxunto ou a eliminación realízase en BOTTOM. Ver "Modo PWM rápido" na páxina 73 para máis detalles.
Táboa 11-4 mostra a funcionalidade COM0x [1: 0] bit cando os bits WGM0 [2: 0] están configurados para o modo PWM correcto de fase.
Táboa 11-4. Comparar o modo de saída, o modo PWM de corrección de fase(1)
COM0A1 COM0B1 | COM0A0 COM0B0 | Descrición |
0 | 0 | Funcionamento normal do porto, OC0A / OC0B desconectado. |
0 | 1 | Reservado |
1 | 0 | Borrar OC0A / OC0B en Comparar coincidencia cando se fai un reconto. Estableza OC0A / OC0B en Comparar coincidencia cando se fai unha conta atrás. |
1 | 1 | Estableza OC0A / OC0B en Comparar coincidencia cando se fai un reconto. Borrar OC0A / OC0B en Comparar coincidencia cando se fai unha conta atrás. |
Nota: 1. Ocorre un caso especial cando OCR0A ou OCR0B é igual a TOP e se configura COM0A1/COM0B1. Neste caso, ignorarase a coincidencia de comparación, pero a configuración ou a eliminación realízase en TOP. Ver "Modo PWM correcto de fase" na páxina 74 para máis detalles.
Bits 3: 2 - Res: Bits reservados
Estes bits son bits reservados no ATtiny25 / 45/85 e sempre se lerán como cero.
Bits 1: 0 - WGM0 [1: 0]: modo de xeración de forma de onda
Combinados co bit WGM02 que se atopa no rexistro TCCR0B, estes bits controlan a secuencia de contado do contador, a fonte do valor máximo do contador (TOP) e que tipo de xeración de forma de onda se vai usar. Táboa 11-5. Os modos de operación admitidos pola unidade de temporizador / contador son: modo normal (contador), modo de temporizador claro en comparación (CTC) e dous tipos de modos de modulación de ancho de pulso (PWM) (ver "Modos de funcionamento" na páxina 71).
Táboa 11-5. Descrición do bit do modo de xeración de forma de onda
Modo | WGM 02 | WGM 01 | WGM 00 | Modo de operación temporizador / contador | TOP | Actualización de OCRx en | Activa a bandeira TOV |
0 | 0 | 0 | 0 | Normal | 0xFF | Inmediato | MAX(1) |
1 | 0 | 0 | 1 | PWM, fase correcta | 0xFF | TOP | FONDO(2) |
2 | 0 | 1 | 0 | CTC | OCRA | Inmediato | MAX(1) |
3 | 0 | 1 | 1 | PWM rápido | 0xFF | FONDO(2) | MAX(1) |
4 | 1 | 0 | 0 | Reservado | – | – | – |
5 | 1 | 0 | 1 | PWM, fase correcta | OCRA | TOP | FONDO(2) |
6 | 1 | 1 | 0 | Reservado | – | – | – |
7 | 1 | 1 | 1 | PWM rápido | OCRA | FONDO(2) | TOP |
Bit 7 - FOC0A: Comparación de saída forzada A
O bit FOC0A só está activo cando os bits WGM especifican un modo que non é PWM.
Non obstante, para garantir a compatibilidade con futuros dispositivos, este bit debe axustarse a cero cando se escribe TCCR0B cando se opera en modo PWM. Cando se escribe un lóxico no bit FOC0A, a unidade de xeración de formas de onda imponse unha comparación inmediata de comparación. A saída OC0A cambia segundo a súa configuración de bits COM0A [1: 0]. Teña en conta que o bit FOC0A está implementado como estroboscópico. Polo tanto, é o valor presente nos bits COM0A [1: 0] o que determina o efecto da comparación forzada.
Un estroboscópico FOC0A non xerará ningunha interrupción nin tampouco borrará o temporizador en modo CTC usando OCR0A como TOP. O bit FOC0A sempre se le como cero.
Bit 6 - FOC0B: comparación de saída forzada B
O bit FOC0B só está activo cando os bits WGM especifican un modo que non é PWM.
Non obstante, para garantir a compatibilidade con futuros dispositivos, este bit debe axustarse a cero cando se escribe TCCR0B cando se opera en modo PWM. Ao escribir un lóxico no bit FOC0B, a unidade de xeración de forma de onda imponse unha comparación inmediata de comparación. A saída OC0B cambia segundo a súa configuración de bits COM0B [1: 0]. Teña en conta que o bit FOC0B está implementado como un estroboscópico. Polo tanto, é o valor presente nos bits COM0B [1: 0] o que determina o efecto da comparación forzada.
Un estroboscópico FOC0B non xerará ningunha interrupción nin tampouco borrará o temporizador en modo CTC usando OCR0B como TOP.
O bit FOC0B sempre se le como cero.
Bits 5: 4 - Res: Bits reservados
Estes bits son bits reservados no ATtiny25 / 45/85 e sempre se lerán como cero.
Bit 3 - WGM02: Modo de xeración de formas de onda
Vexa a descrición no “TCCR0A - Rexistro de control de temporizador / contador A” na páxina 77.
Bits 2: 0 - CS0 [2: 0]: Selección de reloxo
Os tres bits de selección de reloxo seleccionan a fonte do reloxo que empregará o temporizador / contador.
Táboa 11-6. Descrición do bit de selección do reloxo
CS02 | CS01 | CS00 | Descrición |
0 | 0 | 0 | Sen fonte de reloxo (temporizador / contador parado) |
0 | 0 | 1 | clkI/O/(Sen preescalado) |
0 | 1 | 0 | clkI/O/8 (De preescalador) |
0 | 1 | 1 | clkI/O/64 (De preescalador) |
1 | 0 | 0 | clkI/O/256 (De preescalador) |
1 | 0 | 1 | clkI/O/1024 (De preescalador) |
1 | 1 | 0 | Fonte de reloxo externa no pin T0. Reloxo en caída. |
1 | 1 | 1 | Fonte de reloxo externa no pin T0. Reloxo no bordo ascendente. |
Se se utilizan modos de pin externos para o temporizador / contador0, as transicións no pin T0 marcarán o contador aínda que o pin estea configurado como saída. Esta característica permite o control por software do reconto.
Contar e comparar unidades
A operación xeral Timer / Counter1 descríbese no modo asíncrono e a operación no modo sincrónico só se menciona se hai diferenzas entre estes dous modos. Figura 12-2 mostra o diagrama de bloques do rexistro de sincronización de temporizador / contador 1 e os atrasos de sincronización entre rexistros. Teña en conta que na figura non se amosan todos os detalles do reloxo. Os valores do rexistro Temporizador / Contador1 pasan polos rexistros de sincronización interna, que provocan o atraso da sincronización de entrada, antes de afectar a operación do contador. Os rexistros TCCR1, GTCCR, OCR1A, OCR1B e OCR1C pódense ler xusto despois de escribir o rexistro. Os valores de lectura atrasados para o rexistro e marcadores de temporizador / contador1 (TCNT1) (OCF1A, OCF1B e TOV1), debido á sincronización de entrada e saída.
O temporizador / contador1 presenta unha alta resolución e un uso de alta precisión con menos oportunidades de precalificación. Tamén pode soportar dous moduladores de ancho de pulso precisos de alta velocidade de 8 bits con velocidades de reloxo de ata 64 MHz (ou 32 MHz no modo de baixa velocidade). Neste modo, Timer / Counter1 e os rexistros de comparación de saídas serven como PWM autónomos dobres con saídas non invertidas e invertidas non superpostas. Refírense a páxina 86 para unha descrición detallada desta función. Do mesmo xeito, as altas oportunidades de precalificación fan que esta unidade sexa útil para funcións de menor velocidade ou funcións de sincronización exactas con accións pouco frecuentes.
Figura 12-2. Diagrama de bloques de rexistro de sincronización de temporizador/contador 1.
O temporizador / contador1 e o precalificador permiten executar a CPU desde calquera fonte de reloxo mentres o precalificador funciona no reloxo PCK rápido de 64 MHz (ou 32 MHz no modo de baixa velocidade) no modo asíncrono.
Teña en conta que a frecuencia do reloxo do sistema debe ser inferior a un terzo da frecuencia PCK. O mecanismo de sincronización do temporizador / contador asíncrono1 precisa polo menos dous bordos do PCK cando o reloxo do sistema é alto. Se a frecuencia do reloxo do sistema é demasiado alta, corre o risco de que se perdan datos ou valores de control.
O seguinte Figura 12-3 mostra o diagrama de bloques para Timer / Counter1.
Táboa 12-1. Modo de comparación Seleccione no modo PWM
COM1x1 | COM1x0 | Efecto sobre os pins de comparación de saída |
0 | 0 | OC1x non está conectado. OC1x non está conectado. |
0 | 1 | OC1x despexouse ao comparar o partido. Definido candoTCNT1 = $ 00. OC1x fixouse na comparación. Borrado cando TCNT1 = $ 00. |
1 | 0 | OC1x despexouse ao comparar o partido. Definido cando TCNT1 = $ 00. OC1x non está conectado. |
1 | 1 | OC1x Establecer o xogo de comparación. Borrado cando TCNT1 = $ 00. OC1x non está conectado. |
Características ADC
Táboa 21-8. Características ADC, canles de final único. TA = -40 °C a +85 °C
Símbolo | Parámetro | Condición | Min | Típ | Máx | Unidades |
Resolución | 10 | Bits | ||||
Precisión absoluta (incluídos erros INL, DNL e cuantificación, ganancia e compensación) | VREF = 4 V, VCC = 4 V,
Reloxo ADC = 200 kHz |
2 | LSB | |||
VREF = 4 V, VCC = 4 V,
Reloxo ADC = 1 MHz |
3 | LSB | ||||
VREF = 4 V, VCC = 4 V,
Reloxo ADC = 200 kHz Modo de redución de ruído |
1.5 | LSB | ||||
VREF = 4 V, VCC = 4 V,
Reloxo ADC = 1 MHz Modo de redución de ruído |
2.5 | LSB | ||||
Non-linealidade integral (INL) (Precisión despois da compensación e calibración da ganancia) | VREF = 4 V, VCC = 4 V,
Reloxo ADC = 200 kHz |
1 | LSB | |||
Non linealidade diferencial (DNL) | VREF = 4 V, VCC = 4 V,
Reloxo ADC = 200 kHz |
0.5 | LSB | |||
Erro de ganancia | VREF = 4 V, VCC = 4 V,
Reloxo ADC = 200 kHz |
2.5 | LSB | |||
Erro de desprazamento | VREF = 4 V, VCC = 4 V,
Reloxo ADC = 200 kHz |
1.5 | LSB | |||
Tempo de conversión | Conversión de carreira gratuíta | 14 | 280 | µs | ||
Frecuencia do reloxo | 50 | 1000 | kHz | |||
VIN | Vol. De entradatage | GND | VREF | V | ||
Ancho de banda de entrada | 38.4 | kHz | ||||
AREF | Referencia Externa Voltage | 2.0 | VCC | V | ||
VINT | Vol. Internotage Referencia | 1.0 | 1.1 | 1.2 | V | |
Referencia interna de 2.56V (1) | VCC > 3.0 V | 2.3 | 2.56 | 2.8 | V | |
REF | 32 | kΩ | ||||
CHUVIA | Resistencia de entrada analóxica | 100 | MΩ | |||
Saída ADC | 0 | 1023 | LSB |
Nota: 1. Os valores son só orientativas.
Táboa 21-9. Características ADC, canles diferenciais (modo unipolar). TA = -40 °C a +85 °C
Símbolo | Parámetro | Condición | Min | Típ | Máx | Unidades |
Resolución | Ganancia = 1x | 10 | Bits | |||
Ganancia = 20x | 10 | Bits | ||||
Precisión absoluta (incluídos INL, DNL e
Erros de cuantificación, ganancia e compensación) |
Ganancia = 1x
VREF = 4 V, VCC = 5 V Reloxo ADC = 50 - 200 kHz |
10.0 | LSB | |||
Ganancia = 20x
VREF = 4 V, VCC = 5 V Reloxo ADC = 50 - 200 kHz |
20.0 | LSB | ||||
Non-linealidade integral (INL) (precisión despois da compensación e calibración da ganancia) | Ganancia = 1x
VREF = 4 V, VCC = 5 V Reloxo ADC = 50 - 200 kHz |
4.0 | LSB | |||
Ganancia = 20x
VREF = 4 V, VCC = 5 V Reloxo ADC = 50 - 200 kHz |
10.0 | LSB | ||||
Erro de ganancia | Ganancia = 1x | 10.0 | LSB | |||
Ganancia = 20x | 15.0 | LSB | ||||
Erro de desprazamento | Ganancia = 1x
VREF = 4 V, VCC = 5 V Reloxo ADC = 50 - 200 kHz |
3.0 | LSB | |||
Ganancia = 20x
VREF = 4 V, VCC = 5 V Reloxo ADC = 50 - 200 kHz |
4.0 | LSB | ||||
Tempo de conversión | Conversión de carreira gratuíta | 70 | 280 | µs | ||
Frecuencia do reloxo | 50 | 200 | kHz | |||
VIN | Vol. De entradatage | GND | VCC | V | ||
VDIFF | Diferencial de entrada Voltage | VREF/Ganancia | V | |||
Ancho de banda de entrada | 4 | kHz | ||||
AREF | Referencia Externa Voltage | 2.0 | VCC - 1.0 | V | ||
VINT | Vol. Internotage Referencia | 1.0 | 1.1 | 1.2 | V | |
Referencia interna de 2.56V (1) | VCC > 3.0 V | 2.3 | 2.56 | 2.8 | V | |
REF | Resistencia de entrada de referencia | 32 | kΩ | |||
CHUVIA | Resistencia de entrada analóxica | 100 | MΩ | |||
Saída de conversión ADC | 0 | 1023 | LSB |
Nota: os valores son só orientativos.
Táboa 21-10. Características ADC, canles diferenciais (modo bipolar). TA = -40 °C a +85 °C
Símbolo | Parámetro | Condición | Min | Típ | Máx | Unidades |
Resolución | Ganancia = 1x | 10 | Bits | |||
Ganancia = 20x | 10 | Bits | ||||
Precisión absoluta (incluídos INL, DNL e
Erros de cuantificación, ganancia e compensación) |
Ganancia = 1x
VREF = 4 V, VCC = 5 V Reloxo ADC = 50 - 200 kHz |
8.0 | LSB | |||
Ganancia = 20x
VREF = 4 V, VCC = 5 V Reloxo ADC = 50 - 200 kHz |
8.0 | LSB | ||||
Non-linealidade integral (INL) (precisión despois da compensación e calibración da ganancia) | Ganancia = 1x
VREF = 4 V, VCC = 5 V Reloxo ADC = 50 - 200 kHz |
4.0 | LSB | |||
Ganancia = 20x
VREF = 4 V, VCC = 5 V Reloxo ADC = 50 - 200 kHz |
5.0 | LSB | ||||
Erro de ganancia | Ganancia = 1x | 4.0 | LSB | |||
Ganancia = 20x | 5.0 | LSB | ||||
Erro de desprazamento | Ganancia = 1x
VREF = 4 V, VCC = 5 V Reloxo ADC = 50 - 200 kHz |
3.0 | LSB | |||
Ganancia = 20x
VREF = 4 V, VCC = 5 V Reloxo ADC = 50 - 200 kHz |
4.0 | LSB | ||||
Tempo de conversión | Conversión de carreira gratuíta | 70 | 280 | µs | ||
Frecuencia do reloxo | 50 | 200 | kHz | |||
VIN | Vol. De entradatage | GND | VCC | V | ||
VDIFF | Diferencial de entrada Voltage | VREF/Ganancia | V | |||
Ancho de banda de entrada | 4 | kHz | ||||
AREF | Referencia Externa Voltage | 2.0 | VCC - 1.0 | V | ||
VINT | Vol. Internotage Referencia | 1.0 | 1.1 | 1.2 | V | |
Referencia interna de 2.56V (1) | VCC > 3.0 V | 2.3 | 2.56 | 2.8 | V | |
REF | Resistencia de entrada de referencia | 32 | kΩ | |||
CHUVIA | Resistencia de entrada analóxica | 100 | MΩ | |||
Saída de conversión ADC | -512 | 511 | LSB |
Resumo do conxunto de instrucións
Mnemónica | Operandos | Descrición | Operación | Bandeiras | # Reloxos |
INSTRUCIÓNS ARITMÉTICAS E LÓXICAS | |||||
ENGADIR | Rd, Rr | Engade dous rexistros | Rd ← Rd + Rr | Z, C, N, V, H | 1 |
ADC | Rd, Rr | Engade con Carry dous rexistros | Rd ← Rd + Rr + C | Z, C, N, V, H | 1 |
ADIW | Rdl, K | Engadir inmediato a Word | Rdh:Rdl ← Rdh:Rdl + K | Z, C, N, V, S | 2 |
SUB | Rd, Rr | Restar dous rexistros | Rd ← Rd – Rr | Z, C, N, V, H | 1 |
SUBI | Rd, K | Restar a constante do rexistro | Rd ← Rd – K | Z, C, N, V, H | 1 |
SBC | Rd, Rr | Restar con levar dous rexistros | Rd ← Rd – Rr – C | Z, C, N, V, H | 1 |
SBCI | Rd, K | Restar con Carry Constant do Reg. | Rd ← Rd – K – C | Z, C, N, V, H | 1 |
SBIW | Rdl, K | Restar inmediatamente a Word | Rdh:Rdl ← Rdh:Rdl – K | Z, C, N, V, S | 2 |
E | Rd, Rr | Rexistros e lóxicos | Rd ← Rd ∙ Rr | Z, N, V | 1 |
ANDI | Rd, K | Lóxico E Rexistro e constante | Rd ← Rd ∙ K | Z, N, V | 1 |
OR | Rd, Rr | Rexistros lóxicos ou | Rd ← Rd v Rr | Z, N, V | 1 |
ORI | Rd, K | Rexistro ou constante lóxico | Rd ← Rd v K | Z, N, V | 1 |
EOR | Rd, Rr | Rexistros OU exclusivos | Rd ← Rd ⊕ Rr | Z, N, V | 1 |
COM | Rd | Un Complemento | Rd ← 0xFF − Rd | Z, C, N, V | 1 |
NEG | Rd | Complemento a dous | Rd ← 0x00 − Rd | Z, C, N, V, H | 1 |
SBR | Rd, K | Establecer bit (s) no rexistro | Rd ← Rd v K | Z, N, V | 1 |
CBR | Rd, K | Borrar bits no rexistro | Rd ← Rd ∙ (0xFF – K) | Z, N, V | 1 |
INC | Rd | Incremento | Rd ← Rd + 1 | Z, N, V | 1 |
DEC | Rd | Decrecemento | Rd ← Rd − 1 | Z, N, V | 1 |
TST | Rd | Proba de cero ou menos | Rd ← Rd ∙ Rd | Z, N, V | 1 |
CLR | Rd | Borrar Rexistro | Rd ← Rd ⊕ Rd | Z, N, V | 1 |
SER | Rd | Establecer Rexistro | Rd ← 0xFF | Ningún | 1 |
INSTRUCIÓNS DE SUCURSAL | |||||
RJMP | k | Salto relativo | PC ← PC + k + 1 | Ningún | 2 |
IJMP | Salto indirecto a (Z) | PC ← Z | Ningún | 2 | |
RCALL | k | Chamada relativa á subrutina | PC ← PC + k + 1 | Ningún | 3 |
ICALL | Chamada indirecta a (Z) | PC ← Z | Ningún | 3 | |
RET | Retorno da subrutina | PC ← PILA | Ningún | 4 | |
RETI | Retorno interrompido | PC ← PILA | I | 4 | |
CPSE | Rd, Rr | Compara, omite se é igual | se (Rd = Rr) PC ← PC + 2 ou 3 | Ningún | 1/2/3 |
CP | Rd, Rr | Comparar | Rd - Rr | Z, N, V, C, H | 1 |
CPC | Rd, Rr | Compara con Carry | Rd - Rr - C | Z, N, V, C, H | 1 |
IPC | Rd, K | Comparar Rexistrarse con Inmediata | Rd - K | Z, N, V, C, H | 1 |
SBRC | Rr, b | Omitir se se borrou Bit in Register | se (Rr(b)=0) PC ← PC + 2 ou 3 | Ningún | 1/2/3 |
SBRS | Rr, b | Saltar se Bit in Register está configurado | se (Rr(b)=1) PC ← PC + 2 ou 3 | Ningún | 1/2/3 |
SBIC | P, b | Omitir se se borrou o bit no rexistro de E / S | se (P(b)=0) PC ← PC + 2 ou 3 | Ningún | 1/2/3 |
SBIS | P, b | Saltar se Bit no rexistro de E / S está configurado | se (P(b)=1) PC ← PC + 2 ou 3 | Ningún | 1/2/3 |
BRBS | s, k | Ramificar se se establece a bandeira de estado | se (SREG(s) = 1) entón PC←PC+k + 1 | Ningún | 1/2 |
BRBC | s, k | Ramificar se a bandeira de estado está borrada | se (SREG(s) = 0) entón PC←PC+k + 1 | Ningún | 1/2 |
BREQ | k | Rama se igual | se (Z = 1) entón PC ← PC + k + 1 | Ningún | 1/2 |
BRNE | k | Rama se non é igual | se (Z = 0) entón PC ← PC + k + 1 | Ningún | 1/2 |
BRCS | k | Rama se Carry Set | se (C = 1) entón PC ← PC + k + 1 | Ningún | 1/2 |
BRCC | k | Rama se Carry Cleared | se (C = 0) entón PC ← PC + k + 1 | Ningún | 1/2 |
BRSH | k | Rama se igual ou superior | se (C = 0) entón PC ← PC + k + 1 | Ningún | 1/2 |
BRLO | k | Rama se inferior | se (C = 1) entón PC ← PC + k + 1 | Ningún | 1/2 |
BRMI | k | Rama se menos | se (N = 1) entón PC ← PC + k + 1 | Ningún | 1/2 |
BRPL | k | Sucursal se Plus | se (N = 0) entón PC ← PC + k + 1 | Ningún | 1/2 |
BRGE | k | Rama se maior ou igual, asinada | se (N ⊕ V= 0) entón PC ← PC + k + 1 | Ningún | 1/2 |
BRLT | k | Rama se menos de cero, asinado | se (N ⊕ V= 1) entón PC ← PC + k + 1 | Ningún | 1/2 |
BRHS | k | Rama se medio leva bandera | se (H = 1) entón PC ← PC + k + 1 | Ningún | 1/2 |
BRHC | k | Rama se a bandeira Half Carry está limpa | se (H = 0) entón PC ← PC + k + 1 | Ningún | 1/2 |
BRTS | k | Ramificar se se establece a bandeira T. | se (T = 1) entón PC ← PC + k + 1 | Ningún | 1/2 |
BRTC | k | Ramificar se se marca a bandeira T | se (T = 0) entón PC ← PC + k + 1 | Ningún | 1/2 |
BRVS | k | Ramificar se se establece a bandeira de desbordamento | se (V = 1) entón PC ← PC + k + 1 | Ningún | 1/2 |
BRVC | k | Ramificar se a bandeira de desbordamento está borrada | se (V = 0) entón PC ← PC + k + 1 | Ningún | 1/2 |
BRIE | k | Sucursal se a interrupción está activada | se (I = 1) entón PC ← PC + k + 1 | Ningún | 1/2 |
NOIVA | k | Sucursal se a interrupción está desactivada | se (I = 0) entón PC ← PC + k + 1 | Ningún | 1/2 |
INSTRUCIÓNS DE BIT E BIT-TEST | |||||
SBI | P, b | Establecer Bit no rexistro de E / S | E/S(P,b) ← 1 | Ningún | 2 |
CBI | P, b | Borrar bit no rexistro de E / S | E/S(P,b) ← 0 | Ningún | 2 |
LSL | Rd | Desprazamento lóxico á esquerda | Rd(n+1) ← Rd(n), Rd(0) ← 0 | Z, C, N, V | 1 |
LSR | Rd | Desprazamento lóxico á dereita | Rd(n) ← Rd(n+1), Rd(7) ← 0 | Z, C, N, V | 1 |
Rol | Rd | Xirar cara á esquerda por Carry | Rd(0)←C,Rd(n+1)← Rd(n),C←Rd(7) | Z, C, N, V | 1 |
ROR | Rd | Xirar á dereita cara a Carry | Rd(7)←C,Rd(n)← Rd(n+1),C←Rd(0) | Z, C, N, V | 1 |
ASR | Rd | Cambio aritmético á dereita | Rd(n) ← Rd(n+1), n=0..6 | Z, C, N, V | 1 |
Mnemónica | Operandos | Descrición | Operación | Bandeiras | # Reloxos |
CAMBIO | Rd | Intercambia as picaduras | Rd(3..0)←Rd(7..4),Rd(7..4)←Rd(3..0) | Ningún | 1 |
BSET | s | Conxunto de bandeiras | SREG(s) ← 1 | SREG (s) | 1 |
BCLR | s | Bandeira clara | SREG(s) ← 0 | SREG (s) | 1 |
BST | Rr, b | Bit Store de Rexistro a T | T ← Rr(b) | T | 1 |
BLD | Rd, b | Carga de bits de T a Rexistro | Rd(b) ← T | Ningún | 1 |
SEC | Set Carry | C ← 1 | C | 1 | |
CLC | Limpar Carry | C ← 0 | C | 1 | |
SEN | Establecer bandeira negativa | N ← 1 | N | 1 | |
CLN | Borrar bandeira negativa | N ← 0 | N | 1 | |
SEZ | Establecer bandeira cero | Z ← 1 | Z | 1 | |
CLZ | Limpar a bandeira cero | Z ← 0 | Z | 1 | |
SEI | Activación de interrupción global | I ← 1 | I | 1 | |
CLI | Desactivar a interrupción global | I ← 0 | I | 1 | |
SES | Establecer bandeira de proba asinada | S ← 1 | S | 1 | |
CLS | Borrar a bandeira de proba asinada | S ← 0 | S | 1 | |
SEV | Establecer desbordamento de complementos de dous. | V ← 1 | V | 1 | |
CLV | Limpar o desbordamento do complemento Twos | V ← 0 | V | 1 | |
SET | Establece T en SREG | T ← 1 | T | 1 | |
CLT | Borrar T en SREG | T ← 0 | T | 1 | |
SEH | Establecer a bandeira Half Carry en SREG | H ← 1 | H | 1 | |
CLH | Limpar a bandeira Half Carry en SREG | H ← 0 | H | 1 | |
INSTRUCIÓNS DE TRANSFERENCIA DE DATOS | |||||
MOV | Rd, Rr | Móvete entre rexistros | Rd ← Rr | Ningún | 1 |
MOVW | Rd, Rr | Copiar Rexistrar Word | Rd+1:Rd ← Rr+1:Rr | Ningún | 1 |
LDI | Rd, K | Carga inmediata | Rd ← K | Ningún | 1 |
LD | Rd, X | Carga indirecta | Rd ← (X) | Ningún | 2 |
LD | Rd, X + | Carga indirecta e post-inc. | Rd ← (X), X ← X + 1 | Ningún | 2 |
LD | Rd, - X | Carga indirecta e anterior a decembro | X ← X – 1, Rd ← (X) | Ningún | 2 |
LD | Rd, Y | Carga indirecta | Rd ← (Y) | Ningún | 2 |
LD | Rd, Y + | Carga indirecta e post-inc. | Rd ← (Y), Y ← Y + 1 | Ningún | 2 |
LD | Rd, - Y | Carga indirecta e anterior a decembro | Y ← Y – 1, Rd ← (Y) | Ningún | 2 |
LDD | Rd, Y + q | Carga indirecta con desprazamento | Rd ← (Y + q) | Ningún | 2 |
LD | Rd, Z | Carga indirecta | Rd ← (Z) | Ningún | 2 |
LD | Rd, Z + | Carga indirecta e post-inc. | Rd ← (Z), Z ← Z+1 | Ningún | 2 |
LD | Rd, -Z | Carga indirecta e anterior a decembro | Z ← Z – 1, Rd ← (Z) | Ningún | 2 |
LDD | Rd, Z + q | Carga indirecta con desprazamento | Rd ← (Z + q) | Ningún | 2 |
LDS | Rd, k | Carga directa desde SRAM | Rd ← (k) | Ningún | 2 |
ST | X, Rr | Tenda indirecta | (X) ← Rr | Ningún | 2 |
ST | X +, Rr | Tenda indirecta e post-inc. | (X) ← Rr, X ← X + 1 | Ningún | 2 |
ST | - X, Rr | Almacenar indirectamente e antes de decembro. | X ← X – 1, (X) ← Rr | Ningún | 2 |
ST | Si, Rr | Tenda indirecta | (Y) ← Rr | Ningún | 2 |
ST | Y +, Rr | Tenda indirecta e post-inc. | (Y) ← Rr, Y ← Y + 1 | Ningún | 2 |
ST | - Si, Rr | Almacenar indirectamente e antes de decembro. | Y ← Y – 1, (Y) ← Rr | Ningún | 2 |
STD | Y + q, Rr | Almacenar indirectamente con desprazamento | (Y + q) ← Rr | Ningún | 2 |
ST | Z, Rr | Tenda indirecta | (Z) ← Rr | Ningún | 2 |
ST | Z +, Rr | Tenda indirecta e post-inc. | (Z) ← Rr, Z ← Z + 1 | Ningún | 2 |
ST | -Z, Rr | Almacenar indirectamente e antes de decembro. | Z ← Z – 1, (Z) ← Rr | Ningún | 2 |
STD | Z + q, Rr | Almacenar indirectamente con desprazamento | (Z + q) ← Rr | Ningún | 2 |
STS | k, Rr | Tenda directa a SRAM | (k) ← Rr | Ningún | 2 |
LPM | Cargar a memoria do programa | R0 ← (Z) | Ningún | 3 | |
LPM | Rd, Z | Cargar a memoria do programa | Rd ← (Z) | Ningún | 3 |
LPM | Rd, Z + | Cargue a memoria do programa e o postinc | Rd ← (Z), Z ← Z+1 | Ningún | 3 |
SPM | Almacenar a memoria do programa | (z) ← R1:R0 | Ningún | ||
IN | Rd, p | En Porto | Rd ← P | Ningún | 1 |
FÓRA | P, Rr | Fóra de Porto | P ← Rr | Ningún | 1 |
EMPUXE | Rr | Preme o rexistro na pila | PILA ← Rr | Ningún | 2 |
POP | Rd | Rexistro Pop desde Stack | Rd ← PILA | Ningún | 2 |
INSTRUCIÓNS DE CONTROL DA MCU | |||||
NOP | Sen Operación | Ningún | 1 | ||
DURMIR | Durmir | (ver descrición específica para a función Sleep) | Ningún | 1 | |
WDR | Restablecemento do can vixiante | (ver descrición específica para WDR / Timer) | Ningún | 1 | |
DESCANSO | Descanso |
Velocidade (MHz) (1) | Vol. Subministracióntage (V) | Rango de temperatura | Paquete (2) | Código de pedido (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 | ATtiny 45-20PU |
8S2 | ATtiny45-20SU ATtiny45-20SUR
ATtiny45-20SH ATtiny45-20SHR |
|||
8X | ATtiny45-20XU ATtiny45-20XUR | |||
20M1 | ATtiny45-20MU ATtiny45-20MUR |
Notas: 1. Para velocidade vstage, ver sección 21.3 "Velocidade" na páxina 163.
Todos os paquetes son libres de Pb, sen haluros e totalmente verdes e cumpren coa directiva europea de restrición de substancias perigosas (RoHS).
Indicadores de código
H: remate de NiPdAu
U: estaño mate
R: cinta e bobina
Estes dispositivos tamén se poden subministrar en forma de oblea. Póñase en contacto coa súa oficina de vendas local de Atmel para obter información detallada sobre o pedido e cantidades mínimas.
Errata
Errata ATtiny25
A carta de revisión desta sección refírese á revisión do dispositivo ATtiny25.
Rev. D - F
Non hai erratas coñecidas.
Rev. B - C
A lectura da EEPROM pode fallar a baixo volume de subministracióntage/frecuencia de reloxo baixa
A lectura da EEPROM pode fallar a baixo volume de subministracióntage/frecuencia de reloxo baixa
Tentando ler a EEPROM a baixas frecuencias de reloxo e/ou baixo volume de subministracióntage pode producir datos non válidos.
Solución de problemas / solución
Non use a EEPROM cando a frecuencia do reloxo estea por debaixo de 1MHz e o voltage está por debaixo de 2 V. Se a frecuencia de funcionamento non se pode elevar por riba de 1MHz, a subministración voltage debe ser superior a 2 V. Do mesmo xeito, se oferta voltage non se pode elevar por riba dos 2 V, entón a frecuencia de funcionamento debe ser superior a 1 MHz.
Sábese que esta característica depende da temperatura pero non se caracterizou. Só se dan pautas para a temperatura ambiente.
Rev A
Non sampLED.
Errata ATtiny45
A carta de revisión desta sección refírese á revisión do dispositivo ATtiny45.
Rev F - G
Non hai erratas coñecidas
Rev. D - E
A lectura da EEPROM pode fallar a baixo volume de subministracióntage/frecuencia de reloxo baixa
A lectura da EEPROM pode fallar a baixo volume de subministracióntage/frecuencia de reloxo baixa
Tentando ler a EEPROM a baixas frecuencias de reloxo e/ou baixo volume de subministracióntage pode producir datos non válidos.
Solución de problemas / solución
Non use a EEPROM cando a frecuencia do reloxo estea por debaixo de 1MHz e o voltage está por debaixo de 2 V. Se a frecuencia de funcionamento non se pode elevar por riba de 1MHz, a subministración voltage debe ser superior a 2 V. Do mesmo xeito, se oferta voltage non se pode elevar por riba dos 2 V, entón a frecuencia de funcionamento debe ser superior a 1 MHz.
Sábese que esta característica depende da temperatura pero non se caracterizou. Só se dan pautas para a temperatura ambiente.
Rev. B - C
O PLL non se bloquea
A lectura de EEPROM desde o código da aplicación non funciona no modo 3 de bloqueo
A lectura da EEPROM pode fallar a baixo volume de subministracióntage/frecuencia de reloxo baixa
Contador de temporizador 1 A xeración de saída PWM en OC1B- XOC1B non funciona correctamente
O PLL non se bloquea
Cando ten frecuencias inferiores a 6.0 MHz, o PLL non se bloqueará
Solución do problema / solución
Cando se usa o PLL, execute a 6.0 MHz ou superior.
A lectura de EEPROM desde o código da aplicación non funciona no modo 3 de bloqueo
Cando os bits de bloqueo de memoria LB2 e LB1 están programados no modo 3, a lectura EEPROM non funciona desde o código da aplicación.
Solución de problemas / Solución
Non configure o modo de protección de bits de bloqueo 3 cando o código da aplicación necesite ler desde EEPROM.
A lectura da EEPROM pode fallar a baixo volume de subministracióntage/frecuencia de reloxo baixa
Tentando ler a EEPROM a baixas frecuencias de reloxo e/ou baixo volume de subministracióntage pode producir datos non válidos.
Solución de problemas / solución
Non use a EEPROM cando a frecuencia do reloxo estea por debaixo de 1MHz e o voltage está por debaixo de 2 V. Se a frecuencia de funcionamento non se pode elevar por riba de 1MHz, a subministración voltage debe ser superior a 2 V. Do mesmo xeito, se oferta voltage non se pode elevar por riba dos 2 V, entón a frecuencia de funcionamento debe ser superior a 1 MHz.
Sábese que esta característica depende da temperatura pero non se caracterizou. Só se dan pautas para a temperatura ambiente.
Contador de temporizador 1 A xeración de saída PWM en OC1B - XOC1B non funciona correctamente
Timer Counter1 A saída PWM OC1B-XOC1B non funciona correctamente. Só no caso de que os bits de control, COM1B1 e COM1B0 estean no mesmo modo que COM1A1 e COM1A0, respectivamente, a saída OC1B-XOC1B funciona correctamente.
Solución de problemas / Solución
A única solución é empregar a mesma configuración de control nos bits de control COM1A [1: 0] e COM1B [1: 0], consulte a táboa 14-4 na folla de datos. O problema solucionouse para Tiny45 rev D.
Rev A
Consumo de enerxía demasiado alto
DebugWIRE perde a comunicación cando entra en interrupcións
O PLL non se bloquea
A lectura de EEPROM desde o código da aplicación non funciona no modo 3 de bloqueo
A lectura da EEPROM pode fallar a baixo volume de subministracióntage/frecuencia de reloxo baixa
Consumo de enerxía demasiado alto
Tres situacións levarán a un consumo de enerxía demasiado alto. Estes son:
Os fusibles seleccionan un reloxo externo, pero o PORT E / S aínda está habilitado como saída.
A EEPROM le antes de entrar no apagado.
VCC é de 4.5 voltios ou superior.
Exención de responsabilidade: a información deste documento ofrécese en relación cos produtos Atmel. Este documento ou en relación coa venda de produtos Atmel non concede ningunha licenza, expresa ou implícita, por exclusión ou doutra forma, a ningún dereito de propiedade intelectual. EXCEPTO O ESTABLECIDO NOS TERMOS E CONDICIÓNS DE VENDA DE ATMEL UBICADOS NO ATMEL WEBSITIO, ATMEL NON ASUME NINGUNHA RESPONSABILIDADE E RENUNCIA A NINGÚN GARANTÍA EXPRESA, IMPLÍCITA OU ESTATUTORIA RELATIVA AOS SEUS PRODUTOS INCLUÍENDO, PERO NON LIMITADO A, A GARANTÍA IMPLÍCITA DE COMERCIABILIDADE, ADECUACIÓN PARA UN FIN PARTICULAR, INFRACCIÓN. EN NINGÚN CASO ATMEL SERÁ RESPONSABLE DE NINGÚN DANOS DIRECTOS, INDIRECTOS, CONSECUENTES, PUNITIVOS, ESPECIAIS OU INCIDENTAIS (INCLUÍDOS, SEN LIMITACIÓNS, DANOS POR PERDAS E BENEFICIOS, INTERRUPCIÓN DA NEGOCIO OU PERDA DE INFORMACIÓN) DERIVADOS DO USO PARA O USO. ESTE DOCUMENTO, AÍNDA QUE ATMEL FOI AVISO DA POSIBILIDADE DE ESTOS DANOS.
Atmel non fai ningunha representación ou garantía con respecto á exactitude ou integridade do contido deste documento e resérvase o dereito de facer cambios nas especificacións e nas descricións dos produtos en calquera momento sen previo aviso. Atmel non se compromete a actualizar a información aquí contida. A non ser que se indique expresamente o contrario, os produtos Atmel non son axeitados para aplicacións automotrices e non se deben utilizar en aplicacións de automoción. Os produtos Atmel non están destinados, autorizados ou garantidos para o seu uso como compoñentes en aplicacións destinadas a soportar ou manter a vida útil.