teoria microcontroladores

42
Microcontroladores – Teoría Ingeniería en Sistemas de Información Arquitectura de Computadoras UNCAUS – Año 2010 UNIDAD N° 10: DISPOSITIVOS LÓGICOS PROGRAMABLES INTRODUCCIÓN Hasta este momento nuestro estudio se centro en el análisis y diseño de circuitos “cableados” cuyo principio de funcionamiento se basa en la utilización de un circuito especifico para cada aplicación. Estos circuitos requieren de importantes cambios cuando se intenta adaptarlos a otras aplicaciones o circunstancias distintas a las previstas. Una maquina cableada se muestra gráficamente en la figura 10 – 1 Algunos factores como el incremento de la complejidad de las funciones, los avances tecnológicos en la fabricación de circuitos integrados, etc. Analógica posibilitado la aparición de los circuitos programados, basados en el Microprocesador como estructura principal de todas las aplicaciones. Se aplica la denominación Microprocesador a un circuito integrado que contiene los elementos que constituyen la Unidad Central de Proceso (CPU) de una maquina programada llamada genéricamente Computador Figura 10 - 1

Transcript of teoria microcontroladores

Page 1: teoria microcontroladores

Microcontroladores – Teoría Ingeniería en Sistemas de InformaciónArquitectura de Computadoras UNCAUS – Año 2010

UNIDAD N° 10: DISPOSITIVOS LÓGICOS PROGRAMABLES

INTRODUCCIÓNHasta este momento nuestro estudio se centro en el análisis y diseño de circuitos “cableados” cuyo principio de funcionamiento se basa en la utilización de un circuito especifico para cada aplicación. Estos circuitos requieren de importantes cambios cuando se intenta adaptarlos a otras aplicaciones o circunstancias distintas a las previstas. Una maquina cableada se muestra gráficamente en la figura 10 – 1

Algunos factores como el incremento de la complejidad de las funciones, los avances tecnológicos en la fabricación de circuitos integrados, etc. Analógica posibilitado la aparición de los circuitos programados, basados en el Microprocesador como estructura principal de todas las aplicaciones.

Se aplica la denominación Microprocesador a un circuito integrado que contiene los elementos que constituyen la Unidad Central de Proceso (CPU) de una maquina programada llamada genéricamente Computador

Figura 10 - 1

Figura 10 – 2: Microprocesador HITACHI 6303

Page 2: teoria microcontroladores

Microcontroladores – Teoría Ingeniería en Sistemas de InformaciónArquitectura de Computadoras UNCAUS – Año 2010

Las principales funciones del microprocesador son las siguientesa) Direccionamiento de la instrucción a ejecutar: se lleva a cabo mediante un elemento

denominado contador de programa, que normalmente se valor incrementando, su valor puede ser modificado con lo que se logra una alteración en el orden de ejecución de las instrucciones

b) Descodificación de las instrucciones: las instrucciones se reciben en un código binario y el microprocesador debe interpretar su significado

c) Unidad de control y tiempo: : es el componente encargado de generar y transmitir las señales de gobierno y sincronismo a todo el sistema (componentes internos del microprocesador y externos al mismo)

d) Unidad aritmética y lógica : es la encargada de efectuar las operacionese) Registros : son celdas para almacenamiento de información (datos o direcciones)

ARQUITECTURA DE VON NEUMAN

La arquitectura tradicional de microprocesadores se basa en el esquema propuesto por Von Neuman, en el cual la unidad central de procesos o CPU esta conectada por a una memoria única que contiene datos e instrucciones y se basa en tres conceptos claves:

1. Los datos y las instrucciones se almacenan en una sola memoria de lectura-escritura.2. Los contenidos de esta memoria se direccionan indicando su posición, sin considerar el

tipo de dato contenido en la misma.3. La ejecución se produce siguiendo una secuencia de instrucción tras instrucción (a no

ser que dicha secuencia se modifique explícitamente).

Hay un conjunto pequeño de componentes lógicos básicos que pueden combinarse de formas diferentes para almacenar datos binarios y realizar las operaciones aritméticas y lógicas con esos datos. Si se desea realizar un cálculo concreto, es posible utilizar una configuración de componentes lógicos diseñada específicamente para dicho cálculo. Se puede pensar en el proceso de conexión de los diversos componentes para obtener la configuración deseada como si se tratase de una forma de programación. El “programa” resultante es hardware, y se denomina “programa cableado”.

Consideremos ahora un hardware de uso general de funciones lógicas y aritméticas, el cual realiza funciones diferentes según las señales de control aplicadas. Si tratamos del hardware específico, el sistema solo acepta datos y produce resultados, en cambio, con el hardware de uso general, el sistema acepta datos y señales de control y produce resultados. Así, en lugar de reconfigurar el hardware para cada nuevo programa, el programador simplemente necesita proporcionar un nuevo conjunto de señales de control, pero ¿cómo?

El programa es una secuencia de pasos. En cada paso, se realiza una operación aritmética o lógica con ciertos datos. Para cada paso, se necesita un nuevo conjunto de señales de control. La solución consiste en asociar un código específico a cada posible conjunto de señales de control, y añadir al hardware de uso general una parte encargada de generar las señales de control a partir del código.

Page 3: teoria microcontroladores

Microcontroladores – Teoría Ingeniería en Sistemas de InformaciónArquitectura de Computadoras UNCAUS – Año 2010

Programar ahora es mas fácil, no hay necesidad de reconfigurar el hardware para cada programa, todo lo que se necesita es proporcionar una nueva secuencia de códigos. Cada código es, de hecho, una instrucción, y una parte del hardware interpreta cada instrucción y genera las señales de control. Para distinguir este nuevo método de programación, una secuencia de códigos o instrucciones se denomina software.

