Arquitectura de microcontroladores
Tecnológico Nacional de México
Instituto Tecnológico de Toluca
Ingeniería Mecatrónica
Microcontroladores
UNIDAD 1
José Manuel García Hernández
Febrero de 2019
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Microcontrolador
“Circuito integrado o chip que incluye en su interior las tres unidades
funcionales de una computadora: CPU, memoria y unidades de E/S, es decir, se
trata de una computadora en un solo circuito integrado, aunque de limitadas
prestaciones y que normalmente se dedica a resolver una tarea específica”.
“Un microcontrolador es un microprocesador optimizado utilizado para
controlar equipos electrónicos”.
El principal uso de un microcontrolador es controlar la operación de
dispositivos basándose en un programa almacenado en su memoria de
programa interna, dicho programa no cambia durante el tiempo de vida útil
del dispositivo. Típicamente el microcontrolador realiza sus funciones
instalado al interior de los dispositivos que controla, por esto algunas veces
recibe el nombre de controlador embebido (embedded controller)
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019 2
Microcontrolador
CPU Sistema Cerrado
Periféricos
3
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Que puede incluir un Microcontrolador?
Unidad Central
procesamiento (CPU)
Random Access
Memory) (RAM)
Read Only
Memory(ROM)
Puertos de
entrada/salida
Temporizadores y
contadores
Controlador de
interrupciones
Convertidor Analógico
a Digital (ADC)
Convertidor Digital a
analógico (DAC)
Puerto Serial
Watch Dog Timer
Circuito Oscilador
Brown-out detection
(BOD)
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Diferencia entre Microcontrolador y Microprocesador
uP uC
Capacidad de procesamiento
Ámbito de aplicación
Capacidad de adecuación a las necesidades
específicas del usuario (abierto vs cerrado)
https://i0.wp.com/www.vlsifacts.com/wp-content/uploads/2015/08/Microprocessor-Vs-Microcontroller.png
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Aplicaciones de los uC
https://www.vlsifacts.com/different-applications-microcontroller/
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Aplicaciones de los uC
https://www.elprocus.com/different-microcontrollers-used-in-automobiles/
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Aplicaciones de los uC
https://spaziodecora.mx/wp-content/uploads/2017/05/domotica_3.jpg
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Aplicaciones de los uC
En la actualidad la aplicación de los microcontroladores ha
evolucionado a la utilización de diversas tarjetas comerciales y su
respectiva programación en lenguajes de alto nivel, así como la
utilización de “middleware”.
Hardware
Software
Firmware
Middleware
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Aplicaciones de los uC
Middleware o lógica de intercambio de información entre aplicaciones
("interlogical") es un software que asiste a una aplicación para
interactuar o comunicarse con otras aplicaciones, o paquetes de
programas, redes, hardware y/o sistemas operativos. Éste simplifica
el trabajo de los programadores en la compleja tarea de generar las
conexiones y sincronizaciones que son necesarias en los sistemas
distribuidos
Microcontrolador
Sensores
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Aplicaciones de los uC
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Arquitecturas computacionales utilizadas en los uC
Sistema
Abierto
Arquitectura típica de un sistema digital basado en microprocesador
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Arquitecturas computacionales utilizadas en los uC
Sistema
Cerrado
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Arquitecturas computacionales utilizadas
en los uC
Arquitectura Von Neumann
Arquitectura Harvard
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Arquitectura de cómputo Clásica (Von Neumann)
La arquitectura clásica de un sistema de cómputo es la que fue definida
en 1945 por uno de los mejores matemáticos de la historia. John Von
Neumann, que propuso que la CPU estuviera conectada a una única
memoria dónde se guardaran conjuntamente instrucciones (programas)
y datos (con los cuales operan estos programas). Además existía un
módulo de entradas y salidas para permitir la comunicación de la
máquina con los periféricos externos que maneja el usuario.
John von Neumann (1903 - 1957)
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Arquitectura de cómputo Clásica (Von Neumann)
Debido a que en este tipo de arquitectura la CPU está conectada a una
memoria única que contiene las instrucciones del programa y los datos, el
tamaño de la palabra de la memoria de instrucciones está determinado por el
ancho del bus de datos de la CPU. Por lo anterior, un microprocesador de 8
bits, con un bus de 8 bits que lo conecta con la memoria, cuando deba acceder
a una instrucción o dato de más de un byte de longitud, deberá realizar más de
un acceso a la memoria.
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Arquitectura de cómputo Clásica (Von Neumann)
El bus único de este tipo de arquitectura limita la velocidad de operación del
microprocesador, ya que no se puede buscar una nueva instrucción, antes de que finalicen
las transferencias de datos que pudieran resultar de la instrucción anterior. Las dos
principales limitaciones de esta arquitectura tradicional son :
a) Que la longitud de las instrucciones está limitada por el bus de datos de la memoria, por
lo tanto el microprocesador debe hacer varios accesos a memoria para buscar
instrucciones complejas.
b) Que la velocidad de operación (o ancho de banda de operación) está limitada por el
efecto de cuello de botella que significa un bus único para datos e instrucciones que impide
superponer ambos tiempos de acceso.
Mover el dato 6A (hex) al registro A
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Arquitectura de cómputo Clásica (Von Neumann)
Ejemplo de arquitectura
Von Neumann
Microcontrolador
8051
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Arquitectura de cómputo Harvard
La arquitectura Harvard, consiste en un esquema en el que la CPU está
conectada a dos memorias por intermedio de dos buses separados. Una de
las memorias contiene solamente las instrucciones del programa, y es
llamada Memoria de Programa. La otra memoria solo almacena los datos y es
llamada Memoria de Datos. Ambos buses son totalmente independientes y
pueden ser de distintos anchos.
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Arquitectura de cómputo Harvard
Para un procesador de Set de Instrucciones Reducido, o RISC (Reduced
Instrucción Set Computer), el set de instrucciones y el bus de la memoria de
programa pueden diseñarse de manera tal que todas las instrucciones tengan
una sola posición de memoria de programa de longitud. Además, como los
buses son independientes, la CPU puede estar accediendo a los datos para
completar la ejecución de una instrucción, y al mismo tiempo estar leyendo la
próxima instrucción a ejecutar.
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Arquitectura de cómputo Harvard
Se puede observar claramente que las principales ventajas de esta
arquitectura son:
a) Que el tamaño de las instrucciones no está relacionado con el de
los datos, y por lo tanto puede ser optimizado para que cualquier
instrucción ocupe una sola posición de memoria de programa,
logrando así mayor velocidad y menor longitud de programa.
b) Que el tiempo de acceso a las instrucciones puede superponerse
con el de los datos, logrando una mayor velocidad de operación.
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Arquitectura de cómputo Harvard
PIC
ARQUITECTURA
HARVARD
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Ciclos de Operación de un uP
Ciclo de reloj.- Periodo de la señal de reloj
Ciclo máquina.- Es la duración de una operación de lectura o escritura de la
memoria o de búsqueda (Fetch) de una instrucción, se mide en ciclos de reloj.
Ciclo de instrucción.- Es el tiempo total, medido en números de períodos de reloj,
de duración de un ciclo de búsqueda más uno de ejecución de la instrucción
teniendo en cuenta los sucesivos accesos a memoria en el caso de ser una
instrucción de más de un byte. Un ciclo de instrucción está compuesto por uno o
varios ciclos de máquina (M1, M2, M3, M4), dependiendo del tipo de instrucción. Se
denomina M1 al ciclo de búsqueda, pues siempre es el primero de cada ciclo de
instrucción. Los ciclos de máquina más comunes son: Fetch, Memory Read,
Memory Write, I/O Read, I/O Write, etc.
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Ciclos de Operación de un uP
Ejemplo (8085)
STA 0325H; Almacena el contenido del acumulador en la localidad especificada por el operando (16 bits)
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Tipos de microcontroladores
Con relación a la filosofía de diseño de la CPU, particularmente el “set” de
instrucciones, típicamente existen microcontroladores del tipo:
CISC
(Complex Instruction Set Computer), es un tipo de diseño de CPU con un
conjunto de instrucciones que se caracteriza por ser muy amplio y permitir
operaciones complejas entre operandos situados en la memoria o en los
registros internos. La microprogramación es una característica importante y
esencial de casi todas las arquitecturas CISC. Las instrucciones complejas
son decodificadas internamente y ejecutadas con una serie de
microinstrucciones almacenadas en una ROM interna. Para esto se requieren
de varios ciclos de reloj (al menos uno por microinstrucción).
RISC
(Reduced Instruction Set Computer), Computadora con Conjunto de
Instrucciones Reducidas) es un tipo de diseño de CPU generalmente utilizado
en microprocesadores o microcontroladores que utiliza Instrucciones de
tamaño fijo. Debido a que se tiene un conjunto de instrucciones simplificado,
las mismas se pueden implantar por hardware (alambradas) directamente en la
CPU, lo cual elimina el microcódigo y la necesidad de decodificar instrucciones
complejas. Reducción del conjunto de instrucciones a instrucciones básicas
simples, con las que se pueden implantar todas las operaciones complejas
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Ejemplo microcontrolador CISC (8051)
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Ejemplo microcontrolador CISC (8051) A4
¡255 instrucciones!
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Ejemplo microcontrolador CISC (8051)
En general un ciclo de instrucción necesitará uno o más ciclos máquina,
dependiendo de dos condiciones:
1.- Código de operación (OPCODE)
Por ejemplo, la instrucción INC A tiene 1 byte de instrucción y necesita 1
ciclo máquina. La instrucción INC DPTR (Registro de 16 bits), también
tiene 1 byte de instrucción pero necesita 2 ciclos máquina y la
instrucción MUL AB, necesita 4 ciclos máquina y ocupa 1 byte de
memoria.
2.- El número de bytes en memoria de programa
Por ejemplo, la instrucción MOV A, #data (dato de 8 bits) tiene 2 bytes
de instrucción y necesita 1 ciclo máquina. En cambio la instrucción MOV
direct, #data, consta de 3 bytes y necesita 2 ciclos máquina.
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Ejemplo microcontrolador RISC (16F84)
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Ejemplo microcontrolador RISC (16F84)
¡35
instrucciones!
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Tipos de microcontroladores
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Principales fabricantes de uCs
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Tipos de microcontroladores
Los PIC son una familia de microcontroladores tipo RISC fabricados por Microchip Technology
Inc. El nombre actual no es un acrónimo. En realidad, el nombre completo es PICmicro,
aunque generalmente se utiliza como Peripheral Interface Controller (controlador de interfaz
periférico). Microchip proporciona un entorno de desarrollo freeware llamado MPLAB que
incluye un simulador software y un ensamblador. Otras empresas desarrollan
compiladores C y BASIC.
Los microcontroladores PIC se subdividen según la capacidad de su procesador, su memoria
y componentes auxiliares en cuatro grandes gamas:
Gama baja
Gama media (PIC16Cxx) (12 bit)
Gama Alta (PIC17Cxx) (16 bit)
Gama mejorada (PIC18xx)
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Tipos de microcontroladores
PICAXE es una familia de microcontroladores basada en PICs. Los
PICAXE son esencialmente PICs, con firmware preprogramado
(intérprete BASIC). Una de las características únicas del
sistema PICAXE es que los programas pueden descargarse
directamente al microcontrolador mediante un cable conectado al
mismo, por lo tanto no se requiere el uso de equipos
programadores/eliminadores de alto costo. Además, el software es
fácil de utilizar y gratuito
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Tipos de microcontroladores
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Tipos de microcontroladores
Microprocesador/microcontrolador 8051
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Inserción de tema de la unidad 4 (comunicación serie)
Debido a la necesidad de utilizar la plataforma de ARDUINO, es necesario
en este punto introducir el tema de “Comunicación Serial” (tema de U4)
Comunicación Serial – U4
uC
Específico
ARDUINO
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Que puede incluir un Microcontrolador?
Unidad Central
procesamiento (CPU)
Random Access
Memory) (RAM)
Read Only
Memory(ROM)
Puertos de
entrada/salida
Temporizadores y
contadores
Controlador de
interrupciones
Convertidor Analógico
a Digital (ADC)
Convertidor Digital a
analógico (DAC)
Puerto Serial
Watch Dog Timer
Los periféricos de un microcontrolador se Circuito Oscilador
programan y operan mediante REGISTROS Brown-out detection
(BOD)
INTERNOS DEL propio microcontrolador, los
cuales están ubicados en su memoria RAM
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Que puede incluir un Microcontrolador?
Cuando se requiere el uso en particular de un periférico incluido en un
microcontrolador, se deben buscar en las hojas de datos del microcontrolador
los REGISTROS ASOCIADOS con dicho periférico, los cuales pueden ser uno
o varios registros. Usualmente el SET de instrucciones del microcontrolador
reconoce los NOMBRES de los registros de los periféricos, por lo cual cuando
se escribe un programa, bastará con escribir el nombre (alias) de los registros
con los que se desea trabajar. En algunos microcontroladores, puede hacerse
referencia a los registros asociados con sus periféricos mediante su
DIRECCIÓN en memoria RAM
Ejemplo: registro internos asociados a la
operación y programación de los TIMERS de
la familia de uC 8051
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Que puede incluir un Microcontrolador?
Entradas/salidas digitales
Representan la conexión con el mundo digital, añaden al uC la capacidad de
interpretar y mostrar señales binarias externas, su capacidad en manejo de
corriente dependerá del tipo de uC. Algunas veces se tiene la opción de configurar
resistencias internas de entrada como “Pull Up” o “Pull Down”.
Modelo conceptual
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Que puede incluir un Microcontrolador?
Oscilador interno/externo
Al igual que un uP, un uC necesita de una señal de reloj que sincronice todo el
sistema compensando los retardos de los diferentes módulos. Los uC contienen
internamente un generador de reloj el cual puede necesitar de un cristal externo
o puede estar basado en un PLL para generar la señal sin necesidad de
componentes externos, también dependiendo de la exactitud requerida, algunos
uC contienen internamente un oscilador RC.
PLL - PHASE LOOP LOCKED - Lazo Enganchados en Fase.- Es un circuito que permite que una señal de referencia externa,
controle la frecuencia y la fase de un oscilador.
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Que puede incluir un Microcontrolador?
Oscilador interno/externo
Un aspecto interesante de un oscilador como periférico de un microcontrolador,
es que la CPU puede mediante la modificación de ciertos registros, variar la
frecuencia de sus propios periféricos, de esta manera es posible controlar por
programación la velocidad y potencia consumida de los diferentes periféricos
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Que puede incluir un Microcontrolador?
Oscilador interno/externo
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Que puede incluir un Microcontrolador?
CIRCUITO DE “POWER ON RESET”
Después de un RESET, en un uC algunos registros
se precargan a su valor por default.
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
¿Que puede incluir un Microcontrolador?
Brown-out detection (BOD)
Muchos microcontroladores contienen un circuito de detección de
“apagones” o Brown-out detection (BOD), el cual monitorea la fuente de
alimentación y compara su voltaje con un valor fijo, si el voltaje disminuye
por abajo de un nivel determinado, el microcontrolador será reinicializado
y mantenido en esta condición hasta que el voltaje alcance su nivel
normal.
Microcontroladores José Manuel García Hernández Agosto – Diciembre 201945
¿Que puede incluir un Microcontrolador?
Convertidor Analógico a Digital (ADC)
La conversión analógica-digital es el proceso
por el cual una magnitud analógica se
convierte a un formato digital, para un uC
representa el medio de interacción con el
mundo analógico.
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
¿Que puede incluir un Microcontrolador?
Convertidor Digital a Analógico (DAC)
Un convertidor Digital/Analógico toma un valor representado en código
digital (binario, BCD, etc.) y lo convierte en un valor analógico de voltaje o
corriente que es proporcional al valor digital.
Control digital de
velocidad para motores
Filtros digitales
Etc.
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
¿Que puede incluir un Microcontrolador?
Watch Dog
Los sistemas embebidos deben incluir la capacidad
de soportar las posibles anomalías de hardware y
software, es decir deben contar con la robustez de
operación suficiente.
En muchos casos, los sistemas embebidos deben
operar en completo aislamiento, sin la intervención
de operador alguno.
Los sistemas embebidos deben contar con una
forma de reinicialización (reset) manual, pero esto
no será aplicable para sistemas remotos.
Un watch dog es un dispositivo hardware de
temporización que genera un reset del sistema o una
operación similar despues que un determinado intervalo
de tiempo ha transcurrido.
Un watch dog puede ser externo al uC o ser un periférico
interno.
Para prevenir un reset del watch dog, el programa de
aplicación periódicamente debe reinicializarlo, antes de
que finalice su intervalo de tiempo, esta acción se conoce
como “patear al perro” (kicking the dog)
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
¿Que puede incluir un Microcontrolador?
Watch Dog
“Pateando” al perro
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
¿Que puede incluir un Microcontrolador?
BUS I2C
I²C es un bus síncrono de comunicaciones serie. Su nombre viene de Inter-
Integrated Circuit (Circuitos Inter-Integrados). La versión 1.0 surgió en el año 1992
y la versión 2.1 en el año 2000, su diseñador es Philips. La velocidad estándar es
de 100Kbits por segundo, también permite velocidades de 400Kbit/s. Es un bus
muy usado en la industria, principalmente para comunicar microcontroladores y
sus periféricos en sistemas embebidos (Embedded Systems).
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
¿Que puede incluir un Microcontrolador?
BUS USB
USB son las siglas de Universal Serial Bus y es un bus para periféricos de
computadoras surgido en 1996.
USB es un estandar diseñado para eliminar los inconvenientes que surgen al
conectar periféricos a las computadoras.
Es un estandar para buses externos que soporta transferencias de hasta 480 Mbps.
Un solo puerto USB puede utilizarse para conectar hasta 127 dispositivos como
ratones, modems, y teclados. USB también soporta instalación “Plug-and-Play” y “hot
plugging”. USB desplazó completamente a los puertos seriales y paralelos.
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
¿Que puede incluir un Microcontrolador?
BUS SPI
El SPI (del inglés Serial Peripheral
Interface) es un protocolo de
comunicación síncrona de 4 hilos,
presentado por Motorola en 1982, su
función principal es la transferencia de
datos entre circuitos integrados en equipos
electrónicos.
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
¿Que puede incluir un Microcontrolador?
SPI vs I2C
Cabe mencionar que la comunicación entre dispositivos mediante
estos buses está planeada, más no limitada a nivel tarjeta.
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
¿Que puede incluir un Microcontrolador?
Timers/Counters
En un uC las funciones de
temporizador (timer) y contador
consisten básicamente en la
cuenta de eventos mediante un
Diferencia entre un timer (a) y un contador (b)
registro de propósito especial
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
¿Que puede incluir un Microcontrolador?
Timers/Counters
Contador
https://www.mikroe.com/ebooks/pic-microcontrollers-programming-in-assembly
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
¿Que puede incluir un Microcontrolador?
Módulos de captura y comparación
Registro de captura
Timer/counter
https://www.mikroe.com/ebooks/pic-microcontrollers-programming-in-assembly
Captura:
Captura el valor del timer/counter
Bits de configuración
del evento para cuando ocurre un evento externo (en
capturar CCPx)
Respalda el valor del contador a un
registro especial (CCPR1)
Genera una interrupción
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
¿Que puede incluir un Microcontrolador?
Módulos de captura y comparación
Registro de captura
Timer/counter
https://www.mikroe.com/ebooks/pic-microcontrollers-programming-in-assembly
Compara:
Poner un valor en un registro especial
Cuando el valor del contador sea
igual al valor del registro especial
(CCPR2) genera una interrupción o
una señal de salida (en CCPx)
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
¿Que puede incluir un Microcontrolador?
Modulador de Ancho de Pulso PWM
Un modulador de ancho de pulso (PWM por sus siglas en inglés), opera
modulando el ciclo de trabajo de una señal cuadrada. El ciclo de trabajo de una
señal cuadrada es el porcentaje de tiempo que permanece en alto, relativo el
tiempo que permanece en bajo
Aplicaciones PWM
Control digital de velocidad
para motores DC
Control de válvulas
Control de intensidad
luminosa
Etc.
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
¿Que puede incluir un Microcontrolador?
Puerto Serial (USART)
UART son las siglas de Universal Asynchronous Receiver Transmitter
Recordar que los microcontroladores típicamente cuentan con tres
puertos de comunicación serial:
• I2C
• SPI (Serial Peripheral Interface)
• USART
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
¿Que puede incluir un Microcontrolador?
Puerto Serial (USART)
CPU
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
¿Que puede incluir un Microcontrolador?
Comparador Analógico
Un comparador analógico es un dispositivo que compara dos valores analógicos
e indica en su salida cual de los dos valores comparados es el más grande. En
electrónica es basicamente un amplificado sin retroalimentación (muy alta
ganancia). Caundo la la entrada positiva es más grande, la salida se satura a su
alimentación positiva (uno lógico) y cuando la entrada negativa es más grande la
salida se satura a su alimentación negativa (cero lógico)
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
¿Que puede incluir un Microcontrolador?
Comparador Analógico
Un comparador analógico como periférico de un microcontrolador aprovecha la
posibilidad de configuración mediante registros por parte de la CPU, de esta
forma es posible por programación elegir entre varias entradas y recursos
analógicos disponibles en el mismo uC, así como generar interrupciones.
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
CASO DE ESTUDIO DEL CURSO
Microcontrolador ATMEGA328
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Microcontroladores AVR
Los AVR son una familia de microcontroladores RISC del fabricante
estadounidense Atmel. La arquitectura de los AVR fue concebida por
dos estudiantes en el Norwegian Institute of Technology y
posteriormente refinada y desarrollada en Atmel Norway (1996), la
empresa subsidiaria de Atmel. Los AVR sean hecho muy populares
debido a su diseño simple y su facilidad de programación, cuentan con
una CPU de arquitectura Harvard.
http://www.boiledbeans.net/2013/11/21/whose-risc-processor/
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Microcontrolador ATMEGA328
La familia de microcontroladores AVR es muy numerosa, incluye
más de 70 dispositivos que comparten el núcleo, pero difieren en
recursos.
Entre familias, se puede utilizar el mismo SET de instrucciones???
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Microcontroladores AVR
¿ Que significa AVR?
De acuerdo con ATMEL, AVR no tiene un significado, es
solo un nombre.
Algunos autores aseguran que se trata del acrónimo de
Advanced Virtual Risc.
Casualmente, los diseñadores de los AVR se llaman:
Alf Egil Bogen and Vegard Wollan ¿AlfVegardRisk?
http://www.edaboard.com/thread19325.html
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Microcontroladores AVR
Características principales
Alto desempeño combinado con bajo consumo de potencia
Tecnología de memoria FLASH mejorada
Arquitectura HARVARD y set de instrucciones RISC
Ciclo máquina de un ciclo de reloj
Rangos de operación de 1.8 -5.5 VCD
Arquitectura diseñada para lenguaje C
Capacidad de programación en sistema, “debugging” y
verificación.
Variedad de herramientas de desarrollo disponibles
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Microcontroladores AVR
COMPARATIVO
Comparativo de varios uCs ejecutando un programa con
la misma funcionalidad
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Microcontroladores AVR
HARDVARD?
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Microcontroladores AVR
Los microcontroladores AVR pueden clasificarse en
cuatro grupos principales:
Familia de AVR clásica (AT90Sxxxx)
Esta es la familia original, la cual gradualmente ha sido
reemplazada por nuevos chips.
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Microcontroladores AVR
Familia Mega AVR (ATmegaxxxx)
Esta es la familia más popular y comprende microcontroladores con más
de 120 instrucciones y variedad de periféricos
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Microcontroladores AVR
Familia Tiny AVR (ATtinyxxxx)
Como su nombre lo indica, los microcontroladores de esta familia
cuentan con encapsulados pequeños en comparación con otras familias,
las aplicaciones de bajo costo y consumo utilizarán esta familia. El set
de instrucciones es limitado.
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Microcontroladores AVR
Familia AVR de propósito especial
Esta familia de microcontroladores se puede considerar como un sub-set
de otros grupos, pero con características especiales para aplicaciones
específicas como USB, CAN, ZIGBEE, ETHERNET, etc.
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Microcontroladores
AVR
74
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
ATMEGA328P
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Maximum Frequency vs. VCC
La disipación de potencia se incrementa con la frecuencia de
operación…
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
ATMEGA328P
Típicamente las terminales de un microcontrolador tienen más de
una función. La programación de un microcontrolador está
orientada a utilizar sus recursos internos, esto incluye la
interacción con el mundo exterior, para la realización de una tarea
específica definida por el usuario.
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
ATMEGA328P
AVR CPU CORE
Tipos de memoria
Memoria de
programa?
Memoria de
datos?
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
MODELO DE PROGRAMACIÓN
Para programar adecuadamente un uC es necesario conocer su
modelo de programación. Se entiende por modelo de programación al
conjunto de registros accesibles por el usuario que junto al set de
instrucciones y los modos de direccionamiento constituyen las
herramientas imprescindibles para el programador.
+ + Programación
adecuada del
uC
Registros del uC Set de instrucciones Modos de
del uC direccionamiento
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
¿Modos de direccionamiento?
Cuando Las instrucciones operan sobre datos, surge la pregunta ¿y
los datos dónde están? La respuesta a esta pregunta se responde
con los modos de direccionamiento de cada microprocesador, los
cuales son parte integral de cada set de instrucciones, permiten
especificar la fuente o destino de los datos de diferentes maneras.
Instrucción
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Mapa de memoria ATMEGA328
El mapa de memoria de un microcontrolador es un diagrama que indica
el tamaño, tipo y distribución de las memorias disponibles en el mismo
microcontrolador. Los mapas de memoria de un microcontrolador se
obtienen de su hoja de datos
Datos NO volátiles
Programa Datos volátiles
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Memoria de programa del ATMEGA328
El ATMEGA328 contiene 32Kbytes de memoria FLASH para almacenar su
programa. Debido a que sus instrucciones son de 16 o 32 bits, la memoria
FLASH está organizada como una memoria de 16K x 16. La misma memoria está
dividida en la sección de boot loader y la sección de programa de aplicación
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Memoria de programa del ATMEGA328
Read-While-Write Self-Programming Adicional a la sección de aplicación y
bootloader, existe otra division en la
memoria de programa, la cual se
divide en dos secciones fijas
Read-While-Write
(RWW) section
No-Read-While-Write
(NRWW) section
La diferencia entre las dos secciones de la memoria de programa es que la sección NRWW es
accesible mientras se actualiza la sección RWW. No es posible accesar la sección RWW
mientras la misma se actualiza. Cuando se actualiza la sección NRWW la CPU se detiene.
Entiéndase “accesar” como ejecutar código en la memoria referida y “actualizar” como escritura
de la memoria.
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Memoria SRAM de Datos
La memoria SRAM en el ATmega328P se divide en varios grupos
Recordar que la memoria
EEPROM también es una
Registros de memoria de datos
acceso rápido
Registros
asociados a
los periféricos
Control de
Registros periféricos
asociados a
los periféricos
(extendidos)
RAM de
propósito
general
Endurance of at least 100,000
write/erase cycles
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Memoria de Datos
Los registros de la CPU se utilizan para operar y configurar periféricos así como
para almacenar datos temporalmente. Para programar en lenguaje ensamblador
es necesario conocer la arquitectura y los registros de la CPU. Los AVR cuentan
con 32 registros de propósito general (GPRs) de 8 bits que se utilizan como
medios de almacenamiento de acceso rápido por parte de la CPU.
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Memoria de Datos
La ALU de alto desempeño de los AVR opera en conexión directa con los 32
registros de propósito general, los cuales pueden considerarse como el
equivalente al acumulador en la arquitectura de una CPU orientada a acumulador.
Las operaciones aritméticas entre los GPRs o entre un registro I/O y un dato se
ejecutan en un solo ciclo de reloj. Las operaciones de la ALU se dividen en tres
categorias: aritméticas, lógicas y orientadas a bit.
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Memoria SRAM de Datos
Los 32 registros de
acceso rápido y los
registros I/O tienen
direcciones para ser
tratados como
SRAM de propósito
general
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Registro de Estado
El registro de estado contiene
información acerca del
resultado de la instrucción
aritmética o lógica más
reciente, esta información
puede utilizarse para alterar el
flujo del programa y se
actualiza en cada operación de
la ALU
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Registro de Estado
Al ejecutarse esta instrucción ¿se generará
alguna bandera en el registro SREG?
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Registros I/O
OFFSET
Los registros I/O se emplean para la
configuración y el control de recursos
internos, así como para conocer su estado.
Por ejemplo, en este espacio están los
registros para el manejo de los Puertos de
Entrada/Salida
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Registros I/O
Los registros I/O pueden ser manejados como
memoria RAM de propósito general (direcciones
0x20 - 0x5F) aunque es menos eficiente su
acceso.
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Registros I/O
Los registros I/O en el rango 0x00 - 0x1F son accesibles por bit. Para modificarse,
con instrucciones SBI y CBI o para evaluarse, a través de las instrucciones SBIS
(Skip If Bit is Set) y SBIC (Skip If Bit is Clear).
0x00
….
0x1F
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Registros I/O Extendidos
Algunos microcontroladores
AVR con más periféricos
incluidos necesitan más
espacio para la configuración y
el control de estos recursos
internos extras. En el
ATMEGA328P, el espacio I/O
extendido tiene la misma
función que el espacio de los
registros I/O y aunque en su
mayoría está sin uso, el
espacio está disponible para
compatibilidad con otras
versiones de la familia AVR.
El espacio para los registros I/O Extendidos es de 160
localidades.
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Escribiendo los registros asociados a los periféricos
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Escribiendo los registros asociados a los periféricos
Sets PB5 (the LED on
Arduino Pro Mini) to
output and toggles it in an
infinite loop.
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Registros Apuntadores
Seis de los 32 registros de la SRAM
pueden ser usados como apuntadores de
16 bits para instrucciones que utilizan
direccionamiento indirecto en el espacio de
datos. Estos registros se denominan X, Y y
Z.
El registro Z también puede usarse como
apuntador a la memoria de programa.
“Arquitectura Optimizada para ejecutar
código C compilado”
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Registro Program Counter
Típicamente los
microcontroladores
AVR tienen un registro
Contador de Programa Program Counter
(PC) de 16 bits, el cual
contiene la dirección
de la SIGUIENTE
instrucción a ejecutar
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Registro Stack Pointer
STACK
POINTER
DIRECCIÓN DE
RETORNO???
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Registro Stack Pointer
Una pila (stack en inglés) es una lista o
estructura de datos que permite
almacenar y recuperar datos y en la que
el modo de acceso a sus elementos
puede ser de tipo LIFO (del inglés last in
first out, es decir, "último en entrar,
primero en salir") o de tipo FIFO (First In
First Out). En los uCs y uPs la pila se
implementa en un bloque de memoria
RAM, el cual PUEDE ser reubicado por
el programador
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Registro Stack Pointer
Los microcontroladores AVR cuentan con un registro Stack Pointer
de 16 bits, el cual siempre apunta a la siguiente localidad disponible
para almacenar un dato en la pila. La pila de los AVR opera con una
arquitectura LIFO. En los AVR existen dos instrucciones para alterar
DIRECTAMENTE el contenido de la pila, PUSH y POP
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Registro Stack Pointer
http://www.avr-tutorials.com/general/avr-microcontroller-stack-operation-and-stack-pointer
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Registro Stack Pointer
ATmega8535
AVR Microcontroller
RAMEND es una
constante que
representa la última
localidad de la RAM
del microcontrolador
en cuestión
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Offset
(SRAM)
Resumen de
Registros
SRAM
(1)
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Resumen de
Registros
SRAM
(2)
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Resumen
de
Registros
SRAM
(3)
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
Herramientas de Desarrollo
Microcontroladores
Utilización de tarjetas
ARDUINO con
AVRSTUDIO 7
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019
FIN DE LA PRESENTACIÓN
UNIDAD 1
GRACIAS POR SU ATENCIÓN
Microcontroladores José Manuel García Hernández Agosto – Diciembre 2019