Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

01 Microbotica 2020 Intro Microcontroladores

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 51

Microbótica

Prof. Cristhian Riaño


Introducción
Los microcontroladores son componentes utilizados en muchos
equipos electrónicos. Está compuesto de varios bloques funcionales,
los cuales cumplen una tarea específica.

¿ Cual es la diferencia entre un microcontrolador y un


microprocesador?

• Microprocesador: circuito integrado capaz de realizar operaciones


lógicas, aritméticas y de control.
• Microcontrolador: circuito integrado que tiene un microprocesador
Introducción
Tipos de microcontroladores
Tipos de microntroladores:

• Según el ancho de palabra: 4, 8, 16 y 32 bits

• Según los periféricos incluidos: serie, A/D, D/A, I/O ́s, timers, etc.

• Según la especialidad concreta: comunicaciones, señales, video, etc.


Tipos de microcontroladores
Elección de un microcontrolador
• Hay ayuda disponible ante problemas?
• Hay herramientas de desarrollo en mercado?. Cuanto cuestan?
• Hay documentación disponible (manuales, libros, ejemplos de uso)
• Que dispositivos soportan las versiones del microcontrolador
elegido?
• Que modo de grabación soporta la familia? (flash, EPROM,
EEPROM)
• Consumo en modo de uso y modo standby.
• Otro tipo de soportes adicionales (librerías, foros, etc.)
Ejemplo de microcontrolador
Microcontrolador
Ventajas de un microcontrolador:
• Aplicaciones: Puede desempeñar diferentes funciones.
• Acoplamiento: reemplazo de gran cantidad de elementos por uno
sólo disminuyendo riesgo de averías y menos calibraciones.
• Espacio : disminución del volumen y stocks
• Flexibilidad : Fácil de aplicar cambios en la programación.
• Mantenimiento: Es economico realizar remplazo o actualización.
Aplicaciones
●Electrodomésticos, ●Industria 4.0,
●Equipos portátiles, ●Internet de las cosas,

●Juguetes, ●Análisis de señales

●Instrumentación,

●Automóviles,

●Control Industrial,

●Robótica,

●Medicina,

Sistemas de seguridad.

Fabricantes
●MICROCHIP ●TOSHIBA
●MOTOROLA ●NEC

●ATMEL ●ZILOG

●TEXAS INSTRUMENTS ●SAMSUNG

●PHILIPS ●SONY

●HITACHI ●NATIONAL SEMICONDUCTOR


Fabricantes

https://trends.google.es/trends/explore?hl=pt-BR&tz=300&date=all&q=microchip,ATMEL,TEXAS+INSTRUMENTS,ZILOG&sni=3
Sistemas embebidos
Sistemas embebido es un sistema de computación diseñado para realizar

● una o algunas pocas funciones dedicadas.


Sistemas embebidos
Características de sistemas Embebidos:
• Requisitos de calidad y confiabilidad mas altos de que otros sistemas
computacionales.
• Ejecutan un código de maquina específicos para ellos.
• Desempeñan tareas especificas.
• Deben ser eficientes en cuanto a la energía, al tamaño de código, al
peso y al costo.
Papel de los lenguajes de Programación
• Códigos de maquina
• Lenguaje assembly
• Especifica para cada hardware

• Bajo nivel
Papel de los lenguajes de Programación
• Lenguaje C
• Alto nivel
• Independiente del Hardware
• Genérico.
• Diferentes propósitos.
Outros lenguajes de Programación
• Lenguaje C#, C++, Java, PHP, Python
• Lenguajes más genéricos,
• Distantes del Hardware,
• Alto nivel,
• Programas más avanzados integrados y acoplados
Además del Microcontrolador
Consideraciones adicionales:
• Circuitos de Alimentación,
• Tipo de Comunicación,
• Sensores,
• Control de actuadores,
• Periféricos,
• Interfaces con usuario,
• Otros circuitos de apoyo.
Microcontrolador

