Generación de Reloj y Modos de Operación 193
Organización de la Interfaz SPI en los AVR 209
Registros para el Manejo de la Interfaz SPI 214
Formato de los Paquetes de Dirección 223
Transmisión Completa: Dirección y Datos 224
Modo Esclavo Transmisor 239
Interfaz y Manejo de Dispositivos Externos 273
Prólogo
Introducción a los Microcontroladores
- Sistemas Electrónicos
- Controladores y Microcontroladores
- Microprocesadores y Microcontroladores
- FPGAs y Microcontroladores
- Organización de los Microcontroladores
- La Unidad Central de Procesamiento (CPU)
- Sistema de Memoria
- Oscilador
- Temporizador/Contador
- Perro Guardián (WDT, watchdog timer)
- Puerto Serie
- Entradas/Salidas Digitales
- Entradas/Salidas Analógicas
- Clasificación de los Microcontroladores
- Criterios para la Selección de los Elementos de Procesamiento
- Ejercicios
Estos elementos de procesamiento a veces se denominan Tarjeta de control del sistema o simplemente Controlador. La Figura 1.3 muestra la organización general de una FPGA, donde se puede ver una disposición matricial de bloques lógicos configurables (CLB, configurable logic block) rodeados por bloques de entrada/salida (IOB, input/output block), además de los recursos necesarios para conectar CLB a IOB o entre CLB. La organización de FPGA hace que el proceso de desarrollo del sistema sea más complejo y requiera más tiempo en relación con el uso de microcontroladores.
Trabajamos a altas velocidades, para que el usuario perciba el efecto de un programa completo y no de instrucciones individuales. Esto afecta el rendimiento de las computadoras, ya que una instrucción requiere un ciclo de reloj largo o múltiples ciclos de reloj para ejecutarse. Por el contrario, el hardware de un procesador RISC es tan simple que puede implementarse en una fracción del área que ocupa un procesador CISC en un circuito integrado.
Organización de los Microntroladores AVR de ATMEL
- Características Generales
- El Núcleo AVR
- Ejecución de Instrucciones
- Archivo de Registros
- Memoria de Programa
- Memoria de Datos
- Espacio de SRAM
- Espacio de EEPROM
- Puertos de Entrada/Salida
- Sistema de Interrupciones
- Manejo de Interrupciones
- Inicialización del Sistema (reset)
- Reloj del Sistema
- Resonador Cerámico o Cristal Externo
- Cristal de Baja Frecuencia Externo
- Oscilador RC Externo
- Oscilador RC Calibrado Interno
- Reloj Externo
- Modos de Bajo Consumo de Energía
- Ejercicios
La Figura 2.2 muestra la apariencia externa de ambos dispositivos, considerando un encapsulado PDIP. Esto se muestra en la Figura 2.9, donde se observa que los registros tienen una dirección en el espacio de datos. La Tabla 2.3 muestra parte de los registros de E/S, el mapa completo se encuentra en el Apéndice A.
La tabla 2.1 mostró las direcciones de los vectores de interrupción en un ATMega8 y en la tabla 2.2 las direcciones de un ATMega16. La Figura 2.17 muestra un estado de inicialización debido a una reducción de voltaje (Brown out) en el terminal de alimentación (VCC). La Tabla 2.6 presenta 6 combinaciones de fusibles CKSEL para esta configuración de reloj, de 1010 a 1111.
La Tabla 2.10 muestra el rango de frecuencia para cada una de las combinaciones. La Tabla 2.12 muestra las combinaciones de fusibles CKSEL para usar el oscilador interno.
Programación de los Microcontroladores
- Repertorio de Instrucciones
- Instrucciones Aritméticas y Lógicas
- Instrucciones para el Control de Flujo
- Instrucciones de Transferencia de Datos
- Instrucciones para el Manejo de Bits
- Instrucciones Especiales
- Modos de Direccionamiento
- Direccionamiento Directo por Registro
- Direccionamiento Directo a Registros I/O
- Direccionamiento Directo a Memoria de Datos
- Direccionamiento Indirecto a Memoria de Datos
- Direccionamiento Indirecto a Memoria de Código
- Direccionamiento Inmediato
- Direccionamientos en Bifurcaciones
- Programación en Lenguaje Ensamblador
- Directiva INCLUDE
- Directivas CSEG, DSEG y ESEG
- Directiva DB y DW
- Directiva EQU
- Directiva ORG
- Directivas HIGH y LOW
- Directiva BYTE
- Programación en Lenguaje C
- Tipos de Datos
- Operadores Lógicos y para el Manejo de Bits
- Tipos de Memoria
- Programas de Ejemplo
- Parpadeo de un LED
- Decodificador de Binario a 7 Segmentos
- Diseño de una ALU de 4 Bits
- Relación entre Lenguaje C y Ensamblador
- Ejercicios
Este grupo también incluye las instrucciones de lógica binaria que se muestran en la Tabla 3.5 (requieren 2 operandos). CBR Rd, k Establezca los bits indicados en constante Rd = Rd AND (0xFF – k) en nivel bajo. La Tabla 3.8 muestra las instrucciones de salto incondicional, que no modifican las banderas.
En cuanto al manejo de rutinas, las instrucciones se presentan en la tabla 3.9. Dentro del grupo existen 3 pautas para la comparación de datos, estas se presentan en la tabla 3.10. La instrucción se muestra en la Tabla 3.14 y su ejecución toma solo 1 ciclo de reloj.
La Tabla 3.16 muestra las instrucciones de acceso a la pila, que también se ejecutan en 2 ciclos de reloj. En este grupo se encuentran las instrucciones para desplazamientos y rotaciones que se muestran en la tabla 3.19. Estas instrucciones se muestran en la Tabla 3.21, se ejecutan en 2 ciclos de reloj y tampoco modifican las banderas.
Estas instrucciones se muestran en la Tabla 3.22, se ejecutan en 1 ciclo de reloj y es obvio que la instrucción de almacenamiento cambia el bit T. Las instrucciones en la Tabla 3.23 están ordenadas por ubicación de bit en SREG, de más significativas a menos significativas. importante. La Tabla 3.24 muestra y describe estas instrucciones, la última listada no está en ATMega8 porque no tiene un recurso JTAG.
La Figura 3.4 ilustra el modo: hay 5 bits para el registro general (R), por lo que se puede usar cualquiera de ellos y 6 bits para especificar el registro de E/S (P) al que también se puede hacer referencia. de los 64 registros de E/S. La Figura 3.11 muestra cómo se organizan las instrucciones que utilizan este modo de direccionamiento. Para leer y cambiar estas variables, se puede utilizar el código que se muestra en la Sección 2.4.2.
Interrupciones Externas, Temporizadores y PWM
- Interrupciones Externas
- Configuración de las Interrupciones Externas
- Habilitación y Estado de las Interrupciones Externas
- Ejemplos de Uso de Interrupciones Externas
- Temporizadores
- Eventos de los Temporizadores
- Respuesta a los Eventos
- Pre-escalador
- Temporización Externa
- Registros Compartidos por los Temporizadores
- Organización y Registros del Temporizador 0
- Organización y Registros del Temporizador 1
- Organización y Registros del Temporizador 2
- Ejemplos de Uso de los Temporizadores
- Modulación por Ancho de Pulso (PWM)
- Generación de PWM con los Microcontroladores AVR
- PWM Rápido
- PWM con Fase Correcta
- PWM con Fase y Frecuencia Correcta
- El Temporizador 0 y la Generación de PWM
- El Temporizador 1 y la Generación de PWM
- El Temporizador 2 y la Generación de PWM
- Ejemplos de Uso de las Señales PWM
- Ejercicios
La Tabla 4.2 muestra los eventos que generan estas interrupciones según el valor de los bits de configuración. La conmutación de salida se realiza en un ISR para que el programa principal esté inactivo. Como ejemplo, la Tabla 4.5 muestra una secuencia de comandos que esperan un evento de desbordamiento del temporizador 0.
La Figura 4.9 muestra cómo elegir entre un oscilador externo o la señal del reloj interno. La Tabla 4.7 muestra los cuatro modos posibles de generación de formas de onda, determinados por los bits WGM0[1:0]. La selección de la señal de reloj está determinada por los bits CSO[2:0], que se describen en la tabla 4.9.
El funcionamiento de los conectores OC1A/OC1B en modos PWM se describe en el apartado 4.3. La selección de la señal de reloj está determinada por los bits CS1[2:0], que se describen en la Tabla 4.12. La Tabla 4.13 muestra los 4 posibles modos de generación de formas de onda especificados por los bits WGM2[1:0].
La selección de la señal de reloj está determinada por los bits CS2[2:0], que se describen en la Tabla 4.15. El tiempo de procesamiento se dedica a sondear y borrar el indicador de desbordamiento. La Tabla 4.17 muestra los modos PWM que se pueden generar con cada temporizador.
La Figura 4.19 muestra las señales generadas en modo PWM con la fase y frecuencia correctas. En ambos modos PWM, los bits COM0[1:0] determinan el comportamiento de la salida OC0; este comportamiento se describe en la tabla 4.19. En ambos modos PWM, los bits COM2[1:0] determinan el comportamiento de la salida OC2; este comportamiento se describe en la tabla 4.23.
Recursos para el Manejo de Información Analógica
- Convertidor Analógico a Digital
- Proceso de Conversión Analógico a Digital
- Hardware para la Conversión Digital a Analógico
- Hardware para la Conversión Analógico a Digital
- El ADC de un AVR
- Registros para el Manejo del ADC
- Ejemplos de Uso del Convertidor Analógico a Digital
- Comparador Analógico
- Organización del Comparador Analógico
- Registros para el Manejo del AC
- Ejemplos de uso del Comparador Analógico
- Ejercicios
La Figura 5.2 muestra los pasos involucrados en el proceso de conversión de analógico a digital. Se toman 10 muestras de una señal analógica y se utilizan 3 bits para la cuantificación. La Figura 5.4 muestra la disposición de un ADC de aproximación sucesiva de 4 bits. Los bits MUX[4:0] son parte del registro ADMUX, este es un registro de E/S disponible para la gestión de ADC y se describe en la siguiente sección.
Debido a que hay menos opciones en un ATMega8, el bit MUX(4) no está implementado. La Tabla 5.1 muestra la selección de entrada para el ADC de un ATMega8 y la tabla 5.2 para un ATMega16. Los AVR incluyen un preescalador de 7 bits para generar la frecuencia operativa del ADC en función de la frecuencia del microcontrolador. Esto se muestra en la Figura 5.6. El ADC y el multiplexor de selección de entrada analógica reciben su energía del terminal AVcc.
El DAC requiere un voltaje de referencia (VREF), que puede ser proporcionado desde varias fuentes, como se muestra en la Figura 5.8, la selección de VREF se realiza mediante los bits REFS1 y REFS0 del registro ADMUX. La tensión de referencia se puede obtener de la fuente de alimentación analógica (AVcc), de una tensión interna o del terminal AREF, en la tabla 5.4 se muestra la selección de estas fuentes. El preescalador ADC se muestra en la Figura 5.6 y sus factores de división se describen en la Tabla 5.3.
También se supone que el ventilador y calentador están acondicionados para ser activados con una señal digital; La Figura 5.9 muestra el hardware propuesto. La pantalla LCD se conecta al puerto B de un ATMega8, como se muestra en la Figura 5.10. La Figura 5.11 muestra la organización del comparador, las entradas analógicas se toman de los terminales AIN0 y AIN1 (PD6 y PD7 en un ATMega8, y PB2 y PB3 en un ATMega16).
Cuando se establece en alto, la entrada al terminal positivo proviene de un voltaje de referencia interno.
Interfaces para una Comunicación Serial
- Comunicación Serial a través de la USART
- Organización de la USART
- Transmisión y Recepción de Datos de 9 Bits
- Comunicación entre Múltiples Microcontroladores
La Figura 6.2 ilustra una trama en serie que tiene en cuenta 8 bits de datos, paridad par y 1 bit de parada. También se pueden ver los registros UCSRA, UCSRB y UCSRC, con estos registros se realiza la configuración y se conoce el estado del USART (UCSR, USART Configuration and State Register). El bloque de generación de reloj proporciona 2 señales de salida, como se muestra en la Figura 6.4.
El registro UBRR es la base para generar la señal CLK1 (UBRR, USART Baud Rate Register). La elección del modo de funcionamiento se realiza en los registros de configuración y estado del USART. La Tabla 6.2 muestra algunos valores a utilizar en el registro UBRR para relaciones de transmisión típicas, con varios osciladores y sus respectivos porcentajes de error.
La Tabla 6.3 muestra los flancos de activación (polaridad), dependiendo del valor del bit UCPOL (Clock Polarity). La Figura 6.5 muestra la organización del bloque a transmitir, destacando que los datos a transmitir deben escribirse en el Registro de Datos USART (UDR). El final de la transmisión de datos se indica levantando la bandera TXC (bit 6 del registro UCSRA). Este indicador se puede consultar mediante software o la fuente se puede configurar para generar una interrupción.
El estado del indicador UDRE cambia automáticamente según la actividad que ocurre en el registro UDR. También contiene el Registro de datos USART (UDR), aunque en este caso es un registro de solo lectura que se utiliza para recibir datos en serie a través del USART. Los datos recibidos se almacenan en el registro UDR, lo que indica que los datos están disponibles configurando el indicador RXC (Bit 7 del registro UCSRA) en alto.
Si hay un error, esto se indica levantando el indicador PE (bit 2 del UCSRA. PE, registro de error de paridad).