Para almacenar temporalmente tanto las instrucciones como los datos, debe existir algún módulo que lo haga, este módulo se llama memoria, o memoria principal para distinguirlo de los periféricos y la memoria externa. Von Neumann indicó que la misma memoria podría ser usada tanto para las instrucciones como para los datos.

Page 4: teoria microcontroladores

Microcontroladores – Teoría Ingeniería en Sistemas de InformaciónArquitectura de Computadoras UNCAUS – Año 2010

El tamaño de la unidad de datos o instrucciones esta fijado por el ancho del bus de la memoria, es decir que un microprocesador de 8 bits que tiene además un bus de 8 bits que lo conecta con la memoria, deberá manejar datos e instrucciones de una o mas unidades de 8 bits (BYTE) de longitud. Cuando deba acceder a una instrucción o dato de mas de un BYTE deberá realizar mas de un acceso a memoria. Por otro lado este bus único limita la velocidad del microprocesador ya que no se puede buscar en memoria una nueva instrucción antes de que finalicen las transferencias de datos que pudieran resultar de la instrucción anterior. Es decir que las principales limitaciones de este modelo son:

a) Que la longitud de las instrucciones esta limitada por la unidad de longitud de los datosb) Que la velocidad de operación esta limitada por el efecto de cuello de botella que

significa disponer de un bus único para datos e instrucciones

ARQUITECTURA HARVARD

Esta arquitectura consiste en un esquema en el que el CPU esta conectado a dos memorias por intermedio de dos buses separados. Una de las memorias contiene solamente las instrucciones del programa y la otra almacena los datos. Ambos buses son totalmente independientes y

CPU MEMORIABUS

Page 5: teoria microcontroladores

Microcontroladores – Teoría Ingeniería en Sistemas de InformaciónArquitectura de Computadoras UNCAUS – Año 2010

pueden ser de distintos anchos. Para un procesador de Set de Instrucciones Reducido (RISC), el set de instrucciones y el bus de memoria del programa pueden diseñarse de manera tal que todas las instrucciones ocupen una sola posición de memoria. Además como los buses son independientes el 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. Las principales ventajas de esta arquitectura son.

a) Que el tamaño de las instrucciones no esta relacionado con el de datos y por lo tanto puede ser optimizado para que cualquier instrucción ocupe una sola posición de memoria

b) Que el tiempo de acceso a las instrucciones puede superponerse con el de datos logrando una mayor velocidad de operación.

ARQUITECTURA INTERNA DE UN MICROPROCESADOR

Para poder analizar el funcionamiento del microprocesador partiremos de una estructura interna simplificada que nos permita analizar la función de cada uno de sus principales bloques constitutivos. La figura 10 – 5 presenta esta estructura interna

CPU MEMORIADE DATOS

BUS

MEMORIADE

PROGRAMABUS

Figura 10 - 5

Page 6: teoria microcontroladores

Microcontroladores – Teoría Ingeniería en Sistemas de InformaciónArquitectura de Computadoras UNCAUS – Año 2010

CONTADOR DE PROGRAMA: contiene la dirección de la próxima instrucción a ejecutar, se incrementa automáticamente pero puede ser alterada, su tamaño en bits esta directamente relacionada con el tamaño del bus de direcciones. Al resetearse un microprocesador el contador de programa asume siempre la misma dirección, siendo esta la dirección de arranque de programa y en ella se deberá colocar una instrucción de salto a la dirección inicial del programa que se quiere ejecutar

DECODIFICADOR DE INSTRUCCIONES: recibe la instrucción en código binario e interpreta su significado

UNIDAD DE CONTROL Y TEMPORIZACION: genera y transmite las señales de gobierno y sincronismo

UNIDAD ARITMÉTICA Y LÓGICA : ejecuta las operaciones que pueden implicar hasta dos operandos. Un diagrama simplificado de la ALU seria:

La ALU produce dos conjuntos de salidas, un conjunto es el resultado de la operación, el otro es un conjunto de señales que se envían al registro de estado para indicar diferentes situaciones referentes a la ultima operación realizada. Por ejemplo si el resultado de la ultima operación fue cero el bit “Z”del registro de estado se pone en “1” o si ocurrió un acarreo en el ultimo bit el bit “C” del registro de estado se pone en “1”, etc.Las entradas de operando provienen de varias fuentes como ser de memoria, de registros auxiliares del microprocesador.

Algunas operaciones que se realizan con un solo operando son:

Borrar : todos los bits del operando son puestos en cero

ALU

Circuitos de procesamiento aritmético y lógico

Operando “A” (8)

Operando “B” (8)

ResultadosAl acumulador

Salidas de condición. Al registro de estado

Selección de la operación

Page 7: teoria microcontroladores

Microcontroladores – Teoría Ingeniería en Sistemas de InformaciónArquitectura de Computadoras UNCAUS – Año 2010

1 1 0 1 1 0 1 1 Antes de la operación

0 0 0 0 0 0 0 0 Después de la operación

Complementar o invertir: todos los bits cambian de nivel lógico

1 1 0 1 1 0 1 1 Antes de la operación

0 0 1 0 0 1 0 0 Después de la operación

Incrementar: Sumarle uno al operador

1 1 0 1 1 0 1 1 Antes de la operación

0 0 0 0 0 1 0 0 Después de la operación

Disminuir: Restarle uno al operador

1 1 0 1 1 0 1 1 Antes de la operación

1 1 0 1 1 0 1 0 Después de la operación

Rotar: En esta operación interviene el bit de acarreo C

0 1 1 0 1 1 0 1 1 Antes de la operación

1 1 0 1 1 0 1 1 0 Después de la operación