Input Output
User input Peripherals CPU Peripherals User
output
Central
Processing
ROM Unit RAM
Program Read Only Read & Write
download Memory Memory
Microcontrolador- Diagrama de Pins
Microcontrolador - Arquitectura
Microcontrolador – Organización de la Memoria
Existen tres bloques de memoria dentro de un PIC16F877X.
• Memoria de programa:
• contiene el programa con las instrucciones que gobiernan la aplicación.
• Es del tipo no volátil.
• Memoria de datos RAM:
• Guarda las variables y datos.
• Son registros de 8 bits.
• Es volátil
• Memoria EEPROM de datos:
• Es una pequeña área de memoria de datos de lectura y escritura no volátil
que permite garantizar que determinada información estará siempre
disponible al reinicializarse el programa.
• Se gestiona de manera distinta a la memoria de datos RAM.
Microcontrolador – Organización de la Memoria
• La memoria de programa y la memoria de datos tienen buses separadas por lo que
es posible el acceso a las mismas en forma concurrente.
Microcontrolador – Memoria del programa
• Almacena todas las instrucciones del programa en
ejecución, que estará grabado de forma permanente.
• La información contenida en esta memoria se carga previamente
a través un equipo físico denominado programador. (El
PIC16F877 tiene una memoria de programa no volátil
denominada ROM Flash que admite unas 1000 grabaciones).
• La memoria de programa está organizada en palabras (cadena
finita de bits) de 14 bits cada una.
• Todas las instrucciones ocupan una posición de memoria de
programa.
• El vector de RESET (por donde comienza a ejecutar el PIC) esta
en la dirección 0000h y el vector de interrupciones se encuentra
en la dirección 0004h.
Memoria del programa – Program counter
• El dispositivo PIC16F87X tiene un program counter de 13-bit capaz de
direccionar 8K x 14 direcciones de memoria.
• A la memoria de programa se accede mediante un registro de 13 bits que actúa
como puntero de la instrucción que se debe ejecutar en el siguiente ciclo de
instrucción.
• A través de program counter, se pueden direccionar 8K posiciones de memoria.
Debido a que la codificación de las instrucciones son de 14 bits, cada una de esas
8K posiciones corresponde a una instrucción, por tanto, el program counter es
capaz de direccionar 8K x 14 posiciones.

• Como cada instrucción ocupa una posición de memoria, es posible saber si un


dispositivo tiene memoria de programa suficiente para una aplicación.
Memoria del programa - Program counter
Los 8K de memoria de programa disponible están divididos en 4
páginas de 2K cada una (000h–7FFh, 0800h-0FFFh, 1000h-17FFh y
1800h-1FFFh).

Esto es debido a que las instrucciones de salto y llamada a


subprograma permiten cargar sólo 11 bits en el PC (desplazamiento
en 211 = 2𝐾).

Si se están ejecutando instrucciones secuencialmente, el contador de


programa pasará de una página a otra sin necesidad de intervención
por parte del usuario o programador.

Para saltar entre páginas de la memoria de programa los 2 bits más


altos del PC deben modificarse. Esto se realiza escribiendo en el
registro PCLATH (es un registro situado en la memoria de datos).
Memoria del programa - Program counter
El contador de programa (PC) es un registro de 13 bits que se descompone en 2 registros:

El byte bajo PC se denomina PCL y está disponible en la memoria de datos. Es un registro que
se puede leer y escribir directamente desde programa.

El registro PCH no está disponible en la memoria de datos y no se puede leer ni escribir


directamente. La escritura debe realizarse usando como registro intermedio el registro
PCLATH que sí es un registro de 8 bits accesible en la memoria de datos del microcontrolador.
El contenido del registro PCLATH se transfiere a la parte alta del PC en el momento en que se
escribe en el registro PCL. También aporta dos bits al PC en los saltos.

¿Que instrucciones modifican el PCL o pueden modificar


el PCH?
Microcontrolador – PCL Y PCLATH
• El PC de 13 bits se divide en dos registros: PCH (parte alta) y PCL (parte baja).
El registro PCL es uno más de los registros de RAM, pero PCH no es accesible
directamente
• El PCL y PCLATH son dos registros de la RAM, nosotros sabemos que el
contador de programa (PC) tiene una longitud de 13 bits, entonces si queremos
una información que me diga que posición dentro de la memoria de programa se
está ejecutando ahora, esta información la tiene la RAM, y como esta tiene
solamente registros de 8 bits, por simple matemáticas se tiene que usar dos
registros para esta información, el PCL almacena los 8 primeros bits del PC y el
PCLATH almacena en sus primeros 5 bits, los últimos 5 bits del PC.
Microcontrolador – PCL Y PCLATH
En algunos dispositivos solo una
parte del mapa de memoria total
posible está implementado.

