Microcontrolador Atmel AVR de 8 bits con flash programable en el sistema de 2/4/8K bytes
Características
- Microcontrolador AVR® de 8 bits de bajo consumo y alto rendimiento
- Arquitectura RISC avanzada
- 120 poderosas instrucciones: la mayoría de las ejecuciones de ciclo de reloj único
- 32 x 8 registros de trabajo de propósito general
- Operación completamente estática
- Memorias de datos y programas no volátiles
- 2/4/8 K bytes de memoria flash de programa programable en el sistema
- Resistencia: 10,000 ciclos de escritura/borrado
- EEPROM programable en el sistema de 128/256/512 bytes
- Resistencia: 100,000 ciclos de escritura/borrado
- SRAM interno de 128/256/512 bytes
- Bloqueo de programación para programa flash de autoprogramación y seguridad de datos EEPROM
Funciones periféricas
- Temporizador / contador de 8 bits con preescalador y dos canales PWM
- Temporizador / contador de alta velocidad de 8 bits con preescalador independiente
- 2 salidas PWM de alta frecuencia con registros de comparación de salida separados
- Generador de tiempo muerto programable
- USI - Interfaz serie universal con detector de condiciones de arranque
- Convertidor analógico-digital de 10 bits
4 canales de un solo extremo
2 pares de canales ADC diferenciales con ganancia programable (1x, 20x)
Medición de temperatura
Temporizador de vigilancia programable con oscilador integrado en el chip
Comparador analógico en chip
Características especiales del microcontrolador
debugWIRE Sistema de depuración en chip
Programable en el sistema a través del puerto SPI
Fuentes de interrupción externas e internas
Modos de inactividad, reducción de ruido ADC y apagado de bajo consumo
Circuito de reinicio de encendido mejorado
Circuito programable de detección de apagones
Oscilador calibrado interno
E / S y paquetes
Seis líneas de E / S programables
PDIP de 8 pines, SOIC de 8 pines, QFN / MLF de 20 pines y TSSOP de 8 pines (solo ATtiny45 / V)
Vol de funcionamientotage
- 1.8 - 5.5V para ATtiny25V / 45V / 85V
- 2.7 - 5.5V para ATtiny25 / 45/85
Grado de velocidad
- ATtiny25V / 45V / 85V: 0 - 4 MHz @ 1.8 - 5.5V, 0 - 10 MHz @ 2.7 - 5.5V
- ATtiny25 / 45/85: 0 - 10 MHz a 2.7 - 5.5 V, 0 - 20 MHz a 4.5 - 5.5 V
Rango de temperatura industrial
Bajo consumo de energía
Modo activo:
1 MHz, 1.8 V: 300 µA
Modo de apagado:
Configuraciones de pines
Pinout ATtiny25 / 45/85
Descripciones de pines
VCC: volumen de suministrotage.
TIERRA: Tierra.
Puerto B (PB5:PB0): El puerto B es un puerto de E/S bidireccional de 6 bits con resistencias pull-up internas (seleccionadas para cada bit). Los búferes de salida del puerto B tienen características de unidad simétricas con alta capacidad de fuente y sumidero. Como entradas, los pines del puerto B que se bajan externamente generarán corriente si se activan las resistencias pull-up. Los pines del puerto B tienen tres estados cuando se activa una condición de reinicio, incluso si el reloj no está funcionando.
El puerto B también sirve para las funciones de varias características especiales del ATtiny25 / 45/85 como se indica
En ATtiny25, los puertos de E / S programables PB3 y PB4 (pines 2 y 3) se intercambian en el modo de compatibilidad ATtiny15 para admitir la compatibilidad con versiones anteriores de ATtiny15.
RESET: Reiniciar entrada. Un nivel bajo en este pin por más tiempo que la duración mínima del pulso generará un reinicio, incluso si el reloj no está funcionando y siempre que el pin de reinicio no haya sido desactivado. La longitud mínima del pulso se da en Tabla 21-4 En la página 165. No se garantiza que los pulsos más cortos generen un reinicio.
El pin de reinicio también se puede utilizar como un pin de E / S (débil).
Encimaview
El ATtiny25 / 45/85 es un microcontrolador CMOS de 8 bits de bajo consumo basado en la arquitectura RISC mejorada de AVR. Al ejecutar poderosas instrucciones en un solo ciclo de reloj, el ATtiny25 / 45/85 logra rendimientos cercanos a 1 MIPS por MHz, lo que permite al diseñador del sistema optimizar el consumo de energía frente a la velocidad de procesamiento.
Diagrama de bloques
El núcleo AVR combina un rico conjunto de instrucciones con 32 registros de trabajo de propósito general. Los 32 registros están conectados directamente a la Unidad Aritmética Lógica (ALU), lo que permite acceder a dos registros independientes en una sola instrucción ejecutada en un ciclo de reloj. La arquitectura resultante es más eficiente en código y logra rendimientos hasta diez veces más rápidos que los microcontroladores CISC convencionales.
El ATtiny25 / 45/85 proporciona las siguientes características: 2/4/8 K bytes de Flash programable en el sistema, 128/256/512 bytes EEPROM, 128/256/256 bytes SRAM, 6 líneas de E / S de propósito general, 32 registros de trabajo de propósito, un temporizador / contador de 8 bits con modos de comparación, un temporizador / contador de alta velocidad de 8 bits, interfaz serie universal, interrupciones internas y externas, un ADC de 4 canales y 10 bits, un temporizador de vigilancia programable con Oscilador y tres modos de ahorro de energía seleccionables por software. El modo inactivo detiene la CPU mientras permite que la SRAM, el temporizador / contador, el ADC, el comparador analógico y el sistema de interrupción continúen funcionando. El modo de apagado guarda el contenido del registro, deshabilitando todas las funciones del chip hasta la siguiente Interrupción o Restablecimiento de hardware. El modo de reducción de ruido de ADC detiene la CPU y todos los módulos de E / S excepto ADC, para minimizar el ruido de conmutación durante las conversiones de ADC.
El dispositivo está fabricado utilizando la tecnología de memoria no volátil de alta densidad de Atmel. El ISP Flash en chip permite reprogramar la memoria del programa en el sistema a través de una interfaz en serie SPI, mediante un programador de memoria no volátil convencional o mediante un código de arranque en chip que se ejecuta en el núcleo del AVR.
El AVR ATtiny25 / 45/85 es compatible con un conjunto completo de herramientas de desarrollo de programas y sistemas que incluyen: compiladores C, ensambladores de macros, depuradores / simuladores de programas y kits de evaluación.
Acerca de los recursos
Un conjunto completo de herramientas de desarrollo, notas de aplicación y hojas de datos están disponibles para descargar en http://www.atmel.com/avr.
Código ExampLos
Esta documentación contiene código simple examparchivos que muestran brevemente cómo utilizar varias partes del dispositivo. Estos código exampAsumamos que el encabezado específico de la pieza file se incluye antes de la compilación. Tenga en cuenta que no todos los proveedores de compiladores de C incluyen definiciones de bits en el encabezado filesy el manejo de interrupciones en C depende del compilador. Confirme con la documentación del compilador de C para obtener más detalles.
Para los registros de E / S ubicados en el mapa de E / S extendido, las instrucciones "IN", "OUT", "SBIS", "SBIC", "CBI" y "SBI" deben reemplazarse con instrucciones que permitan el acceso a I / O. Normalmente, esto significa "LDS" y "STS" combinados con "SBRS", "SBRC", "SBR" y "CBR". Tenga en cuenta que no todos los dispositivos AVR incluyen un mapa de E / S extendido.
Detección táctil capacitiva
Atmel QTouch Library proporciona una solución fácil de usar para interfaces sensibles al tacto en microcontroladores Atmel AVR. La biblioteca QTouch incluye compatibilidad con los métodos de adquisición QTouch® y QMatrix®.
La detección táctil se agrega fácilmente a cualquier aplicación al vincular la biblioteca QTouch y usar la interfaz de programación de aplicaciones (API) de la biblioteca para definir los canales y sensores táctiles. Luego, la aplicación llama a la API para recuperar información del canal y determinar el estado del sensor táctil.
La biblioteca QTouch es gratuita y se puede descargar desde Atmel websitio. Para obtener más información y detalles de implementación, consulte la Guía del usuario de la biblioteca QTouch, también disponible en Atmel websitio.
Retención de datos
Los resultados de la calificación de confiabilidad muestran que la tasa de falla de retención de datos proyectada es mucho menor que 1 PPM durante 20 años a 85 ° C o 100 años a 25 ° C.
Núcleo de CPU AVR
Introducción
Esta sección analiza la arquitectura central del AVR en general. La función principal del núcleo de la CPU es garantizar la ejecución correcta del programa. Por lo tanto, la CPU debe poder acceder a las memorias, realizar cálculos, controlar periféricos y manejar interrupciones.
Más arquitectónicoview
Para maximizar el rendimiento y el paralelismo, el AVR utiliza una arquitectura de Harvard, con memorias y buses separados para programas y datos. Las instrucciones en la memoria del programa se ejecutan con una canalización de un solo nivel. Mientras se ejecuta una instrucción, la siguiente instrucción se recupera previamente de la memoria del programa. Este concepto permite ejecutar instrucciones en cada ciclo de reloj. La memoria del programa es una memoria flash reprogramable en el sistema.
El registro de acceso rápido File contiene registros de trabajo de propósito general de 32 x 8 bits con un solo tiempo de acceso de ciclo de reloj. Esto permite la operación de la Unidad Lógica Aritmética (ALU) de un solo ciclo. En una operación típica de ALU, se emiten dos operandos desde el Registro File, la operación se ejecuta y el resultado se almacena nuevamente en el Registro File- en un ciclo de reloj.
Seis de los 32 registros se pueden utilizar como tres punteros de registro de dirección indirecta de 16 bits para el direccionamiento del espacio de datos, lo que permite cálculos de dirección eficientes. Uno de estos punteros de dirección también se puede utilizar como puntero de dirección para buscar tablas en la memoria del programa Flash. Estos registros de función añadidos son los registros X, Y y Z de 16 bits, que se describen más adelante en esta sección.
La ALU admite operaciones aritméticas y lógicas entre registros o entre una constante y un registro. Las operaciones de registro único también se pueden ejecutar en la ALU. Después de una operación aritmética, el registro de estado se actualiza para reflejar información sobre el resultado de la operación.
El flujo del programa se proporciona mediante instrucciones de llamada y salto condicionales e incondicionales, capaces de abordar directamente todo el espacio de direcciones. La mayoría de las instrucciones AVR tienen un formato de palabra única de 16 bits, pero también hay instrucciones de 32 bits.
Durante las interrupciones y las llamadas a subrutinas, el contador de programa (PC) de la dirección de retorno se almacena en la pila. La pila se asigna de forma efectiva en la SRAM de datos generales y, en consecuencia, el tamaño de la pila solo está limitado por el tamaño total de la SRAM y el uso de la SRAM. Todos los programas de usuario deben inicializar el SP en la rutina Reset (antes de que se ejecuten las subrutinas o interrupciones). El Stack Pointer (SP) es accesible en lectura / escritura en el espacio de E / S. Se puede acceder fácilmente a la SRAM de datos a través de los cinco modos de direccionamiento diferentes admitidos en la arquitectura AVR.
Los espacios de memoria en la arquitectura AVR son todos mapas de memoria lineales y regulares.
Un módulo de interrupción flexible tiene sus registros de control en el espacio de E / S con un bit de habilitación de interrupción global adicional en el registro de estado. Todas las interrupciones tienen un vector de interrupción independiente en la tabla de vectores de interrupción. Las interrupciones tienen prioridad de acuerdo con su posición de Vector de interrupción. Cuanto menor sea la dirección del vector de interrupción, mayor será la prioridad.
El espacio de memoria de E / S contiene 64 direcciones para funciones periféricas de la CPU como registros de control, SPI y otras funciones de E / S. Se puede acceder a la memoria de E / S directamente o como las ubicaciones del espacio de datos que siguen a las del registro. File, 0x20 - 0x5F.
ALU - Unidad Aritmética Lógica
El AVR ALU de alto rendimiento funciona en conexión directa con los 32 registros de trabajo de uso general. Dentro de un solo ciclo de reloj, se ejecutan operaciones aritméticas entre registros de propósito general o entre un registro y un inmediato. Las operaciones de ALU se dividen en tres categorías principales: funciones aritméticas, lógicas y de bits. Algunas implementaciones de la arquitectura también proporcionan un potente multiplicador que admite tanto la multiplicación con signo / sin signo como el formato fraccionario. Consulte la sección "Conjunto de instrucciones" para obtener una descripción detallada.
Registro de estado
El registro de estado contiene información sobre el resultado de la última instrucción aritmética ejecutada. Esta información se puede utilizar para alterar el flujo del programa con el fin de realizar operaciones condicionales. Tenga en cuenta que el registro de estado se actualiza después de todas las operaciones de ALU, como se especifica en la referencia del conjunto de instrucciones. En muchos casos, esto eliminará la necesidad de utilizar las instrucciones de comparación dedicadas, lo que dará como resultado un código más rápido y compacto.
El registro de estado no se almacena automáticamente al ingresar a una rutina de interrupción y se restaura al regresar de una interrupción. Esto debe ser manejado por software.
SREG - Registro de estado de AVR
El registro de estado de AVR - SREG - se define como:
Poco | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3F | I | T | H | S | V | N | Z | C | SREG |
Leer/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: Habilitación de interrupción global
El bit de habilitación de interrupción global debe establecerse para que se habiliten las interrupciones. El control de habilitación de interrupciones individual se realiza entonces en registros de control separados. Si se borra el Registro de habilitación de interrupciones globales, ninguna de las interrupciones se habilita independientemente de la configuración de habilitación de interrupciones individuales. El hardware borra el bit I después de que se ha producido una interrupción y la instrucción RETI lo establece para habilitar las interrupciones posteriores. La aplicación también puede establecer y borrar el bit I con las instrucciones SEI y CLI, como se describe en la referencia del conjunto de instrucciones.
Bit 6 - T: Almacenamiento de copia de bits
Las instrucciones de copia de bits BLD (Bit LoaD) y BST (Bit STore) utilizan el bit T como origen o destino del bit operado. Un poco de un registro en el Registro. File se puede copiar en T mediante la instrucción BST, y un bit en T se puede copiar en un bit en un registro en el registro File por la instrucción BLD.
Bit 5 - H: Bandera de medio transporte
La bandera de Half Carry H indica un Half Carry en algunas operaciones aritméticas. Half Carry es útil en aritmética BCD. Consulte la “Descripción del conjunto de instrucciones” para obtener información detallada.
Bit 4 – S: Bit de signo, S = N ⊕ V
El bit S es siempre un exclusivo o entre el indicador negativo N y el indicador de desbordamiento de complemento a dos V. Consulte la “Descripción del conjunto de instrucciones” para obtener información detallada.
Bit 3 - V: Indicador de desbordamiento del complemento a dos
El indicador de desbordamiento del complemento a dos V admite la aritmética del complemento a dos. Consulte la “Descripción del conjunto de instrucciones” para obtener información detallada.
Bit 2 - N: Bandera negativa
El indicador negativo N indica un resultado negativo en una operación aritmética o lógica. Consulte la “Descripción del conjunto de instrucciones” para obtener información detallada.
Bit 1 - Z: bandera cero
El indicador de cero Z indica un resultado cero en una operación aritmética o lógica. Consulte la “Descripción del conjunto de instrucciones” para obtener información detallada.
Bit 0 - C: Bandera de transporte
La bandera de acarreo C indica un acarreo en una operación aritmética o lógica. Consulte la “Descripción del conjunto de instrucciones” para obtener información detallada.
Registro de propósito general File
El Registro File está optimizado para el conjunto de instrucciones AVR Enhanced RISC. Para lograr el rendimiento y la flexibilidad requeridos, el Registro admite los siguientes esquemas de entrada / salida File:
Un operando de salida de 8 bits y una entrada de resultado de 8 bits
Dos operandos de salida de 8 bits y una entrada de resultado de 8 bits
Dos operandos de salida de 8 bits y una entrada de resultado de 16 bits
Un operando de salida de 16 bits y una entrada de resultado de 16 bits
Figura 4-2 muestra la estructura de los 32 registros de trabajo de propósito general en la CPU.
Como se muestra en Figura 4-2, a cada registro también se le asigna una dirección de memoria de datos, asignándolos directamente a las primeras 32 ubicaciones del espacio de datos del usuario. Aunque no se implementa físicamente como ubicaciones SRAM, esta organización de memoria proporciona una gran flexibilidad en el acceso a los registros, ya que los registros de puntero X, Y y Z se pueden configurar para indexar cualquier registro en el file.La mayoría de las instrucciones que operan en el Registro File tienen acceso directo a todos los registros, y la mayoría de ellos son instrucciones de ciclo único.
El registro X, el registro Y y el registro Z
Los registros R26..R31 tienen algunas funciones adicionales a su uso de propósito general. Estos registros son punteros de dirección de 16 bits para el direccionamiento indirecto del espacio de datos. Los tres registros de direcciones indirectas X, Y y Z se definen como se describe en Figura 4-3.
En los diferentes modos de direccionamiento, estos registros de dirección tienen funciones como desplazamiento fijo, incremento automático y decremento automático (consulte la referencia del conjunto de instrucciones para obtener más detalles).
Puntero de pila
La pila se utiliza principalmente para almacenar datos temporales, para almacenar variables locales y para almacenar direcciones de retorno después de interrupciones y llamadas a subrutinas. El registro de puntero de pila siempre apunta a la parte superior de la pila. Tenga en cuenta que la pila se implementa a medida que crece desde ubicaciones de memoria más altas a ubicaciones de memoria más bajas. Esto implica que un comando Stack PUSH reduce el Stack Pointer.
El puntero de pila apunta al área de pila de SRAM de datos donde se encuentran las pilas de interrupción y subrutina. Este espacio de pila en la SRAM de datos debe ser definido por el programa antes de que se ejecuten las llamadas a subrutinas o se habiliten las interrupciones. El puntero de pila debe establecerse para que apunte por encima de 0x60. El Stack Pointer se reduce en uno cuando los datos se introducen en el Stack con la instrucción PUSH, y se reduce en dos cuando la dirección de retorno se introduce en el Stack con una llamada de subrutina o una interrupción. El puntero de pila se incrementa en uno cuando los datos se extraen de la pila con la instrucción POP, y se incrementa en dos cuando los datos se extraen de la pila con el retorno de la subrutina RET o el retorno de la interrupción RETI.
El puntero de pila AVR se implementa como dos registros de 8 bits en el espacio de E / S. El número de bits realmente utilizados depende de la implementación. Tenga en cuenta que el espacio de datos en algunas implementaciones de la arquitectura AVR es tan pequeño que solo se necesita SPL. En este caso, el registro SPH no estará presente.
SPH y SPL - Registro de puntero de pila
Poco | 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 | ||
Leer/Escribir | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Leer/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 |
Tiempo de ejecución de instrucciones
Esta sección describe los conceptos generales de tiempo de acceso para la ejecución de instrucciones. La CPU AVR es impulsada por el reloj de la CPU clkCPU, generado directamente desde la fuente de reloj seleccionada para el chip. No se utiliza ninguna división de reloj interna.
Figura 4-4 muestra las búsquedas de instrucciones paralelas y las ejecuciones de instrucciones habilitadas por la arquitectura de Harvard y el registro de acceso rápido File concepto. Este es el concepto básico de canalización para obtener hasta 1 MIPS por MHz con los correspondientes resultados únicos para funciones por costo, funciones por reloj y funciones por unidad de potencia.
Figura 4-5. Operación ALU de ciclo único
Manejo de reinicio e interrupción
El AVR proporciona varias fuentes de interrupción diferentes. Estas interrupciones y el Vector de reinicio separado tienen cada uno un Vector de programa separado en el espacio de memoria del Programa. A todas las interrupciones se les asignan bits de habilitación individuales que deben escribirse en uno lógico junto con el bit de habilitación de interrupción global en el registro de estado para habilitar la interrupción.
Las direcciones más bajas en el espacio de memoria del programa se definen por defecto como los vectores de reinicio e interrupción. La lista completa de vectores se muestra en "Interrupciones" en la página 48. La lista también determina los niveles de prioridad de las diferentes interrupciones. Cuanto menor sea la dirección, mayor será el nivel de prioridad. RESET tiene la prioridad más alta, y la siguiente es INT0: la Solicitud de interrupción externa 0.
Cuando ocurre una interrupción, el bit I de habilitación de interrupción global se borra y todas las interrupciones se deshabilitan. El software de usuario puede escribir uno lógico en el bit I para habilitar interrupciones anidadas. Todas las interrupciones habilitadas pueden entonces interrumpir la rutina de interrupción actual. El bit I se establece automáticamente cuando se ejecuta una instrucción de retorno de interrupción (RETI).
Básicamente, existen dos tipos de interrupciones. El primer tipo se desencadena por un evento que establece el indicador de interrupción. Para estas interrupciones, el contador de programa se dirige al vector de interrupción real para ejecutar la rutina de manejo de interrupciones, y el hardware borra el indicador de interrupción correspondiente. Los indicadores de interrupción también se pueden borrar escribiendo uno lógico en la (s) posición (es) del bit del indicador que se van a borrar. Si ocurre una condición de interrupción mientras se borra el bit de habilitación de interrupción correspondiente, el indicador de interrupción se establecerá y recordará hasta que se habilite la interrupción o se borre el indicador por software. De manera similar, si ocurren una o más condiciones de interrupción mientras se borra el bit de habilitación de interrupción global, los indicadores de interrupción correspondientes se establecerán y recordarán hasta que se establezca el bit de habilitación de interrupción global, y luego se ejecutarán por orden de prioridad.
El segundo tipo de interrupciones se activará siempre que la condición de interrupción esté presente. Estas interrupciones no necesariamente tienen indicadores de interrupción. Si la condición de interrupción desaparece antes de que se habilite la interrupción, la interrupción no se activará.
Cuando el AVR sale de una interrupción, siempre volverá al programa principal y ejecutará una instrucción más antes de que se sirva cualquier interrupción pendiente.
Tenga en cuenta que el registro de estado no se almacena automáticamente al ingresar a una rutina de interrupción, ni se restaura al regresar de una rutina de interrupción. Esto debe ser manejado por software.
Cuando se usa la instrucción CLI para deshabilitar interrupciones, las interrupciones se deshabilitarán inmediatamente. No se ejecutará ninguna interrupción después de la instrucción CLI, incluso si ocurre simultáneamente con la instrucción CLI. El siguiente exampEl le muestra cómo se puede utilizar para evitar interrupciones durante la secuencia de escritura de EEPROM temporizada.
Código de montaje Example |
en r16, SREG; almacenar valor SREG
cli; deshabilitar las interrupciones durante la secuencia cronometrada sbi EECR, EEMPE ; iniciar escritura EEPROM sbi EECR, EEPE fuera SREG, r16 ; restaurar el valor SREG (I-bit) |
Código C Example |
char cSREG;
cSREG = SREG; /* almacenar valor SREG */ /* deshabilitar las interrupciones durante la secuencia cronometrada */ _CLI (); EECR |= (1< EECR | = (1 < SREG = cSREG; /* restaurar el valor SREG (I-bit) */ |
Cuando se usa la instrucción SEI para habilitar interrupciones, la instrucción que sigue a SEI se ejecutará antes de cualquier interrupción pendiente, como se muestra en este ejemplo.ampel.
Código de montaje Example |
sí; configurar Habilitar interrupción global
dormir; entrar en suspensión, esperando interrupción ; nota: entrará en reposo antes que cualquier pendiente ; interrumpir (s) |
Código C Example |
_SEI(); /* establece la habilitación de interrupción global */
_DORMIR(); /* entrar en suspensión, esperando interrupción */ / * nota: entrará en suspensión antes de cualquier interrupción pendiente * / |
Interrumpir el tiempo de respuesta
La respuesta de ejecución de la interrupción para todas las interrupciones del AVR habilitadas es de cuatro ciclos de reloj como mínimo. Después de cuatro ciclos de reloj, se ejecuta la dirección del vector de programa para la rutina de manejo de interrupciones real. Durante este período de cuatro ciclos de reloj, el contador de programa se coloca en la pila. El vector es normalmente un salto a la rutina de interrupción, y este salto toma tres ciclos de reloj. Si ocurre una interrupción durante la ejecución de una instrucción de ciclo múltiple, esta instrucción se completa antes de que se atienda la interrupción. Si ocurre una interrupción cuando la MCU está en modo de suspensión, el tiempo de respuesta de ejecución de la interrupción aumenta en cuatro ciclos de reloj. Este aumento se suma al tiempo de inicio desde el modo de suspensión seleccionado.
Un retorno de una rutina de manejo de interrupciones toma cuatro ciclos de reloj. Durante estos cuatro ciclos de reloj, el contador de programa (dos bytes) se recupera de la pila, el puntero de la pila se incrementa en dos y se establece el bit I en SREG.
Recuerdos AVR
Esta sección describe las diferentes memorias en el ATtiny25 / 45/85. La arquitectura del AVR tiene dos espacios de memoria principales, la memoria de datos y el espacio de memoria del programa. Además, el ATtiny25 / 45/85 cuenta con una memoria EEPROM para el almacenamiento de datos. Los tres espacios de memoria son lineales y regulares.
Memoria de programa flash reprogramable en el sistema
El ATtiny25 / 45/85 contiene 2/4 / 8K bytes de memoria Flash reprogramable en el sistema en el chip para el almacenamiento de programas. Dado que todas las instrucciones del AVR tienen un ancho de 16 o 32 bits, el Flash está organizado como 1024/2048/4096 x 16.
La memoria Flash tiene una resistencia de al menos 10,000 ciclos de escritura / borrado. El contador de programa (PC) ATtiny25 / 45/85 tiene un ancho de 10/11/12 bits, por lo que se ocupa de las ubicaciones de memoria del programa 1024/2048/4096. "Programa de memoria- ming ”en la página 147 contiene una descripción detallada sobre la descarga en serie de datos Flash utilizando los pines SPI.
Las tablas constantes se pueden asignar dentro de todo el espacio de direcciones de la memoria del programa (consulte la descripción de la instrucción LPM - Cargar memoria del programa).
Figura 5-1. Mapa de memoria del programa
Memoria de datos SRAM
Figura 5-2 muestra cómo está organizada la memoria SRAM ATtiny25 / 45/85.
Las ubicaciones inferiores de la memoria de datos 224/352/607 se dirigen tanto al registro File, la memoria de E / S y la SRAM de datos internos. Las primeras 32 ubicaciones se dirigen al Registro File, las siguientes 64 ubicaciones son la memoria de E / S estándar y las últimas 128/256/512 ubicaciones se dirigen a la SRAM de datos internos.
Los cinco modos de direccionamiento diferentes para la cubierta de la memoria de datos: directo, indirecto con desplazamiento, indirecto, indirecto con pre-decremento e indirecto con post-incremento. En el registro File, los registros R26 a R31 cuentan con registros de puntero de direccionamiento indirecto.
El direccionamiento directo llega a todo el espacio de datos.
El modo Indirecto con desplazamiento alcanza 63 ubicaciones de dirección desde la dirección base dada por el registro Y o Z.
Cuando se utilizan modos de direccionamiento indirecto de registro con pre-decremento y post-incremento automáticos, los registros de dirección X, Y y Z se reducen o incrementan.
Los 32 registros de trabajo de propósito general, 64 registros de E / S y los 128/256/512 bytes de SRAM de datos internos en el ATtiny25 / 45/85 son todos accesibles a través de todos estos modos de direccionamiento. El registro File se describe en “Gen- Registro de finalidad general File”En la página 10.
Figura 5-2. Mapa de memoria de datos
Acceso a la memoria de datos Veces
Esta sección describe los conceptos generales de tiempo de acceso para el acceso a la memoria interna. El acceso a la SRAM de datos internos se realiza en dos ciclos clkCPU como se describe en Figura 5-3.
Figura 5-3. Ciclos de acceso a SRAM de datos en chip Memoria de datos EEPROM
El ATtiny25 / 45/85 contiene 128/256/512 bytes de memoria EEPROM de datos. Está organizado como un espacio de datos separado, en el que se pueden leer y escribir bytes individuales. La EEPROM tiene una resistencia de al menos 100,000 ciclos de escritura / borrado. El acceso entre la EEPROM y la CPU se describe a continuación, especificando los registros de direcciones de EEPROM, el registro de datos de EEPROM y el registro de control de EEPROM. Para obtener más detalles, consulte "Descarga en serie" en la página 151.
Acceso de lectura / escritura EEPROM
Los registros de acceso EEPROM son accesibles en el espacio de E / S.
Los tiempos de acceso de escritura para la EEPROM se dan en Tabla 5-1 en la página 21. Sin embargo, una función de sincronización automática permite que el software del usuario detecte cuándo se puede escribir el siguiente byte. Si el código de usuario contiene instrucciones que escriben la EEPROM, se deben tomar algunas precauciones. En fuentes de alimentación fuertemente filtradas, es probable que VCC aumente o disminuya lentamente en
Encendido / apagado. Esto hace que el dispositivo durante un período de tiempo funcione a un volumentage inferior al especificado como mínimo para la frecuencia de reloj utilizada. Ver “Prevención de la corrupción de EEPROM” en la página 19 para obtener detalles sobre cómo evitar problemas en estas situaciones.
Para evitar escrituras de EEPROM involuntarias, se debe seguir un procedimiento de escritura específico. Referirse a "Atómico Programación de bytes ”en la página 17 y “Programación de bytes divididos” en la página 17 para obtener detalles sobre esto.
Cuando se lee la EEPROM, la CPU se detiene durante cuatro ciclos de reloj antes de que se ejecute la siguiente instrucción. Cuando se escribe la EEPROM, la CPU se detiene durante dos ciclos de reloj antes de que se ejecute la siguiente instrucción.
Programación de bytes atómicos
El uso de la programación de bytes atómicos es el modo más simple. Al escribir un byte en la EEPROM, el usuario debe escribir la dirección en el Registro EEAR y los datos en el Registro EEDR. Si los bits de EEPMn son cero, la escritura de EEPE (dentro de los cuatro ciclos posteriores a la escritura de EEMPE) activará la operación de borrado / escritura. Tanto el ciclo de borrado como el de escritura se realizan en una sola operación y el tiempo total de programación se da en Tabla 5-1 en la página 21. El bit EEPE permanece establecido hasta que se completan las operaciones de borrado y escritura. Mientras el dispositivo está ocupado con la programación, no es posible realizar ninguna otra operación EEPROM.
Programación de bytes divididos
Es posible dividir el ciclo de borrado y escritura en dos operaciones diferentes. Esto puede ser útil si el sistema requiere un tiempo de acceso corto durante un período de tiempo limitado (generalmente si el voltaje de la fuente de alimentacióntage cae). Para aprovechar tage de este método, se requiere que las ubicaciones a escribir se hayan borrado antes de la operación de escritura. Pero dado que las operaciones de borrado y escritura están divididas, es posible realizar las operaciones de borrado cuando el sistema permite realizar operaciones de tiempo crítico (normalmente después del encendido).
Borrar
Para borrar un byte, la dirección debe escribirse en EEAR. Si los bits de EEPMn son 0b01, la escritura de EEPE (dentro de los cuatro ciclos posteriores a la escritura de EEMPE) activará solo la operación de borrado (el tiempo de programación se da en Tabla 5-1 en Página 21). El bit EEPE permanece establecido hasta que se completa la operación de borrado. Mientras el dispositivo está ocupado programando, no es posible realizar ninguna otra operación EEPROM.
Escribir
Para escribir una ubicación, el usuario debe escribir la dirección en EEAR y los datos en EEDR. Si los bits de EEPMn son 0b10, la escritura de EEPE (dentro de los cuatro ciclos posteriores a la escritura de EEMPE) activará la operación de escritura solamente (el tiempo de programación se da en Tabla 5-1 en la página 21). El bit EEPE permanece establecido hasta que se completa la operación de escritura. Si la ubicación que se va a escribir no se ha borrado antes de escribir, los datos que se almacenan deben considerarse perdidos. Mientras el dispositivo está ocupado con la programación, no es posible realizar ninguna otra operación EEPROM.
El oscilador calibrado se utiliza para cronometrar los accesos a EEPROM. Asegúrese de que la frecuencia del oscilador esté dentro de los requisitos descritos en “OSCCAL - Registro de calibración del oscilador” en la página 31.
El siguiente código exampLos archivos muestran un ensamblado y una función C para borrar, escribir o escribir atómica de la EEPROM. La exampLos archivos asumen que las interrupciones están controladas (por ejemplo, deshabilitando las interrupciones globalmente) para que no ocurran interrupciones durante la ejecución de estas funciones.
Código de montaje Example |
EEPROM_escritura:
; Espere la finalización de la escritura anterior sbic EECR, EEPE rjmp EEPROM_escribir ; Establecer el modo de programación ldi r16, (0<<EEPM1)|(0<<EEPM0) fuera EECR, r16 ; Configurar la dirección (r18: r17) en el registro de direcciones fuera EEARH, r18 fuera EEARL, r17 ; Escribir datos (r19) en el registro de datos fuera EEDR, r19 ; Escribe uno lógico en EEMPE sbi EECR,EEMPE ; Inicie la escritura de eeprom configurando EEPE sbi EECR, EEPE retirado |
Código C Example |
void EEPROM_write (caracteres sin firmar ucAddress, caracteres sin firmar ucData)
{ /* Esperar a que se complete la escritura anterior */ while(EECR & (1< ; /* Establecer el modo de Programación */ EECR = (0 < / * Configurar registros de datos y direcciones * / EEAR = ucAddress; EEDR = ucDatos; /* Escribir uno lógico a EEMPE */ EECR | = (1 < / * Inicie la escritura de eeprom configurando EEPE * / EECR | = (1 < } |
El siguiente código exampLos archivos muestran funciones de ensamblaje y C para leer la EEPROM. La exampAsumimos que las interrupciones están controladas para que no ocurran interrupciones durante la ejecución de estas funciones.
Código de montaje Example |
EEPROM_leer:
; Espere la finalización de la escritura anterior sbic EECR, EEPE rjmp EEPROM_leer ; Configurar la dirección (r18: r17) en el registro de direcciones fuera EEARH, r18 fuera EEARL, r17 ; Inicie la lectura de eeprom escribiendo EERE sbi EECR, EERE ; Leer datos del registro de datos en r16,EEDR retirado |
Código C Example |
carácter sin firmar EEPROM_read (caracter sin firmar ucAddress)
{ / * Espere a que se complete la escritura anterior * / mientras que (EECR & (1 < ; / * Configurar registro de direcciones * / EEAR = ucAddress; /* Inicia la lectura de la eeprom escribiendo EERE */ EECR | = (1 < / * Devuelve datos del registro de datos * / retorno EEDR; } |
Prevención de la corrupción EEPROM
Durante períodos de bajo VCC, los datos de la EEPROM pueden corromperse debido a que el volumen de suministrotage es demasiado bajo para que la CPU y la EEPROM funcionen correctamente. Estos problemas son los mismos que para los sistemas a nivel de placa que utilizan EEPROM, y se deben aplicar las mismas soluciones de diseño.
Una corrupción de datos EEPROM puede ser causada por dos situaciones cuando el voltage es demasiado bajo. Primero, una secuencia de escritura regular en la EEPROM requiere un volumen mínimotage para funcionar correctamente. En segundo lugar, la propia CPU puede ejecutar instrucciones incorrectamente, si el volumen de suministrotage es demasiado bajo.
La corrupción de datos EEPROM se puede evitar fácilmente siguiendo esta recomendación de diseño:
Mantenga el AVR RESET activo (bajo) durante períodos de voltaje de suministro de energía insuficiente.tagmi. Esto se puede hacer habilitando el Detector de caída de tensión (BOD) interno. Si el nivel de detección de la DBO interna no coincide con el
nivel de detección necesario, se puede usar un circuito externo de protección de restablecimiento de VCC bajo. Si ocurre un restablecimiento mientras una operación de escritura está en curso, la operación de escritura se completará siempre que la fuente de alimentación vol.tage es suficiente.
Memoria de E / S
La definición del espacio de E / S del ATtiny25 / 45/85 se muestra en “Resumen del registro” en la página 200.
Todas las E / S ATtiny25 / 45/85 y los periféricos se colocan en el espacio de E / S. Se puede acceder a todas las ubicaciones de E / S mediante las instrucciones LD / LDS / LDD y ST / STS / STD, transfiriendo datos entre los 32 registros de trabajo de propósito general y el espacio de E / S. Se puede acceder directamente a los registros de E / S dentro del rango de direcciones 0x00 - 0x1F mediante las instrucciones SBI y CBI. En estos registros, el valor de los bits individuales se puede verificar utilizando las instrucciones SBIS y SBIC. Consulte la sección de conjunto de instrucciones para obtener más detalles. Cuando se utilizan los comandos específicos de E / S IN y OUT, se deben utilizar las direcciones de E / S 0x00 - 0x3F. Cuando se direccionan registros de E / S como espacio de datos mediante instrucciones LD y ST, se debe agregar 0x20 a estas direcciones.
Para compatibilidad con dispositivos futuros, los bits reservados deben escribirse en cero si se accede a ellos. Las direcciones de memoria de E / S reservadas nunca deben escribirse.
Algunas de las banderas de estado se borran escribiéndoles una lógica. Tenga en cuenta que las instrucciones CBI y SBI solo operarán en el bit especificado y, por lo tanto, se pueden usar en registros que contengan dichos indicadores de estado. Las instrucciones CBI y SBI solo funcionan con los registros 0x00 a 0x1F.
Los registros de control de periféricos y de E / S se explican en secciones posteriores.
Descripción del registro
EEARH - Registro de direcciones EEPROM
Poco | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x1F | – | – | – | – | – | – | – | EEAR8 | EEARH |
Leer/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
Estos bits están reservados para uso futuro y siempre se leerán como cero.
Bits 0 - EEAR8: Dirección EEPROM
Este es el bit de dirección EEPROM más significativo de ATtiny85. En dispositivos con menos EEPROM, es decir, ATtiny25 / ATtiny45, este bit está reservado y siempre leerá cero. El valor inicial del Registro de direcciones EEPROM (EEAR) no está definido y, por lo tanto, se debe escribir un valor adecuado antes de acceder a la EEPROM.
EEARL - Registro de direcciones EEPROM
Poco
0x1E | EEAR7 | EEAR6 | EEAR5 | EEAR4 | EEAR3 | EEAR2 | EEAR1 | EEAR0 | EARL |
Posterior / 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: Dirección EEPROM
Este es el bit de dirección EEPROM más significativo de ATtiny45. En dispositivos con menos EEPROM, es decir, ATtiny25, este bit está reservado y siempre leerá cero. El valor inicial del Registro de direcciones EEPROM (EEAR) no está definido y, por lo tanto, se debe escribir un valor adecuado antes de acceder a la EEPROM.
Bits 6: 0 - EEAR [6: 0]: Dirección EEPROM
Estos son los bits (bajos) del registro de direcciones EEPROM. Los bytes de datos EEPROM se direccionan linealmente en el rango 0… (128/256 / 512-1). El valor inicial de EEAR no está definido y, por lo tanto, se debe escribir un valor adecuado antes de poder acceder a la EEPROM.
EEDR - Registro de datos EEPROM
Poco | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x1D | EEDR7 | EEDR6 | EEDR5 | EEDR4 | EEDR3 | EEDR2 | EEDR1 | EEDR0 | EEDR |
Leer/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 la operación de escritura EEPROM, el Registro EEDR contiene los datos que se escribirán en la EEPROM en la dirección proporcionada por el Registro EEAR. Para la operación de lectura EEPROM, el EEDR contiene los datos leídos del
EEPROM en la dirección proporcionada por EEAR.
5.5.4 EECR - Registro de control EEPROM |
|||||||||
Bit 7 6 5 | 4 | 3 | 2 | 1 | 0 | ||||
0x1C – | – | EEPM1 | EEPM0 | MISTERIOSO | EEMPE | EEPE | EERE | CECR | |
Leer / 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 uso futuro y siempre se leerá como 0 en ATtiny25 / 45/85. Para compatibilidad con futuros dispositivos AVR, escriba siempre este bit en cero. Después de leer, enmascare este bit.
Bit 6 - Res: Bit reservado
Este bit está reservado en el ATtiny25 / 45/85 y siempre se leerá como cero.
Bits 5: 4 - EEPM [1: 0]: Bits del modo de programación EEPROM
La configuración de bits del modo de programación EEPROM define qué acción de programación se activará al escribir EEPE. Es posible programar datos en una operación atómica (borrar el valor anterior y programar el nuevo valor) o dividir las operaciones de Borrar y Escribir en dos operaciones diferentes. Los tiempos de programación para los diferentes modos se muestran en Tabla 5-1. Mientras se establece EEPE, se ignorará cualquier escritura en EEPMn. Durante el restablecimiento, los bits de EEPMn se restablecerán a 0b00 a menos que la EEPROM esté ocupada programando.
Tabla 5-1. Bits de modo EEPROM
EEPM1 | EEPM0 | Tiempo de programación | Operación |
0 | 0 | 3.4 ms | Borrar y escribir en una sola operación (operación atómica) |
0 | 1 | 1.8 ms | Borrar solo |
1 | 0 | 1.8 ms | Escribir solamente |
1 | 1 | – | Reservado para uso futuro |
Bit 3 - EERIE: habilitación de interrupción de EEPROM lista
Escribir EERIE en uno habilita la EEPROM Ready Interrupt si el bit I en SREG está establecido. Escribir EERIE en cero deshabilita la interrupción. La EEPROM Ready Interrupt genera una interrupción constante cuando la memoria no volátil está lista para la programación.
Bit 2 - EEMPE: Habilitación del programa maestro EEPROM
El bit EEMPE determina si la escritura de EEPE en uno tendrá efecto o no.
Cuando se configura EEMPE, configurar EEPE dentro de cuatro ciclos de reloj programará la EEPROM en la dirección seleccionada. Si EEMPE es cero, la configuración de EEPE no tendrá ningún efecto. Cuando EEMPE se ha escrito en uno por software, el hardware borra el bit a cero después de cuatro ciclos de reloj.
Bit 1 - EEPE: Habilitación del programa EEPROM
La señal de habilitación del programa EEPROM EEPE es la señal de habilitación de programación a la EEPROM. Cuando se escribe EEPE, la EEPROM se programará de acuerdo con la configuración de bits de EEPMn. El bit EEMPE debe escribirse en uno antes de que se escriba uno lógico en EEPE; de lo contrario, no se realiza ninguna escritura EEPROM. Cuando ha transcurrido el tiempo de acceso de escritura, el hardware borra el bit EEPE. Cuando se ha establecido EEPE, la CPU se detiene durante dos ciclos antes de que se ejecute la siguiente instrucción.
Bit 0 - EERE: Habilitación de lectura de EEPROM
La señal de habilitación de lectura de EEPROM (EERE) es la luz estroboscópica de lectura para la EEPROM. Cuando se configura la dirección correcta en el Registro EEAR, el bit EERE debe escribirse en uno para activar la lectura de EEPROM. El acceso de lectura EEPROM toma una instrucción y los datos solicitados están disponibles inmediatamente. Cuando se lee la EEPROM, la CPU se detiene durante cuatro ciclos antes de que se ejecute la siguiente instrucción. El usuario debe sondear el bit EEPE antes de iniciar la operación de lectura. Si hay una operación de escritura en curso, no es posible leer la EEPROM ni cambiar el Registro EEAR.
Opciones de reloj y reloj del sistema
Sistemas de reloj y su distribución
reloj de la CPU
El reloj de la CPU se enruta a partes del sistema relacionadas con el funcionamiento del núcleo AVR. ExampLos archivos de dichos módulos son el Registro de Propósito General. File, el registro de estado y la memoria de datos que contienen el puntero de pila. Detener el reloj de la CPU impide que el núcleo realice operaciones y cálculos generales.
Reloj de E / S - clkI / O
El reloj de E / S es utilizado por la mayoría de los módulos de E / S, como el temporizador / contador. El módulo de interrupción externa también usa el reloj de E / S, pero tenga en cuenta que algunas interrupciones externas son detectadas por lógica asíncrona, lo que permite que tales interrupciones sean detectadas incluso si el reloj de E / S se detiene.
Reloj flash - clkFLASH
El reloj Flash controla el funcionamiento de la interfaz Flash. El reloj Flash suele estar activo simultáneamente con el reloj de la CPU.
Reloj ADC - clkADC
El ADC se proporciona con un dominio de reloj dedicado. Esto permite detener la CPU y los relojes de E / S para reducir el ruido generado por los circuitos digitales. Esto proporciona resultados de conversión ADC más precisos.
PLL interno para generación rápida de reloj periférico - clkPCK
El PLL interno en ATtiny25 / 45/85 genera una frecuencia de reloj que se multiplica por 8 a partir de una entrada de fuente. Por defecto, el PLL usa la salida del oscilador RC interno de 8.0 MHz como fuente. Alternativamente, si se establece el bit LSM de PLLCSR, el PLL utilizará la salida del oscilador RC dividida por dos. Por lo tanto, la salida del PLL, el reloj periférico rápido es de 64 MHz. El reloj periférico rápido, o un reloj preescalado a partir de ese, se puede seleccionar como fuente de reloj para Timer / Counter1 o como reloj del sistema. Ver Figura 6-2. La frecuencia del reloj periférico rápido se divide por dos cuando se establece LSM de PLLCSR, lo que da como resultado una frecuencia de reloj de 32 MHz. Tenga en cuenta que LSM no se puede configurar si se utiliza PLLCLK como reloj del sistema.
Figura 6-2. Sistema de reloj PCK.
El PLL está bloqueado en el oscilador RC y el ajuste del oscilador RC a través del registro OSCCAL ajustará el reloj periférico rápido al mismo tiempo. Sin embargo, incluso si el oscilador RC se lleva a una frecuencia superior a 8 MHz, la frecuencia del reloj periférico rápido se satura a 85 MHz (en el peor de los casos) y permanece oscilando a la frecuencia máxima. Cabe señalar que el PLL en este caso ya no está bloqueado con el reloj del oscilador RC. Por lo tanto, se recomienda no llevar los ajustes de OSCCAL a una frecuencia superior a 8 MHz para mantener el PLL en el rango de funcionamiento correcto.
El PLL interno está habilitado cuando:
Se establece el bit PLLE en el registro PLLCSR.
El fusible CKSEL está programado en '0001'.
El fusible CKSEL está programado en '0011'.
El bit PLOCK de PLLCSR se establece cuando PLL está bloqueado. Tanto el oscilador RC interno como el PLL se apagan en los modos de apagado y suspensión en espera.
PLL interno en modo de compatibilidad ATtiny15
Dado que ATtiny25 / 45/85 es un dispositivo de migración para usuarios de ATtiny15, existe un modo de compatibilidad ATtiny15 para compatibilidad con versiones anteriores. El modo de compatibilidad ATtiny15 se selecciona programando los fusibles CKSEL en '0011'.
En el modo de compatibilidad ATtiny15, la frecuencia del oscilador RC interno se calibra hasta 6.4 MHz y el factor de multiplicación del PLL se establece en 4x. Ver Figura 6-3. Con estos ajustes, el sistema de reloj es compatible con ATtiny15 y el reloj periférico rápido resultante tiene una frecuencia de 25.6 MHz (igual que en ATtiny15).
Figura 6-3. Sistema de reloj PCK en modo de compatibilidad ATtiny15.
Fuentes de reloj
El dispositivo tiene las siguientes opciones de fuente de reloj, seleccionables por bits de fusible flash como se muestra a continuación. El reloj de la fuente seleccionada se ingresa al generador de reloj AVR y se enruta a los módulos apropiados.
Tabla 6-1. Opciones de reloj del dispositivo Seleccionar
Opción de reloj del dispositivo | CKSEL[3:0](1) |
Reloj externo (ver Página 26) | 0000 |
Reloj PLL de alta frecuencia (ver Página 26) | 0001 |
Oscilador interno calibrado (ver Página 27) | 0010(2) |
Oscilador interno calibrado (ver Página 27) | 0011(3) |
Oscilador interno de 128 kHz (ver Página 28) | 0100 |
Oscilador de cristal de baja frecuencia (ver Página 29) | 0110 |
Oscilador de cristal / resonador de cerámica (ver Página 29) | 1000 – 1111 |
Reservado | 0101, 0111 |
Para todos los fusibles, "1" significa no programado, mientras que "0" significa programado.
El dispositivo se envía con esta opción seleccionada.
Esto seleccionará el modo de compatibilidad ATtiny15, donde el reloj del sistema se divide por cuatro, lo que da como resultado una frecuencia de reloj de 1.6 MHz. Para obtener más información, consulte “Oscilador interno calibrado” en la página 27.
Las diversas opciones para cada opción de marcado se dan en las siguientes secciones. Cuando la CPU se despierta del apagado, la fuente de reloj seleccionada se usa para cronometrar el inicio, lo que garantiza un funcionamiento estable del oscilador antes de que comience la ejecución de la instrucción. Cuando la CPU comienza desde el reinicio, hay un retraso adicional que permite que la energía alcance un nivel estable antes de comenzar el funcionamiento normal. El oscilador de vigilancia se utiliza para cronometrar esta parte en tiempo real del tiempo de inicio. El número de ciclos del oscilador WDT utilizados para cada tiempo de espera se muestra en Tabla 6-2.
Tabla 6-2. Número de ciclos del oscilador de vigilancia
Tiempo de espera típico | Número de ciclos |
4 ms | 512 |
64 ms | 8K (8,192) |
Reloj externo
Para manejar el dispositivo desde una fuente de reloj externa, CLKI debe manejarse como se muestra en Figura 6-4. Para hacer funcionar el dispositivo en un reloj externo, los fusibles CKSEL deben programarse en "00".
Figura 6-4. Configuración de la unidad de reloj externo
Cuando se selecciona esta fuente de reloj, los tiempos de arranque son determinados por los Fusibles SUT como se muestra en Tabla 6-3.
Tabla 6-3. Horas de inicio para la selección del reloj externo
SUT[1:0] | Tiempo de inicio desde el apagado | Retraso adicional de reinicio | Uso recomendado |
00 | 6 CK | 14CK | DBO habilitado |
01 | 6 CK | 14CK + 4ms | Poder de rápido aumento |
10 | 6 CK | 14CK + 64ms | Poder que aumenta lentamente |
11 | Reservado |
Al aplicar un reloj externo, es necesario evitar cambios repentinos en la frecuencia de reloj aplicada para garantizar un funcionamiento estable de la MCU. Una variación en la frecuencia de más del 2% de un ciclo de reloj al siguiente puede provocar un comportamiento impredecible. Es necesario asegurarse de que la MCU se mantenga en Reset durante tales cambios en la frecuencia del reloj.
Tenga en cuenta que la preventa del reloj del sistema se puede utilizar para implementar cambios en el tiempo de ejecución de la frecuencia del reloj interno mientras se garantiza un funcionamiento estable. Referirse a “Pre-escalador del reloj del sistema” en la página 31 Para más detalles.
Reloj PLL de alta frecuencia
Hay un PLL interno que proporciona una frecuencia de reloj nominal de 64 MHz bloqueada en el oscilador RC para el uso del temporizador / contador periférico1 y para la fuente de reloj del sistema. Cuando se selecciona como fuente de reloj del sistema, al programar los fusibles CKSEL en '0001', se divide por cuatro como se muestra en Tabla 6-4.
Tabla 6-4. Modos de funcionamiento del reloj PLL de alta frecuencia
CKSEL[3:0] | Frecuencia nominal |
0001 | 16 MHz |
Cuando se selecciona esta fuente de reloj, los tiempos de arranque son determinados por los fusibles SUT como se muestra en Tabla 6-5.
Tabla 6-5. Tiempos de puesta en marcha para el reloj PLL de alta frecuencia
SUT[1:0] | Tiempo de inicio desde el apagado | Retraso adicional desde el reinicio de encendido (VCC = 5.0V) | Uso recomendado |
00 | 14CK + 1K (1024) CK + 4ms | 4 ms | DBO habilitado |
Tabla 6-5. Tiempos de puesta en marcha para el reloj PLL de alta frecuencia
SUT[1:0] | Tiempo de inicio desde el apagado | Retraso adicional desde el reinicio de encendido (VCC = 5.0V) | Uso recomendado |
01 | 14CK + 16K (16384) CK + 4ms | 4 ms | Poder de rápido aumento |
10 | 14CK + 1K (1024) CK + 64ms | 4 ms | Poder que aumenta lentamente |
11 | 14CK + 16K (16384) CK + 64ms | 4 ms | Poder que aumenta lentamente |
Oscilador interno calibrado
De forma predeterminada, el oscilador RC interno proporciona un reloj aproximado de 8.0 MHz. Aunque voltagey dependiente de la temperatura, este reloj puede ser calibrado con mucha precisión por el usuario. Ver “Calibrador de oscilador RC interno picante ”en la página 164 y “Velocidad del oscilador interno” en la página 192 para más detalles. El dispositivo se envía con el fusible CKDIV8 programado. Ver “Pre-escalador del reloj del sistema” en la página 31 Para más detalles.
Este reloj puede seleccionarse como reloj del sistema programando los fusibles CKSEL como se muestra en Tabla 6-6 en la página
27. Si se selecciona, funcionará sin componentes externos. Durante el reinicio, el hardware carga el valor de calibración preprogramado en el registro OSCCAL y, por lo tanto, calibra automáticamente el oscilador RC. La precisión de esta calibración se muestra como calibración de fábrica en Tabla 21-2 en la página 164.
Al cambiar el registro OSCCAL de SW, consulte “OSCCAL - Registro de calibración del oscilador” en la página 31, es posible obtener una mayor precisión de calibración que utilizando la calibración de fábrica. La precisión de esta calibración se muestra como calibración del usuario en Tabla 21-2 en la página 164.
Cuando este oscilador se utiliza como reloj de chip, el oscilador de vigilancia se seguirá utilizando para el temporizador de vigilancia y para el tiempo de espera de reinicio. Para obtener más información sobre el valor de calibración preprogramado, consulte la sección “Cali- Bytes de bración ”en la página 150.
El oscilador interno también se puede configurar para proporcionar un reloj de 6.4 MHz escribiendo fusibles CKSEL en "0011", como se muestra en Tabla 6-6 debajo. Esta configuración se conoce como modo de compatibilidad ATtiny15 y está destinada a proporcionar una fuente de reloj calibrada a 6.4 MHz, como en ATtiny15. En el modo de compatibilidad ATtiny15, el PLL utiliza el oscilador interno que funciona a 6.4 MHz para generar una señal de reloj periférico de 25.6 MHz para el temporizador / contador1 (consulte "Temporizador / Contador8 de 1 bits en Modo ATtiny15 ”en la página 95). Tenga en cuenta que en este modo de funcionamiento la señal de reloj de 6.4 MHz siempre se divide por cuatro, lo que proporciona un reloj de sistema de 1.6 MHz.
Tabla 6-6. Modos de funcionamiento del oscilador RC calibrado interno
CKSEL[3:0] | Frecuencia nominal |
0010(1) | 8.0 MHz |
0011(2) | 6.4 MHz |
El dispositivo se envía con esta opción seleccionada.
Esta configuración seleccionará el modo de compatibilidad ATtiny15, donde el reloj del sistema se divide por cuatro, lo que da como resultado una frecuencia de reloj de 1.6 MHz.
Cuando se selecciona el oscilador interno calibrado de 8 MHz como fuente de reloj, los tiempos de inicio son determinados por los fusibles SUT como se muestra en Tabla 6-7 abajo.
Tabla 6-7. Tiempos de inicio para el reloj oscilador RC calibrado interno
SUT[1:0] | Tiempo de inicio desde el apagado | Retraso adicional desde el reinicio (VCC = 5.0V) | Uso recomendado |
00 | 6 CK | 14CK(1) | DBO habilitado |
01 | 6 CK | 14CK + 4ms | Poder de rápido aumento |
10(2) | 6 CK | 14CK + 64ms | Poder que aumenta lentamente |
11 | Reservado |
1. Si el fusible RSTDISBL está programado, este tiempo de inicio se incrementará a 14CK + 4 ms para asegurar que se pueda ingresar al modo de programación.
2. El dispositivo se envía con esta opción seleccionada.
En el modo de compatibilidad ATtiny15, los tiempos de arranque se determinan mediante fusibles SUT como se muestra en Tabla 6-8 abajo.
Tabla 6-8. Tiempos de inicio para el reloj oscilador RC calibrado interno (en modo ATtiny15)
SUT[1:0] | Tiempo de inicio desde el apagado | Retraso adicional desde el reinicio (VCC = 5.0V) | Uso recomendado |
00 | 6 CK | 14CK + 64ms | |
01 | 6 CK | 14CK + 64ms | |
10 | 6 CK | 14CK + 4ms | |
11 | 1 CK | 14CK(1) |
Nota: Si se programa el fusible RSTDISBL, este tiempo de inicio se incrementará a 14CK + 4 ms para garantizar que se pueda ingresar al modo de programación.
En resumen, se puede encontrar más información sobre el modo de compatibilidad ATtiny15 en las secciones "Puerto B (PB5: PB0)" en Página 2, “PLL interno en modo de compatibilidad ATtiny15” en la página 24, "Temporizador / Contador8 de 1 bits en modo ATtiny15" en Página 95, "Limitaciones de debugWIRE" en la página 140, "Bytes de calibración" en la página 150 y en la mesa "Reloj preescalador Seleccionar ”en la página 33.
Oscilador interno de 128 kHz
El oscilador interno de 128 kHz es un oscilador de baja potencia que proporciona un reloj de 128 kHz. La frecuencia es nominal a 3V y 25°C. Este reloj se puede seleccionar como el reloj del sistema programando los fusibles CKSEL en "0100".
Cuando se selecciona esta fuente de reloj, los tiempos de arranque son determinados por los Fusibles SUT como se muestra en Tabla 6-9.
Tabla 6-9. Tiempos de puesta en marcha para el oscilador interno de 128 kHz
SUT[1:0] | Tiempo de inicio desde el apagado | Retraso adicional de reinicio | Uso recomendado |
00 | 6 CK | 14CK(1) | DBO habilitado |
01 | 6 CK | 14CK + 4ms | Poder de rápido aumento |
10 | 6 CK | 14CK + 64ms | Poder que aumenta lentamente |
11 | Reservado |
Nota: Si se programa el fusible RSTDISBL, este tiempo de inicio se incrementará a 14CK + 4 ms para garantizar que se pueda ingresar al modo de programación.
Oscilador de cristal de baja frecuencia
Para utilizar un cristal de reloj de 32.768 kHz como fuente de reloj para el dispositivo, el oscilador de cristal de baja frecuencia debe seleccionarse configurando los fusibles CKSEL en '0110'. El cristal debe estar conectado como se muestra en Figura 6-5. Para encontrar la capacitancia de carga adecuada para un cristal de 32.768 kHz, consulte la hoja de datos del fabricante.
Cuando se selecciona este oscilador, los tiempos de arranque son determinados por los fusibles SUT como se muestra en Tabla 6-10.
Tabla 6-10. Tiempos de inicio para la selección del reloj del oscilador de cristal de baja frecuencia
SUT[1:0] | Tiempo de inicio desde el apagado | Retraso adicional desde el reinicio (VCC = 5.0V) | Uso recomendado |
00 | 1K (1024) CK(1) | 4 ms | Potencia de aumento rápido o DBO habilitado |
01 | 1K (1024) CK(1) | 64 ms | Poder que aumenta lentamente |
10 | 32K (32768) CK | 64 ms | Frecuencia estable al inicio |
11 | Reservado |
Nota: Estas opciones deben usarse solo si la estabilidad de la frecuencia en el arranque no es importante.
El oscilador de cristal de baja frecuencia proporciona una capacitancia de carga interna, consulte Tabla 6-11 en cada pin TOSC.
Tabla 6-11. Capacitancia del oscilador de cristal de baja frecuencia
Dispositivo | Osc. De 32 kHz Tipo | Gorra (Xtal1 / Tosc1) | Gorra (Xtal2 / Tosc2) |
ATtiny25 / 45/85 | Sistema Osc. | 16 pF | 6 pF |
Oscilador de cristal / resonador de cerámica
XTAL1 y XTAL2 son entrada y salida, respectivamente, de un inversor ampLifier que se puede configurar para su uso como un oscilador en chip, como se muestra en Figura 6-5. Puede utilizarse un cristal de cuarzo o un resonador cerámico.
C1 y C2 siempre deben ser iguales tanto para cristales como para resonadores. El valor óptimo de los condensadores depende del cristal o resonador en uso, la cantidad de capacitancia parásita y el ruido electromagnético del entorno. Algunas pautas iniciales para elegir capacitores para usar con cristales se dan en Tabla 6-12 debajo. Para resonadores cerámicos, se deben utilizar los valores de condensador dados por el fabricante.
Tabla 6-12. Modos de funcionamiento del oscilador de cristal
CKSEL[3:1] | Rango de frecuencia (MHz) | Rango recomendado para condensadores C1 y C2 para uso con cristales (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 no debe usarse con cristales, solo con resonadores cerámicos.
El oscilador puede funcionar en tres modos diferentes, cada uno optimizado para un rango de frecuencia específico. El modo de funcionamiento es seleccionado por los fusibles CKSEL [3: 1] como se muestra en Tabla 6-12.
El fusible CKSEL0 junto con los fusibles SUT [1: 0] seleccionan los tiempos de arranque como se muestra en Tabla 6-13.
Tabla 6-13. Tiempos de inicio para la selección del reloj del oscilador de cristal
CKSEL0 | SUT[1:0] | Tiempo de inicio desde el apagado | Retraso adicional de reinicio | Uso recomendado |
0 | 00 | 258 CK(1) | 14CK + 4ms | Resonador cerámico, potencia de rápido aumento |
0 | 01 | 258 CK(1) | 14CK + 64ms | Resonador de cerámica, potencia que aumenta lentamente |
0 | 10 | 1K (1024) CK(2) | 14CK | Resonador cerámico, DBO habilitado |
0 | 11 | 1K (1024) CK(2) | 14CK + 4ms | Resonador cerámico, potencia de rápido aumento |
1 | 00 | 1K (1024) CK(2) | 14CK + 64ms | Resonador de cerámica, potencia que aumenta lentamente |
1 | 01 | 16K (16384) CK | 14CK | Oscilador de cristal, BOD habilitado |
1 | 10 | 16K (16384) CK | 14CK + 4ms | Oscilador de cristal, potencia de rápido aumento |
1 | 11 | 16K (16384) CK | 14CK + 64ms | Oscilador de cristal, potencia que aumenta lentamente |
Notas
Estas opciones solo deben usarse cuando no estén funcionando cerca de la frecuencia máxima del dispositivo, y solo si la estabilidad de frecuencia en el arranque no es importante para la aplicación. Estas opciones no son adecuadas para cristales.
Estas opciones están diseñadas para su uso con resonadores cerámicos y garantizarán la estabilidad de frecuencia en el arranque. También se pueden utilizar con cristales cuando no funcionan cerca de la frecuencia máxima del dispositivo y si la estabilidad de la frecuencia en el arranque no es importante para la aplicación.
Fuente de reloj predeterminada
El dispositivo se envía con CKSEL = "0010", SUT = "10" y CKDIV8 programados. La configuración predeterminada de la fuente de reloj es, por lo tanto, el oscilador RC interno que funciona a 8 MHz con el tiempo de inicio más largo y un preescalado inicial del reloj del sistema de 8, lo que da como resultado un reloj del sistema de 1.0 MHz. Esta configuración predeterminada garantiza que todos los usuarios puedan realizar la configuración de la fuente de reloj deseada utilizando un In-System o High-vol.tage Programador.
Prescaler del reloj del sistema
El reloj del sistema ATtiny25 / 45/85 se puede dividir configurando el “CLKPR - Registro de preescala de reloj” en la página 32. Esta función se puede utilizar para reducir el consumo de energía cuando el requisito de potencia de procesamiento es bajo. Esto se puede usar con todas las opciones de fuente de reloj y afectará la frecuencia de reloj de la CPU y todos los periféricos síncronos. clkI/O, clkADC, clkCPU y clkFLASH se dividen por un factor como se muestra en Tabla 6-15 en la página 33.
Tiempo de conmutación
Al cambiar entre las configuraciones del preescalador, System Clock Prescaler asegura que no ocurran fallas en el sistema de reloj y que ninguna frecuencia intermedia sea mayor que la frecuencia de reloj correspondiente a la configuración anterior, ni la frecuencia de reloj correspondiente a la nueva configuración.
El contador de rizado que implementa el preescalador se ejecuta a la frecuencia del reloj no dividido, que puede ser más rápido que la frecuencia del reloj de la CPU. Por lo tanto, no es posible determinar el estado del preescalador, incluso si fuera legible, y el tiempo exacto que se tarda en cambiar de una división de reloj a otra no se puede predecir con exactitud.
Desde el momento en que se escriben los valores CLKPS, se necesitan entre T1 + T2 y T1 + 2 * T2 antes de que se active la nueva frecuencia de reloj. En este intervalo, se producen 2 flancos de reloj activos. Aquí, T1 es el período de reloj anterior y T2 es el período correspondiente a la nueva configuración del preescalador.
Búfer de salida de reloj
El dispositivo puede emitir el reloj del sistema en el pin CLKO (cuando no se usa como pin XTAL2). Para habilitar la salida, se debe programar el Fusible CKOUT. Este modo es adecuado cuando el reloj del chip se utiliza para controlar otros circuitos del sistema. Tenga en cuenta que el reloj no se emitirá durante el reinicio y que el funcionamiento normal del pin de E / S se anulará cuando se programe el fusible. El oscilador RC interno, el oscilador WDT, PLL y el reloj externo (CLKI) se pueden seleccionar cuando el reloj se emite en CLKO. Los osciladores de cristal (XTAL1, XTAL2) no se pueden utilizar para la salida de reloj en CLKO. Si se utiliza el preescalador del reloj del sistema, lo que se emite es el reloj del sistema dividido.
Descripción del registro
OSCCAL - Registro de calibración del oscilador
Poco | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x31 | CAL7 | CAL6 | CAL5 | CAL4 | CAL3 | CAL2 | CAL1 | CAL0 | OSCCAL |
Leer/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 del oscilador
El registro de calibración del oscilador se utiliza para ajustar el oscilador RC interno calibrado para eliminar las variaciones de proceso de la frecuencia del oscilador. Un valor de calibración preprogramado se escribe automáticamente en este registro durante el reinicio del chip, dando la frecuencia calibrada de fábrica como se especifica en Tabla 21-2 en la página 164. El software de la aplicación puede escribir este registro para cambiar la frecuencia del oscilador. El oscilador se puede calibrar a las frecuencias especificadas en Tabla 21-2 en la página 164. La calibración fuera de ese rango no está garantizada.
Tenga en cuenta que este oscilador se utiliza para cronometrar los accesos de escritura a EEPROM y Flash, y estos tiempos de escritura se verán afectados en consecuencia. Si la EEPROM o Flash están escritos, no calibre a más de 8.8 MHz. De lo contrario, la escritura EEPROM o Flash puede fallar.
El bit CAL7 determina el rango de operación del oscilador. Establecer este bit en 0 proporciona el rango de frecuencia más bajo, establecer este bit en 1 proporciona el rango de frecuencia más alto. Los dos rangos de frecuencia se superponen, en otras palabras, un ajuste de OSCCAL = 0x7F da una frecuencia más alta que OSCCAL = 0x80.
Los bits CAL [6: 0] se utilizan para sintonizar la frecuencia dentro del rango seleccionado. Un ajuste de 0x00 da la frecuencia más baja en ese rango, y un ajuste de 0x7F da la frecuencia más alta en el rango.
Para garantizar un funcionamiento estable de la MCU, el valor de calibración debe cambiarse en pequeño. Una variación en la frecuencia de más del 2% de un ciclo al siguiente puede conducir a un comportamiento impredecible. Los cambios en OSCCAL no deben exceder 0x20 para cada calibración. Es necesario asegurarse de que la MCU se mantenga en Reinicio durante tales cambios en la frecuencia del reloj
Tabla 6-14. Rango de frecuencia del oscilador RC interno
Valor OSCCAL | Frecuencia más baja típica con respecto a la frecuencia nominal | Frecuencia más alta típica con respecto a la frecuencia nominal |
0x00 | 50% | 100% |
0x3F | 75% | 150% |
0x7F | 100% | 200% |
CLKPR - Registro de preescala de reloj
Poco | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x26 | CLKPCE | – | – | – | CLKPS3 | CLKPS2 | CLKPS1 | CLKPS0 | CLKPR |
Leer/Escribir | R/W | R | R | R | R/W | R/W | R/W | R/W |
Valor inicial 0 0 0 0 Ver descripción de bit
Bit 7 - CLKPCE: Habilitación de cambio de preescalador de reloj
El bit CLKPCE debe escribirse en uno lógico para permitir el cambio de los bits CLKPS. El bit CLKPCE solo se actualiza cuando los otros bits en CLKPR se escriben simultáneamente a cero. CLKPCE se borra por hardware cuatro ciclos después de que se escribe o cuando se escriben los bits CLKPS. Reescribir el bit CLKPCE dentro de este período de tiempo de espera no extiende el período de tiempo de espera ni borra el bit CLKPCE.
Bits 6: 4 - Res: Bits reservados
Estos bits son bits reservados en el ATtiny25 / 45/85 y siempre se leerán como cero.
Bits 3: 0 - CLKPS [3: 0]: Bits de selección de preescalador de reloj 3-0
Estos bits definen el factor de división entre la fuente de reloj seleccionada y el reloj interno del sistema. Estos bits se pueden escribir en tiempo de ejecución para variar la frecuencia del reloj para adaptarse a los requisitos de la aplicación. A medida que el divisor divide la entrada del reloj maestro a la MCU, la velocidad de todos los periféricos síncronos se reduce cuando se usa un factor de división. Los factores de división se dan en Tabla 6-15.
Para evitar cambios involuntarios de la frecuencia del reloj, se debe seguir un procedimiento de escritura especial para cambiar los bits CLKPS:
Escriba el bit Clock Prescaler Change Enable (CLKPCE) en uno y todos los demás bits en CLKPR en cero.
Dentro de cuatro ciclos, escriba el valor deseado en CLKPS mientras escribe un cero en CLKPCE.
Las interrupciones deben desactivarse al cambiar la configuración del preescalador para asegurarse de que el procedimiento de escritura no se interrumpa.
El fusible CKDIV8 determina el valor inicial de los bits CLKPS. Si CKDIV8 no está programado, los bits CLKPS se restablecerán a "0000". Si se programa CKDIV8, los bits CLKPS se restablecen a "0011", dando un factor de división de ocho al inicio. Esta función debe utilizarse si la fuente de reloj seleccionada tiene una frecuencia superior a la frecuencia máxima del dispositivo en las condiciones de funcionamiento actuales. Tenga en cuenta que se puede escribir cualquier valor en los bits CLKPS independientemente de la configuración del fusible CKDIV8. El software de aplicación debe garantizar que se utilice un factor de división suficiente.
elegido si la fuente de reloj seleccionada tiene una frecuencia más alta que la frecuencia máxima del dispositivo en las condiciones de funcionamiento actuales. El dispositivo se envía con el fusible CKDIV8 programado.
Tabla 6-15. Selección de preescalador de reloj
CLKPS3 | CLKPS2 | CLKPS1 | CLKPS0 | Factor de división de reloj |
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: El prescaler está deshabilitado en el modo de compatibilidad ATtiny15 y ni escribir en CLKPR, ni programar el fusible CKDIV8 tiene ningún efecto en el reloj del sistema (que siempre será de 1.6 MHz).
Modos de administración de energía y suspensión
El alto rendimiento y la eficiencia del código líder en la industria hacen que los microcontroladores AVR sean una opción ideal para aplicaciones de baja potencia. Además, los modos de suspensión permiten que la aplicación apague los módulos no utilizados en la MCU, lo que ahorra energía. El AVR proporciona varios modos de suspensión que permiten al usuario adaptar el consumo de energía a los requisitos de la aplicación.
Modos de sueño
Figura 6-1 en la página 23 presenta los diferentes sistemas de reloj y su distribución en ATtiny25 / 45/85. La figura es útil para seleccionar un modo de suspensión apropiado. Tabla 7-1 muestra los diferentes modos de suspensión y sus fuentes de activación.
Tabla 7-1. Dominios de reloj activo y fuentes de despertador en los diferentes modos de suspensión
Dominios de reloj activos | Osciladores | Fuentes de activación | ||||||||||
Modo de suspensión | clkCPU | clkFLASH | clkIO | clkADC | clkPCK | Fuente de reloj principal habilitada | INT0 y cambio de pin | SPM / EEPROM
Listo |
Condición de inicio de USI |
Conductor adverso | Otras E/S | Perro guardián Interrumpir |
Inactivo | X | X | X | X | X | X | X | X | X | X | ||
Reducción de ruido ADC | X | X | X(1) | X | X | X | X | |||||
Corriente cortada | X(1) | X | X |
Nota: Para INT0, solo interrupción de nivel.
Para ingresar a cualquiera de los tres modos de suspensión, el bit SE en MCUCR debe escribirse en uno lógico y se debe ejecutar una instrucción SLEEP. Los bits SM [1: 0] en el registro MCUCR seleccionan qué modo de suspensión (inactivo, reducción de ruido ADC o apagado) se activará mediante la instrucción SLEEP. Ver Tabla 7-2 para un resumen.
Si se produce una interrupción habilitada mientras la MCU está en modo de suspensión, la MCU se activa. Luego, la MCU se detiene durante cuatro ciclos además del tiempo de inicio, ejecuta la rutina de interrupción y reanuda la ejecución a partir de la instrucción que sigue a SLEEP. El contenido del Registro File y SRAM no se modifican cuando el dispositivo se despierta de la suspensión. Si se produce un reinicio durante el modo de suspensión, la MCU se activa y se ejecuta desde el vector de reinicio.
Nota: si se utiliza una interrupción activada por nivel para despertar, el nivel modificado debe mantenerse durante algún tiempo para despertar la MCU (y para que la MCU entre en la rutina de servicio de interrupción). Ver “Interrupciones externas” en la página 49 Para más detalles.
Modo inactivo
Cuando los bits SM[1:0] se escriben en 00, la instrucción SLEEP hace que la MCU entre en modo inactivo, deteniendo la CPU pero permitiendo que el comparador analógico, el ADC, el USI, el temporizador/contador, el perro guardián y el sistema de interrupción continúen funcionando. comiendo Este modo de suspensión básicamente detiene clkCPU y clkFLASH, mientras permite que los otros relojes funcionen.
El modo inactivo permite que la MCU se despierte de las interrupciones desencadenadas externas, así como de las internas como el desbordamiento del temporizador. Si no se requiere la activación de la interrupción del comparador analógico, el comparador analógico se puede apagar configurando el bit ACD en “ACSR - Registro de estado y control del comparador analógico” en la página 120. Esto reducirá el consumo de energía en el modo inactivo. Si el ADC está habilitado, una conversión comienza automáticamente cuando se ingresa a este modo.
Modo de reducción de ruido ADC
Cuando los bits SM[1:0] se escriben en 01, la instrucción SLEEP hace que la MCU ingrese al modo de reducción de ruido del ADC, deteniendo la CPU pero permitiendo que el ADC, las interrupciones externas y el Watchdog continúen funcionando (si está habilitado). Este modo de suspensión detiene clkI/O, clkCPU y clkFLASH, mientras permite que los otros relojes funcionen.
Esto mejora el entorno de ruido para el ADC, lo que permite mediciones de mayor resolución. Si el ADC está habilitado, una conversión comienza automáticamente cuando se ingresa a este modo. Aparte de la interrupción de conversión completa de ADC, solo un reinicio externo, un reinicio de perro guardián, un reinicio de caída, una interrupción preparada para SPM / EEPROM, una interrupción de nivel externo en INT0 o una interrupción de cambio de pin pueden despertar la MCU de la reducción de ruido de ADC modo.
Modo de apagado
Cuando los bits SM [1: 0] se escriben en 10, la instrucción SLEEP hace que la MCU ingrese al modo de apagado. En este modo, el oscilador se detiene, mientras que las interrupciones externas, la detección de la condición de inicio del USI y el Watchdog continúan funcionando (si está habilitado). Solo un reinicio externo, un reinicio del perro guardián, un reinicio por caída de tensión, una interrupción de la condición de inicio de USI, una interrupción de nivel externo en INT0 o una interrupción de cambio de pin pueden activar la MCU. Este modo de suspensión detiene todos los relojes generados, lo que permite el funcionamiento de módulos asíncronos únicamente.
Desactivación de DBO por software
Cuando el detector de caída de tensión (BOD) está habilitado por fusibles BODLEVEL (consulte Tabla 20-4 en la página 148), la DBO supervisa activamente el volumen de suministro.tage durante un período de sueño. En algunos dispositivos es posible ahorrar energía desactivando el BOD por software en el modo de suspensión de apagado. El consumo de energía del modo de suspensión estará entonces al mismo nivel que cuando la DBO está deshabilitada globalmente por fusibles.
Si el software BOD está deshabilitado, la función BOD se apaga inmediatamente después de ingresar al modo de suspensión. Al despertar del modo de suspensión, BOD se habilita automáticamente de nuevo. Esto garantiza un funcionamiento seguro en caso de que el nivel de VCC haya disminuido durante el período de suspensión.
Cuando se ha desactivado el BOD, el tiempo de activación desde el modo de suspensión será el mismo que el de la activación desde RESET. El usuario debe configurar manualmente los tiempos de activación de modo que la referencia de banda prohibida tenga tiempo de iniciarse y el BOD funcione correctamente antes de que la MCU continúe ejecutando el código. Consulte los bits de fusible SUT [1: 0] y CKSEL [3: 0] en la tabla “Fusible byte bajo” en la página 149
La desactivación de BOD está controlada por el bit BODS (BOD Sleep) del registro de control de MCU, consulte "MCUCR - Control de MCU Registrarse ”en la página 37. Escribir este bit en uno desactiva BOD en Power-Down, mientras que escribir un cero mantiene activo el BOD. El ajuste predeterminado es cero, es decir, DBO activo.
La escritura en el bit BODS se controla mediante una secuencia temporizada y un bit de habilitación, consulte “MCUCR - MCU Control Regis- ter ”en la página 37.
Limitaciones
La funcionalidad de desactivación de DBO se ha implementado en los siguientes dispositivos, únicamente:
ATtiny25, revisión E y más reciente
ATtiny45, revisión D y más reciente
ATtiny85, revisión C y más reciente
Las revisiones están marcadas en el paquete del dispositivo y pueden ubicarse de la siguiente manera:
Lado inferior de los paquetes 8P3 y 8S2
Lado superior del paquete 20M1
Registro de reducción de potencia
El registro de reducción de potencia (PRR), consulte “PRR - Registro de reducción de potencia” en la página 38, proporciona un método para reducir el consumo de energía al detener el reloj de los periféricos individuales. El estado actual del periférico está congelado y los registros de E / S no se pueden leer ni escribir. Los recursos utilizados por el periférico al detener el reloj permanecerán ocupados, por lo que, en la mayoría de los casos, el periférico debe desactivarse antes de detener el reloj. La activación de un módulo, que se realiza borrando el bit en PRR, pone el módulo en el mismo estado que antes del apagado.
El apagado del módulo se puede utilizar en modo inactivo y en modo activo para reducir significativamente el consumo total de energía. En todos los demás modos de suspensión, el reloj ya está parado. Ver “Suministro de corriente de módulos de E / S” en la página 177 por ejemploampLes.
Minimizar el consumo de energía
Hay varias cuestiones a tener en cuenta al intentar minimizar el consumo de energía en un sistema controlado por AVR. En general, los modos de suspensión deben usarse tanto como sea posible, y el modo de suspensión debe seleccionarse de modo que estén funcionando la menor cantidad posible de funciones del dispositivo. Todas las funciones que no sean necesarias deben desactivarse. En particular, los siguientes módulos pueden necesitar una consideración especial al intentar lograr el menor consumo de energía posible.
Convertidor analógico a digital
Si está habilitado, el ADC se habilitará en todos los modos de suspensión. Para ahorrar energía, el ADC debe desactivarse antes de ingresar a cualquier modo de suspensión. Cuando el ADC se apaga y se vuelve a encender, la próxima conversión será una conversión extendida. Referirse a “Convertidor de analógico a digital” en la página 122 para obtener detalles sobre el funcionamiento de ADC.
Comparador analógico
Al entrar en el modo inactivo, el comparador analógico debe desactivarse si no se utiliza. Al ingresar al modo de reducción de ruido ADC, el comparador analógico debe estar desactivado. En los otros modos de suspensión, el comparador analógico se desactiva automáticamente. Sin embargo, si el Comparador Analógico está configurado para utilizar el Voltaje Internotage Referencia como entrada, el comparador analógico debe desactivarse en todos los modos de suspensión. De lo contrario, el Vol internotage Se habilitará la referencia, independientemente del modo de suspensión. Referirse a “Comparador analógico” en la página 119 para obtener detalles sobre cómo configurar el comparador analógico.
Detector de apagones
Si el detector de caída de tensión no es necesario en la aplicación, este módulo debe apagarse. Si el detector de apagones está habilitado por los fusibles BODLEVEL, se habilitará en todos los modos de suspensión y, por lo tanto, siempre consumirá energía. En los modos de sueño más profundos, esto contribuirá significativamente al consumo de corriente total. Ver “Detector de apagones "en la página 41 y “Software BOD Disable” en la página 35 para obtener detalles sobre cómo configurar el detector de apagones.
Vol internotage Referencia
El Vol internotagLa referencia se habilitará cuando sea necesario por la detección de caída, el comparador analógico o el ADC. Si estos módulos están desactivados como se describe en las secciones anteriores, el volumen internotagLa referencia se desactivará y no consumirá energía. Cuando se enciende de nuevo, el usuario debe permitir que la referencia se inicie antes de que se utilice la salida. Si la referencia se mantiene en modo de suspensión, la salida se puede utilizar inmediatamente. Referirse a "Vol. Internotage Referencia ”en la página 42 para obtener detalles sobre la hora de inicio.
Temporizador de vigilancia
Si el temporizador de vigilancia no es necesario en la aplicación, este módulo debe apagarse. Si el temporizador de vigilancia está habilitado, se habilitará en todos los modos de suspensión y, por lo tanto, siempre consumirá energía. En los modos de sueño más profundos, esto contribuirá significativamente al consumo de corriente total. Referirse a “Temporizador de vigilancia” en la página 42 para obtener detalles sobre cómo configurar el temporizador de vigilancia.
Pines de puerto
Al ingresar al modo de suspensión, todos los pines del puerto deben configurarse para usar la energía mínima. Entonces, lo más importante es asegurarse de que ningún pin impulse cargas resistivas. En los modos de suspensión en los que se detienen tanto el reloj de E/S (clkI/O) como el reloj del ADC (clkADC), los búferes de entrada del dispositivo se desactivarán. Esto asegura que no se consume energía
por la lógica de entrada cuando no se necesita. En algunos casos, la lógica de entrada es necesaria para detectar condiciones de activación y
entonces se habilitará. Consulte la sección “Modos de activación y suspensión de entrada digital” en la página 57 para obtener detalles sobre qué pines están habilitados. Si el búfer de entrada está habilitado y la señal de entrada se deja flotando o tiene un nivel de señal analógica cercano a VCC/2, el búfer de entrada usará una potencia excesiva.
Para los pines de entrada analógica, el búfer de entrada digital debe estar deshabilitado en todo momento. Un nivel de señal analógica cercano a VCC/2 en un pin de entrada puede causar una corriente significativa incluso en modo activo. Los búferes de entrada digital se pueden desactivar escribiendo en el registro de desactivación de entrada digital (DIDR0). Referirse a “DIDR0 - Registro 0 de desactivación de entrada digital” en la página 121 Para más detalles.
Descripción del registro
MCUCR - Registro de control de MCU
El registro de control de MCU contiene bits de control para la gestión de energía.
Poco | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | CUERPOS | PUD | SE | SM1 | SM0 | CUERPO | ISC01 | ISC00 | MCUCR |
Leer/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
La función de desactivación de BOD solo está disponible en algunos dispositivos. Ver "Limitaciones" en la página 36.
Para deshabilitar la DBO durante el sueño (ver Tabla 7-1 en la página 34) el bit BODS debe escribirse en uno lógico. Esto se controla mediante una secuencia temporizada y el bit de habilitación, BODSE en MCUCR. Primero, tanto BODS como BODSE deben establecerse en uno. En segundo lugar, dentro de cuatro ciclos de reloj, BODS debe establecerse en uno y BODSE debe establecerse en cero. El bit BODS está activo tres ciclos de reloj después de que se establece. Se debe ejecutar una instrucción de reposo mientras BODS está activo para apagar el BOD para el modo de reposo real. El bit BODS se borra automáticamente después de tres ciclos de reloj.
En los dispositivos donde no se ha implementado la DBO en reposo, este bit no se utiliza y siempre leerá cero.
Bit 5 - SE: suspensión activada
El bit SE debe escribirse en uno lógico para que la MCU entre en el modo de suspensión cuando se ejecuta la instrucción SLEEP. Para evitar que la MCU ingrese al modo de suspensión a menos que sea el propósito del programador, se recomienda escribir el bit Sleep Enable (SE) a uno justo antes de la ejecución de la instrucción SLEEP y borrarlo inmediatamente después de despertar.
Bits 4: 3 - SM [1: 0]: Modo de suspensión Seleccione Bits 1 y 0
Estos bits seleccionan entre los tres modos de suspensión disponibles como se muestra en Tabla 7-2.
Tabla 7-2. Selección del modo de suspensión
SM1 | SM0 | Modo de suspensión |
0 | 0 | Inactivo |
0 | 1 | Reducción de ruido ADC |
1 | 0 | Corriente cortada |
1 | 1 | Reservado |
Bit 2 - BODSE: BOD Sleep Enable
La función de desactivación de BOD solo está disponible en algunos dispositivos. Ver "Limitaciones" en la página 36.
El bit BODSE permite establecer el bit de control BODS, como se explica en la descripción del bit BODS. La desactivación de DBO se controla mediante una secuencia cronometrada.
Este bit no se utiliza en dispositivos donde no se ha implementado la desactivación de DBO por software y se leerá como cero en esos dispositivos.
PRR - Registro de reducción de potencia
El registro de reducción de energía proporciona un método para reducir el consumo de energía al permitir que las señales del reloj periférico se deshabiliten.
Poco | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x20 | – | – | – | – | PRTIM1 | PRTIM0 | PRUSÍ | PRDC | PRR |
Leer/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
Estos bits son bits reservados en el ATtiny25 / 45/85 y siempre se leerán como cero.
Bit 3 - PRTIM1: Temporizador / Contador de reducción de potencia1
Escribir un uno lógico en este bit apaga el módulo Timer / Counter1. Cuando el Temporizador / Contador1 está habilitado, la operación continuará como antes del apagado.
Bit 2 - PRTIM0: Temporizador / Contador de reducción de potencia0
Escribir un uno lógico en este bit apaga el módulo Timer / Counter0. Cuando el Temporizador / Contador0 está habilitado, la operación continuará como antes del apagado.
Bit 1 - PRUSI: Reducción de potencia USI
Escribir un uno lógico en este bit apaga el USI al detener el reloj del módulo. Al reactivar el USI nuevamente, el USI debe reiniciarse para garantizar un funcionamiento adecuado.
Bit 0 - PRADC: ADC de reducción de potencia
Escribir uno lógico en este bit apaga el ADC. El ADC debe desactivarse antes de apagarse. Tenga en cuenta que algunas partes del comparador analógico también utilizan el reloj ADC, lo que significa que el comparador analógico no se puede utilizar cuando este bit es alto.
Control y reinicio del sistema
Restablecimiento del AVR
Durante el reinicio, todos los registros de E / S se establecen en sus valores iniciales y el programa comienza a ejecutarse desde el vector de reinicio. La instrucción colocada en el vector de reinicio debe ser una instrucción RJMP (salto relativo) para la rutina de manejo de reinicio. Si el programa nunca habilita una fuente de interrupción, los vectores de interrupción no se utilizan y el código de programa regular se puede colocar en estas ubicaciones. El diagrama de circuito en Figura 8-1 muestra la lógica de reinicio. Los parámetros eléctricos del circuito de reinicio se dan en “Características del sistema y restablecimiento” en la página 165.
Figura 8-1 Lógica de restablecimiento
Los puertos de E / S del AVR se restablecen inmediatamente a su estado inicial cuando se activa una fuente de restablecimiento. Esto no requiere que se esté ejecutando ninguna fuente de reloj.
Una vez que todas las fuentes de reinicio se han desactivado, se invoca un contador de retardo, que alarga el reinicio interno. Esto permite que la energía alcance un nivel estable antes de que comience el funcionamiento normal. El tiempo de espera del contador de retardo lo define el usuario a través de los Fusibles SUT y CKSEL. Las diferentes selecciones para el período de retraso se presentan en "Reloj Fuentes ”en la página 25.
Restablecer fuentes
El ATtiny25 / 45/85 tiene cuatro fuentes de reinicio:
Reinicio de encendido. La MCU se reinicia cuando el suministro vol.tage está por debajo del umbral de reinicio de encendido (VPOT).
Reinicio externo. La MCU se reinicia cuando hay un nivel bajo en el pin RESET durante más tiempo que la longitud mínima del pulso.
Reinicio del perro guardián. La MCU se restablece cuando expira el período del temporizador de vigilancia y se habilita la vigilancia.
Restablecimiento de caída de voltaje. La MCU se reinicia cuando el suministro voltagEl VCC está por debajo del umbral de restablecimiento de caída de tensión (VBOT) y el detector de caída de tensión está habilitado.
Reinicio de encendido
Un pulso de reinicio de encendido (POR) es generado por un circuito de detección en chip. El nivel de detección se define en "Sys- características de temperatura y restablecimiento ”en la página 165. El POR se activa siempre que VCC esté por debajo del nivel de detección. El circuito POR se puede utilizar para activar el reinicio de arranque, así como para detectar una falla en el volumen de suministro.tage.
Un circuito de reinicio de encendido (POR) garantiza que el dispositivo se reinicie desde el encendido. Alcanzando el voltaje de umbral de reinicio de encendidotage invoca el contador de retardo, que determina cuánto tiempo se mantiene el dispositivo en REINICIO después del aumento de VCC. La señal RESET se activa de nuevo, sin demora, cuando VCC desciende por debajo del nivel de detección.
Figura 8-2. Arranque de MCU, RESET vinculado a VCC
REINICIO INTERNO
Figura 8-3. Arranque de MCU, REINICIO Extendido Externamente
Restablecer externo
Un reinicio externo es generado por un nivel bajo en el pin RESET si está habilitado. Restablezca los pulsos más largos que el ancho de pulso mínimo (consulte “Características del sistema y restablecimiento” en la página 165) generará un reinicio, incluso si el reloj no está funcionando. No se garantiza que los pulsos más cortos generen un reinicio. Cuando la señal aplicada alcanza el umbral de reinicio Voltage – VRST – en su flanco positivo, el contador de retardo inicia la MCU después de que haya expirado el período de tiempo de espera.
Figura 8-4. Restablecimiento externo durante la operación
Detección de apagones
ATtiny25/45/85 tiene un circuito de detección de caída de tensión (BOD) en el chip para monitorear el nivel de VCC durante la operación comparándolo con un nivel de disparo fijo. El nivel de activación para el BOD se puede seleccionar mediante los fusibles BODLEVEL. El nivel de activación tiene una histéresis para garantizar una detección de caída de tensión sin picos. La histéresis en el nivel de detección debe interpretarse como VBOT+ = VBOT + VHYST/2 y VBOT- = VBOT – VHYST/2.
Cuando el BOD está habilitado y VCC disminuye a un valor por debajo del nivel de activación (VBOT- en Figura 8-5), el Brown-out Reset se activa inmediatamente. Cuando VCC aumenta por encima del nivel de disparo (VBOT+ en Figura 8-5), el contador de retardo inicia la MCU después de que haya expirado el período de tiempo de espera tTOUT.
El circuito BOD solo detectará una caída en VCC si el voltage permanece por debajo del nivel de activación durante más tiempo que el tBOD indicado en “Características del sistema y restablecimiento” en la página 165.
Reinicio del perro guardián
Cuando se agote el tiempo de vigilancia, generará un breve pulso de reinicio de la duración de un ciclo CK. En el flanco descendente de este pulso, el temporizador de retardo comienza a contar el período de tiempo de espera tTOUT. Referirse a “Temporizador de vigilancia” en la página 42 para obtener detalles sobre el funcionamiento del temporizador de vigilancia.
Volumentage Señales de activación de referencia y tiempo de inicio
El voltagLa referencia tiene un tiempo de inicio que puede influir en la forma en que debe usarse. La hora de inicio se da en “Características del sistema y restablecimiento” en la página 165. Para ahorrar energía, la referencia no siempre está activada. La referencia está activada durante las siguientes situaciones:
Cuando el BOD está habilitado (programando BODLEVEL [2: 0] Fuse Bits).
Cuando la referencia de banda prohibida está conectada al comparador analógico (estableciendo el bit ACBG en ACSR).
Cuando el ADC está habilitado.
Por lo tanto, cuando el BOD no está habilitado, después de establecer el bit ACBG o habilitar el ADC, el usuario siempre debe permitir que la referencia se inicie antes de que se use la salida del Comparador Analógico o ADC. Para reducir el consumo de energía en el modo de apagado, el usuario puede evitar las tres condiciones anteriores para asegurarse de que la referencia esté apagada antes de ingresar al modo de apagado.
Temporizador de vigilancia
El temporizador de vigilancia se sincroniza desde un oscilador en chip que funciona a 128 kHz. Al controlar el preescalador del temporizador Watchdog, el intervalo de reinicio del Watchdog se puede ajustar como se muestra en Tabla 8-3 en la página 46. La instrucción WDR (reinicio del perro guardián) reinicia el temporizador del perro guardián. El temporizador de vigilancia también se reinicia cuando está desactivado y cuando se produce un reinicio de chip. Se pueden seleccionar diez períodos de ciclo de reloj diferentes para determinar el período de reinicio. Si el período de reinicio expira sin otro reinicio de Watchdog, el ATtiny25 / 45/85 se reinicia y se ejecuta desde el vector de reinicio. Para obtener detalles sobre el tiempo del reinicio de Watchdog, consulte Tabla 8-3 en la página 46.
El temporizador de vigilancia también se puede configurar para generar una interrupción en lugar de un reinicio. Esto puede resultar muy útil cuando se utiliza el perro guardián para despertar del apagado.
Para evitar la desactivación involuntaria del Watchdog o un cambio involuntario del período de tiempo de espera, el fusible WDTON selecciona dos niveles de seguridad diferentes como se muestra en Tabla 8-1 Referirse a “Secuencias cronometradas para cambiar la conversión figuración del temporizador de vigilancia ”en la página 43 Para más detalles.
Tabla 8-1. Configuración de WDT en función de la configuración de fusibles de WDTON
WDTON | Nivel de seguridad | Estado inicial de WDT | Cómo deshabilitar el WDT | Cómo cambiar el tiempo de espera |
No programado | 1 | Desactivado | Secuencia cronometrada | Sin limitaciones |
Programado | 2 | Activado | Siempre habilitado | Secuencia cronometrada |
Figura 8-7. Temporizador de vigilancia
Secuencias temporizadas para cambiar la configuración del temporizador de vigilancia
La secuencia para cambiar la configuración difiere ligeramente entre los dos niveles de seguridad. Se describen procedimientos separados para cada nivel.
Nivel de seguridad 1: en este modo, el temporizador de vigilancia está inicialmente deshabilitado, pero se puede habilitar escribiendo el bit WDE en uno sin ninguna restricción. Se necesita una secuencia cronometrada al deshabilitar un temporizador de vigilancia habilitado. Para deshabilitar un Watchdog Timer habilitado, se debe seguir el siguiente procedimiento:
En la misma operación, escriba uno lógico en WDCE y WDE. Se debe escribir uno lógico en WDE independientemente del valor anterior del bit WDE.
Dentro de los siguientes cuatro ciclos de reloj, en la misma operación, escriba los bits WDE y WDP como desee, pero con el bit WDCE borrado.
Nivel de seguridad 2: en este modo, el temporizador de vigilancia siempre está habilitado y el bit WDE siempre se leerá como uno. Se necesita una secuencia cronometrada al cambiar el período de tiempo de espera de Watchdog. Para cambiar el Watchdog Time-out, se debe seguir el siguiente procedimiento:
En la misma operación, escriba uno lógico en WDCE y WDE. Aunque el WDE siempre está configurado, el WDE debe escribirse en uno para iniciar la secuencia cronometrada.
Dentro de los siguientes cuatro ciclos de reloj, en la misma operación, escriba los bits WDP como desee, pero con el bit WDCE borrado. El valor escrito en el bit WDE es irrelevante.
Código Example
El siguiente código exampEl archivo muestra un ensamblaje y una función C para apagar el WDT. La example asume que las interrupciones están controladas (por ejemplo, deshabilitando las interrupciones globalmente) para que no ocurran interrupciones durante la ejecución de estas funciones.
Código de montaje Example(1) |
WDT_apagado:
ancho de banda ; Borrar WDRF en MCUSR ldi r16, (0< fuera MCUSR, r16 ; Escriba uno lógico en WDCE y WDE ; Mantenga la configuración anterior del escalador para evitar un reinicio no intencionado del Watchdog en r16, WDTCR o bien r16, (1< fuera WDTCR, r16 ; Apague WDT ldi r16, (0< fuera WDTCR, r16 retirado |
Código C Example(1) |
vacío WDT_off (vacío)
{ _WDR (); /* Borrar WDRF en MCUSR */ MCUSR = 0x00 /* Escribir uno lógico en WDCE y WDE */ WDTCR |= (1< / * Apagar WDT * / WDTCR = 0x00; } |
Nota: 1. Ver "Código Examples ”en la página 6.
Descripción del registro
MCUSR - Registro de estado de MCU
El registro de estado de MCU proporciona información sobre qué fuente de reinicio provocó un reinicio de MCU.
Poco | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x34 | – | – | – | – | WDRF | Borf | EXTRAER | PORF | MCUSR |
Leer/Escribir | R | R | R | R | R/W | R/W | R/W | R/W |
Valor inicial 0 0 0 0 Ver descripción de bit
Bits 7: 4 - Res: Bits reservados
Estos bits son bits reservados en el ATtiny25 / 45/85 y siempre se leerán como cero.
Bit 3 - WDRF: indicador de reinicio de Watchdog
Este bit se establece si se produce un reinicio de Watchdog. El bit se restablece mediante un reinicio de encendido o escribiendo un cero lógico en la bandera.
Bit 2 - BORF: Bandera de reinicio de caída de tensión
Este bit se establece si se produce un reinicio por caída de voltaje. El bit se restablece mediante un reinicio de encendido o escribiendo un cero lógico en la bandera.
Bit 1 - EXTRF: Bandera de reinicio externo
Este bit se establece si se produce un reinicio externo. El bit se restablece mediante un reinicio de encendido o escribiendo un cero lógico en la bandera.
Bit 0 - PORF: Indicador de reinicio de encendido
Este bit se establece si se produce un reinicio de encendido. El bit se restablece solo escribiendo un cero lógico en la bandera.
Para hacer uso de las banderas de reinicio para identificar una condición de reinicio, el usuario debe leer y luego reiniciar el MCUSR lo antes posible en el programa. Si el registro se borra antes de que ocurra otro reinicio, la fuente del reinicio se puede encontrar examinando los indicadores de reinicio.
WDTCR - Registro de control del temporizador de vigilancia
Poco | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x21 | WDIF | WDI | WDP3 | WDCE | WDE | WDP2 | WDP1 | WDP0 | WDTCR |
Leer/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: Bandera de interrupción de tiempo de espera de vigilancia
Este bit se establece cuando ocurre un tiempo de espera en el temporizador de vigilancia y el temporizador de vigilancia está configurado para interrupción. El hardware borra WDIF al ejecutar el vector de manejo de interrupciones correspondiente. Alternativamente, WDIF se borra escribiendo uno lógico en la bandera. Cuando se establecen los bits I en SREG y WDIE, se ejecuta la interrupción del tiempo de espera del Watchdog.
Bit 6 - WDIE: Habilitación de interrupción de tiempo de espera de vigilancia
Cuando este bit se escribe en uno, se borra WDE y se establece el bit I en el registro de estado, se habilita la interrupción de tiempo de espera de vigilancia. En este modo, se ejecuta la interrupción correspondiente en lugar de un reinicio si ocurre un tiempo de espera en el temporizador de vigilancia.
Si se establece WDE, el hardware borra automáticamente WDIE cuando se agota el tiempo de espera. Esto es útil para mantener la seguridad del reinicio del perro guardián mientras se usa la interrupción. Una vez que se borra el bit WDIE, el próximo tiempo de espera generará un reinicio. Para evitar el reinicio de Watchdog, WDIE debe configurarse después de cada interrupción.
Tabla 8-2. Configuración del temporizador de vigilancia
WDE | WDI | Estado del temporizador de vigilancia | Acción sobre el tiempo muerto |
0 | 0 | Interrumpido | Ninguno |
0 | 1 | Correr | Interrumpir |
1 | 0 | Correr | Reiniciar |
1 | 1 | Correr | Interrumpir |
Bit 4 - WDCE: Habilitación de cambio de Watchdog
Este bit debe establecerse cuando el bit WDE se escribe en cero lógico. De lo contrario, el Watchdog no se desactivará. Una vez escrito en uno, el hardware borrará este bit después de cuatro ciclos de reloj. Consulte la descripción del bit WDE para conocer el procedimiento de desactivación del Watchdog. Este bit también debe establecerse al cambiar los bits del preescalador. Ver "Secuencias cronometradas para cambiar la configuración del temporizador de vigilancia ”en la página 43.
Bit 3 - WDE: Habilitación de Watchdog
Cuando el WDE se escribe en uno lógico, el temporizador de vigilancia está habilitado, y si el WDE se escribe en cero lógico, la función de temporizador de vigilancia se inhabilita. WDE solo se puede borrar si el bit WDCE tiene un nivel lógico uno. Para deshabilitar un temporizador de vigilancia habilitado, se debe seguir el siguiente procedimiento:
En la misma operación, escriba uno lógico en WDCE y WDE. Se debe escribir uno lógico en WDE aunque esté configurado en uno antes de que comience la operación de desactivación.
Dentro de los siguientes cuatro ciclos de reloj, escriba un 0 lógico en WDE. Esto desactiva el perro guardián.
En el nivel de seguridad 2, no es posible deshabilitar el temporizador de vigilancia, incluso con el algoritmo descrito anteriormente. Ver “Secuencias temporizadas para cambiar la configuración del temporizador de vigilancia” en la página 43.
En el nivel de seguridad 1, WDE es anulado por WDRF en MCUSR. Ver “MCUSR - Registro de estado de MCU” en la página 44 para obtener una descripción de WDRF. Esto significa que WDE siempre se establece cuando se establece WDRF. Para borrar WDE, WDRF debe borrarse antes de deshabilitar el Watchdog con el procedimiento descrito anteriormente. Esta característica asegura múltiples reinicios durante las condiciones que causan fallas y un arranque seguro después de la falla.
Nota: Si el temporizador de vigilancia no se va a utilizar en la aplicación, es importante pasar por un procedimiento de desactivación de vigilancia en la inicialización del dispositivo. Si el Watchdog se habilita accidentalmente, por ej.ampSi un puntero fuera de control o una condición de caída de voltaje, el dispositivo se reiniciará, lo que a su vez conducirá a un nuevo reinicio del perro guardián. Para evitar esta situación, el software de la aplicación siempre debe borrar el indicador WDRF y el bit de control WDE en la rutina de inicialización.
Bits 5, 2: 0 - WDP [3: 0]: Prescaler 3, 2, 1 y 0 del temporizador de vigilancia
Los bits WDP [3: 0] determinan el preescalado del temporizador de vigilancia cuando el temporizador de vigilancia está habilitado. Los diferentes valores de preescalado y sus correspondientes períodos de tiempo de espera se muestran en Tabla 8-3.
Tabla 8-3. Selección de preescala del temporizador de vigilancia
WDP3 | WDP2 | WDP1 | WDP0 | Número de ciclos del oscilador WDT | Tiempo 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 segundos |
0 | 1 | 0 | 0 | 32K (32764) ciclos | 0.25 segundos |
0 | 1 | 0 | 1 | 64K (65536) ciclos | 0.5 segundos |
0 | 1 | 1 | 0 | 128K (131072) ciclos | 1.0 segundos |
0 | 1 | 1 | 1 | 256K (262144) ciclos | 2.0 segundos |
1 | 0 | 0 | 0 | 512K (524288) ciclos | 4.0 segundos |
1 | 0 | 0 | 1 | 1024K (1048576) ciclos | 8.0 segundos |
Tabla 8-3. Selección de preescala del temporizador de vigilancia (continuación)
WDP3 | WDP2 | WDP1 | WDP0 | Número de ciclos del oscilador WDT | Tiempo 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. Si se selecciona, se utilizará una de las configuraciones válidas por debajo de 0b1010.
interrupciones
Esta sección describe los detalles del manejo de interrupciones como se realiza en ATtiny25 / 45/85. Para obtener una explicación general del manejo de interrupciones del AVR, consulte “Manejo de reinicio e interrupción” en la página 12.
Vectores de interrupción en ATtiny25 / 45/85
Los vectores de interrupción de ATtiny25 / 45/85 se describen en Tabla 9-1abajo.
Tabla 9-1. Vectores de reinicio e interrupción
número de vector | Dirección del programa | Fuente | Definición de interrupción |
1 | 0x0000 | REINICIAR | Pin externo, reinicio de encendido, reinicio de bajada, reinicio de perro guardián |
2 | 0x0001 | INT0 | Solicitud de interrupción externa 0 |
3 | 0x0002 | PCINT0 | Solicitud de interrupción de cambio de pin 0 |
4 | 0x0003 | TIMER1_COMPA | Temporizador / Contador1 Comparar Partido A |
5 | 0x0004 | TIMER1_OVF | Desbordamiento del temporizador / contador1 |
6 | 0x0005 | TIMER0_OVF | Desbordamiento del temporizador / contador0 |
7 | 0x0006 | EE_RDY | Listo para EEPROM |
8 | 0x0007 | ANA_COMP | Comparador analógico |
9 | 0x0008 | Conductor adverso | Conversión ADC completa |
10 | 0x0009 | TIMER1_COMPB | Temporizador / Contador1 Comparar Partido B |
11 | 0x000A | TIMER0_COMPA | Temporizador / Contador0 Comparar Partido A |
12 | 0x000B | TIMER0_COMPB | Temporizador / Contador0 Comparar Partido B |
13 | 0x000C | Tiempo de Espera | Tiempo de espera del perro guardián |
14 | 0x000D | USI_START | USI INICIO |
15 | 0x000E | USI_OVF | Desbordamiento de USI |
Si el programa nunca habilita una fuente de interrupción, los vectores de interrupción no se utilizan y el código de programa regular se puede colocar en estas ubicaciones.
Una configuración típica y general para direcciones de vector de interrupción en ATtiny25 / 45/85 se muestra en el programa example abajo.
Código de montaje Example | ||
.org 0x0000 | ; Establecer la dirección del siguiente | declaración |
rjmp REINICIAR | ; Dirección 0x0000 | |
rjmp INT0_ISR | ; Dirección 0x0001 | |
rjmpPCINT0_ISR | ; Dirección 0x0002 | |
rjmp TIM1_COMPA_ISR | ; Dirección 0x0003 | |
rjmp TIM1_OVF_ISR | ; Dirección 0x0004 | |
rjmp TIM0_OVF_ISR | ; Dirección 0x0005 | |
rjmpEE_RDY_ISR | ; Dirección 0x0006 | |
rjmp ANA_COMP_ISR | ; Dirección 0x0007 | |
rjmp ADC_ISR | ; Dirección 0x0008 | |
rjmp TIM1_COMPB_ISR | ; Dirección 0x0009 | |
rjmp TIM0_COMPA_ISR | ; Dirección 0x000A | |
rjmp TIM0_COMPB_ISR | ; Dirección 0x000B | |
rjmp WDT_ISR | ; Dirección 0x000C | |
jmp USI_START_ISR | ; Dirección 0x000D | |
jmp USI_OVF_ISR | ; Dirección 0x000E | |
REINICIAR: | ; Inicio del programa principal | |
; Dirección 0x000F | ||
… |
Nota: Ver "Código Examples ”en la página 6.
Interrupciones externas
Las interrupciones externas son activadas por el pin INT0 o cualquiera de los pines PCINT [5: 0]. Observe que, si están habilitadas, las interrupciones se dispararán incluso si los pines INT0 o PCINT [5: 0] están configurados como salidas. Esta función proporciona una forma de generar una interrupción de software. El cambio de pin interrumpe PCI se disparará si se alterna cualquier pin PCINT [5: 0] habilitado. El registro PCMSK controla qué pines contribuyen a las interrupciones de cambio de pines. Las interrupciones de cambio de pin en PCINT [5: 0] se detectan de forma asíncrona. Esto implica que estas interrupciones pueden usarse para reactivar la pieza también de modos de suspensión distintos del modo inactivo.
Las interrupciones INT0 pueden activarse por un flanco ascendente o descendente o un nivel bajo. Esto se configura como se indica en la especificación del Registro de control de MCU - MCUCR. Cuando la interrupción INT0 está habilitada y configurada como disparada por nivel, la interrupción se disparará siempre que el pin se mantenga bajo. Tenga en cuenta que el reconocimiento de interrupciones de flanco ascendente o descendente en INT0 requiere la presencia de un reloj de E / S, descrito en "Sistemas de reloj y su distribución" en Página 23.
Interrupción de nivel bajo
Una interrupción de nivel bajo en INT0 se detecta de forma asíncrona. Esto implica que esta interrupción se puede utilizar para reactivar la pieza también de modos de suspensión distintos del modo inactivo. El reloj de E / S se detiene en todos los modos de suspensión, excepto en el modo inactivo.
Tenga en cuenta que si se utiliza una interrupción activada por nivel para activarse después de un apagado, el nivel requerido debe mantenerse el tiempo suficiente para que la MCU complete la activación para activar la interrupción de nivel. Si el nivel desaparece antes de que finalice el tiempo de inicio, la MCU aún se activará, pero no se generará ninguna interrupción. El tiempo de arranque está definido por los fusibles SUT y CKSEL como se describe en “Reloj del sistema y opciones de reloj” en la página 23.
Si el nivel bajo en el pin de interrupción se elimina antes de que el dispositivo se haya despertado, la ejecución del programa no se desviará a la rutina de servicio de interrupción, sino que continuará desde la instrucción que sigue al comando SLEEP.
Tiempo de interrupción de cambio de pin
Un exampEl diagrama de tiempo de una interrupción de cambio de pin se muestra en Figura 9-1.
Descripción del registro
MCUCR - Registro de control de MCU
El Registro de control de interrupciones externas A contiene bits de control para el control de detección de interrupciones.
Poco | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | CUERPOS | PUD | SE | SM1 | SM0 | CUERPO | ISC01 | ISC00 | MCUCR |
Leer/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 interrupciones 0 Bit 1 y Bit 0
La Interrupción externa 0 es activada por el pin externo INT0 si el indicador I de SREG y la máscara de interrupción correspondiente están configurados. El nivel y los bordes en el pin INT0 externo que activan la interrupción se definen en Tabla 9-2. El valor en el pin INT0 es sampled antes de detectar los bordes. Si se selecciona la interrupción por flanco o palanca, los pulsos que duran más de un período de reloj generarán una interrupción. No se garantiza que los pulsos más cortos generen una interrupción. Si se selecciona una interrupción de bajo nivel, el nivel bajo debe mantenerse hasta que se complete la instrucción que se está ejecutando actualmente para generar una interrupción.
Tabla 9-2. Control de detección de interrupción 0
ISC01 | ISC00 | Descripción |
0 | 0 | El nivel bajo de INT0 genera una solicitud de interrupción. |
0 | 1 | Cualquier cambio lógico en INT0 genera una solicitud de interrupción. |
1 | 0 | El flanco descendente de INT0 genera una solicitud de interrupción. |
1 | 1 | El flanco ascendente de INT0 genera una solicitud de interrupción. |
GIMSK - Registro de máscara de interrupción general
Poco | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3B | – | INT0 | PCIE | – | – | – | – | – | GIMSK |
Leer/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
Estos bits son bits reservados en el ATtiny25 / 45/85 y siempre se leerán como cero.
Bit 6 - INT0: Habilitación de solicitud de interrupción externa 0
Cuando el bit INT0 está establecido (uno) y el bit I en el Registro de estado (SREG) está establecido (uno), la interrupción del pin externo está habilitada. Los bits 0/1 del Control de detección de interrupciones 0 (ISC01 e ISC00) en el Registro de control de MCU (MCUCR) definen si la interrupción externa se activa en el flanco ascendente y / o descendente del pin INT0 o en el nivel detectado. La actividad en el pin provocará una solicitud de interrupción incluso si INT0 está configurado como salida. La correspondiente interrupción de la Solicitud de interrupción externa 0 se ejecuta desde el Vector de interrupción INT0.
Bit 5 - PCIE: Habilitación de interrupción de cambio de pin
Cuando el bit PCIE está establecido (uno) y el bit I en el Registro de estado (SREG) está establecido (uno), la interrupción de cambio de pin está habilitada. Cualquier cambio en cualquier pin PCINT [5: 0] habilitado provocará una interrupción. La interrupción correspondiente de la solicitud de interrupción de cambio de pin se ejecuta desde el vector de interrupción PCI. Los pines PCINT [5: 0] son habilitados individualmente por el Registro PCMSK0.
GIFR - Registro de banderas de interrupción general
Poco | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3A | – | INTF0 | PCIF | – | – | – | – | – | GIFR |
Leer/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
Estos bits son bits reservados en el ATtiny25 / 45/85 y siempre se leerán como cero.
Bit 6 - INTF0: Bandera de interrupción externa 0
Cuando un cambio de flanco o de lógica en el pin INT0 activa una solicitud de interrupción, INTF0 se establece (uno). Si el bit I en SREG y el bit INT0 en GIMSK están establecidos (uno), la MCU saltará al vector de interrupción correspondiente. La bandera se borra cuando se ejecuta la rutina de interrupción. Alternativamente, la bandera se puede borrar escribiéndole una lógica. Esta bandera siempre se borra cuando INT0 se configura como una interrupción de nivel.
Bit 5 - PCIF: Bandera de interrupción de cambio de pin
Cuando un cambio de lógica en cualquier pin PCINT [5: 0] activa una solicitud de interrupción, PCIF se establece (uno). Si el bit I en SREG y el bit PCIE en GIMSK están establecidos (uno), la MCU saltará al vector de interrupción correspondiente. La bandera se borra cuando se ejecuta la rutina de interrupción. Alternativamente, la bandera se puede borrar escribiéndole una lógica.
PCMSK - Registro de máscara de cambio de pin
Poco | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x15 | – | – | PCINT5 | PCINT4 | PCINT3 | PCINT2 | PCINT1 | PCINT0 | PCMSK |
Leer/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
Estos bits son bits reservados en el ATtiny25 / 45/85 y siempre se leerán como cero.
Bits 5: 0 - PCINT [5: 0]: Máscara de habilitación de cambio de pin 5: 0
Cada bit PCINT [5: 0] selecciona si la interrupción de cambio de pin está habilitada en el pin de E / S correspondiente. Si se establece PCINT [5: 0] y se establece el bit PCIE en GIMSK, la interrupción de cambio de pin se habilita en el pin de E / S correspondiente. Si se borra PCINT [5: 0], se deshabilita la interrupción de cambio de pin en el pin de E / S correspondiente.
Puertos de E/S
Introducción
Todos los puertos AVR tienen una verdadera funcionalidad de lectura, modificación y escritura cuando se utilizan como puertos de E / S digitales generales. Esto significa que la dirección de un pin de puerto se puede cambiar sin cambiar involuntariamente la dirección de cualquier otro pin con las instrucciones SBI y CBI. Lo mismo se aplica cuando se cambia el valor del variador (si está configurado como salida) o cuando se habilitan / deshabilitan las resistencias pull-up (si se configuran como entrada). Cada búfer de salida tiene características de unidad simétricas con alta capacidad de sumidero y fuente. El controlador de clavija es lo suficientemente fuerte como para controlar las pantallas LED directamente. Todos los pines del puerto tienen resistencias pull-up seleccionables individualmente con un voltaje de suministrotage resistencia invariante. Todos los pines de E/S tienen diodos de protección tanto para VCC como para tierra, como se indica en Figura 10-1. Consulte “Características eléctricas” en la página 161 para obtener una lista completa de parámetros.
Figura 10-1. Esquema equivalente de pines de E/S
Todos los registros y referencias de bits de esta sección están escritos en forma general. Una “x” minúscula representa la letra de numeración del puerto y una “n” minúscula representa el número de bit. Sin embargo, cuando se utiliza el registro o la definición de bits en un programa, se debe utilizar la forma precisa. Por example, PORTB3 para el bit no. 3 en el puerto B, aquí documentado generalmente como PORTxn. Los registros de E / S físicos y las ubicaciones de los bits se enumeran en "Descripción del registro" en Página 64.
Se asignan tres ubicaciones de direcciones de memoria de E / S para cada puerto, una para el registro de datos: PORTx, el registro de dirección de datos: DDRx y los pines de entrada del puerto: PINx. La ubicación de E / S de los pines de entrada del puerto es de solo lectura, mientras que el registro de datos y el registro de dirección de datos son de lectura / escritura. Sin embargo, escribir un uno lógico en un bit en el registro PINx resultará en un cambio en el bit correspondiente en el registro de datos. Además, el bit Pull-up Disable - PUD en MCUCR deshabilita la función pull-up para todos los pines en todos los puertos cuando se establece.
El uso del puerto de E / S como E / S digital general se describe en “Puertos como E / S digital general” en la página 53. La mayoría de los pines del puerto están multiplexados con funciones alternativas para las funciones periféricas del dispositivo. La forma en que cada función alternativa interfiere con el pin del puerto se describe en “Funciones de puertos alternativos” en la página 57. Consulte las secciones de los módulos individuales para obtener una descripción completa de las funciones alternativas.
Tenga en cuenta que habilitar la función alternativa de algunos de los pines del puerto no afecta el uso de los otros pines del puerto como E / S digital general.
Puertos como E / S digital general
Los puertos son puertos de E / S bidireccionales con pull-ups internos opcionales. Figura 10-2 muestra una descripción funcional de un pin de puerto de E / S, aquí genéricamente llamado Pxn.
Figura 10-2. E/S digitales generales(1)
Configurando el Pin
Cada pin de puerto consta de tres bits de registro: DDxn, PORTxn y PINxn. Como se muestra en "Descripción del registro" en Página 64, se accede a los bits DDxn en la dirección de E / S DDRx, a los bits PORTxn en la dirección de E / S PORTx y a los bits PINxn en la dirección de E / S PINx.
El bit DDxn en el registro DDRx selecciona la dirección de este pin. Si DDxn se escribe como uno lógico, Pxn se configura como un pin de salida. Si DDxn se escribe en cero lógico, Pxn se configura como un pin de entrada.
Si PORTxn se escribe como uno lógico cuando el pin está configurado como pin de entrada, se activa la resistencia pull-up. Para apagar la resistencia pull-up, PORTxn debe escribirse en cero lógico o el pin debe configurarse como un pin de salida. Los pines del puerto tienen tres estados cuando la condición de reinicio se activa, incluso si no hay relojes en funcionamiento.
Si PORTxn está escrito como uno lógico cuando el pin está configurado como pin de salida, el pin del puerto se pone alto (uno). Si PORTxn se escribe en cero lógico cuando el pin está configurado como pin de salida, el pin del puerto se pone bajo (cero).
Alternar el Pin
Escribir uno lógico en PINxn alterna el valor de PORTxn, independientemente del valor de DDRxn. Tenga en cuenta que la instrucción SBI se puede utilizar para alternar un solo bit en un puerto.
Cambio entre entrada y salida
Al cambiar entre tres estados ({DDxn, PORTxn} = 0b00) y salida alta ({DDxn, PORTxn} = 0b11), un estado intermedio con pull-up habilitado {DDxn, PORTxn} = 0b01) o salida baja ({DDxn, PORTxn} = 0b10) debe ocurrir. Normalmente, el estado habilitado de pull-up es completamente aceptable, ya que un entorno de alta impedancia no notará la diferencia entre un controlador alto fuerte y un pull-up. Si este no es el caso, el bit PUD en el registro MCUCR se puede configurar para deshabilitar todos los pull-ups en todos los puertos.
Cambiar entre entrada con pull-up y salida baja genera el mismo problema. El usuario debe usar el estado triple ({DDxn, PORTxn} = 0b00) o el estado alto de salida ({DDxn, PORTxn} = 0b10) como paso intermedio.
Tabla 10-1 resume las señales de control para el valor del pin.
Tabla 10-1. Configuraciones de clavijas de puerto
ddxn | PUERTOxn | PUD
(en MCUCR) |
E/S | Dominadas | Comentario |
0 | 0 | X | Aporte | No | Tri-estado (Hi-Z) |
0 | 1 | 0 | Aporte | Sí | Pxn generará corriente si ext. tirado bajo. |
0 | 1 | 1 | Aporte | No | Tri-estado (Hi-Z) |
1 | 0 | X | Producción | No | Salida baja (fregadero) |
1 | 1 | X | Producción | No | Salida alta (fuente) |
Leer el valor del pin
Independientemente de la configuración del bit de dirección de datos DDxn, el pin del puerto se puede leer a través del bit de registro PINxn. Como se muestra en Figura 10-2, el bit de registro PINxn y el pestillo anterior constituyen un sincronizador. Esto es necesario para evitar la metaestabilidad si el pin físico cambia de valor cerca del borde del reloj interno, pero también introduce un retraso. Figura 10-3 muestra un diagrama de tiempo de la sincronización al leer un valor de pin aplicado externamente. Los retardos de propagación máximo y mínimo se indican como tpd,max y tpd,min respectivamente.
Considere el período de reloj que comienza poco después del primer flanco descendente del reloj del sistema. El pestillo se cierra cuando el reloj está bajo y se vuelve transparente cuando el reloj está alto, como lo indica la región sombreada de la señal "SYNC LATCH". El valor de la señal se bloquea cuando el reloj del sistema baja. Se registra en el registro PINxn en el siguiente flanco positivo del reloj. Como indican las dos flechas tpd, max y tpd, min, una transición de señal única en el pin se retrasará entre ½ y 1½ período de reloj del sistema, dependiendo del tiempo de afirmación.
Al leer un valor de pin asignado por software, se debe insertar una instrucción nop como se indica en Figura 10-4. La instrucción de salida establece la señal "SYNC LATCH" en el borde positivo del reloj. En este caso, el retraso tpd a través del sincronizador es un período de reloj del sistema.
El siguiente código exampEl archivo muestra cómo configurar los pines 0 y 1 del puerto B en alto, 2 y 3 en bajo, y definir los pines del puerto del 4 al 5 como entrada con un pull-up asignado al pin del puerto 4. Los valores de los pines resultantes se vuelven a leer, pero como se mencionó anteriormente, se incluye una instrucción nop para poder leer el valor asignado recientemente a algunos de los pines.
Código de montaje Example(1) |
…
; Defina pull-ups y establezca salidas altas ; Definir direcciones para pines de puerto ldi r16,(1<<PB4)|(1<<PB1)|(1<<PB0) ldi r17,(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0) salida PORTB,r16 fuera DDRB, r17 ; Insertar nop para sincronización no ; Lea los pines del puerto en r16 PINB … |
Nota: Para el programa ensamblador, se utilizan dos registros temporales para minimizar el tiempo desde que se activan los pines 0, 1 y 4, hasta que los bits de dirección se configuran correctamente, definiendo los bits 2 y 3 como bajos y redefiniendo los bits 0 y 1 como conductores altos fuertes.
Código C Example |
char sin firmar i;
… /* Definir pull-ups y establecer salidas altas */ /* Definir direcciones para pines de puerto */ PORTB = (1< DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0); /* Insertar nop para sincronización*/ _NOP (); /* Leer pines del puerto */ i = PINB; … |
Modos de activación y suspensión de entrada digital
Como se muestra en Figura 10-2, la señal de entrada digital puede ser clampconectado a tierra en la entrada del gatillo Schmitt. La señal denominada SLEEP en la figura es configurada por el MCU Sleep Controller en modo Power-down para evitar un alto consumo de energía si algunas señales de entrada se dejan flotando o tienen un nivel de señal analógica cercano a VCC/2.
SLEEP se anula para los pines de puerto habilitados como pines de interrupción externos. Si la solicitud de interrupción externa no está habilitada, SLEEP también está activo para estos pines. SLEEP también es anulado por varias otras funciones alternativas como se describe en “Funciones de puertos alternativos” en la página 57.
Si un nivel lógico alto ("uno") está presente en un pin de interrupción externa asíncrona configurado como "Interrupción en flanco ascendente, flanco descendente o cualquier cambio lógico en el pin" mientras la interrupción externa no está habilitada, el indicador de interrupción externa correspondiente aparecerá. configurarse al reanudar desde el modo de suspensión mencionado anteriormente, ya que el clampEn estos modos de reposo se produce el cambio lógico solicitado.
Pines desconectados
Si algunos pines no se utilizan, se recomienda asegurarse de que estos pines tengan un nivel definido. Aunque la mayoría de las entradas digitales están deshabilitadas en los modos de suspensión profunda como se describe anteriormente, las entradas flotantes deben evitarse para reducir el consumo de corriente en todos los demás modos en los que las entradas digitales están habilitadas (Restablecer, Modo activo y Modo inactivo).
El método más simple para garantizar un nivel definido de un pin no utilizado es habilitar el pull-up interno. En este caso, el pull-up se desactivará durante el reinicio. Si el bajo consumo de energía durante el reinicio es importante, se recomienda utilizar un pull-up o pulldown externo. No se recomienda conectar pines no utilizados directamente a VCC o GND, ya que esto puede causar corrientes excesivas si el pin se configura accidentalmente como una salida.
Funciones de puerto alternativo
La mayoría de los pines del puerto tienen funciones alternativas además de ser E / S digitales generales. Figura 10-5 muestra cómo el pin del puerto controla las señales del simplificado Figura 10-2 puede ser reemplazado por funciones alternativas. Es posible que las señales primarias no estén presentes en todos los pines del puerto, pero la figura sirve como una descripción genérica aplicable a todos los pines del puerto en la familia de microcontroladores AVR.
Tabla 10-2. Descripción genérica de señales de anulación para funciones alternativas
Nombre de la señal | Nombre completo | Descripción |
PUOE | Habilitación de anulación de pull-up | Si se establece esta señal, la habilitación de pull-up se controla mediante la señal PUOV. Si esta señal se borra, el pull-up se habilita cuando
{DDxn, PUERTOxn, PUD} = 0b010. |
PUOV | Valor de anulación de pull-up | Si PUOE está configurado, el pull-up se habilita / deshabilita cuando PUOV se configura / borra, independientemente de la configuración de los bits de registro DDxn, PORTxn y PUD. |
DOE | Habilitar la anulación de la dirección de datos | Si se establece esta señal, la habilitación del controlador de salida se controla mediante la señal DDOV. Si se borra esta señal, el controlador de salida se habilita mediante el bit de registro DDxn. |
DDOV | Valor de anulación de dirección de datos | Si se establece DDOE, el controlador de salida se habilita / deshabilita cuando se establece / borra DDOV, independientemente de la configuración del bit de registro DDxn. |
PVOE | Habilitar la anulación del valor del puerto | Si esta señal está configurada y el controlador de salida está habilitado, el valor del puerto es controlado por la señal PVOV. Si se borra PVOE y el controlador de salida está habilitado, el valor del puerto se controla mediante el bit de registro PORTxn. |
PVOV | Valor de anulación del valor del puerto | Si se establece PVOE, el valor del puerto se establece en PVOV, independientemente de la configuración del bit de registro PORTxn. |
PTO | Habilitación de anulación de cambio de puerto | Si se establece PTOE, el bit de registro PORTxn se invierte. |
DIEOE | Habilitación de entrada digital Habilitación de anulación | Si este bit está establecido, la habilitación de entrada digital es controlada por la señal DIEOV. Si se borra esta señal, la habilitación de entrada digital está determinada por el estado de la MCU (modo normal, modo de suspensión). |
dieov | Valor de anulación de habilitación de entrada digital | Si DIEOE está configurado, la entrada digital se habilita / deshabilita cuando DIEOV se configura / borra, independientemente del estado de la MCU (modo normal, modo de suspensión). |
DI | Entrada digital | Esta es la entrada digital para alternar funciones. En la figura, la señal está conectada a la salida del disparador schmitt pero antes del sincronizador. A menos que la entrada digital se utilice como fuente de reloj, el módulo con la función alternativa utilizará su propio sincronizador. |
Todo en Uno | Entrada / salida analógica | Esta es la entrada / salida analógica hacia / desde funciones alternativas. La señal se conecta directamente al pad y se puede utilizar bidireccionalmente. |
Las siguientes subsecciones describen brevemente las funciones alternativas para cada puerto y relacionan las señales primarias con la función alternativa. Consulte la descripción de la función alternativa para obtener más detalles.
Funciones alternativas del puerto B
Los pines del puerto B con función alternativa se muestran en Tabla 10-3.
Tabla 10-3. Funciones alternativas de los pines del puerto B
Pasador de puerto | Función alternativa |
PB5 | ![]() RESET: Restablecer Pin dW: debugWIRE I / O ADC0: ADC Input Channel 0 PCINT5: Interrupción de cambio de pin, fuente 5 |
PB4 | XTAL2: Salida de oscilador de cristal CLKO: Salida de reloj del sistema ADC2: Canal de entrada 2 de ADC
OC1B: Timer / Counter1 Compare Match B Output PCINT4: Interrupción de cambio de pin 0, Fuente 4 |
PB3 | XTAL1: Entrada de oscilador de cristal CLKI: Entrada de reloj externo ADC3: Canal de entrada ADC 3
OC1B: Temporizador / Contador1 complementario Comparar Salida B PCINT3: Interrupción de cambio de pin 0, Fuente 3 |
PB2 | SCK: Entrada de reloj en serie ADC1: Canal de entrada 1 de ADC
T0: Temporizador / Contador0 Fuente de reloj USCK: Reloj USI (modo de tres cables) SCL: Reloj USI (modo de dos cables) INT0: Entrada de interrupción externa 0 PCINT2: Interrupción de cambio de pin 0, Fuente 2 |
PB1 | MISO: Entrada de datos maestra SPI / Salida de datos esclava AIN1: Comparador analógico, entrada negativa OC0B: Temporizador / Contador0 Salida de comparación B OC1A: Temporizador / Contador1 Salida de comparación A DO: Salida de datos USI (modo de tres cables) PCINT1: Interrupción de cambio de clavija 0, fuente 1 |
PB0 | MOSI :: Salida de datos maestros SPI / Entrada de datos esclavos AIN0: Comparador analógico, entrada positiva
OC0A: Temporizador/Contador0 Compare Match A salida OC1A: Temporizador / Contador1 complementario Compare Match A Output DI: Entrada de datos USI (modo de tres cables) SDA: Entrada de datos USI (modo de dos cables) AREF: Referencia analógica externa PCINT0: Interrupción de cambio de pin 0, Fuente 0 |
Puerto B, Bit 5 - RESET / dW / ADC0 / PCINT5
REINICIO: La entrada de reinicio externo está activa baja y habilitada desprogramando ("1") el fusible RSTDISBL. El pullup se activa y el controlador de salida y la entrada digital se desactivan cuando el pin se usa como pin RESET.
dW: Cuando el fusible debugWIRE Enable (DWEN) está programado y los bits de bloqueo no están programados, se activa el sistema debugWIRE dentro del dispositivo de destino. El pin del puerto RESET está configurado como un pin de E / S bidireccional de cable Y (drenaje abierto) con pull-up habilitado y se convierte en la puerta de enlace de comunicación entre el objetivo y el emulador.
ADC0: Convertidor Analógico a Digital, Canal 0.
PCINT5: Fuente de interrupción de cambio de pin 5.
Puerto B, bit 4 - XTAL2 / CLKO / ADC2 / OC1B / PCINT4
XTAL2: Pin 2 del oscilador de reloj de chip. Se utiliza como pin de reloj para todas las fuentes de reloj de chip, excepto el oscilador RC calibrable interno y el reloj externo. Cuando se usa como un pin de reloj, el pin no se puede usar como un pin de E / S. Cuando se usa un oscilador RC calibrable interno o un reloj externo como fuentes de reloj de chip, PB4 sirve como un pin de E / S ordinario.
CLKO: El reloj del sistema dividido puede salir en el pin PB4. El reloj del sistema dividido se emitirá si se programa el fusible CKOUT, independientemente de los ajustes de PORTB4 y DDB4. También se emitirá durante el reinicio.
ADC2: Convertidor Analógico a Digital, Canal 2.
OC1B: Salida de comparación de coincidencia de salida: El pin PB4 puede servir como salida externa para el temporizador / contador de comparación de comparación B B cuando se configura como una salida (conjunto DDB1). El pin OC4B también es el pin de salida para la función de temporizador del modo PWM.
PCINT4: Fuente de interrupción de cambio de pin 4.
Puerto B, bit 3 - XTAL1 / CLKI / ADC3 / OC1B / PCINT3
XTAL1: Pin 1 del oscilador de reloj de chip. Se utiliza para todas las fuentes de reloj de chip excepto el oscilador RC calibrable interno. Cuando se usa como un pin de reloj, el pin no se puede usar como un pin de E / S.
CLKI: Entrada de reloj desde una fuente de reloj externa, consulte “Reloj externo” en la página 26.
ADC3: Convertidor Analógico a Digital, Canal 3.
OC1B: Salida de coincidencia de comparación de salida invertida: El pin PB3 puede servir como salida externa para Timer / Counter1 Compare Match B cuando se configura como una salida (conjunto DDB3). El pin OC1B también es el pin de salida invertido para la función de temporizador del modo PWM.
PCINT3: Fuente de interrupción de cambio de pin 3.
Puerto B, bit 2 - SCK / ADC1 / T0 / USCK / SCL / INT0 / PCINT2
SCK: Salida de reloj maestro, pin de entrada de reloj esclavo para canal SPI. Cuando el SPI está habilitado como esclavo, este pin se configura como una entrada independientemente de la configuración de DDB2. Cuando el SPI está habilitado como maestro, la dirección de datos de este pin está controlada por DDPB2. Cuando el pin es forzado por el SPI a ser una entrada, el bit PORTB2 aún puede controlar el pull-up.
ADC1: Convertidor Analógico a Digital, Canal 1.
T0: Fuente de contador Timer / Counter0.
USCK: Reloj de interfaz serie universal de modo de tres cables.
SCL: Reloj serial en modo de dos hilos para el modo USI de dos hilos.
INT0: Fuente de interrupción externa 0.
PCINT2: Fuente de interrupción de cambio de pin 2.
Puerto B, bit 1 - MISO / AIN1 / OC0B / OC1A / DO / PCINT1
MISO: Entrada de datos maestros, pin de salida de datos esclavos para el canal SPI. Cuando el SPI está habilitado como maestro, este pin se configura como una entrada independientemente de la configuración de DDB1. Cuando el SPI está habilitado como esclavo, la dirección de datos de este pin es controlada por DDB1. Cuando el pin es forzado por el SPI a ser una entrada, el bit PORTB1 aún puede controlar el pull-up.
AIN1: Entrada negativa del comparador analógico. Configure el pin del puerto como entrada con el pull-up interno apagado para evitar que la función del puerto digital interfiera con la función del comparador analógico.
OC0B: Salida de comparación de salida. El pin PB1 puede servir como una salida externa para el Timer / Counter0 Compare Match B. El pin PB1 debe configurarse como una salida (DDB1 set (uno)) para cumplir esta función. El pin OC0B también es el pin de salida para la función de temporizador del modo PWM.
OC1A: Salida de comparación de coincidencia de salida: El pin PB1 puede servir como salida externa para el temporizador / contador de comparación de comparación B B cuando se configura como salida (conjunto DDB1). El pin OC1A también es el pin de salida para la función de temporizador del modo PWM.
HACER: Salida de datos de interfaz serie universal en modo de tres cables. Modo de tres cables La salida de datos anula el valor PORTB1 y se dirige al puerto cuando el bit de dirección de datos DDB1 está establecido (uno). PORTB1 aún habilita el pull-up, si se ingresa la dirección y PORTB1 está configurado (uno).
PCINT1: Fuente de interrupción de cambio de pin 1.
Puerto B, bit 0 - MOSI / AIN0 / OC0A / OC1A / DI / SDA / AREF / PCINT0
MOSI: salida de datos maestros SPI, entrada de datos esclavos para el canal SPI. Cuando el SPI está habilitado como esclavo, este pin se configura como una entrada independientemente de la configuración de DDB0. Cuando el SPI está habilitado como maestro, la dirección de datos de este pin está controlada por DDB0. Cuando el pin es forzado por el SPI a ser una entrada, el bit PORTB0 aún puede controlar el pull-up.
AIN0: Entrada positiva del comparador analógico. Configure el pin del puerto como entrada con el pull-up interno apagado para evitar que la función del puerto digital interfiera con la función del comparador analógico.
OC0A: Salida de comparación de salida. El pin PB0 puede servir como una salida externa para el Timer / Counter0 Compare Match A cuando se configura como una salida (DDB0 set (one)). El pin OC0A también es el pin de salida para la función de temporizador del modo PWM.
OC1A: Salida de coincidencia de comparación de salida invertida: El pin PB0 puede servir como una salida externa para Timer / Counter1 Compare Match B cuando se configura como una salida (conjunto DDB0). El pin OC1A también es el pin de salida invertido para la función de temporizador del modo PWM.
SDA: Datos de interfaz serie en modo de dos cables.
AREF: Referencia analógica externa para ADC. El pullup y el controlador de salida están desactivados en PB0 cuando el pin se usa como referencia externa o Internal Voltage Referencia con condensador externo en el pin AREF.
DI: Entrada de datos en modo USI de tres hilos. El modo USI de tres cables no anula las funciones normales del puerto, por lo que el pin debe configurarse como entrada para la función DI.
PCINT0: Fuente de interrupción de cambio de pin 0.
Tabla 10-4 y Tabla 10-5 relacionar las funciones alternativas del puerto B con las señales primordiales que se muestran en Figura 10-5 en Página 58.
Tabla 10-4. Anulación de señales para funciones alternativas en PB[5:3]
Nombre de la señal | PB5 / RESET / ADC0 / PCINT5 | PB4/ADC2/XTAL2/ OC1B/PCINT4 | PB3/ADC3/XTAL1/ OC1B/PCINT3 |
PUOE | ![]() |
0 | 0 |
PUOV | 1 | 0 | 0 |
DOE | RSTDISBL(1) • DWEN(1) | 0 | 0 |
DDOV | transmisión por cable de depuración | 0 | 0 |
PVOE | 0 | Activar OC1B | ![]() Activar OC1B |
PVOV | 0 | OC1B | OC1B |
PTO | 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 |
Todo en Uno | Entrada RESET, entrada ADC0 | Entrada ADC2 | Entrada ADC3 |
Nota: cuando el Fusible es “0” (Programado).
Tabla 10-5. Anulación de señales para funciones alternativas en PB[2:0]
Nombre de la señal | 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 |
DOE | USI_TWO_WIRE | 0 | USI_TWO_WIRE |
DDOV | (USI_SCL_HOLD + PORTB2) • DDB2 | 0 | ![]() ![]() (SDA + PUERTO B0) • DDB0 |
PVOE | USI_DOS_CABLES • DDB2 | OC0B Habilitar + OC1A Habilitar + USI_THREE_WIRE | ![]() OC0A Habilitar + OC1A Habilitar + (USI_TWO_WIRE DDB0) |
PVOV | 0 | OC0B + OC1A + HACER | ![]() OC0A + OC1A |
PTO | Comisión Internacional de Comercio de los Estados Unidos | 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 |
Todo en Uno | Entrada ADC1 | Entrada negativa del comparador analógico | Entrada positiva del comparador analógico |
Descripción del registro
MCUCR - Registro de control de MCU
Poco | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | CUERPOS | PUD | SE | SM1 | SM0 | CUERPO | ISC01 | ISC00 | MCUCR |
Leer/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: Deshabilitar pull-up
Cuando este bit se escribe en uno, los pull-ups en los puertos de E / S se desactivan incluso si los registros DDxn y PORTxn están configurados para habilitar los pull-ups ({DDxn, PORTxn} = 0b01). Ver “Configuración del PIN” en la página 54 para obtener más detalles sobre esta función.
PORTB - Registro de datos del puerto B
Poco | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x18 | – | – | PUERTOB5 | PUERTOB4 | PUERTOB3 | PUERTOB2 | PUERTOB1 | PUERTOB0 | PUERTOB |
Leer/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 - Registro de dirección de datos del puerto B
Poco | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x17 | – | – | DDB5 | DDB4 | DDB3 | DDB2 | DDB1 | DDB0 | DDRB |
Leer/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 - Dirección de pines de entrada del puerto B
Poco | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x16 | – | – | PINB5 | PINB4 | PINB3 | PINB2 | PINB1 | PINB0 | PINB |
Leer/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 / Contador8 de 0 bits con PWM
Características
Dos unidades de comparación de salida independientes
Registros de comparación de salida con doble búfer
Borrar temporizador en comparación de coincidencias (recarga automática)
Modulador de ancho de pulso (PWM) sin fallos y corrección de fase
Período de PWM variable
Generador de frecuencia
Tres fuentes de interrupción independientes (TOV0, OCF0A y OCF0B)
Encimaview
Timer / Counter0 es un módulo de temporizador / contador de 8 bits de uso general, con dos unidades de comparación de salida independientes y con soporte PWM. Permite una sincronización precisa de la ejecución del programa (gestión de eventos) y la generación de ondas.
Un diagrama de bloques simplificado del temporizador / contador de 8 bits se muestra en Figura 11-1. Para conocer la ubicación real de los pines de E / S, consulte “Pinout ATtiny25 / 45/85” en la página 2. Los registros de E / S accesibles a la CPU, incluidos los bits de E / S y los pines de E / S, se muestran en negrita. El registro de E / S específico del dispositivo y las ubicaciones de los bits se enumeran en la “Descripción del registro” en la página 77.
El temporizador/contador (TCNT0) y los registros de comparación de salida (OCR0A y OCR0B) son registros de 8 bits. Las señales de solicitud de interrupción (abreviadas como Int.Req. en la figura) son todas visibles en el registro de indicadores de interrupción del temporizador (TIFR). Todas las interrupciones se enmascaran individualmente con el registro de máscara de interrupción del temporizador (TIMSK). TIFR y TIMSK no se muestran en la figura.
El temporizador/contador se puede sincronizar internamente, a través del preescalador o mediante una fuente de reloj externa en el pin T0. El bloque lógico Clock Select controla qué fuente de reloj y flanco usa el temporizador/contador para incrementar (o disminuir) su valor. El temporizador/contador está inactivo cuando no se selecciona ninguna fuente de reloj. La salida de la lógica de selección de reloj se denomina reloj temporizador (clkT0).
Los registros de comparación de salida de doble búfer (OCR0A y OCR0B) se comparan con el valor del temporizador / contador en todo momento. El generador de forma de onda puede utilizar el resultado de la comparación para generar una salida de frecuencia variable o PWM en los pines de comparación de salida (OC0A y OC0B). Consulte “Unidad de comparación de salida” en la página 69. para detalles. El evento Compare Match también establecerá el indicador de comparación (OCF0A o OCF0B) que se puede utilizar para generar una solicitud de interrupción de comparación de salida.
Definiciones
Muchas referencias de registros y bits en esta sección están escritas en forma general. Una "n" minúscula reemplaza el número de temporizador / contador, en este caso 0. Una "x" minúscula reemplaza la unidad de comparación de salida, en este caso la unidad de comparación A o la unidad de comparación B. Sin embargo, cuando se usa el registro o el bit se define en un programa, se debe utilizar la forma precisa, es decir, TCNT0 para acceder al valor del contador Timer / Counter0 y así sucesivamente.
Las definiciones en Tabla 11-1 también se utilizan ampliamente en todo el documento.
Tabla 11-1. Definiciones
Constante | Descripción |
ABAJO | El contador llega a la PARTE INFERIOR cuando se convierte en 0x00 |
MÁXIMO | El contador alcanza su MÁXIMO cuando se convierte en 0xFF (decimal 255) |
ARRIBA | El contador llega al TOP cuando se vuelve igual al valor más alto en la secuencia de conteo. El valor TOP se puede asignar como el valor fijo 0xFF (MAX) o el valor almacenado en el Registro OCR0A. La asignación depende del modo de funcionamiento. |
Temporizador / Contador Prescaler y fuentes de reloj
El temporizador / contador puede sincronizarse mediante una fuente de reloj interna o externa. La fuente de reloj se selecciona mediante la lógica de selección de reloj que está controlada por los bits de selección de reloj (c) ubicados en el registro de control de temporizador / contador0 (TCCR0B).
Fuente de reloj interno con preescalador
El reloj del sistema puede sincronizar el temporizador/contador 0 directamente (configurando CS0[2:0] = 1). Esto proporciona la operación más rápida, con una frecuencia de reloj de temporizador/contador máxima igual a la frecuencia de reloj del sistema (fCLK_I/O). Alternativamente, uno de los cuatro toques del prescaler se puede usar como fuente de reloj. El reloj preescalado tiene una frecuencia de
Restablecimiento del preescaler
El preescaler funciona libremente, es decir, funciona independientemente de la lógica de selección de reloj de Timer / Counter0. Dado que el preescalador no se ve afectado por la selección del reloj del temporizador / contador, el estado del preescalador tendrá implicaciones para situaciones en las que se utilice un reloj preescalado. Un exampEl archivo de un artefacto de preescalado es cuando el temporizador / contador está habilitado y sincronizado por el preescalador (6> CS0 [2: 0]> 1). El número de ciclos de reloj del sistema desde que se habilita el temporizador hasta que se produce el primer recuento puede ser de 1 a N + 1 ciclos de reloj del sistema, donde N es igual al divisor del preescalador (8, 64, 256 o 1024).
Es posible utilizar el restablecimiento del preescalador para sincronizar el temporizador / contador con la ejecución del programa.
Fuente de reloj externa
Una fuente de reloj externa aplicada al pin T0 se puede usar como temporizador/contador de reloj (clkT0). El pin T0 es sampLED una vez en cada ciclo de reloj del sistema por la lógica de sincronización de pines. El sincronizado (sampled) la señal se pasa
a través del detector de bordes. Figura 11-2 muestra un diagrama de bloques funcional equivalente de la sincronización T0 y la lógica del detector de bordes. Los registros están cronometrados en el flanco positivo del reloj del sistema interno (clkI/O). El pestillo es transparente en el período alto del reloj del sistema interno.
El detector de borde genera un pulso clkT0 por cada borde positivo (CS0[2:0] = 7) o negativo (CS0[2:0] = 6) que detecta.
Los registros OCR0x tienen doble búfer cuando se utiliza cualquiera de los modos de modulación de ancho de pulso (PWM). Para los modos de operación normal y Clear Timer on Compare (CTC), el doble búfer está deshabilitado. El doble búfer sincroniza la actualización de los registros de comparación OCR0x en la parte superior o inferior de la secuencia de conteo. La sincronización evita la aparición de pulsos PWM no simétricos y de longitud impar, lo que hace que la salida no tenga fallas.
El acceso al Registro OCR0x puede parecer complejo, pero este no es el caso. Cuando el doble búfer está habilitado, la CPU tiene acceso al registro de búfer OCR0x, y si el doble búfer está inhabilitado, la CPU accederá al OCR0x directamente.
Comparación de salida de fuerza
En los modos de generación de formas de onda que no son PWM, la salida de coincidencia del comparador se puede forzar escribiendo uno en el bit Force Output Compare (FOC0x). Forzar la coincidencia de comparación no establecerá el indicador OCF0x ni recargará / borrará el temporizador, pero el pin OC0x se actualizará como si hubiera ocurrido una coincidencia de comparación real (la configuración de bits COM0x [1: 0] define si el pin OC0x está configurado, borrado o alternado).
Comparar el bloqueo de coincidencias por escritura TCNT0
Todas las operaciones de escritura de la CPU en el registro TCNT0 bloquearán cualquier coincidencia de comparación que ocurra en el siguiente ciclo de reloj del temporizador, incluso cuando el temporizador está detenido. Esta función permite que OCR0x se inicialice al mismo valor que TCNT0 sin activar una interrupción cuando el temporizador / contador está habilitado.
Uso de la unidad de comparación de salida
Dado que escribir TCNT0 en cualquier modo de operación bloqueará todas las coincidencias de comparación para un ciclo de reloj del temporizador, existen riesgos involucrados al cambiar TCNT0 cuando se usa la unidad de comparación de salida, independientemente de si el temporizador / contador está funcionando o no. Si el valor escrito en TCNT0 es igual al valor OCR0x, se perderá la coincidencia de comparación, lo que resultará en una generación incorrecta de la forma de onda. De manera similar, no escriba el valor TCNT0 igual a BOTTOM cuando el contador está contando hacia abajo.
La configuración del OC0x debe realizarse antes de configurar el Registro de dirección de datos para la salida del pin del puerto. La forma más sencilla de establecer el valor OC0x es utilizar los bits estroboscópicos Force Output Compare (FOC0x) en el modo Normal. Los registros OC0x mantienen sus valores incluso al cambiar entre los modos de generación de forma de onda.
Tenga en cuenta que los bits COM0x [1: 0] no tienen doble búfer junto con el valor de comparación. El cambio de los bits COM0x [1: 0] entrará en vigor inmediatamente.
Comparar unidad de salida de coincidencia
Los bits del modo de salida de comparación (COM0x [1: 0]) tienen dos funciones. El generador de forma de onda utiliza los bits COM0x [1: 0] para definir el estado de comparación de salida (OC0x) en la siguiente comparación de comparación. Además, los bits COM0x [1: 0] controlan la fuente de salida del pin OC0x. Figura 11-6 muestra un esquema simplificado de la lógica afectada por la configuración del bit COM0x [1: 0]. Los registros de E / S, los bits de E / S y los pines de E / S de la figura se muestran en negrita. Solo se muestran las partes de los registros de control de puertos de E / S generales (DDR y PORT) que se ven afectadas por los bits COM0x [1: 0]. Cuando se hace referencia al estado OC0x, la referencia es para el registro OC0x interno, no para el pin OC0x. Si se produce un reinicio del sistema, el Registro OC0x se reinicia a "0".
Cuando OC0A / OC0B está conectado al pin de E / S, la función de los bits COM0A [1: 0] / COM0B [1: 0] depende de la configuración del bit WGM0 [2: 0]. Tabla 11-2 muestra la funcionalidad del bit COM0x [1: 0] cuando los bits WGM0 [2: 0] se establecen en un modo normal o CTC (no PWM).
Tabla 11-2. Comparar modo de salida, modo no PWM
COM0A1 COM0B1 | COM0A0 COM0B0 | Descripción |
0 | 0 | Funcionamiento normal del puerto, OC0A / OC0B desconectado. |
0 | 1 | Alternar OC0A / OC0B en Comparar coincidencia |
1 | 0 | Borrar OC0A / OC0B en Comparar coincidencia |
1 | 1 | Establecer OC0A / OC0B en Comparar coincidencia |
Tabla 11-3 muestra la funcionalidad del bit COM0x [1: 0] cuando los bits WGM0 [2: 0] están configurados en el modo PWM rápido.
Tabla 11-3. Comparar modo de salida, modo PWM rápido(1)
COM0A1 COM0B1 | COM0A0 COM0B0 | Descripción |
0 | 0 | Funcionamiento normal del puerto, OC0A / OC0B desconectado. |
0 | 1 | Reservado |
1 | 0 | Borre OC0A / OC0B en Compare Match, configure OC0A / OC0B en BOTTOM (modo sin inversión) |
1 | 1 | Configure OC0A / OC0B en Compare Match, borre OC0A / OC0B en BOTTOM (modo de inversión) |
Nota: Se produce un caso especial cuando OCR0A u OCR0B es igual a TOP y se establece COM0A1/COM0B1. En este caso, la coincidencia de comparación se ignora, pero el establecimiento o borrado se realiza en ABAJO. Ver “Modo PWM rápido” en la página 73 Para más detalles.
Tabla 11-4 muestra la funcionalidad del bit COM0x [1: 0] cuando los bits WGM0 [2: 0] están configurados en el modo PWM de corrección de fase.
Tabla 11-4. Comparar modo de salida, modo PWM de corrección de fase(1)
COM0A1 COM0B1 | COM0A0 COM0B0 | Descripción |
0 | 0 | Funcionamiento normal del puerto, OC0A / OC0B desconectado. |
0 | 1 | Reservado |
1 | 0 | Borre OC0A / OC0B en Comparar coincidencia al realizar el conteo progresivo. Configure OC0A / OC0B en Comparar coincidencia cuando realice el conteo regresivo. |
1 | 1 | Configure OC0A / OC0B en Comparar coincidencia al realizar el conteo progresivo. Borre OC0A / OC0B en Comparar coincidencia al realizar el conteo regresivo. |
Nota: 1. Se produce un caso especial cuando OCR0A u OCR0B es igual a TOP y se establece COM0A1/COM0B1. En este caso, la comparación de coincidencias se ignora, pero el establecimiento o la eliminación se realizan en TOP. Ver “Modo PWM de corrección de fase” en la página 74 Para más detalles.
Bits 3: 2 - Res: Bits reservados
Estos bits son bits reservados en el ATtiny25 / 45/85 y siempre se leerán como cero.
Bits 1: 0 - WGM0 [1: 0]: Modo de generación de forma de onda
Combinados con el bit WGM02 que se encuentra en el registro TCCR0B, estos bits controlan la secuencia de conteo del contador, la fuente del valor máximo del contador (TOP) y qué tipo de generación de forma de onda se utilizará, consulte Tabla 11-5. Los modos de funcionamiento admitidos por la unidad Timer / Counter son: modo normal (contador), modo Clear Timer en el modo Compare Match (CTC) y dos tipos de modos de Pulse Width Modulation (PWM) (consulte "Modos de operacion" En la página 71).
Tabla 11-5. Bit de modo de generación de forma de onda Descripción
Modo | WGM 02 | WGM 01 | WGM 00 | Modo de funcionamiento del temporizador / contador | ARRIBA | Actualización de OCRx en | Bandera TOV activada |
0 | 0 | 0 | 0 | Normal | 0xFF | Inmediato | MÁXIMO(1) |
1 | 0 | 0 | 1 | PWM, corrección de fase | 0xFF | ARRIBA | ABAJO(2) |
2 | 0 | 1 | 0 | CTC | OCRA | Inmediato | MÁXIMO(1) |
3 | 0 | 1 | 1 | PWM rápido | 0xFF | ABAJO(2) | MÁXIMO(1) |
4 | 1 | 0 | 0 | Reservado | – | – | – |
5 | 1 | 0 | 1 | PWM, corrección de fase | OCRA | ARRIBA | ABAJO(2) |
6 | 1 | 1 | 0 | Reservado | – | – | – |
7 | 1 | 1 | 1 | PWM rápido | OCRA | ABAJO(2) | ARRIBA |
Bit 7 - FOC0A: Salida forzada Comparar A
El bit FOC0A solo está activo cuando los bits WGM especifican un modo no PWM.
Sin embargo, para garantizar la compatibilidad con dispositivos futuros, este bit debe establecerse en cero cuando se escribe TCCR0B cuando se opera en modo PWM. Al escribir uno lógico en el bit FOC0A, se fuerza una coincidencia de comparación inmediata en la unidad de generación de forma de onda. La salida OC0A se cambia de acuerdo con su configuración de bits COM0A [1: 0]. Tenga en cuenta que el bit FOC0A se implementa como una luz estroboscópica. Por tanto, es el valor presente en los bits COM0A [1: 0] el que determina el efecto de la comparación forzada.
Una luz estroboscópica FOC0A no generará ninguna interrupción, ni borrará el temporizador en modo CTC usando OCR0A como TOP. El bit FOC0A siempre se lee como cero.
Bit 6 - FOC0B: Comparación de salida forzada B
El bit FOC0B solo está activo cuando los bits WGM especifican un modo no PWM.
Sin embargo, para garantizar la compatibilidad con dispositivos futuros, este bit debe establecerse en cero cuando se escribe TCCR0B cuando se opera en modo PWM. Al escribir uno lógico en el bit FOC0B, se fuerza una coincidencia de comparación inmediata en la unidad de generación de forma de onda. La salida OC0B se cambia de acuerdo con su configuración de bits COM0B [1: 0]. Tenga en cuenta que el bit FOC0B se implementa como una luz estroboscópica. Por tanto, es el valor presente en los bits COM0B [1: 0] el que determina el efecto de la comparación forzada.
Una luz estroboscópica FOC0B no generará ninguna interrupción, ni borrará el temporizador en modo CTC usando OCR0B como TOP.
El bit FOC0B siempre se lee como cero.
Bits 5: 4 - Res: Bits reservados
Estos bits son bits reservados en el ATtiny25 / 45/85 y siempre se leerán como cero.
Bit 3 - WGM02: Modo de generación de forma de onda
Vea la descripción en el “TCCR0A - Registro A de control de temporizador / contador” en la página 77.
Bits 2: 0 - CS0 [2: 0]: Selección de reloj
Los tres bits de selección de reloj seleccionan la fuente de reloj que utilizará el temporizador / contador.
Tabla 11-6. Bit de selección de reloj Descripción
CS02 | CS01 | CS00 | Descripción |
0 | 0 | 0 | Sin fuente de reloj (temporizador / contador detenido) |
0 | 0 | 1 | clkI/O/(Sin preescalado) |
0 | 1 | 0 | clkI/O/8 (Desde el preescalador) |
0 | 1 | 1 | clkI/O/64 (Desde el preescalador) |
1 | 0 | 0 | clkI/O/256 (Desde el preescalador) |
1 | 0 | 1 | clkI/O/1024 (Desde el preescalador) |
1 | 1 | 0 | Fuente de reloj externa en el pin T0. Reloj en borde descendente. |
1 | 1 | 1 | Fuente de reloj externa en el pin T0. Reloj en flanco ascendente. |
Si se utilizan modos de clavija externa para el temporizador / contador0, las transiciones en la clavija T0 registrarán el contador incluso si la clavija está configurada como salida. Esta característica permite el control por software del conteo.
Unidades de contador y comparación
El funcionamiento general del Timer / Contador1 se describe en el modo asíncrono y el funcionamiento en el modo síncrono se menciona sólo si existen diferencias entre estos dos modos. Figura 12-2 muestra el diagrama de bloques del registro de sincronización del temporizador / contador 1 y los retardos de sincronización entre registros. Tenga en cuenta que todos los detalles de la recopilación del reloj no se muestran en la figura. Los valores del registro Timer / Counter1 pasan por los registros de sincronización internos, lo que provoca el retardo de sincronización de entrada, antes de afectar la operación del contador. Los registros TCCR1, GTCCR, OCR1A, OCR1B y OCR1C se pueden leer inmediatamente después de escribir el registro. Los valores de lectura se retrasan para el registro del temporizador / contador1 (TCNT1) y los indicadores (OCF1A, OCF1B y TOV1), debido a la sincronización de entrada y salida.
El temporizador / contador1 presenta una alta resolución y un uso de alta precisión con las menores oportunidades de preescalado. También puede admitir dos moduladores de ancho de pulso precisos, de alta velocidad y de 8 bits que utilizan velocidades de reloj de hasta 64 MHz (o 32 MHz en el modo de baja velocidad). En este modo, el Timer / Contador1 y los registros de comparación de salida sirven como PWM independientes duales con salidas no invertidas e invertidas que no se superponen. Referirse a Página 86 para obtener una descripción detallada de esta función. De manera similar, las altas oportunidades de preescalado hacen que esta unidad sea útil para funciones de velocidad más baja o funciones de sincronización exacta con acciones poco frecuentes.
Figura 12-2. Diagrama de bloques del registro de sincronización del temporizador/contador 1.
El temporizador / contador1 y el preescalador permiten ejecutar la CPU desde cualquier fuente de reloj mientras el preescalador está funcionando en el reloj PCK rápido de 64 MHz (o 32 MHz en el modo de baja velocidad) en el modo asíncrono.
Tenga en cuenta que la frecuencia del reloj del sistema debe ser inferior a un tercio de la frecuencia PCK. El mecanismo de sincronización del temporizador / contador1 asíncrono necesita al menos dos flancos del PCK cuando el reloj del sistema es alto. Si la frecuencia del reloj del sistema es demasiado alta, existe el riesgo de que se pierdan datos o valores de control.
La siguiente Figura 12-3 muestra el diagrama de bloques para Timer / Counter1.
Tabla 12-1. Selección de modo de comparación en modo PWM
COM1x1 | COM1x0 | Efecto en los pines de comparación de salida |
0 | 0 | OC1x no conectado. OC1x no conectado. |
0 | 1 | OC1x se borró en la comparación de coincidencias. Establecer cuandoTCNT1 = $ 00. OC1x configurado en comparación. Borrado cuando TCNT1 = $ 00. |
1 | 0 | OC1x se borró en la comparación de coincidencias. Establecer cuando TCNT1 = $ 00. OC1x no conectado. |
1 | 1 | OC1x Activado en comparación. Borrado cuando TCNT1 = $ 00. OC1x no conectado. |
Características de ADC
Tabla 21-8. Características del ADC, canales de un solo extremo. TA = -40°C a +85°C
Símbolo | Parámetro | Condición | Mínimo | Tipo | Máximo | Unidades |
Resolución | 10 | Pedazos | ||||
Precisión absoluta (incluidos INL, DNL y errores de cuantificación, ganancia y compensación) | VREF = 4V, VCC = 4V,
Reloj ADC = 200 kHz |
2 | LSB | |||
VREF = 4V, VCC = 4V,
Reloj ADC = 1 MHz |
3 | LSB | ||||
VREF = 4V, VCC = 4V,
Reloj ADC = 200 kHz Modo de reducción de ruido |
1.5 | LSB | ||||
VREF = 4V, VCC = 4V,
Reloj ADC = 1 MHz Modo de reducción de ruido |
2.5 | LSB | ||||
No linealidad integral (INL) (precisión después de la calibración de compensación y ganancia) | VREF = 4V, VCC = 4V,
Reloj ADC = 200 kHz |
1 | LSB | |||
No linealidad diferencial (DNL) | VREF = 4V, VCC = 4V,
Reloj ADC = 200 kHz |
0.5 | LSB | |||
Error de ganancia | VREF = 4V, VCC = 4V,
Reloj ADC = 200 kHz |
2.5 | LSB | |||
Error de Compensación | VREF = 4V, VCC = 4V,
Reloj ADC = 200 kHz |
1.5 | LSB | |||
Tiempo de conversión | Conversión de ejecución gratuita | 14 | 280 | µs | ||
Frecuencia de reloj | 50 | 1000 | kHz | |||
Número de bastidor | Vol de entradatage | Tierra | VREF | V | ||
Ancho de banda de entrada | 38.4 | kHz | ||||
ARÉF | Vol de referencia externatage | 2.0 | CCV | V | ||
Vint | Vol internotage Referencia | 1.0 | 1.1 | 1.2 | V | |
Referencia interna de 2.56 V (1) | CCV > 3.0 V | 2.3 | 2.56 | 2.8 | V | |
RREF | 32 | kW | ||||
LLUVIA | Resistencia de entrada analógica | 100 | MΩ | |||
Salida ADC | 0 | 1023 | LSB |
Nota: 1. Los valores son solo orientativos.
Tabla 21-9. Características del ADC, Canales Diferenciales (Modo Unipolar). TA = -40°C a +85°C
Símbolo | Parámetro | Condición | Mínimo | Tipo | Máximo | Unidades |
Resolución | Ganancia = 1x | 10 | Pedazos | |||
Ganancia = 20x | 10 | Pedazos | ||||
Precisión absoluta (incluidos INL, DNL y
Errores de cuantificación, ganancia y compensación) |
Ganancia = 1x
VREF = 4V, VCC = 5V Reloj ADC = 50-200 kHz |
10.0 | LSB | |||
Ganancia = 20x
VREF = 4V, VCC = 5V Reloj ADC = 50-200 kHz |
20.0 | LSB | ||||
No linealidad integral (INL) (precisión después de la calibración de compensación y ganancia) | Ganancia = 1x
VREF = 4V, VCC = 5V Reloj ADC = 50-200 kHz |
4.0 | LSB | |||
Ganancia = 20x
VREF = 4V, VCC = 5V Reloj ADC = 50-200 kHz |
10.0 | LSB | ||||
Error de ganancia | Ganancia = 1x | 10.0 | LSB | |||
Ganancia = 20x | 15.0 | LSB | ||||
Error de Compensación | Ganancia = 1x
VREF = 4V, VCC = 5V Reloj ADC = 50-200 kHz |
3.0 | LSB | |||
Ganancia = 20x
VREF = 4V, VCC = 5V Reloj ADC = 50-200 kHz |
4.0 | LSB | ||||
Tiempo de conversión | Conversión de ejecución gratuita | 70 | 280 | µs | ||
Frecuencia de reloj | 50 | 200 | kHz | |||
Número de bastidor | Vol de entradatage | Tierra | CCV | V | ||
VDIFF | Voltaje diferencial de entradatage | VREF/Ganancia | V | |||
Ancho de banda de entrada | 4 | kHz | ||||
ARÉF | Vol de referencia externatage | 2.0 | CCV-1.0 | V | ||
Vint | Vol internotage Referencia | 1.0 | 1.1 | 1.2 | V | |
Referencia interna de 2.56 V (1) | CCV > 3.0 V | 2.3 | 2.56 | 2.8 | V | |
RREF | Resistencia de entrada de referencia | 32 | kW | |||
LLUVIA | Resistencia de entrada analógica | 100 | MΩ | |||
Salida de conversión ADC | 0 | 1023 | LSB |
Nota: Los valores son solo orientativos.
Tabla 21-10. Características ADC, Canales Diferenciales (Modo Bipolar). TA = -40°C a +85°C
Símbolo | Parámetro | Condición | Mínimo | Tipo | Máximo | Unidades |
Resolución | Ganancia = 1x | 10 | Pedazos | |||
Ganancia = 20x | 10 | Pedazos | ||||
Precisión absoluta (incluidos INL, DNL y
Errores de cuantificación, ganancia y compensación) |
Ganancia = 1x
VREF = 4V, VCC = 5V Reloj ADC = 50-200 kHz |
8.0 | LSB | |||
Ganancia = 20x
VREF = 4V, VCC = 5V Reloj ADC = 50-200 kHz |
8.0 | LSB | ||||
No linealidad integral (INL) (precisión después de la calibración de compensación y ganancia) | Ganancia = 1x
VREF = 4V, VCC = 5V Reloj ADC = 50-200 kHz |
4.0 | LSB | |||
Ganancia = 20x
VREF = 4V, VCC = 5V Reloj ADC = 50-200 kHz |
5.0 | LSB | ||||
Error de ganancia | Ganancia = 1x | 4.0 | LSB | |||
Ganancia = 20x | 5.0 | LSB | ||||
Error de Compensación | Ganancia = 1x
VREF = 4V, VCC = 5V Reloj ADC = 50-200 kHz |
3.0 | LSB | |||
Ganancia = 20x
VREF = 4V, VCC = 5V Reloj ADC = 50-200 kHz |
4.0 | LSB | ||||
Tiempo de conversión | Conversión de ejecución gratuita | 70 | 280 | µs | ||
Frecuencia de reloj | 50 | 200 | kHz | |||
Número de bastidor | Vol de entradatage | Tierra | CCV | V | ||
VDIFF | Voltaje diferencial de entradatage | VREF/Ganancia | V | |||
Ancho de banda de entrada | 4 | kHz | ||||
ARÉF | Vol de referencia externatage | 2.0 | CCV-1.0 | V | ||
Vint | Vol internotage Referencia | 1.0 | 1.1 | 1.2 | V | |
Referencia interna de 2.56 V (1) | CCV > 3.0 V | 2.3 | 2.56 | 2.8 | V | |
RREF | Resistencia de entrada de referencia | 32 | kW | |||
LLUVIA | Resistencia de entrada analógica | 100 | MΩ | |||
Salida de conversión ADC | -512 | 511 | LSB |
Resumen del conjunto de instrucciones
Mnemotécnica | Operandos | Descripción | Operación | Banderas | #Relojes |
INSTRUCCIONES ARITMÉTICAS Y LÓGICAS | |||||
AGREGAR | Rd, Rr | Agregar dos registros | Rd ← Rd + Rr | Z, C, N, V, H | 1 |
Conductor adverso | Rd, Rr | Agregar con llevar dos registros | Rd ← Rd + Rr + C | Z, C, N, V, H | 1 |
ADIW | Rdl, K | Agregar inmediato a Word | Rdh:Rdl ← Rdh:Rdl + K | Z, C, N, V, S | 2 |
SUB | Rd, Rr | Restar dos registros | Rd ← Rd – Rr | Z, C, N, V, H | 1 |
SUBI | Rd, K. | Restar constante del registro | Rd ← Rd – K | Z, C, N, V, H | 1 |
CBC | Rd, Rr | Restar con llevar dos registros | Rd ← Rd – Rr – C | Z, C, N, V, H | 1 |
CISB | Rd, K. | Restar con la constante de acarreo de Reg. | Rd ← Rd – K – C | Z, C, N, V, H | 1 |
SBIW | Rdl, K | Restar inmediato de Word | Rdh:Rdl ← Rdh:Rdl – K | Z, C, N, V, S | 2 |
Y | Rd, Rr | Registros AND lógicos | Rd ← Rd ∙ Rr | Z, N, V | 1 |
Y yo | Rd, K. | Registro AND lógico y constante | Rd ← Rd ∙ K | Z, N, V | 1 |
OR | Rd, Rr | Registros lógicos OR | Rd ← Rd v Rr | Z, N, V | 1 |
ORI | Rd, K. | Registro OR lógico y constante | Rd ← Rd contra K | Z, N, V | 1 |
Reforma de recuperación | Rd, Rr | Registros OR exclusivos | Rd ← Rd ⊕ Rr | Z, N, V | 1 |
COM | Rd | Complemento de uno | Rd ← 0xFF − Rd | Z, C, N, V | 1 |
NEG | Rd | Complemento a dos | Rd ← 0x00 − Rd | Z, C, N, V, H | 1 |
SBR | Rd, K | Establecer bit (s) en el registro | Rd ← Rd contra K | Z, N, V | 1 |
CBR | Rd, K | Borrar bit (s) en el registro | Rd ← Rd ∙ (0xFF – K) | Z, N, V | 1 |
Cª | Rd | Incremento | Rd ← Rd + 1 | Z, N, V | 1 |
DIC | Rd | Decremento | Rd ← Rd − 1 | Z, N, V | 1 |
TST | Rd | Prueba de cero o menos | Rd ← Rd ∙ Rd | Z, N, V | 1 |
CLR | Rd | Borrar registro | Rd ← Rd ⊕ Rd | Z, N, V | 1 |
SER | Rd | Establecer registro | Rd ← 0xFF | Ninguno | 1 |
INSTRUCCIONES DE SUCURSAL | |||||
RJMP | k | Salto relativo | PC ← PC + k + 1 | Ninguno | 2 |
IJMP | Salto indirecto a (Z) | ordenador personal ← Z | Ninguno | 2 | |
LLAMADA | k | Llamada de subrutina relativa | PC ← PC + k + 1 | Ninguno | 3 |
YO LO LLAMO | Llamada indirecta a (Z) | ordenador personal ← Z | Ninguno | 3 | |
RETIRADO | Retorno de subrutina | PC ← APILAMIENTO | Ninguno | 4 | |
REDES | Interrumpir retorno | PC ← APILAMIENTO | I | 4 | |
CPSE | Rd, Rr | Comparar, omitir si es igual | si (Rd = Rr) PC ← PC + 2 o 3 | Ninguno | 1/2/3 |
CP | Rd, Rr | Comparar | Rd-Rr | Z, N, V, C, H | 1 |
PCCh | Rd, Rr | Comparar con llevar | Rd − Rr − C | Z, N, V, C, H | 1 |
IPC | Rd, K | Comparar Registrarse con Inmediato | Rd − K | Z, N, V, C, H | 1 |
Sociedad Civil Británica | r, b | Omitir si se borró el bit en el registro | si (Rr(b)=0) PC ← PC + 2 o 3 | Ninguno | 1/2/3 |
SBR | r, b | Omitir si el bit en el registro está configurado | si (Rr(b)=1) PC ← PC + 2 o 3 | Ninguno | 1/2/3 |
SBIC | pag, b | Omitir si se borró el bit en el registro de E / S | si (P(b)=0) PC ← PC + 2 o 3 | Ninguno | 1/2/3 |
SBI | pag, b | Omitir si el bit en el registro de E / S está configurado | si (P(b)=1) PC ← PC + 2 o 3 | Ninguno | 1/2/3 |
BRBS | s,k | Rama si se estableció el indicador de estado | si (SREG(s) = 1) entonces PC←PC+k + 1 | Ninguno | 1/2 |
BRBC | s,k | Bifurcar si se borró la bandera de estado | si (SREG(s) = 0) entonces PC←PC+k + 1 | Ninguno | 1/2 |
BREQ | k | Ramificar si es igual | si (Z = 1) entonces PC ← PC + k + 1 | Ninguno | 1/2 |
BRNE | k | Ramificar si no es igual | si (Z = 0) entonces PC ← PC + k + 1 | Ninguno | 1/2 |
BRCS | k | Rama si se lleva el juego | si (C = 1) entonces PC ← PC + k + 1 | Ninguno | 1/2 |
CCBR | k | Bifurcar si se lleva autorizado | si (C = 0) entonces PC ← PC + k + 1 | Ninguno | 1/2 |
BRSH | k | Rama si es igual o superior | si (C = 0) entonces PC ← PC + k + 1 | Ninguno | 1/2 |
BRLO | k | Bifurcar si es más bajo | si (C = 1) entonces PC ← PC + k + 1 | Ninguno | 1/2 |
BRMI | k | Rama si menos | si (N = 1) entonces PC ← PC + k + 1 | Ninguno | 1/2 |
BRPL | k | Rama si es Plus | si (N = 0) entonces PC ← PC + k + 1 | Ninguno | 1/2 |
BRGE | k | Rama si es mayor o igual, firmada | si (N ⊕ V= 0) entonces PC ← PC + k + 1 | Ninguno | 1/2 |
BRLT | k | Rama si es menor que cero, firmado | si (N ⊕ V= 1) entonces PC ← PC + k + 1 | Ninguno | 1/2 |
BRHS | k | Conjunto de bandera de rama si medio transporte | si (H = 1) entonces PC ← PC + k + 1 | Ninguno | 1/2 |
BRHC | k | Bifurcar si la bandera de medio transporte está despejada | si (H = 0) entonces PC ← PC + k + 1 | Ninguno | 1/2 |
BRTS | k | Bifurcación si conjunto de banderas T | si (T = 1) entonces PC ← PC + k + 1 | Ninguno | 1/2 |
BRTC | k | Bifurcar si se borra la bandera T | si (T = 0) entonces PC ← PC + k + 1 | Ninguno | 1/2 |
BRVS | k | Bifurcar si se establece el indicador de desbordamiento | si (V = 1) entonces PC ← PC + k + 1 | Ninguno | 1/2 |
BRVC | k | Bifurcar si se borra el indicador de desbordamiento | si (V = 0) entonces PC ← PC + k + 1 | Ninguno | 1/2 |
QUESO BRIE | k | Bifurcar si la interrupción está habilitada | si (I = 1) entonces PC ← PC + k + 1 | Ninguno | 1/2 |
NOVIA | k | Rama si la interrupción está deshabilitada | si (I = 0) entonces PC ← PC + k + 1 | Ninguno | 1/2 |
INSTRUCCIONES DE PRUEBA BIT Y BIT | |||||
OSE | P, b | Establecer bit en el registro de E / S | E/S(P,b) ← 1 | Ninguno | 2 |
CBI | P, b | Borrar bit en el registro de E / S | E/S(P,b) ← 0 | Ninguno | 2 |
LSL | Rd | Desplazamiento lógico hacia la izquierda | Rd(n+1) ← Rd(n), Rd(0) ← 0 | Z, C, N, V | 1 |
LSR | Rd | Desplazamiento lógico hacia la derecha | Rd(n) ← Rd(n+1), Rd(7) ← 0 | Z, C, N, V | 1 |
ROL | Rd | Girar a la izquierda a través del transporte | Rd(0)←C,Rd(n+1)← Rd(n),C←Rd(7) | Z, C, N, V | 1 |
ROR | Rd | Girar a la derecha a través del transporte | Rd(7)←C,Rd(n)← Rd(n+1),C←Rd(0) | Z, C, N, V | 1 |
ASR | Rd | Desplazamiento aritmético a la derecha | Rd(n) ← Rd(n+1), n=0..6 | Z, C, N, V | 1 |
Mnemotécnica | Operandos | Descripción | Operación | Banderas | #Relojes |
INTERCAMBIO | Rd | Intercambiar Nibbles | Rd(3..0)←Rd(7..4),Rd(7..4)←Rd(3..0) | Ninguno | 1 |
BSET | s | Bandera, conjunto | SREG(s) ← 1 | SREG (s) | 1 |
BCLR | s | Marcar Borrar | SREG(s) ← 0 | SREG (s) | 1 |
BST | r, b | Bit Store de Register a T | T ← Rr(b) | T | 1 |
BLD | Rd, b | Carga de bits de T al registro | Rd(b) ← T | Ninguno | 1 |
SEGUNDO | Establecer llevar | C ← 1 | C | 1 | |
CVX | Transporte claro | C ← 0 | C | 1 | |
SEN | Establecer bandera negativa | norte ← 1 | N | 1 | |
CLN | Bandera negativa clara | norte ← 0 | N | 1 | |
Zona económica especial | Establecer bandera cero | Z ← 1 | Z | 1 | |
CLZ | Bandera cero claro | Z ← 0 | Z | 1 | |
SEI | Habilitación de interrupción global | yo ← 1 | I | 1 | |
CLI | Desactivación de interrupción global | yo ← 0 | I | 1 | |
SES | Establecer bandera de prueba firmada | S ← 1 | S | 1 | |
CLS | Bandera de prueba clara firmada | S ← 0 | S | 1 | |
SEV | Establecer dos complementos de desbordamiento. | V ← 1 | V | 1 | |
VLC | Desbordamiento del complemento de dos claros | V ← 0 | V | 1 | |
COLOCAR | Establecer T en SREG | T ← 1 | T | 1 | |
CLT | Borrar T en SREG | T ← 0 | T | 1 | |
SEH | Establecer la bandera de medio transporte en SREG | H ← 1 | H | 1 | |
CLH | Bandera de medio transporte transparente en SREG | H ← 0 | H | 1 | |
INSTRUCCIONES DE TRANSFERENCIA DE DATOS | |||||
Movimiento | Rd, Rr | Moverse entre registros | Rd ← Rr | Ninguno | 1 |
MOVW | Rd, Rr | Copiar palabra de registro | Rd+1:Rd ← Rr+1:Rr | Ninguno | 1 |
LDI | Rd, K. | Carga inmediata | Rd ← K | Ninguno | 1 |
LD | Rd, X | Carga indirecta | Rd ← (X) | Ninguno | 2 |
LD | Rd, X + | Carga indirecta y post-inc. | Rd ← (X), X ← X + 1 | Ninguno | 2 |
LD | Rd, - X | Carga indirecta y pre-dic. | X ← X – 1, Rd ← (X) | Ninguno | 2 |
LD | Rd, Y | Carga indirecta | Rd ← (Y) | Ninguno | 2 |
LD | Rd, Y + | Carga indirecta y post-inc. | Rd ← (Y), Y ← Y + 1 | Ninguno | 2 |
LD | Rd, - Y | Carga indirecta y pre-dic. | Y ← Y – 1, Rd ← (Y) | Ninguno | 2 |
LDD | Rd, Y + q | Carga indirecta con desplazamiento | Rd ← (Y + q) | Ninguno | 2 |
LD | Calle, Z | Carga indirecta | Rd ← (Z) | Ninguno | 2 |
LD | Rd, Z + | Carga indirecta y post-inc. | Rd ← (Z), Z ← Z+1 | Ninguno | 2 |
LD | Rd, -Z | Carga indirecta y pre-dic. | Z ← Z – 1, Rd ← (Z) | Ninguno | 2 |
LDD | Rd, Z + q | Carga indirecta con desplazamiento | Rd ← (Z + q) | Ninguno | 2 |
SUD | Rd,k | Cargar directamente desde SRAM | Rd ← (k) | Ninguno | 2 |
ST | X, Rr | Almacenar indirecto | (X) ← R | Ninguno | 2 |
ST | X +, Rr | Store Indirect y Post-Inc. | (X) ← Rr, X ← X + 1 | Ninguno | 2 |
ST | - X, Rr | Almacenar indirectamente y antes de diciembre. | X ← X – 1, (X) ← Rr | Ninguno | 2 |
ST | Y, rr | Almacenar indirecto | (Y) ← Rr | Ninguno | 2 |
ST | Y +, Rr | Store Indirect y Post-Inc. | (Y) ← Rr, Y ← Y + 1 | Ninguno | 2 |
ST | - Y, Rr | Almacenar indirectamente y antes de diciembre. | Y ← Y – 1, (Y) ← Rr | Ninguno | 2 |
ETS | Y + q, Rr | Almacenar indirectamente con desplazamiento | (Y + q) ← Rr | Ninguno | 2 |
ST | Z, Rr | Almacenar indirecto | (Z) ← R | Ninguno | 2 |
ST | Z +, Rr | Store Indirect y Post-Inc. | (Z) ← Rr, Z ← Z + 1 | Ninguno | 2 |
ST | -Z, Rr | Almacenar indirectamente y antes de diciembre. | Z ← Z – 1, (Z) ← Rr | Ninguno | 2 |
ETS | Z + q, Rr | Almacenar indirectamente con desplazamiento | (Z + q) ← Rr | Ninguno | 2 |
Sistema de transmisión de señales (STS) | k, rr | Almacenar directamente en SRAM | (k) ← Rr | Ninguno | 2 |
LPM | Cargar memoria de programa | R0 ← (Z) | Ninguno | 3 | |
LPM | Calle, Z | Cargar memoria de programa | Rd ← (Z) | Ninguno | 3 |
LPM | Rd, Z + | Cargar memoria de programa y Post-Inc | Rd ← (Z), Z ← Z+1 | Ninguno | 3 |
SPM | Almacenar memoria de programa | (z) ← R1:R0 | Ninguno | ||
IN | Rd, P. | En el puerto | Rd ← P | Ninguno | 1 |
AFUERA | P, Rr | Puerto de salida | P ← Rr | Ninguno | 1 |
EMPUJAR | Rr | Empuje el registro en la pila | PILA ← Rr | Ninguno | 2 |
ESTALLIDO | Rd | Registro emergente de la pila | Rd ← APILAMIENTO | Ninguno | 2 |
INSTRUCCIONES DE CONTROL MCU | |||||
NOP | Sin operación | Ninguno | 1 | ||
DORMIR | Dormir | (ver descripción específica para la función de suspensión) | Ninguno | 1 | |
Amplio rango dinámico (WDR) | Reinicio del perro guardián | (ver descripción específica para WDR / Timer) | Ninguno | 1 | |
ROMPER | Romper |
Velocidad (MHz) (1) | Vol de suministrotagmi (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 | ATtiny45-20PU |
8S2 | ATtiny45-20SU ATtiny45-20SUR
ATtiny45-20SH ATtiny45-20SHR |
|||
8X | ATtiny45-20XU ATtiny45-20XUR | |||
20M1 | ATtiny45-20MU ATtiny45-20MUR |
Notas: 1. Para velocidad vs.volumen de suministrotage, ver sección 21.3 “Velocidad” en la página 163.
Todos los envases están libres de Pb, haluros y totalmente ecológicos y cumplen con la directiva europea de restricción de sustancias peligrosas (RoHS).
Indicadores de código
H: acabado de plomo NiPdAu
U: estaño mate
R: cinta y carrete
Estos dispositivos también se pueden suministrar en forma de obleas. Comuníquese con su oficina de ventas local de Atmel para obtener información detallada sobre pedidos y cantidades mínimas.
Erratas
Fe de erratas ATtiny25
La letra de revisión en esta sección se refiere a la revisión del dispositivo ATtiny25.
Rev D - F
No se conocen erratas.
Rev B - C
La lectura de EEPROM puede fallar a bajo voltaje de suministrotage / frecuencia de reloj baja
La lectura de EEPROM puede fallar a bajo voltaje de suministrotage / frecuencia de reloj baja
Tratando de leer EEPROM a bajas frecuencias de reloj y / o bajo voltaje de suministrotage puede resultar en datos no válidos.
Solución de problemas / solución alternativa
No utilice la EEPROM cuando la frecuencia del reloj sea inferior a 1MHz y suministre voltage está por debajo de 2V. Si la frecuencia de funcionamiento no se puede elevar por encima de 1 MHz, suministre voltage debe ser superior a 2V. Del mismo modo, si el suministro voltagNo se puede elevar por encima de 2 V, por lo que la frecuencia de funcionamiento debe ser superior a 1 MHz.
Se sabe que esta característica depende de la temperatura, pero no se ha caracterizado. Las pautas se dan solo para temperatura ambiente.
Rev A
No sampLED.
Fe de erratas ATtiny45
La letra de revisión en esta sección se refiere a la revisión del dispositivo ATtiny45.
Rev F - G
Sin erratas conocidas
Rev D - E
La lectura de EEPROM puede fallar a bajo voltaje de suministrotage / frecuencia de reloj baja
La lectura de EEPROM puede fallar a bajo voltaje de suministrotage / frecuencia de reloj baja
Tratando de leer EEPROM a bajas frecuencias de reloj y / o bajo voltaje de suministrotage puede resultar en datos no válidos.
Solución de problemas / solución alternativa
No utilice la EEPROM cuando la frecuencia del reloj sea inferior a 1MHz y suministre voltage está por debajo de 2V. Si la frecuencia de funcionamiento no se puede elevar por encima de 1 MHz, suministre voltage debe ser superior a 2V. Del mismo modo, si el suministro voltagNo se puede elevar por encima de 2 V, por lo que la frecuencia de funcionamiento debe ser superior a 1 MHz.
Se sabe que esta característica depende de la temperatura, pero no se ha caracterizado. Las pautas se dan solo para temperatura ambiente.
Rev B - C
PLL no se bloquea
La lectura de EEPROM del código de la aplicación no funciona en el modo de bit de bloqueo 3
La lectura de EEPROM puede fallar a bajo voltaje de suministrotage / frecuencia de reloj baja
La generación de salida PWM del contador de temporizador 1 en OC1B- XOC1B no funciona correctamente
PLL no se bloquea
Cuando en frecuencias por debajo de 6.0 MHz, el PLL no se bloqueará
Solución de problemas / solución alternativa
Cuando utilice PLL, hágalo funcionar a 6.0 MHz o más.
La lectura de EEPROM del código de la aplicación no funciona en el modo de bit de bloqueo 3
Cuando los bits de bloqueo de memoria LB2 y LB1 se programan en el modo 3, la lectura de EEPROM no funciona desde el código de aplicación.
Solución de problemas / solución alternativa
No configure el Modo de protección de bit de bloqueo 3 cuando el código de la aplicación deba leerse desde EEPROM.
La lectura de EEPROM puede fallar a bajo voltaje de suministrotage / frecuencia de reloj baja
Tratando de leer EEPROM a bajas frecuencias de reloj y / o bajo voltaje de suministrotage puede resultar en datos no válidos.
Solución de problemas / solución alternativa
No utilice la EEPROM cuando la frecuencia del reloj sea inferior a 1MHz y suministre voltage está por debajo de 2V. Si la frecuencia de funcionamiento no se puede elevar por encima de 1 MHz, suministre voltage debe ser superior a 2V. Del mismo modo, si el suministro voltagNo se puede elevar por encima de 2 V, por lo que la frecuencia de funcionamiento debe ser superior a 1 MHz.
Se sabe que esta característica depende de la temperatura, pero no se ha caracterizado. Las pautas se dan solo para temperatura ambiente.
Temporizador Contador 1 generación de salida PWM en OC1B - XOC1B no funciona correctamente
Timer Counter1 La salida PWM OC1B-XOC1B no funciona correctamente. Solo en el caso de que los bits de control, COM1B1 y COM1B0 estén en el mismo modo que COM1A1 y COM1A0, respectivamente, la salida OC1B-XOC1B funciona correctamente.
Solución de problemas / solución alternativa
La única solución es utilizar la misma configuración de control en los bits de control COM1A [1: 0] y COM1B [1: 0], consulte la tabla 14-4 en la hoja de datos. El problema se ha solucionado para Tiny45 rev D.
Rev A
Consumo de energía demasiado alto
DebugWIRE pierde la comunicación cuando se interrumpe de forma individual
PLL no se bloquea
La lectura de EEPROM del código de la aplicación no funciona en el modo de bit de bloqueo 3
La lectura de EEPROM puede fallar a bajo voltaje de suministrotage / frecuencia de reloj baja
Consumo de energía demasiado alto
Tres situaciones conducirán a un consumo de energía demasiado alto. Estos son:
Un reloj externo se selecciona mediante fusibles, pero el PUERTO DE E / S todavía está habilitado como salida.
La EEPROM se lee antes de entrar en apagado.
VCC es de 4.5 voltios o más.
Descargo de responsabilidad: La información de este documento se proporciona en relación con los productos de Atmel. No se otorga ninguna licencia, expresa o implícita, por impedimento legal o de otro modo, a ningún derecho de propiedad intelectual mediante este documento o en relación con la venta de productos Atmel. EXCEPTO LO ESTABLECIDO EN LOS TÉRMINOS Y CONDICIONES DE VENTAS DE ATMEL UBICADOS EN EL ATMEL WEBSITIO WEB, ATMEL NO ASUME NINGUNA RESPONSABILIDAD Y RENUNCIA A CUALQUIER GARANTÍA EXPRESA, IMPLÍCITA O LEGAL RELACIONADA CON SUS PRODUCTOS, INCLUYENDO, ENTRE OTROS, LA GARANTÍA IMPLÍCITA DE COMERCIABILIDAD, IDONEIDAD PARA UN FIN DETERMINADO O NO VIOLACIÓN. EN NINGÚN CASO ATMEL SERÁ RESPONSABLE DE CUALQUIER DAÑO DIRECTO, INDIRECTO, CONSECUENTE, PUNITIVO, ESPECIAL O INCIDENTAL (INCLUYENDO, SIN LIMITACIÓN, DAÑOS POR PÉRDIDAS Y BENEFICIOS, INTERRUPCIÓN DEL NEGOCIO O PÉRDIDA DE INFORMACIÓN) QUE SURJAN DEL USO O LA INCAPACIDAD DE USO ESTE DOCUMENTO, INCLUSO SI ATMEL HA SIDO ADVERTIDO DE LA POSIBILIDAD DE TALES DAÑOS.
Atmel no hace representaciones ni garantías con respecto a la exactitud o integridad del contenido de este documento y se reserva el derecho de realizar cambios en las especificaciones y descripciones de los productos en cualquier momento sin previo aviso. Atmel no se compromete a actualizar la información aquí contenida. A menos que se indique específicamente lo contrario, los productos de Atmel no son adecuados y no deben utilizarse en aplicaciones automotrices. Los productos de Atmel no están destinados, autorizados ni garantizados para su uso como componentes en aplicaciones destinadas a soportar o sostener la vida.