Algunas operaciones con dos operandos son:

Sumar y Restar : El sumador elemental de un bit ya lo hemos visto en capítulos anteriores y lo resumimos en la siguiente figura. A partir del sumador elemental de un bit se puede construir un sumador – restador completo como el de la figura, en el cual cuando la señal s’/r vale 0 se realiza una suma entre los operandos A y B, sin embargo cuando s’/r vale 1 se realiza la suma del complemento del operando B, es decir que se suma – B.

ΣA B

CinCout

S

Page 8: teoria microcontroladores

Microcontroladores – Teoría Ingeniería en Sistemas de InformaciónArquitectura de Computadoras UNCAUS – Año 2010

Multiplicar y Dividir : a partir de la metodología conocida de multiplicación se puede construir un multiplicador utilizando sumadores elementales de un bit. El truco del diseño de la figura siguiente consiste en habilitar que se sume el multiplicando A n-1 ... A0 o una fila de ceros mediante una puerta AND que valor al bit correspondiente del multiplicador Bm-1 ... B0. El desplazamiento de los resultados parciales se realiza desplazando la conexión de salida de los sumadores da la siguiente fila de sumadores. Los acarreos se propagan a través de toda la red de multiplicadores.

Esta aproximación llamada Aproximación combinacional suele no se r muy usada por la cantidad de componentes que implica, es por eso que se han desarrollado otros métodos que a costa de ser mas lentos, reutilizan la circuiteria de la suma y multiplicación y por ello requieren de menos componentes. En la siguiente figura se muestra un multiplicador secuencial, en este circuito se supone que el

Page 9: teoria microcontroladores

Microcontroladores – Teoría Ingeniería en Sistemas de InformaciónArquitectura de Computadoras UNCAUS – Año 2010

multiplicando es A n-1 .... A0 y el multiplicador es B m-1 ... B0. El circuito consta de un sumador de n bits, un registro acumulador S de desplazamiento de n bits (con señales de carga en paralelo LOAD y desplazamiento SHIFT), un registro de desplazamiento M de m bits y un registro C de 1 bit para almacenar el desbordamiento. La unidad de control no es mas que una maquina de estados que realiza el algoritmo:1. Se activa la señal reset de todos los registros i = 02. Mientras i < m hacer

Si Bi = 1 entonces activar la señal de carga LOAD, cargando en S el resultado de la suma y en C el acarreo

Desplazamiento a la derecha (activar la señal SHIFT) cargando en M m-1

el bit saliente de S0

i i + 1

Comparar AND Lógica OR Lógica

REGISTROS DE TRABAJO: almacenamiento de datos y direcciones. Estos registros pueden, en algunos microprocesadores, utilizarse solos o de a pares, según se almacene un dato o una dirección.

BH BL

Registro Auxiliar “B” – 16 bits

8 bits mas signif. 8 bits menos signif

Page 10: teoria microcontroladores

Microcontroladores – Teoría Ingeniería en Sistemas de InformaciónArquitectura de Computadoras UNCAUS – Año 2010

REGISTRO DE ESTADO: contiene información sobre el estado interno de la CPU después de haber realizado una instrucción. Se compone de una serie de bits llamados FLAGS que pueden ser consultados por el programador en cualquier momento.

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0S Z X H X P/V N C

C: Indicador de acarreoN: Indicador de suma / restaP/V: Indicador de Paridad / desbordamientoH: Indicador de acarreo en el cuarto bitZ: Indicador de ceroS: Indicador de signoX: No usado

PUNTERO DE STACK: direcciona una posición de memoria (STACK) donde se almacenan ciertos elementos significativos de la CPU. El uso del puntero y de la pila o STACK permiten la anidación de subrutinas. La pila o STACK es una zona de memoria reservada, el puntero indica la dirección de la ultima entrada de datos a la pila dado que la pila es del tipo “ultimo en entrar primero en salir”ACUMULADOR: Es un registro que tiene la particularidad de que en el se depositan los resultados de una operación realizada por la Unidad Aritmética. El acumulador por lo general tiene el mismo numero de bits que el tamaño de la palabra de datos.

DIAGRAMAS DE TIEMPO

La unidad básica de tiempo es el “estado” que es un ciclo de reloj (clock). Un ciclo de maquina consta de 3 a 6 estados. Las operaciones requieren entre uno y cinco ciclos de maquina para completar su ejecución. En la figura siguiente se representa la relación entre los diferentes ciclos del microprocesador.

Page 11: teoria microcontroladores

Microcontroladores – Teoría Ingeniería en Sistemas de InformaciónArquitectura de Computadoras UNCAUS – Año 2010

Si por ejemplo la frecuencia de trabajo del microprocesador es de 2MHz, el ciclo de reloj tendrá una duración de 500 ns, por cuanto la instrucción mas rápida, al constar de 4 ciclos será de 500 * 4 = 2000 ns.

A continuación se describirá el diagrama de tiempos de una instrucción OUT (en forma genérica)

En el primer ciclo de maquina M1 se busca el código de la instrucción en la memoria (FETCH) En el segundo ciclo M2 se busca en memoria el segundo Byte de la instrucción (la dirección de la puerta de salida) y durante M3 se ejecuta la instrucción y el dato es escrito en la puerta de salida.Los datos marcados como (1) consisten en el código de operación de la instrucción que son leídos de memoria (ver que esta activa la señal read), los marcados como (2) corresponden al la segunda parte de la instrucción y también se leen de la memoria y los marcados con (3) son los datos escritos en el puerto de entrada / salida (IO) (ver que se activa la señal write)

Figura 10 - 7

Figura 10 - 8

Page 12: teoria microcontroladores

Microcontroladores – Teoría Ingeniería en Sistemas de InformaciónArquitectura de Computadoras UNCAUS – Año 2010