En la figura se muestra un
dispositivo con 4K de memoria de
programa y otro con 8K de
memoria de programa.
Memoria del programa- vector de reset
• El vector de RESET está siempre en la posición 0000h de la
memoria de programa.

• Cualquier reset (interno o externo) que se genere en un


microcontrolador hará que su contador de programa pase a tener el
valor 0000h y que por tanto el microcontrolador pase a ejecutar la
instrucción situada en dicha posición.

• El RESET también limpia el contenido del registro PCLATH.


Memoria del programa- vector de interrupciones
• El vector de INTERRUPCION está en la posición 0004h de la
memoria de programa.
• Cualquier interrupción generada en el microcontrolador hará que su
program counter pase a tener el valor 0004h y que por tanto el
microcontrolador pase a ejecutar la instrucción situada en dicha
posición.
• El salto a la rutina de interrupción no modifica el contenido del
PCLATH, por lo que cualquier modificación que se realice del PC en
la rutina de interrupción debe realizarse con cuidado de lo que se
tiene cargado en el PCLATH
Memoria del programa- vector de interrupciones
• El vector de INTERRUPCION está en la posición 0004h de la
memoria de programa.
• Cualquier interrupción generada en el microcontrolador hará que su
program counter pase a tener el valor 0004h y que por tanto el
microcontrolador pase a ejecutar la instrucción situada en dicha
posición.
• El salto a la rutina de interrupción no modifica el contenido del
PCLATH, por lo que cualquier modificación que se realice del PC en
la rutina de interrupción debe realizarse con cuidado de lo que se
tiene cargado en el PCLATH
Memoria RAM de datos
• La memoria de datos está distribuida en 4 posibles bancos de 128 bytes cada uno. Por tanto,
la máxima cantidad de memoria disponible en los microcontroladores PIC16 es de 512
bytes. No obstante, no están implementadas todas las posiciones de memoria en todos los
bancos.

• Almacena todas los datos que se manejan en un programa.


• Se distinguen dos tipos de registro:
• ¾ Registros de funciones especiales SFR. Son los primeros registros.
• Cada uno de ellos cumple un propósito especial en el control del PIC.
Memoria RAM de datos
• Almacena todas los datos que se manejan en un programa.
• Se distinguen dos tipos de registro:
• Registros de funciones especiales SFR. Son los primeros registros. Cada uno de ellos
cumple un propósito especial en el control del PIC.
• Registros de propósito general GPR. Se pueden usar para guardar datos temporales. El
PIC16F877 dispone de 368.
• Cuenta con cuatro bancos de memoria: Bancos 0, 1, 2 y 3.
• Los SFR aparecen de la dirección 00h a 1Fh del Banco 0, de 80h a 9Fh del Banco 1, de
100h a 10F en el Banco 2 y de 180h a 18Fh del Banco 3. Algunos son accesibles desde
dos o más bancos.
• Los GPR ocupan 368 posiciones de memoria. Algunas posiciones de los Bancos 1 a 3
se mapean sobre el Banco 0.
• Existen zonas de memoria no empleadas que devuelven ‘0’ en caso de lectura.
Memoria RAM de datos
• Existen 2 modos de direccionamiento para acceder a cualquiera de las posiciones de la
memoria de datos:
• Direccionamiento directo: La posición de memoria está directamente definida en el
código de la instrucción.
• Direccionamiento indirecto: La posición de memoria con la que se trabaja viene
definida por el contenido de el registro FSR (Posición 04h, 84h, 104h ó 184h).
Lenguaje assembly
• El único lenguaje que entienden los microcontroladores es el código máquina formado por
ceros y unos del sistema binario.
• El lenguaje assembly crea un parse entre de una programación familiar con el código de
maquina. Cada una de esas instrucciones se corresponde con otra en código máquina.
• El lenguaje ensamblador trabaja con nemónicos (es una palabra que sustituye a un código de
operación).
• La traducción a código máquina para el microcontrolador se realiza con un programa
ensamblador.
• El programa escrito en lenguaje ensamblador se denomina código fuente (*.asm). El
programa ensamblador proporciona a partir de este fichero el correspondiente código
máquina, que suele tener la extensión *.hex.
Lenguaje assembly- Código fuente
• Está compuesto por una sucesión de líneas de texto. Cada línea puede estructurarse en hasta cuatro
campos o columnas separados por uno o más espacios o tabulaciones entre sí.
• Campo de etiquetas: Expresiones alfanuméricas escogidas por el usuario para identificar una
determinada línea. Todas las etiquetas tienen asignado el valor de la posición de memoria en la
que se encuentra el código al que acompañan.
• Campo de código: Corresponde al nemónico de una instrucción, de una directiva o de una
llamada a macro.
• Instrucciones: son aquellos nemónicos que son convertidos por el ensamblador en código
máquina que puede ejecutar el núcleo del microcontrolador.
• Directivas: Instrucciones que controlan el proceso de ensamblado del programa, pero no son
parte del código. Son indicaciones al programa ensamblador de cómo tiene que generar el
código máquina.
• Macros: Secuencia de nemónicos que pueden insertarse en el código fuente del ensamblador
de una manera abreviada mediante una simple llamada.