Si ahora analizamos lo que sucede durante el ciclo de búsqueda podemos diferenciar las siguientes fases:

El contenido del contador de programas (PC) pasa al bus de direcciones con lo que se selecciona la posición de memoria donde esta la instrucción que se debe ejecutar

El contador de programa (PC) se incremente automáticamente El dato contenido en la memoria (corresponde al código de operación de la

instrucción) se coloca en el bus de datos e ingresa por esta vía al registro de instrucciones

Se decodifica la instrucción, el micro procesador genera las ordenes de control para la ejecución de la instrucción

Figura 10 - 9

Page 13: teoria microcontroladores

Microcontroladores – Teoría Ingeniería en Sistemas de InformaciónArquitectura de Computadoras UNCAUS – Año 2010

FAMILIA DE COMPONENTES RELACIONADOS CON EL MICROPROCESADOR

Un sistema construido alrededor de un microprocesador requiere de otros componentes como ser : los módulos de entrada / salida, la memoria y algunos otros componentes auxiliares que permitan el trabajo en equipo de toda la estructura.Precisamente una de las razones que motiva la elección de un microprocesador determinado es la variedad y potencia de los componentes que forman su “familia”

A continuación se mencionan algunos componentes de uso general:

1. COMPONENTES AUXILIARES

1.1. Decodificador binario: para seleccionar memoria o puertos de E / S. En la figura 10-10 se muestra un esquema de un decodificador y un esquema de su aplicación en circuitos de selección

1.2. Driver para bus bidireccional: se emplea como buffer. En la figura 10-11 se muestra la estructura interna de este circuito y su tabla de funcionamiento

Figura 10 – 10 Decodificador binario / decimal, utilizado para seleccionar uno de ocho puertos de entrada / salida

Page 14: teoria microcontroladores

Microcontroladores – Teoría Ingeniería en Sistemas de InformaciónArquitectura de Computadoras UNCAUS – Año 2010

Figura 10 – 11 Estructura y tabla de funcionamiento de un Driver bidireccional

2. MEMORIAS2.1. RAM estática2.2. RAM dinámica2.3. ROM2.4. Controlador de refresco

Figura 10 – 12: RAM estática

Page 15: teoria microcontroladores

Microcontroladores – Teoría Ingeniería en Sistemas de InformaciónArquitectura de Computadoras UNCAUS – Año 2010

Figura 10 – 13 : conexión en paralelo de memoria para extender la longitud de la palabra

Figura 10 – 14 : conexión en paralelo de memoria para extender la cantidad de palabras

3. MÓDULOS DE ENTRADA / SALIDA

3.1. Transmisor / receptor universal sincrónico / asincrónico: periférico programable destinado a la comunicación serie

3.2. Temporizador programable: contadores programables3.3. Periférico de interfaz programable (PIA): puertos paralelos programables como

entrada o salida de datos3.4. Controlador programable de acceso directo a memoria: diseñado para simplificar la

transferencia de datos a alta velocidad entre los periféricos y la memoria

Page 16: teoria microcontroladores

Microcontroladores – Teoría Ingeniería en Sistemas de InformaciónArquitectura de Computadoras UNCAUS – Año 2010

Figura 10 – 15 : USART

Figura 10 – 16 : conexión entre periféricos y microprocesador a tras de una PIA

Page 17: teoria microcontroladores

Microcontroladores – Teoría Ingeniería en Sistemas de InformaciónArquitectura de Computadoras UNCAUS – Año 2010

MICROCONTROLADORES PIC®

Ante la necesidad de realizar una experiencia practica con microprocesadores se ha adoptado a los microcontroladores PIC® como herramienta de desarrollo por su reducido costo y facilidad de implementación en circuitos de estudio.Es por ello que en primer lugar estudiaremos su estructura interna y analizaremos en detalle su funcionamiento.En la figura 10 – 17 vemos la estructura interna del microcontrolador PIC16C8x, e la cual se pueden diferenciar los bloques funcionales de este circuito integradoEn primer lugar debemos decir que no es exactamente un microprocesador sino un microcontrolador dado que además de los bloques típicos del microprocesador encontraremos dentro del CI algunas funciones adicionales tales como memoria RAM, memoria EEPROM, etc.

Figura 10 – 17 : estructura interna del microcontrolador PIC16C84

Memoria Interna (RAM) : La memoria interna de datos (también llamada register file), esta dividida en dos grupos: los registros especiales y los registros de propósito generales. Los primeros ocupan las 11 posiciones primeras que van desde la 00 a la 07, y los segundos las

Page 18: teoria microcontroladores

Microcontroladores – Teoría Ingeniería en Sistemas de InformaciónArquitectura de Computadoras UNCAUS – Año 2010

posiciones que siguen, o sea de la 08 a la 4F.Los registros especiales contienen: la palabra de estado (STATUS), los registros de datos de los tres puertos de entrada salida (Puerto A, Puerto B, Puerto C), los 8 bits menos significativos del program counter (PC), el contador del Real Time Clock / Counter (RTCC) y un registro puntero llamado File Select Register (FSR). La posición 00 no contiene ningún registro en especial y es utilizada en el mecanismo de direccionamiento indirecto.

Los registros de propósito general se dividen en dos grupos: los registros de posición fija y los bancos de registros. Los primeros ocupan las 8 posiciones que van de la 08 a la 0F los bancos de registros consisten en hasta cuatro grupos o bancos de 16 registros cada uno que se encuentran superpuestos en las direcciones que van de la 10 a la 1F. Se puede operar con un solo banco a la vez, el cual se selecciona mediante los bits 5 y 6 del File Select Register (FSR).

00 DIRECCIÓN INDIRECTA 10 BANCO 001 TRC 1102 PC 1203 STATUS 1304 FSR 1405 PORT A 1506 PORT B 1607 PORT C 1708 1809 190A 1ª0B 1B0C 1C0D 1D0E 1E0F 1F

Organización de la memoria interna del PIC 16C5x

Memoria de Programa: La memoria de programa, que en los PIC16C5X puede ser de 512 a 2K instrucciones, debe ser considerada a los efectos de la programación, como compuesta por secciones o páginas de 512 posiciones. A su vez cada página debe considerarse dividida en dos mitades de 128 posiciones cada una. Esto se debe, como se verá, a las limitaciones de direccionamiento de las instrucciones

12

3

Page 19: teoria microcontroladores

Microcontroladores – Teoría Ingeniería en Sistemas de InformaciónArquitectura de Computadoras UNCAUS – Año 2010

Pagina 0 de 000H a 1FFH, Pagina 1 de 200H a 3FFH, Pagina 2 de 400H a 5FFH y Pagina 4 de 600H a 7FFH,

El registro W y la ALU: La figura 10 - 18 representa un diagrama simplificado de la arquitectura interna del camino de los datos en la CPU Se puede observar que la diferencia principal entre el microprocesador tradicional y el PIC radica en la ubicación del registro de trabajo, que para el PIC se denomina registro “W” y para el microprocesador tradicional se llama “Acumulador”

Figura 10 – 18

En los microcontroladores tradicionales todas las operaciones se realizan sobre el acumulador. La salida del acumulador esta conectada a una de las entradas de la Unidad Aritmética y Lógica (ALU), y por lo tanto éste es siempre uno de los dos operandos de cualquier instrucción. Por convención, las instrucciones de simple operando (borrar, incrementar, decrementar, complementar), actúan sobre el acumulador. La salida de la ALU va solamente a la entrada del acumulador, por lo tanto el resultado de cualquier operación siempre quedara en este registro.Para operar sobre un dato de memoria, luego realizar la operación siempre hay que mover el acumulador a la memoria con una instrucción adicional.

En Ios microcontroladores PIC, la salida de la ALU va al registro W y también a la memoria de datos, por lo tanto el resultado puede guardarse en cualquiera de los dos destinos. En las instrucciones de doble operando, uno de los dos datos siempre debe estar en el registro W, como ocurría en el modelo tradicional con el acumulador. En las instrucciones de simple operando el dato en este caso se toma de la memoria (también por convención). La gran ventaja de esta arquitectura es que permite un gran ahorro de instrucciones ya que el resultado de cualquier instrucción que opere con la memoria, ya sea de simple o doble operando, puede

Page 20: teoria microcontroladores

Microcontroladores – Teoría Ingeniería en Sistemas de InformaciónArquitectura de Computadoras UNCAUS – Año 2010

dejarse en la misina posición de memoria o en el registro W, según se seleccione con un bit de la misma instrucción. Las operaciones con constantes provenientes de la memoria de programa (literales) se realizan solo sobre el registro W.

En la memoria de datos de los PIC's se encuentran ubicados casi todos los registros de control del microprocesador y sus periféricos autocontenidos, y también las posiciones de memoria de usos generales. En el caso de los 16C5X, algunos registros especiales de solo escritura (TRIS y OPTION) no están accesibles dentro del bloque de memoria de datos, sino que solo se pueden cargar desde el registro W por medio de instrucciones especiales.

Contador de Programa: Este registro, normalmente denominado PC, es totalmente equivalente al de todos los microprocesadores y contiene la dirección de la próxima instrucción a ejecutar. Se incrementa automáticamente al ejecutar cada instrucción, de manera que la secuencia natural de ejecución del programa es lineal, una instrucción después de la otra. Algunas instrucciones que llamaremosde control, cambian el contenido del PC alterando la secuencia Lineal de ejecución. Dentro de estas Instrucciones se encuentran el GOTO y el CALL que permiten cargar en forma directa un valor constante en el PC haciendo que el programa salte a cualquier posición de la memoria.Otras instrucciones de control son los SKIP o "saltos" condicionales, que producen un incremento adicional del PC si se cumple una condición especifica, haciendo que el programa salte, sin ejecutar, la instrucción siguiente.

El PC es un registro de 9 bits en los 16L54155, 10 bits en el 16C56, y 11 bits en el 16C57, lo que permite direccionar respectivamente 512, 1024 o 2048 posiciones de memoria de programa.

Al resetearse el microprocesador, todos los bits del PC toman valor 1, de manera que la dirección de arranque del programa es siempre la ultima posición de memoria de programa. En esta posición se deberá poner una instrucción de salto al punto donde verdaderamente se inicia el programa. A diferencia de la mayoría de los microprocesadores convencionales, el PC es también accesible al programador como registro de memoria interna de datos, en la posición de 02. Es decir que cualquier instrucción común que opere sobre registros puede ser utilizada para alterar el PC y desviar la ejecución del programa. El uso indiscriminado de este tipo de instrucciones complica el programa y puede ser muy peligroso, ya que puede producir comportamientos difíciles de predecir. Sin embargo, algunas de esta instrucciones utilizadas con cierto método, pueden ser muy útiles para implementar poderosas estructuras de control tales como el goto computado.Como el microprocesador opera con datos de 8 bits, y la memoria de datos es también de 8 bits, estas instrucciones solo pueden leer o modificar los bits O a 7 del PC.Stack: En los microcontroladores PIC el stack es una memoria interna dedicada, de tamaño, limitado, separada de las memorias de datos y de programa, inaccesible al programador, y organizada en forma de pila, que es utilizada solamente, en forma automática, para guardar las

Page 21: teoria microcontroladores