• Campo de operandos y datos: Contiene los operandos que precisa el nemónico utilizado. Según
el código, puede haber dos, uno o ningún operando.
• Campo de comentarios: Dentro de una línea, todo lo que se encuentre a continuación de un
punto y coma (;) será ignorado por el programa ensamblador y considerado como comentario.
Estructura básica del programa de ensamblaje
El lenguaje ensamblador se compone de dos (2) tipos de declaraciones:
• Directiva de ensamble: Informe al ensamblador sobre el programa y el entorno y NO es traducido al
código de la máquina.
• Instrucciones ejecutables: Son instrucciones válidas del procesador que el ensamblador puede
traducir al código de máquina.
Assembler directives
• Las Assembler directives son instrucciones que se dirigen al ensamblador para una acción espcifica
específica.
• No son traducidas al código de máquina. (Las directivas del ensamblador son ejecutadas por el
ensamblador en el momento del ensamblaje, no por la CPU en el tiempo de ejecución).
• Las directivas pueden usarse para:
• Vincular nombres simbólicos a valores reales.
• Configurar constantes predefinidas.
• Asignar almacenamiento para datos en la memoria.
• Controla el proceso de ensamblaje.
• Incluir archivos fuente adicionales.
• Dirección de inicio del programa.
Ejemplo - Assembler directives
• EQU – Igualar
• Asigna un valor a un símbolo (igual que =) p. TRISA EQU 0x85
• ORG - Origen
• Establece el origen actual a un nuevo valor. Esto se usa para configurar el programa o registrar la
dirección durante el ensamblaje.
• Por ejemplo, ORG 0x00 le dice al ensamblador que ensamble todos los códigos posteriores que
comienzan en la dirección 0000H.
• INCLUDE
• Un archivo de ensamblador incluye o encabezado, es cualquier archivo que contiene un código de
ensamblaje válido. Ejemplo: #INCLUDE P16F877.INC
• END
• Esta directiva es la última declaración en un programa de lenguaje ensamblador. La directiva END
termina un programa en lenguaje ensamblador.
Código de ensamble
3
Consta de 4 campos:
operand
1 2 4

f = Source : nombre del registro de propósito especial o variable RAM


F(W) = Destino:
F – destino es f
W – destino es registro de trabajo
Formato de instrucciones – Etiqueta (Label)
• Una etiqueta se usa para representar una línea o grupo de código, o un valor constante. Es
necesario para las instrucciones de ramificación.
• Las etiquetas deben comenzar en la columna 1. Pueden ir seguidas de dos puntos (:),
espacio, tabulación o el final de la línea.
• Las etiquetas deben comenzar con un carácter alfabético o una barra inferior (_) y pueden
contener caracteres alfanuméricos, la barra inferior y el signo de interrogación.
• Las etiquetas no deben:
• Comience con dos guiones bajos principales, p. __temperatura
• Comience con un guion bajo y un número. p.ej. _2NDLOOP
• Ser una palabra reservada de ensamblador (mnemónica, directiva, etc.).
Formato de instrucciones – Etiqueta (Label)
• Una etiqueta se usa para representar una línea o grupo de código, o un valor constante. Es
necesario para las instrucciones de ramificación.
• Las etiquetas deben comenzar en la columna 1. Pueden ir seguidas de dos puntos (:),
espacio, tabulación o el final de la línea.
• Las etiquetas deben comenzar con un carácter alfabético o una barra inferior (_) y pueden
contener caracteres alfanuméricos, la barra inferior y el signo de interrogación.
• Las etiquetas no deben:
• Comience con dos guiones bajos principales, p. __temperatura
• Comience con un guion bajo y un número. p.ej. _2NDLOOP
• Ser una palabra reservada de ensamblador (mnemónica, directiva, etc.).
• Las etiquetas pueden tener hasta 32 caracteres de longitud.
Formato de instrucciones - Opcode
• Este campo consiste en un código de operación simbólico, conocido como código de
operación.
• El código de operación describe la operación
• Los códigos de operación simbólicos (conocidos como nemónicos) se traducen al código
de operación del lenguaje de máquina.
• Los mnemónicos no distinguen entre mayúsculas y minúsculas.

Ejemplo: BSF (Bit Set f)


CLRW (Clear W)
Formato de instrucciones – Campo de operandos

• Los operandos dan información a la instrucción sobre los datos que deben usarse y la
ubicación de almacenamiento de la instrucción.
• Los operandos deben estar separados de los nemotécnicos por uno o más espacios o
tabulaciones.
• Puede tener uno, dos o ningún operando en absoluto. Los operandos múltiples deben estar
separados por comas.
• Ejemplos de instrucciones con diferentes campos de operandos:
NOP
ANDLW 0x34
ADDWF FSR,1
Formato de instrucciones – Campo de comentarios

• Los comentarios son textos que explican el funcionamiento de una línea o líneas de
código.
• Un punto y coma (;) marca el comienzo de un comentario
• Un punto y coma al comienzo de una línea lo convierte en una línea de comentario.
• Todos los caracteres que siguen al punto y coma se ignoran hasta el final de la línea.
• La buena práctica de programación dicta el uso de un comentario en casi todas las líneas.
Ejemplo:
;Línea de declaración con un campo de comentario
BSF PortA,0 ; establecer el pin 0 de PortA
Ejemplo Código fuente
Conjunto de instrucciones – PIC16F877A

• Cada familia de microcontroladores tiene su propio conjunto de instrucciones, que llevan a


cabo esencialmente el mismo conjunto de operaciones, pero utilizan una sintaxis diferente.
• El PIC16F877A solo tiene 35 instrucciones. Cada instrucción tiene palabras de 14 bits.
• Este conjunto de instrucciones esta organizado por grupos funcionales.
Conjunto de instrucciones – PIC16F877A
Conjunto de instrucciones – PIC16F877A
Instruction Type Definition Examples
MOVE El contenido de un registro se copia a otro. MOVF, MOVWF, MOVLW

REGISTER Las operaciones de registro afectan solo a un único CLRW, CLRF, DECF, INCF, SWAPF,
registro, y todos excepto CLRW (borrar W) operan COMF, RLF, RRF, BCF, BSF
en registros de archivos.

ARITHMETIC La suma y la resta en binario dan el mismo resultado ADDWF, ADDLW, SUBWF, SUBLW
que en decimal o hexadecimal.

LOGIC Las operaciones lógicas se llevan a cabo en pares ANDWF, ANDLW, IORWF, IORLW,
de bits en dos números para dar el resultado que se XORWF, XORLW
obtendría si se alimentaran a la puerta lógica
correspondiente.

TEST, SKIP & JUMP tomar decisiones (ramas de programas BTFSC, BTFSS, DECFSZ, INCFSZ, GOTO,
condicionales) que dependen de alguna condición de CALL, RETURN, RETLW, RETFIE
entrada o del resultado de un cálculo

CONTROL NOP, SLEEP, CLRWDT


Formato de instrucciones – Conjunto de instrucciones

• Algunas instrucciones con destinos de resultados alternativos. El destino predeterminado


para el resultado de una operación es el registro de archivos, pero el registro de trabajo W
a veces es una opción.
• El conjunto de instrucciones también puede organizarse por grupos operativos como se muestra a
continuación.
• Hay tres categorías básicas:
• Byte-Oriented Instruction
• Bit-Oriented Instruction
• Literal and Control Operation:
Descripción convención– PIC16F877A

• Cada familia de microcontroladores tiene su propio conjunto de instrucciones, que llevan a


cabo esencialmente el mismo conjunto de operaciones, pero utilizan una sintaxis diferente.
• El PIC16F877A solo tiene 35 instrucciones. Cada instrucción tiene palabras de 14 bits.
• Este conjunto de instrucciones esta organizado por grupos funcionales.
Trabajo en clase
1. Crear un programa que incremente en 1 el Working register hasta llegar al valor 32.
2. Implementar un programa para crear la siguiente serie almacenando el resultado en el
Working register.

También podría gustarte