Microcontroladores – Teoría Ingeniería en Sistemas de InformaciónArquitectura de Computadoras UNCAUS – Año 2010

direcciones de retorno de subrutinas e interrupciones. Cada posición es de 11 bits y permite guardar una copia completa del PC. Como en toda memoria tipo pila, los datos son accedidos de manera tal que el primero que entra es el ultimo que sale.

En los 16C5X el stack es de solo dos posiciones, mientras que en los 16CXX es de 8 posiciones y en los 17CXX es de 16 posiciones. Esto representa, en cierta medida, una limitación de estos microcontroladores, ya que no permite hacer uso intensivo del anidamiento de subrutina. En los 16C5X, solo se pueden anidar dos niveles de subrutinas, es decir que una subrutina que es llamada desde el programa principal, puede a su vez llamar a otra subrutina, pero esta ultima nopuede llamar a una tercera, porque se desborda la capacidad del stack, que solo puede almacenar dos direcciones de retomo. Esto de hecho representa una traba para el programador y además parece impedir o dificultar la programación estructurada, sin embargo es una buena solución de compromiso ya que estos microcontroladores están diseñados para aplicaciones de alta velocidad en tiempo real, en las que el overhead (demoras adicionales) que ocasiona un excesivo anidamiento de subrutinas es inaceptable. Por otra parte existen técnicas de organización del programa que permiten mantener la claridad de la programación estructurada, sin necesidad de utilizar tantas subrutinas anidadas.

Como ya se menciono anteriormente, el stack y el puntero interno que lo direcciona, son invisibles para el programador, solo se los accede automáticamente para guardar o rescatar las direcciones de programa cuando se ejecutan las instrucciones de llamada o retorno de subrutinas, o cuando se produce una interrupción o se ejecuta una instrucción de retorno de ella.

Palabra de Estado del Procesador : La palabra de estado del procesador contiene los tres bits de estado de la ALU (C, DC y Z), y otros bits que por comodidad se incluyeron en este registro.

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0PA2 PA1 PA0 T0 PD Z DC C

Registro STATUS

El bit Z indica que el resultado de la ultima operación fue CERO. El bit C indica acarreo del bit más significativo (bit 7) del resultado de la ultima operación de suma. En el caso de la resta se comporta a la inversa, C resulta 1 si no hubo pedido de préstamo. El bit DC (digit carry) indica acarreo del Cuarto bit (bit 3) del resultado de la ultima operación de suma o resta, con un comportamiento análogo al del bit C, y es útil para operar en BCD (para sumar o restar números en código BCD empaquetado). EI bit C es usado además en las operaciones de rotación derecha o izquierda como un paso intermedio entre el bit O y el bit 7.El bit PD (POWER DOWN) sirve para detectar si la alimentación fue apagada y encendida nuevamente, tiene que ver con la secuencia de inicialización, el watch dog- timer y la instrucción sleep, y su uso se detallara en la sección referida al modo POWER DOWN. El bit

Page 22: teoria microcontroladores

Microcontroladores – Teoría Ingeniería en Sistemas de InformaciónArquitectura de Computadoras UNCAUS – Año 2010

TO (TIME- OUT) sirve para detectar si una condición de reset fue producida por el watch dog timer, esta relacionado con los mismos elementos que el bit anterior y su uso se detallara en la sección referida al WATCH DOG TIMER, Los bits de selección de pagina PA0 / PA1 / PA2 se utilizan en las instrucciones de salto GOTO y CALL, y se explicaran con detalle en la sección referida a las instrucciones de control, y a la organización de la memoria de programa. En realidad en el 16C54 estos bits no se usan y sirven para propósitos generales. En el 16C57 el PA0 si se usa pero los otros dos no. En el 16C55 se utilizan PA0 y PA1. PA2 esta reservado para uso futuro y en cualquiera de los PIC 16C5x sirve para propósitos generales

Otros registros especiales: Las 8 primeras posiciones del área de datos están reservadas para alojar registros de propósito especial, quedando las restantes libres para contener los datos u operandos que se desee

El registro INDF que ocupa la posición 00h no esta implementado físicamente y como se ha explicado, se le referencia en el direccionamiento indirecto de datos aunque se utiliza el contenido de FSR (04h)

En la dirección 01h esta el registro TMR0 (temporizador) que puede ser leído y escrito como cualquier otro registro. Puede incrementar su valor con una señal externa aplicada al pin T0CK1 o mediante un oscilador interno

El PC ocupa la posición 02h del área de datos en donde se halla el registro PCL al que se añaden 3 bits auxiliares y se conectan con los dos niveles de la pila en las instrucciones CALL y RETLW

El registro de estado (STATUS) ocupa la posición 03h y entre sus bits se encuentran los señalizadotes C, DC y Z y los bits PA1 y PA0 que seleccionan la pagina en la memoria de programa. El bit 7 (PA2) no esta implementado en los Pic de la gama baja

FRS se ubica en la dirección 04h y puede usarse para contener las direcciones del dato en las instrucciones con direccionamiento indirecto y también para guardar operandos en sus 5 bits de menor peso

Los registros que ocupan la posición 05h, 06h y 07h soportan los puertos A, B y C de entrada / salida. Pueden ser leídos y escritos como cualquier otro registro y manejan los valores de los bits que entran y salen por los pines de E/S del microcontrolador.PUERTOS DE ENTRADA / SALIDA

Los microprocesadores PIC16C5X tienen dos o tres puertos de entrada / salida paralelo de usos generales llamados puerto A, puerto B y puerto C. El Puerto A es de cuatro bits y los demás son de 8 bits cada uno. El Puerto C solamente esta disponible en el 16C55 y el 16C57.

Los puertos pueden configurarse como entrada o salida a través de los registros TRISx, colocando un “1” en un bit de este registro, el bit correspondiente del PORTx se configura como entrada. Colocando un “0” en TRISx el PORTx se configura como salida

Page 23: teoria microcontroladores

Microcontroladores – Teoría Ingeniería en Sistemas de InformaciónArquitectura de Computadoras UNCAUS – Año 2010

Direcc. Nombre Bit 7 Bit 005h PORTA - - - RA4/TOCKI RA3 RA2 RA1 RA085h TRISA - - - TRISA4 TRISA3 TRISA2 TRISA1 TRISA0

Direcc. Nombre Bit 7 Bit 006h PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB086h TRISB TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0

Circuito equivalente: El circuito equiválete para un bit cualquiera de un puerto de entrada / salida se representa en la figura 10 - 19

Figura 10 – 19 : circuito equivalente de un puerto de E / S

EI latch L1 corresponde a un bit del registro de datos del puerto, mientras que L2 es un bit del registro de control de tristate del mismo. B1 es el buffer tristate de salida que tiene capacidad de entregar 20 mA y drenar 25 mA. B1 es controlado por L2. Si L2 tiene cargado un "1", B1 se encuentra en tri-state, es decir con la salida desconectada (en alta impedancia), y el puerto puede ser usado como entrada. Si L2 tiene cargado un "O", la salida de B1 esta conectada (baja impedancia) y el puerto esta en modo de salida. B2 es el buffer de entrada, es decir el que pone los datos en el bus interno del microcontrolador cuando se lee el registro de datos del puerto.Puede verse que el dato leído es directamente el estado del pin de entrada.

Page 24: teoria microcontroladores

Microcontroladores – Teoría Ingeniería en Sistemas de InformaciónArquitectura de Computadoras UNCAUS – Año 2010

TEMPORIZADOR / CONTADOR (RTCC)

Este dispositivo, llamado Real Time Clock / Counter, es básicamente un contador de 8 bits, constituido por el registro operacional RTCC que se encuentra en la posición 01 de la memoria de datos. Este registro puede usarse para contar eventos externos por medio de un pin de entrada especial (modo contador) o para contar pulsos internos de reloj de frecuencia constante (modo timer). Además, en cualquiera de los dos modos, se puede insertar un prescaler, es decir un divisor de frecuencia programable que puede dividir por 2, 4, 8, 16, 32, 64, 128 o 256. Este divisor puede ser utilizado alternativamente como prescaler del RTCC o como postscaler del Watch Dog Timer, según se lo programe.

Para su programación se dispone de 2 registros: el TRC ya mencionado y el registro OPTION. Este Ultimo no es accesible como memoria de datos, no se lo puede leer de ninguna manera, y solo se lo puede escribir con la instrucción especial OPTlON (familia PIC 16C5X). Este registro contiene los bits necesarios para seleccionar modo contador o modo timer, flanco de conteo en modo contador, prescaler para RTCC o para WDT y constante de división del prescaler, según el siguiente esquema:

El registro OPTION contiene bits de control que pueden ser modificados para configurar el Timer y las interrupciones externas (familia PIC 16F8X)

Bit 7 Bit 0RBPU INTEDG TOCS TOSE PSA PS2 PS1 PS0

PS2:PS0 Valor Escala TMR0

Escala WDT

000001010011100101110111

1:21:41:81:161:321:641:1281:256

1:11:21:41:81:161:321:641:128

PSA Bit para asignar la escala1 = asigna a WDT0 = asigna a TMR0

Page 25: teoria microcontroladores

Microcontroladores – Teoría Ingeniería en Sistemas de InformaciónArquitectura de Computadoras UNCAUS – Año 2010

TOSE Bit para seleccionar la forma de transición del timer1 = incrementa con una transición de alto a bajo en el pin TOCK10 = incrementa con una transición de bajo a alto en el pin TOCK1

TOCS Bit para seleccionar el CLOCK1 = Transición en el pin TOCK10 = Interno

INTEDG(No implementado en

PIC 16C5x)

Bit para seleccionar la forma de interrupción1 = interrumpe con rising edge en el pin RB0/INT0 = interrumpe con falling edge en el pin RB0/INT

RBPU(No implementado en

PIC 16C5x)

Bit para habilitar la resistencia de PULL-UP en el puerto B1 = habilita0 = deshabilita

A continuación se muestra un circuito equivalente del RTCC (TMRO) y el prescaler.

En la figura se puede observar claramente como operan los bits de configuración T0SE, T0CS y PSA, en cualquiera de sus combinaciones. Se observa además que en la entrada del contador RTCC hay un circuito de sincronización que introduce una demora de dos ciclos del clock de instrucciones ( fosc. / 4). Al escribir sobre el RTCC automáticamente se resetea este circuito, por lo tanto solo se incrementara dos ciclos después.

El prescaler es un contador asincrónico de 8 bits más un multiplexor 8 a 1 comandado por los bits PS0 a PS2, que permite seleccionar como salida a cualquiera de los bits del contador. Al

Page 26: teoria microcontroladores

Microcontroladores – Teoría Ingeniería en Sistemas de InformaciónArquitectura de Computadoras UNCAUS – Año 2010

escribir sobre el RTCC, si este esta programado para operar con prescaler (PSA = O), se borra automáticamente el prescaler. Las instrucciones CLRWDT y SLEEP borran el prescaler, si este esta programado para operar como postscaler del watch dog timer ( PSA = 1).

INTERRUPCIONES

Los PIC 16Cxx agregan la posibilidad de contar con sistema de interrupciones. Este sistema consiste en un mecanismo por el cual un evento interno o externo, asincrónico respecto del programa, puede interrumpir la ejecución de éste produciendo automáticamente un salto a una subrutina de atención, de manera que pueda atender inmediatamente el evento, y retomar luego la ejecución del programa exactamente en donde estaba al momento de ser interrumpido. Este mecanismo es muy útil por ejemplo para el manejo de timers o rutinas que deben repetirse periódicamente (refresco de display, antirrobote de teclado, etc.), detección de pulsos externos, recepción de datos, etc.

Existen de tres a doce eventos que pueden generar interrupciones en los PIC 16CXX existentes hasta el momento, pero nada impide que puedan agregarse más en versiones futuras.

Funcionamiento : En los 16CXX las interrupciones se comportan casi exactamente igual que las subrutinas. Desde el punto de vista del control del programa, al producirse una interrupción se produce el mismo efecto que ocurriría si el programa tuviese un CALL 0004h en el punto en que se produjo la interrupción. En uno de los registros de control del sistema de interrupciones existe un bit de habilitación general de interrupciones GIE, que debe ser programado en 1 para que las interrupciones puedan actuar. Al producirse una interrupción, este bit se borra automáticamente para evitar nuevas interrupciones. La instrucción RETFIE que se utiliza al final de la rutina de interrupción, es idéntica a un retorno de subrutina, salvo que además coloca en uno automáticamente el bit GIE volviendo a habilitar las interrupciones. Dentro de la rutina de interrupción, el programa deberá probar el estado de los flags de interrupción de cada una de las fuente habilitadas, para detectar cual fue la que causo la interrupción y así decidir que acción tomar

Figura 10 – 20 : lógica de interrupciones

Page 27: teoria microcontroladores

Microcontroladores – Teoría Ingeniería en Sistemas de InformaciónArquitectura de Computadoras UNCAUS – Año 2010

Fuentes : La señal que produce la interrupción es en realidad una sola, que resulta de la combinación de todas las fuentes posibles y de los bits de habilitación. Existen dos grupos de fuentes, unas que se habilitan con solo colocar en uno el bit GIE, y otras que además necesitan que este puesto a uno el bit EEIE. En algunas versiones de los 16CXX solo existe el primer grupo. Además, cada fuente de interrupciones tiene su respectivo bit de habilitación individual.

Las fuentes de interrupción varían con cada versión, y pueden ser por ejemplo: Interrupción externa por pin RBO/INT Desborde del Timer 0 o RTCC Cambio en el estado de los bits 4 a 7 del puerto B Desborde del timer 1 Desborde del timer 2 Interrupción del capture / compare 1 Interrupción del capture / compare 2 transmisión o recepción de un carácter por la interfase serie sincrónica transmisión o recepción de un carácter por la interfase serie asincrónica Fin de conversión A/D Lectura / escritura del puerto paralelo de comunicación con otros microprocesadores Escritura de EEPROM finalizada

CONFIGURACIÓN DEL OSCILADOR

Los PIC’s pueden operar con diferentes configuraciones del oscilador . El usuario puede configurar el tipo de oscilador a través de dos bits del registro de configuración (FOSC1 y FOSC0) de algunas de las siguientes formas posibles:

bit 3 bit 2 bit 1 bit 0 WDTE FOSC1 FOSC0

LP Low Power Crystal FOSC1 / FOSC0 = 00 XT Crystal / Resonator FOSC1 / FOSC0 = 01 HS High Speed Crystal / Resonator FOSC1 / FOSC0 = 10 RC Resistor / Capacitor FOSC1 / FOSC0 = 11

En los modos XT, LP y HS un cristal es conectado a las lineas OSC1/CLKIN y OSC2/CLKOUT

Modo Freq. C1 C2LP 32 kHz

200kHz68 – 100pf15 – 33 pf

68 – 100pf15 – 33 pf

XT 100kHz2MHz4MHz

100 – 150 pf15 – 33 pf15 – 33 pf

100 – 150 pf15 – 33 pf15 – 33 pf

HS 4MHz10MHz

15 – 33 pf15 – 33 pf

15 – 33 pf15 – 33 pf

Si Vdd > 4,5 V C1 = C2 = 30 pf (recomendado

Page 28: teoria microcontroladores

Microcontroladores – Teoría Ingeniería en Sistemas de InformaciónArquitectura de Computadoras UNCAUS – Año 2010

En aplicaciones de bajo costo se puede implementar un oscilador RC

Power – ON / Reset

La línea de Reset puede conectarse de forma tal que produzca un Reset al encenderse el equipo. El pulsador permite el reset del sistema en cualquier momento.

Page 29: teoria microcontroladores

Microcontroladores – Teoría Ingeniería en Sistemas de InformaciónArquitectura de Computadoras UNCAUS – Año 2010

Bibliografía

Introducción a los microcontroladoresJosé Adolfo González V.McGraw Hill

Sistemas DigitalesRuiz, Espinoza, RoureMcGraw Hill

Microprocesadores RISC Evolución y TendenciasClemente Rodríguez, Olatz Arregui, PerezAlfaomega

Estructura de computadores y PeriféricosMartinez Dura, Grau, SolanoAlfaomega

Microprocesadores Fundamentos, diseño y aplicacionesAnguloParaninfo

Microcontroladores PICTavernierParaninfo

Microcontroladores PIC, La solución en un solo chipAnguloParaninfo

Microcontroladores PIC, Diseño de aplicacionesAngulo y otrosMcGraw Hill

Cursos sobre Microcontroladores PIC, Niveles Básico y AvanzadoTekcien Ltda.

PIC 16/17 microcontroller data BookMicrochip

MPASM assembler. User’s GuideMicrochip

www.microchip.com Cátedra Aplicación Industrial de Micros

Universidad Antonio Nariño