Download DSpace de la Universidad Catolica de Cuenca

Document related concepts
no text concepts found
Transcript
UNIVERSIDAD CATÓLICA DE
CUENCA
UNIDAD ACADÉMICA DE INGENIERÍA DE
SISTEMAS, ELÉCTRICA Y ELECTRÓNICA
ESTUDIO DE LOS MICROCONTROLADORES
PICS y DSPICS
MONOGRAFÍA PREVIO A LA
OBTENCIÓN DEL TITULO DE
INGENIERO EN SISTEMAS
Investigador
:
Tcnlgo. Diego Jimbo Pinos
Director
:
Ing. Michael Cabrera Mejía
Cuenca – Ecuador
2007
Dedicatoria
“A Dios por darme la vida, sabiduría y fuerza para estudiar”.
“A mis Padres por todo el esfuerzo realizado, en todos estos años para poder coronar
mi carrera”
2
Agradecimiento
El presente trabajo de grado es fruto de todas las enseñanzas impartidas por
mis profesores a lo largo de la carrera y de manera especial agradezco los grandes
aportes del Ing. Michael Cabrera Mejía, que sin su colaboración hubiese sido posible
llevar a feliz término esta monografía.
Gracias a mis padres por todo el apoyo recibido. Sus esfuerzos, paciencia,
dedicación y sacrificio hicieron de este sueño, un logro alcanzado. A mis hermanos
por su apoyo incondicional. A mis compañeros, aquellos que me acompañaron en
momentos buenos y malos, las historias vividas que tendré siempre presentes.
INDICE
CAPITULO I
INTRODUCCIÓN AL MICROCONTROLADOR ............................................... 7
1.1 Que es un Microcontrolador? ........................................................................... 7
1.2 Diferencia entre un Microcontrolador y un Microprocesador .......................... 9
1.3 Arquitectura de los Microcontroladores ......................................................... 11
1.3.1 Arquitectura Von Neumann...................................................................... 11
1.3.2. Arquitectura Harvard ............................................................................... 12
1.4 Elementos de los Microcontroladores........................................................... 13
1.4.1 El procesador o CPU................................................................................. 13
1.4.1.1 CISC.................................................................................................. 13
1.4.1.2 RISC.................................................................................................. 14
1.4.1.3 SISC .................................................................................................. 14
1.4.2. Memoria.................................................................................................. 14
1.4.2.1 ROM con máscara ............................................................................ 15
1.4.2.2 OTP................................................................................................... 15
1.4.2.3 EPROM............................................................................................. 15
1.4.2.4 EEPROM, E2PROM o E2PROM ..................................................... 16
1.4.2.5 FLASH.............................................................................................. 16
1.4.3 Líneas de E/S ........................................................................................... 17
1.4.4 Reloj Principal ......................................................................................... 17
1.5 Recursos Auxiliares ....................................................................................... 17
1.5.1 Temporizadores o Timers ......................................................................... 18
1.5.2 Perro guardián oWatchdog ....................................................................... 18
1.5.3
Protección ante fallo de alimentación o Brownout............................ 18
1.5.4 Estado de reposo ó de bajo consumo ....................................................... 19
1.5.5 Conversor A/D (DAC)............................................................................. 19
1.5.6 Conversor D/A (ADC).............................................................................. 19
1.5.7 Comparador analógico.............................................................................. 19
1.5.8 Modulador de ancho del pulso PWM ....................................................... 19
1.5.9 Puertos de Entrada y Salida .................................................................... 20
1.5.10 Puertas de comunicación ....................................................................... 20
LA FAMILIA DE LOS PICS ................................................................................. 21
2.1 Introducción ..................................................................................................... 21
2.2 La Familia de los Pics................................................................................. 21
2.2.1 ¿Porque los Pics? ..................................................................................... 21
2.3 Historia............................................................................................................ 21
2.4 La Gama de los Pics........................................................................................ 22
2.4.1 Gama Baja................................................................................................ 24
2.4.2 Gama Media............................................................................................. 25
2.4.3 Gama Alta ................................................................................................ 26
2.5 Microcontrolador. PIC 16X84. ...................................................................... 26
2.5.1 Descripción general. ................................................................................ 26
2.5.2 Aspecto externo. ...................................................................................... 27
2.5.3 La frecuencia de funcionamiento. El reloj.............................................. 28
2.5.3.1 Tipos de osciladores.......................................................................... 29
4
2.5.4 Reinicialización o RESET. ...................................................................... 29
2.6 Arquitectura de los microcontroladores PIC16X84........................................ 30
2.6.1 Organización de la memoria ..................................................................... 31
2.6.1.1 Memoria de Programa. ..................................................................... 32
2.6.1.2 Memoria de Datos RAM................................................................... 33
2.6.1.3 Direccionamiento de la memoria de datos....................................... 34
2.6.2 El Registro de Estado............................................................................... 35
2.6.3 Temporizador/Contador TMR0. .............................................................. 36
2.6.4 El registro OPTION. ............................................................................... 39
2.6.5 El Perro Guardián (WDT)........................................................................ 40
2.6.6 Las Puertas de E/S. .................................................................................. 40
2.6.6.1 La Puerta A. ...................................................................................... 41
2.6.6.2 La Puerta B. ...................................................................................... 42
2.6.7 La Palabra de CONFIGURACION. ....................................................... 43
2.6.8 La memoria EEPROM de Datos.............................................................. 44
2.7 Interrupciones. ................................................................................................ 45
2.7.1 Causas de Interrupción............................................................................. 46
2.7.2 El Registro de Control de Interrupciones INTCON. ............................... 47
2.7.3 Interrupción Externa INT.......................................................................... 48
2.7.4 Interrupción por desbordamiento del TMR0. .......................................... 48
PROCESDOR DE SEÑALES DIGITALES ......................................................... 49
3.1 Introducción ..................................................................................................... 49
3.2 ¿Qué es Procesamiento Digital de Señales? ................................................... 50
3.3 Historia de Los Procesadores Digitales de Señales: ....................................... 52
3.4 Procesador de señales digitales....................................................................... 52
3.5 Características básicas de un DSP .................................................................. 53
3.6 Diferencias entre Microcontroladores y DSP's:.............................................. 54
3.7 Ventajas y Desventajas de los DSP’s: ............................................................ 55
3. 8 Microcontroladores de señal dsPIC ............................................................... 56
3.8.1 Características de los DsPics .................................................................... 56
3.8.2 Rango de funcionamiento ......................................................................... 57
3.8.3 Arquitectura dsPIC de Microchip ............................................................. 57
PROGRAMACION DE LOS MICROCONTROLADORES ............................. 60
4.1 MicroCode Studio............................................................................................ 60
4.1.1 Configuración .......................................................................................... 60
4.1.2 Manejo del Programa............................................................................... 63
4.1.3 Identificación de errores .......................................................................... 65
4.2 Pic Basic Pro................................................................................................... 67
4.2.1 Variables .................................................................................................. 68
4.2.2 Alias ......................................................................................................... 69
4.2.3 Arreglos .................................................................................................... 69
4.2.4 Constantes................................................................................................ 70
4.2.5 Símbolos .................................................................................................. 70
4.2.6 Constantes Numéricas.............................................................................. 70
4.2.7 Operadores Matemáticos .......................................................................... 71
4.2.7.1 Multiplicación................................................................................... 72
4.2.7.2 División.............................................................................................. 72
5
4.2.7.3 Desplazamiento................................................................................. 72
4.2.7.4 ABS................................................................................................... 72
4.2.7.5 COS................................................................................................... 72
4.2.7.6 DCD I................................................................................................ 73
4.2.7.7 DIG ................................................................................................... 73
4.2.7.8 DIV32 ............................................................................................... 73
4.2.7.9 MAX y MIN ..................................................................................... 74
4.2.7.10 NCD ................................................................................................ 74
4.2.7.11 REV ................................................................................................ 75
4.2.7.12 SIN .................................................................................................. 75
4.2.7.13 SQR................................................................................................. 75
4.2.8 Operadores de comparación..................................................................... 75
4.2.9 Operadores Lógicos ................................................................................. 76
4.2.10 Referencia de declaraciones PBP ........................................................... 76
Conclusiones.............................................................................................................. 79
Recomendaciones ...................................................................................................... 80
Bibliografía ................................................................................................................ 82
Glosario...................................................................................................................... 83
6
CAPITULO I
INTRODUCCIÓN AL MICROCONTROLADOR
Inicialmente cuando no se inventaban los microcontroladores las personas se
ingeniaban en diseñar sus circuitos electrónicos y para ello implicaban muchos componentes
electrónicos y cálculos matemáticos. Un circuito lógico básico requería de muchos
elementos como transistores, resistencias. Además se creía que el manejo de un
microcontrolador era para aquellas personas con un coeficiente intelectual muy alto, por lo
contrario con la aparición de este circuito integrado todo seria mucho más fácil de entender y
los diseños electrónicos serian mucho más pequeños y simplificados. Gracias a la llegada de
los microcontroladores, tarjetas que contenían varias decenas de circuitos lógicos como se
dijo anteriormente se han visto reducidas a dos o tres microcontroladores.
El Microcontrolador nace cuando las técnicas de integración han progresado lo
bastante para permitir su fabricación y comercialización, pero principalmente nace porque se
requiere la necesidad de utilizar sistemas inteligentes y programables para que realicen una
determinada aplicación. Un ejemplo podría ser el control de una lavadora de ropa la cual
debe controlar los ciclos de lavado, las cuales van a ser controladas por un software
previamente seleccionado. Además estos pequeños componentes están distribuidos entre los
electrodomésticos de nuestro hogar. Pueden encontrarse en casi cualquier dispositivo
eléctrico como hornos microondas, teléfonos, celulares, televisores, juguetes, en el mouse y
teclado del computador, en fin, están conquistando el mundo, pero la invasión acaba de
comenzar y el siglo XXI será testigo de la conquista masiva de estos diminutos
computadores, que gobernarán la mayor parte de los aparatos que se fabrican hoy en día.
El funcionamiento y aplicaciones de los microcontroladores y los microprocesadores
permiten profundizar en los aspectos tecnológicos de las arquitecturas de las nuevas
computadoras, convirtiéndose de esta forma en una herramienta útil para el desarrollo de
variadas aplicaciones que contribuyen al avance tecnológico y desarrollo integral de la
sociedad.
Estas aplicaciones que han surgido con propósitos, para solucionar las diversas
necesidades existentes, que frustraban la realización de actividades ejecutadas por personas
en los diferente escenarios industriales, empresariales entre otros.
1.1 Que es un Microcontrolador?
El microcontrolador es un circuito integrado o chip que incorporan en su interior las
tres unidades funcionales de un ordenador: CPU, Memoria y Unidades de E/S, es decir, se
trata de un computador completo en un solo circuito integrado. Su característica principal es
7
su alto nivel de especialización. Aunque los hay del tamaño de un sello de correos, lo normal
es que sean incluso más pequeños, ya que, lógicamente, forman parte del dispositivo que
controlan. Es un dispositivo integrado digital capaz de interpretar y ejecutar un conjunto
secuencial de instrucciones (software). Básicamente contiene circuitos electrónicos que
realizan operaciones aritméticas, lógicas y de control. Se trata de un sistema muy complejo,
por eso debe ir integrado en chips.
Un microcontrolador es un microprocesador optimizado para ser utilizado para
controlar equipos electrónicos. Los microcontroladores representan la inmensa mayoría de
los chips de ordenadores vendidos, sobre un 50% son controladores "simples" y el restante
corresponde a DSPs 1 los cuales son microcontroladores más especializados.
Al estar todos los microcontroladores integrados en un chip, su estructura fundamental
y sus características básicas son muy parecidas. Todos deben disponer de los bloques
esenciales: Procesador, memoria de datos y de instrucciones, líneas de E/S, oscilador de reloj
y módulos controladores de periféricos (Figura 1.1).
En definitiva un microcontrolador; es un circuito integrado programable, capaz de
ejecutar las órdenes grabadas en su memoria. Está compuesto de varios bloques funcionales,
los cuales cumplen una tarea específica En fin estas son básicamente algunas de sus partes:
¾ Memoria ROM (Memoria de sólo lectura)
¾ Memoria RAM (Memoria de acceso aleatorio)
¾ Líneas de entrada/salida (I/O) También llamados puertos
¾ Lógica de control Coordina la interacción entre los demás bloques
1
DSP.- Procesador de señales digitales
8
1.2 Diferencia entre un Microcontrolador y un Microprocesador
El microprocesador es un circuito integrado que contiene la Unidad Central de Proceso
(CPU), también llamada procesador, de un computador. La CPU está formada por la Unidad
de Control, que interpreta las instrucciones, y el Camino de Datos, que las ejecuta.
Los pines de un microprocesador envían al exterior las líneas de sus buses de
direcciones, datos y control, para permitir conectarse con la Memoria y los Módulos de E/S y
configurar un computador implementado por varios circuitos integrados. Se dice que un
microprocesador es un sistema abierto porque su configuración es variable de acuerdo con la
aplicación a la que se destine. (Figura 1.2)
El microcontrolador es en definitiva un circuito integrado que incluye todos los
componentes de un computador.
Debido a su reducido tamaño es posible montar el controlador en el propio dispositivo
al que gobierna. En este caso el controlador recibe el nombre de controlador empotrado o
embebido (embedded controller). Figura 1.3.
9
DIFERENCIAS:
¾ La configuración mínima básica de un Microprocesador esta constituida por un
Micro de 40 Pines, Una memoria RAM de 28 Pines, una memoria ROM de 28
Pines y un decodificador de direcciones de 18 Pines.
¾ El Microcontrolador incluye todo estos elementos del Microprocesador en un
solo Circuito Integrado por lo que implica una gran ventaja en varios factores:
En el circuito impreso por su amplia simplificación de circuitería.
¾ El costo para un sistema basado en Microcontrolador es mucho menor,
mientras que para del Microprocesador, es relativamente alto.
¾ Los Microprocesadores tradicionales se basan en la arquitectura de Von
Newmann, mientras que los microcontroladores trabajan con arquitectura de
Harvard.
¾ El tiempo de desarrollo de un proyecto electrónico es menor para los
Microcontroladores.
¾ En la Figura 1.4 y Figura 1.5 se puede observar que la principal diferencia
entre ambos radica en la ubicación del registro de trabajo, que para los PIC’s
(microcontrolador) se denomina W (Working Register), y para los
microprocesadores tradicionales es el Acumulador (A).
¾ 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 este es siempre uno de
los dos operandos de cualquier instrucción, las instrucciones de simple
operando (borrar, incrementar, decrementar, complementar), actúan sobre el
acumulador.
10
¾ En los 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.
¾ L
a
g
r
a
n
v
e
n
t
a
j
a
de esta arquitectura(Microcontroladores ) 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 dejarse en la misma
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.
1.3 Arquitectura de los Microcontroladores
1.3.1 Arquitectura Von Neumann
La arquitectura tradicional de computadoras y microprocesadores está basada en la
arquitectura Von Neumann, en la cual la unidad central de proceso (CPU), está conectada a
una memoria única donde se guardan las instrucciones del programa y los datos (Figura 1.6).
El tamaño de la unidad de datos o instrucciones está fijado por el ancho del bus que
comunica la memoria con la CPU. Así un microprocesador de 8 bits con un bus de 8 bits,
tendrá que manejar datos e instrucciones de una o más unidades de 8 bits (bytes) de longitud.
11
Si tiene que acceder a una instrucción o dato de más de un byte de longitud, tendrá que
realizar más de un acceso a la memoria. Y el tener un único bus hace que el microprocesador
sea más lento en su respuesta, ya que no puede buscar en memoria una nueva instrucción
mientras no finalicen las transferencias de datos de la instrucción anterior. Resumiendo todo
lo anterior, las principales limitaciones que nos encontramos con la arquitectura Von
Neumann son:
1. La limitación de la longitud de las instrucciones por el bus de datos, que hace que el
microprocesador tenga que realizar varios accesos a memoria para buscar
instrucciones complejas.
2. La limitación de la velocidad de operación a causa del bus único para datos e
instrucciones que no deja acceder simultáneamente a unos y otras, lo cual impide
superponer ambos tiempos de acceso.
1.3.2. Arquitectura Harvard
La arquitectura Harvard tiene la unidad central de proceso (CPU) conectada a dos
memorias (una con las instrucciones y otra con los datos) por medio de dos buses diferentes
(figura 1.7). Una de las memorias contiene solamente las instrucciones del programa
(Memoria de Programa), y la otra sólo almacena datos (Memoria de Datos). Ambos buses
son totalmente independientes y pueden ser de distintos anchos. Para un procesador de Set de
Instrucciones Reducido, o RISC (Reduced Instrucción Set Computer), el set de instrucciones
y el bus de memoria de programa pueden diseñarse de tal manera que todas las instrucciones
tengan una sola posición de memoria de programa de longitud. Además, al ser los buses
independientes, la CPU puede acceder a los datos para completar la ejecución de una
instrucción, y al mismo tiempo leer la siguiente instrucción a ejecutar. Ventajas de esta
arquitectura:
12
1. El tamaño de las instrucciones no esta 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.
2. El tiempo de acceso a las instrucciones puede superponerse con el de los datos,
logrando una mayor velocidad en cada operación.
Una pequeña desventaja de los procesadores con arquitectura Harvard, es que deben
poseer instrucciones especiales para acceder a tablas de valores constantes que pueda ser
necesario incluir en los programas, ya que estas tablas se encontraran físicamente en la
memoria de programa (por ejemplo en la EPROM de un microprocesador).
1.4 Elementos de los Microcontroladores
1.4.1 El procesador o CPU
EL CPU es la unidad que controla el funcionamiento de la unidad. Contiene la lógica
que procesa las instrucciones, maneja la entrada y salida de la memoria y los periféricos. Es
el elemento más importante del microcontrolador y determina sus principales características,
tanto a nivel hardware como software. Se encarga de direccionar la memoria de
instrucciones, recibir el código OP de la instrucción en curso, su decodificación y la
ejecución de la operación que implica la instrucción, así como la búsqueda de los operandos
y el almacenamiento del resultado. Existen tres orientaciones en cuanto a la arquitectura y
funcionalidad de los procesadores actuales:
1.4.1.1 CISC
Un gran número de procesadores usados en los microcontroladores están basados en
la filosofía CISC (Computadores de Juego de Instrucciones Complejo). Disponen de más de
80 instrucciones máquina en su repertorio, algunas de las cuales son muy sofisticadas y
potentes, requiriendo muchos ciclos para su ejecución. Una ventaja de los procesadores
CISC es que ofrecen al programador instrucciones complejas que actúan como macros, es
13
decir, que si las tuviésemos que implementar con instrucciones básicas, acabaríamos con
dolor de cabeza.
1.4.1.2 RISC
Tanto la industria de los computadores comerciales como la de los microcontroladores
están creciendo hacia la filosofía RISC (Computadores de Juego de Instrucciones Reducido).
En estos procesadores el repertorio de instrucciones máquina es muy reducido y las
instrucciones son simples y, generalmente, se ejecutan en un ciclo. La sencillez y rapidez de
las instrucciones permiten optimizar el hardware y el software del procesador.
1.4.1.3 SISC
En los microcontroladores destinados a aplicaciones muy concretas, el juego de
instrucciones, además de ser reducido, es específico, o sea, las instrucciones se adaptan a las
necesidades de la aplicación prevista. Esta filosofía se ha bautizado con el nombre de SISC
(Computadores de Juego de Instrucciones Específico).
1.4.2. Memoria
En los microcontroladores la memoria de instrucciones y datos está integrada en el
propio chip. Una parte debe ser no volátil, tipo ROM, y se destina a contener el programa de
instrucciones que gobierna la aplicación. Otra parte de memoria será tipo RAM, volátil, y se
destina a guardar las variables y los datos.
No existen sistemas de almacenamiento masivo como disco duro o disquetes. Como el
microcontrolador sólo se destina a una tarea en la memoria ROM, sólo hay que almacenar un
único programa de trabajo.
La RAM en estos dispositivos es de poca capacidad pues sólo debe contener las
variables y los cambios de información que se produzcan en el transcurso del programa. Por
otra parte, como sólo existe un programa activo, no se requiere guardar una copia del mismo
en la RAM pues se ejecuta directamente desde la ROM.
Los usuarios de computadores personales están habituados a manejar Megabytes de
memoria, pero, los diseñadores con microcontroladores trabajan con capacidades de ROM
comprendidas entre 512 bytes y 8 k bytes y de RAM comprendidas entre 20 y 512 bytes.
Según el tipo de memoria ROM que dispongan los microcontroladores, la aplicación y
utilización de los mismos es diferente. Se describen las cinco versiones de memoria no
volátil que se pueden encontrar en los microcontroladores del mercado.
14
1.4.2.1 ROM con máscara
Es una memoria no volátil de sólo lectura cuyo contenido se graba durante la
fabricación del chip. Si tenemos idea de cómo se fabrican los circuitos integrados, sabremos
de donde viene el nombre. Estos se fabrican en obleas que contienen varias decenas de chips.
Estas obleas se fabrican a partir de procesos fotoquímicos, donde Se impregnan capas de
silicio y oxido de silicio, y según convenga, se erosionan al exponerlos a la luz. Como no
todos los puntos han de ser erosionados, se sitúa entre la luz y la oblea una mascara con
agujeros, de manera que donde deba incidir la luz, esta pasará. Con varios procesos similares
pero más complicados se consigue fabricar los transistores y diodos micrométricos que
componen un chip. El elevado costo del diseño de la máscara sólo hace aconsejable el
empleo de los microcontroladores con este tipo de memoria cuando se precisan cantidades
superiores a varios miles de unidades.
1.4.2.2 OTP
El microcontrolador contiene una memoria no volátil de sólo lectura programable una
sola vez por el usuario. OTP (One Time Programmable). Es el usuario quien puede escribir
el programa en el chip mediante un sencillo grabador controlado por un software desde una
computadora. La versión OTP es recomendable cuando es muy corto el ciclo de diseño del
producto, o bien, en la construcción de prototipos y series muy pequeñas. Tanto en este tipo
de memoria como en la EPROM, se suele usar la encriptación mediante fusibles para
proteger el código contenido. Figura 1.8
1.4.2.3 EPROM
Los microcontroladores que disponen de memoria EPROM (Erasable Programmable
Read OnIy Memory) pueden borrarse y grabarse muchas veces. La grabación se realiza,
como en el caso de los OTP, con un grabador gobernado desde una computadora. Si,
posteriormente, se desea borrar el contenido, disponen de una ventana de cristal en su
superficie por la que se somete a la EPROM a rayos ultravioleta durante varios minutos. Las
cápsulas son de material cerámico y son más costosos que algunos microcontroladores con
memoria OTP que están hechos con material plástico. Figura 1.9
15
1.4.2.4 EEPROM, E2PROM o E2PROM
Se trata de memorias de sólo lectura, programables y borrables eléctricamente
EEPROM (Electrical Erasable Programmable Read OnIy Memory). Tanto la programación
como el borrado, se realizan eléctricamente desde el propio grabador y bajo el control
programado de una computadora. Es muy cómoda y rápida la operación de grabado y la de
borrado. No disponen de ventana de cristal en la superficie. Los microcontroladores dotados
de memoria EEPROM una vez instalados en el circuito, pueden grabarse y borrarse cuantas
veces se quiera sin ser retirados de dicho circuito. Para ello se usan grabadores en circuito
que confieren una gran flexibilidad y rapidez a la hora de realizar modificaciones en el
programa de trabajo. El número de veces que puede grabarse y borrarse una memoria
EEPROM es finito, por lo que no es recomendable una reprogramación continua. Son muy
idóneos para la enseñanza y la Ingeniería de diseño. Se va extendiendo en los fabricantes la
tendencia de incluir una pequeña zona de memoria EEPROM en los circuitos programables
para guardar y modificar cómodamente una serie de parámetros que adecuan el dispositivo a
las condiciones del entorno.
1.4.2.5 FLASH
Se trata de una memoria no volátil, de bajo consumo, que se puede escribir y borrar.
Funciona como una ROM y una RAM pero consume menos y es más pequeña. A diferencia
de la ROM, la memoria FLASH es programable en el circuito. Es más rápida y de mayor
densidad que la EEPROM. La alternativa FLASH está recomendada frente a la EEPROM
cuando se precisa gran cantidad de memoria de programa no volátil. Es más veloz y tolera
más ciclos de escritura/borrado. Las memorias EEPROM y FLASH son muy útiles al
permitir que los microcontroladores que las incorporan puedan ser reprogramados en
circuito, es decir, sin tener que sacar el circuito integrado de la tarjeta. Así, un dispositivo
con este tipo de memoria incorporado al control del motor de un automóvil permite que
pueda modificarse el programa durante la rutina de mantenimiento periódico, compensando
los desgastes y otros factores tales como la compresión, la instalación de nuevas piezas, etc.
La reprogramación del microcontrolador puede convertirse en una labor rutinaria dentro de
la puesta a punto.
16
1.4.3 Líneas de E/S
Las líneas de Entrada y Salida (E/S) permiten comunicar al procesador con el mundo
exterior, a través de interfaces, o con otros dispositivos. Estas puertas, también llamadas
puertos, son la principal utilidad de los pines de un microcontrolador. Según los
controladores de periféricos que posea cada modelo de microcontrolador, las líneas de E/S se
destinan a proporcionar el soporte a las señales de entrada, salida y control. A excepción de
dos pines para la alimentación, dos para el cristal de cuarzo y una mas para provocar el
Reset, los restantes pines de un microcontrolador sirven para soportar su comunicación con
los periféricos externos que controla.
1.4.4 Reloj Principal
Todos los microcontroladores disponen de un circuito oscilador que genera una onda
cuadrada de alta frecuencia, que configura los impulsos de reloj usados en la sincronización
de todas las operaciones del sistema. Esta señal del reloj es el motor del sistema y la que
hace que el programa y los contadores avancen.
Generalmente, el circuito de reloj está incorporado en el microcontrolador y sólo se
necesitan unos pocos componentes exteriores para seleccionar y estabilizar la frecuencia de
trabajo. Dichos componentes suelen consistir en un cristal de cuarzo junto a elementos
pasivos o bien un resonador cerámico o una red R-C.
Aumentar la frecuencia de reloj supone disminuir el tiempo en que se ejecutan las
instrucciones pero lleva aparejado un incremento del consumo de energía y de calor
generado.
1.5 Recursos Auxiliares
Cada fabricante oferta numerosas versiones de una arquitectura básica de
microcontrolador. En algunas amplía las capacidades de las memorias, en otras incorpora
nuevos recursos, en otras reduce las prestaciones al mínimo para aplicaciones muy simples,
etc. La labor del diseñador es encontrar el modelo mínimo que satisfaga todos los
requerimientos de su aplicación. De esta forma, minimizará el costo, el hardware y el
software. Los principales recursos específicos que incorporan los microcontroladores son:
¾ Temporizadores o Timers.
¾ Perro guardián o Watchdog.
¾ Protección ante fallo de alimentación o Brownout.
¾ Estado de reposo o de bajo consumo (Sleep mode).
¾ Conversor A/D (Analógico ->Digital).
¾ Conversor D/A (Digital ->Analógico).
17
¾ Comparador analógico.
¾ Modulador de anchura de impulsos o PWM (PulseWide Modulation).
¾ Puertas de E/S digitales.
¾ Puertas de comunicación.
A continuación pasamos a ver con un poco más de detalle cada uno de ellos
1.5.1 Temporizadores o Timers
Se emplean para controlar periodos de tiempo (temporizadores) y para llevar la
cuenta de acontecimientos que suceden en el exterior (contadores).
Para la medida de tiempos se carga un registro con el valor adecuado y a
continuación dicho valor se va incrementando o decrementando al ritmo de los impulsos de
reloj o algún múltiplo hasta que se desborde y llegue a 0, momento en el que se produce un
aviso. Cuando se desean contar acontecimientos que se materializan por cambios de nivel o
flancos en alguno de los pines
del microcontrolador, el mencionado registro se va
incrementando o decrementando al ritmo de dichos impulsos. Un ejemplo: esto es igual que
el segundero de nuestro reloj digital, este va aumentando hasta que llega a 60 segundos, pero
en la pantalla escribe 00, esto quiere decir que se desborda. Pero cuando cambia da un aviso
y se incrementan los minutos.
1.5.2 Perro guardián oWatchdog
Cuando el computador personal se bloquea por un fallo del software u otra causa, se
pulsa el botón del reset y se reinicia el sistema. Pero un microcontrolador funciona sin el
control de un supervisor y de forma continua las 24 horas del día. El Perro Guardián consiste
en un contador que, cuando llega al máximo, provoca un reset automáticamente en el
sistema.
Se debe diseñar el programa de trabajo que controla la tarea de forma que resetee al
Perro Guardián de vez en cuando antes de que provoque el reset. Si falla el programa o se
bloquea (si cae en bucle infinito), no se refrescará al Perro guardián y, al completar su
temporización, provocará el reset del sistema.
1.5.3
Protección ante fallo de alimentación o Brownout
Se trata de un circuito que resetea al microcontrolador cuando la tensión de
alimentación (VDD) es inferior a una tensión mínima (brownout). Mientras la tensión de
alimentación sea inferior al de brownout el dispositivo se mantiene reseteado, comenzando a
funcionar normalmente cuando sobrepasa dicho valor. Esto es muy útil para evitar datos
erróneos por transiciones y ruidos en la línea de alimentación
18
1.5.4 Estado de reposo ó de bajo consumo
Son abundantes las situaciones reales de trabajo en que el microcontrolador debe
esperar, sin hacer nada, a que se produzca algún acontecimiento externo que le ponga de
nuevo en funcionamiento. Para ahorrar energía, (factor clave en los aparatos portátiles), los
microcontroladores disponen de una instrucción especial (SLEEP en los PIC), que les pasa al
estado de reposo o de bajo consumo, en el cual los requerimientos de potencia son mínimos.
En dicho estado se detiene el reloj principal y se congelan sus circuitos asociados, quedando
sumido en un profundo sueño. Al activarse una interrupción ocasionada por el
acontecimiento esperado, el microcontrolador se despierta y reanuda su trabajo. Para
hacernos una idea, esta función es parecida a la opción de Suspender en el menú para apagar
el equipo (en aquellos computadores con administración avanzada de energía)
1.5.5 Conversor A/D (DAC)
Los microcontroladores que incorporan un Conversor A/D (Analógico/Digital) pueden
procesar señales analógicas, tan abundantes en las aplicaciones. Suelen disponer de un
multiplexor que permite aplicar a la entrada del DAC diversas señales analógicas desde los
pines del circuito integrado.
1.5.6 Conversor D/A (ADC)
Transforma los datos digitales obtenidos del procesamiento del computador en su
correspondiente señal analógica que envía al exterior por uno de los pines del chip. Existen
muchos circuitos que trabajan con señales analógicas.
1.5.7 Comparador analógico
Algunos modelos de microcontroladores disponen internamente de un Amplificador
Operacional que actúa como comparador entre una señal fija de referencia y otra variable
que se aplica por una de los pines de la cápsula. La salida del comparador proporciona un
nivel lógico 1 ó 0 según una señal sea mayor o menor que la otra. También hay modelos de
microcontroladores con un módulo de tensión de referencia que proporciona diversas
tensiones de referencia que se pueden aplicar en los comparadores.
1.5.8 Modulador de ancho del pulso PWM
Son circuitos que proporcionan en su salida pulsos de ancho variable, que se ofrecen al
exterior a través de lo pines del encapsulado.
19
1.5.9 Puertos de Entrada y Salida
La principal utilidad de los pines que posee la cápsula que contiene un
microcontrolador es soportar las líneas de E/S que comunican al computador interno con los
periféricos exteriores y según los controladores de periféricos que posea cada modelo de
microcontrolador, se destinan a proporcionar el soporte a las señales de entrada, salida y
control.
Todos los microcontroladores destinan parte de sus pines a soportar líneas de E/S
digitales. Por lo general, estas líneas se agrupan de ocho en ocho formando Puertos. Las
líneas digitales de los puertos pueden configurarse como Entrada o como Salida cargando un
1 ó un 0 en el bit correspondiente de un registro destinado a su configuración.
1.5.10 Puertas de comunicación
Con objeto de dotar al microcontrolador de la posibilidad de comunicarse con otros
dispositivos externos, otros buses de microprocesadores, buses de sistemas, buses de redes y
poder adaptarlos con otros elementos bajo otras normas y protocolos. Algunos modelos
disponen de recursos que permiten directamente esta tarea, entre los que destacan:
¾ UART, adaptador de comunicación serie asíncrona.(Ej: Puerto Serie)
¾ USART, adaptador de comunicación serie síncrona y asíncrona
¾ Puerta paralela esclava para poder conectarse con los buses de otros
microprocesadores.
¾ USB (Universal Serial Bus), que es un moderno bus serie para los PC.
¾ Bus I2C, que es un interfaz serie de dos hilos desarrollado por Philips.
¾ CAN (Controller Área Network), para permitir la adaptación con redes de
conexionado multiplexado desarrollado conjuntamente por Bosch e Intel para
el cableado de dispositivos en automóviles.
Tanto el I2C en televisores, como el Bus CAN en automóviles, fueron diseñados para
simplificar la circuitería que supone un bus paralelo de 8 líneas dentro de un televisor, así
como para librar de la carga que supone una cantidad ingente de cables en un vehículo.
20
CAPITULO II
LA FAMILIA DE LOS PICS
2.1 Introducción
Los microcontroladores PIC, están basados en la arquitectura RISC, contemplan la
mayoría de las características de esta arquitectura. Entre ellas podemos destacar, set de
instrucciones homogéneo, reducido número de instrucciones y alta velocidad.
Por su reducido costo, su amplia gama y la cantidad de información disponible
especialmente en Internet estos tienen un lugar privilegiado, bastante importante en el
mercado de los microcontroladores, siendo Microchip una empresa líder junto a Motorola o
Intel. Pero el objetivo de esta monografía no es juzgar que microcontrolador es el mejor, sino
mostrar como empezar a trabajar con los microcontroladores PIC en la Facultad de
Ingeniería de Sistemas de la Unidad Académica de Ingeniería de Sistemas, Eléctrica y
Electrónica de la UCACUE.. Para ello se utilizará el modelo básico PIC16F84A y diferentes
herramientas de trabajo obtenidas gratuitamente de Internet que más adelante en el Capitulo
III se explicará con más detalle.
2.2
La Familia de los Pics
2.2.1 ¿Porque los Pics?
¾ Eficiencia del código: permiten una gran compactación de los programas
¾ Rapidez de ejecución: a frecuencia de 20MHz -> 5 millones de instr./seg.
¾ Seguridad en acceso por la separación de memoria de datos y de programa
¾ Juego reducido de instrucciones y de fácil aprendizaje
¾ Compatibilidad de pines y código entre dispositivos de la misma familia o
incluso de familias distintas.
¾ Gran variedad de versiones en distintos encapsulados (desde 8 hasta 84 pines)
sin reducción de las prestaciones internas (muy versátiles)
¾ Posibilidad de protección del código muy fiable.
¾ Herramientas de desarrollo software y hardware abundantes y de bajo costo
2.3 Historia
En 1965, la empresa GI creó una división de microelectrónica, GI Microelectronics
División, que comenzó fabricando memorias EPROM y EEPROM, que conformaban las
familias AY3-XXXX y AY5-XXXX. A principios de los años 70 diseñó el microprocesador
de 16 bits CP1600, razonablemente bueno pero que no manejaba eficazmente las Entradas y
Salidas. Para solventar este problema, en 1975 diseñó un chip destinado a controlar E/S: el
21
PIC (Peripheral Interface Controller). Se trataba de un controlador rápido pero limitado y
con pocas instrucciones pues iba a trabajar en combinación con el CP1600.
La arquitectura del PIC, que se comercializó en 1975, era sustancialmente la misma
que la de los actuales modelos PIC16C5X. En aquel momento se fabricaba con tecnología
NMOS y el producto sólo se ofrecía con memoria ROM y con un pequeño pero robusto
microcódigo.
La década de los 80 no fue buena para GI, que tuvo que reestructurar sus negocios,
concentrando sus actividades en los semiconductores de potencia. La GI Microelectronics
División se convirtió en una empresa subsidiaria, llamada GI Microelectronics Inc.
Finalmente, en 1985, la empresa fue vendida a un grupo de inversores de capital de riesgo,
los cuales, tras analizar la situación, rebautizaron a la empresa con el nombre de Arizona
Microchip Technology y orientaron su negocio a los PIC, las memorias EPROM paralelo y
las EEPROM serie. Se comenzó rediseñando los PIC, que pasaron a fabricarse con
tecnología CMOS, surgiendo la familia de gama baja PIC16CSX, considerada como la
"clásica".
Una de las razones del éxito de los PIC se basa en su utilización. Cuando se aprende a
manejar uno de ellos, conociendo su arquitectura y su repertorio de instrucciones, es muy
fácil emplear otro modelo.
Microchip cuenta con su fábrica principal en Chandler, Arizona, en donde se fabrican y
prueban los chips con los más avanzados recursos técnicos. En 1993 construyó otra fábrica
de similares características en Tampa, Arizona. También cuenta con centros de ensamblaje y
ensayos en Taiwan y Tailandia. Para tener una idea de su alta producción, hay que tener en
cuenta que ha superado el millón de unidades por semana en productos CMOS de la familia
PIC16CSX.
2.4 La Gama de los Pics
Para resolver aplicaciones sencillas se precisan pocos recursos; en cambio, las
aplicaciones grandes requieren numerosos y potentes. Siguiendo esta filosofía, Microchip
construye diversos modelos de microcontroladores orientados a cubrir, de forma, las
necesidades de cada proyecto. Así, hay disponibles microcontroladores sencillos y baratos
para atender las aplicaciones simples y otros complejos y más costosos para las de mucha
envergadura.
Entre los fabricantes de microcontroladores hay dos tendencias para resolver las
demandas de los usuarios:
22
1ª. Microcontroladores de arquitectura cerrada
Cada modelo se construye con un determinado CPU, cierta capacidad de memoria de
datos, cierto tipo y capacidad de memoria de instrucciones, un número de E/S y un conjunto
de recursos auxiliares muy concreto. El modelo no admite variaciones ni ampliaciones.
La aplicación a la que se destina debe encontrar en su estructura todo lo que precisa
y, en caso contrario, hay que desecharlo. Microchip ha elegido principalmente este modelo
de arquitectura.
2ª. Microcontroladores de arquitectura abierta
Estos microcontroladores se caracterizan porque, además de disponer de una
estructura interna determinada, pueden emplear sus líneas de E/S para enviar al exterior los
buses de datos, direcciones y control, con lo que se posibilita la ampliación de la memoria y
las E/S con circuitos integrados externos. Microchip dispone de modelos PIC con
arquitectura abierta, sin embargo,
esta alternativa se escapa de la idea de un
microcontrolador incrustado y se asemeja a la solución que emplean los clásicos
microprocesadores.
Pero como se dijo anteriormente, los verdaderos microcontroladores responden a la
arquitectura cerrada y permiten resolver una aplicación con un solo circuito integrado y a
precio muy reducido.
La mayoría de los sistemas de control incrustados requieren CPU, memoria de datos,
memoria de instrucciones, líneas de E/S, y diversas funciones auxiliares como
temporizadores, comunicación serie y otras. La capacidad y el tipo de las memorias, el
número de líneas de E/S y el de temporizadores, así como circuitos auxiliares, son
parámetros que dependen exclusivamente de la aplicación y varían mucho de unas
situaciones a otras. Quizás se pueda considerar la decisión más importante del proyecto la
elección del modelo de microcontrolador. Para adaptarse de forma óptima a las necesidades
de los usuarios, Microchip oferta tres gamas de microcontroladores de 8 bits.
Con las tres gamas de PIC se dispone de gran diversidad de modelos y encapsulados,
pudiendo seleccionar el que mejor se acople a las necesidades de acuerdo con el tipo y
capacidad de las memorias, el número de líneas de E/S y las funciones auxiliares precisas.
Sin embargo, todas las versiones están construidas alrededor de una arquitectura común, un
repertorio mínimo de instrucciones y un conjunto de opciones muy apreciadas, como el bajo
consumo y el amplio margen de tensión de alimentación. En la figura 2.1 se muestra la
distribución de los modelos de PIC en las tres gamas.
23
2.4.1 Gama Baja
La gama baja de los PIC encuadra nueve modelos fundamentales en la actualidad. La
memoria de programa puede contener 512, 1 k. y 2 k palabras de 12 bits, y ser de tipo ROM
ó EPROM. También hay modelos con memoria OTP, que sólo puede ser grabada una vez
por el usuario. La memoria de datos puede tener una capacidad comprendida entre 25 y 73
bytes. Sólo disponen de un temporizador (TMR0), un repertorio de 33 instrucciones y un
número de pines para soportar las E/S comprendido entre 12 y 20. La tensión de
alimentación admite un valor muy flexible comprendido entre 2 y 6,25 V, lo cual posibilita
el funcionamiento mediante pilas comunes teniendo en cuenta su bajo consumo (menos de 2
mA. a 5 V y 4 MHz).
Al igual que todos los miembros de la familia PIC16/17, los componentes de la gama
baja se caracterizan por poseer los siguientes recursos.
1. Sistema POR ( POWER ON RESET).
Todos los PIC tienen la facultad de generar una autoreinicialización o autoreset al
conectarles la alimentación.
2. Perro guardián, (Watchdog)
Existe un temporizador que produce un reset automáticamente si no es recargado
antes que pase un tiempo prefijado. Así se evita que el sistema quede en bucle cerrado, lo
24
que comúnmente se denomina "colgado" dado en esa situación el programa no recarga dicho
temporizador y se genera un reset.
3. Código de protección
Cuando se procede a realizar la grabación del programa, puede protegerse para evitar
su lectura. También disponen, los PIC de posiciones reservadas para registrar números de
serie, códigos de identificación, prueba, etc.
4. Líneas de E/S de alta corriente.
Las líneas de E/S de los PIC pueden proporcionar o absorber una corriente de salida
comprendida entre 20 y 25 mA, capaz de excitar directamente ciertos periféricos.
5. Modo de reposo (bajo consumo o SLEEP).
Ejecutando una instrucción (SLEEP), el CPU y el oscilador principal se detienen y
se reduce notablemente el consumo.
La gama baja tiene dos restricciones importantes.
1ª) La pila o "stack" sólo dispone de dos niveles lo que supone no poder encadenar más de
dos subrutinas.
2ª) Los microcontroladores de la gama baja no admiten interrupciones.
2.4.2 Gama Media
En esta gama sus componentes añaden nuevas prestaciones a las que poseían los de
la gama baja, haciéndoles más adecuados en las aplicaciones complejas. Admiten
interrupciones, poseen comparadores de magnitudes analógicas, convertidores A/D, puertos
serie y diversos temporizadores.
Algunos modelos disponen de una memoria de instrucciones del tipo OTP ("One
Time Programmable"), que sólo la puede grabar una vez el usuario y que resulta mucho más
económica en la implementación de prototipos y pequeñas series.
Hay modelos de esta gama que disponen de una memoria de instrucciones tipo
EEPROM, que al ser borrables eléctricamente son mucho más fáciles de reprogramar que las
EPROM, que tienen que ser sometidas a rayos ultravioleta durante un tiempo determinado
para realizar dicha operación.
El temporizador TMR1 que hay en esta gama tiene un circuito oscilador que puede
trabajar asíncronamente y que puede incrementarse aunque el microcontrolador se halle en el
modo de reposo ("sleep"), posibilitando la implementación de un reloj en tiempo real.
25
Las líneas de E/S del puerto B presentan una carga "pull-up" activada por software.
2.4.3 Gama Alta
En la actualidad, esta gama esta formada por tres modelos cuyas características
responden a microcontroladores de arquitectura abierta.
Los dispositivos PIC17C4X responden a microcontroladores de arquitectura abierta
pudiéndose expansionar hacia el exterior al poder sacar los buses de datos, direcciones y
control. Así se pueden configurar sistemas similares a los que utilizan los microprocesadores
convencionales, siendo capaces de ampliar la configuración interna del PIC añadiendo
nuevos dispositivos de memoria y de E/S externas. Esta facultad obliga a estos componentes
a tener un elevado número de pines comprendido entre 40 y 44. Admiten interrupciones,
poseen puerto serie, varios temporizadores y mayores capacidades de memoria, que alcanza
los 8 k palabras en la memoria de instrucciones y 454 bytes en la memoria de datos.
2.5 Microcontrolador. PIC 16X84.
2.5.1 Descripción general.
El PIC de la serie 16x84 es un microcontrolador diseñado por la empresa Microchip,
el cual se fabrica en varias versiones de las cuales las más simples, pero interesantes, son la
16C84 y la 16F84. Son idénticas en cuanto a su arquitectura interna a excepción de la
memoria ROM y la memoria RAM. En el primer caso contiene una memoria EEPROM de
1Kbytes de 14 bits cada una, en el segundo diseño la memoria tiene la misma capacidad pero
es de tipo Flash.
Tal y como se ha comentado, la memoria EEPROM y la Flash son eléctricamente
grabables y borrables, lo que permite escribir y borrar el programa bajo prueba manteniendo
el microcontrolador en el mismo zócalo y usando el mismo dispositivo para grabar y borrar.
Esta característica supone una gran ventaja frente a la mayoría de los microcontroladores,
que tienen como memoria de programa reescribible una tipo EPROM. Se graba
eléctricamente, pero para borrarlas hay que someterlas durante cierto tiempo a rayos
ultravioleta, lo que implica sacar del zócalo el circuito integrado y colocarlo en un borrador
de EPROM.
Otra ventaja del PIC16X84 en cuanto a simplificar el proceso de escritura, borrado y
reescritura de programas, tan necesario en la fase de diseño, es su sistema de grabación de
datos, que se realiza en serie. Para escribir un programa en la memoria se manda la
información en serie usando sólo dos pines, una para la señal de reloj y otra para los datos
serie. A continuación exponemos las características más significativas:
26
¾ MEMORIA DE PROGRAMA: 1 K x 14
¾ MEMORIA DE DATOS: 36 bytes (PIC16C84) y 68 bytes (PIC16F84)
¾ MEMORIA DE DATOS EEPROM: 64 bytes
¾ PILA (Stack): De 8 niveles
¾ INTERRUPCIONES: 4 tipos diferentes
¾ JUEGO DE INSTRUCCIONES: 35
¾ ENCAPSULADO: Plástico DIP de 18 pines
¾ FRECUENCIA DE TRABAJO: 10 MHz máxima
¾ TEMPORIZADORES: Sólo uno el TMR0. También tiene Perro Guardián
(WDT)
¾ LINEAS DE E/S DIGITALES: 13 (5 Puerta A y 8 Puerta B)
¾ TENSIÓN DE ALIMENTACION (VDD): De 2 a 6 V DC
¾ TENSIÓN DE GRABACION (VPP): De 12 a 14 V DC
Existen otras variantes que se comercializan y responden a la nomenclatura genérica
PIC16X8X, atendiendo a diversas características como pueden ser la frecuencia máxima de
funcionamiento, el tipo de oscilador externo o el margen de la tensión de alimentación.
2.5.2 Aspecto externo.
EL PIC16C(F)84 está fabricado con tecnología CMOS de altas prestaciones y
encapsulado en plástico con 18 pines, con la nomenclatura que se muestra en la figura 2.2.
La misión de cada pin se describe a continuación
VDD: Tensión positiva de alimentación.
VSS: Tensión conectada a tierra o negativa de alimentación.
27
OSC1/CLKIN: Entrada del circuito oscilador externo que proporciona la frecuencia de
trabajo del microcontrolador.
OSC2/CLKOUT: Pin auxiliar del circuito oscilador.
MCLR#: Pin activa con nivel lógico bajo, lo que se representa con el símbolo #. Su
activación origina la reinicialización ó Reset del PIC. También se usa durante la grabación
de la memoria para introducir por ella la tensión VPP. RA0-RA4: Son las 5 líneas de E/S
digitales correspondientes a la Puerta A. La línea RA4 multiplexa otra función expresada por
TOCKI. En ese caso sirve para recibir una frecuencia externa para alimentar al temporizador
TMR0.
RB0-RB7: Son las 8 líneas de E/S digitales de la Puerta B. La línea RB0 multiplexa la
función de servir como entrada a una petición externa de una interrupción.
2.5.3 La frecuencia de funcionamiento. El reloj.
La frecuencia de trabajo del microcontrolador es un parámetro fundamental a la hora
de establecer la velocidad de ejecución de instrucciones y el consumo de energía. Cuando un
PIC16X84 funciona a 10 MHz, que es su máxima frecuencia, le corresponde un ciclo de
instrucción de 400 ns, puesto que cada instrucción tarda en ejecutarse 4 períodos de reloj, o
sea, 4 x 100 ns = 400 ns. Todas las instrucciones del PIC se realizan en un ciclo de
instrucción, menos las de salto que tarda el doble.
Los impulsos de reloj entrar por el pin OSC1/CLKIN y se dividen por 4
internamente, dando lugar a las señales Q1, Q2, Q3 y Q4 (figura 2.3). Durante un ciclo de
instrucción, que comprende las cuatro señales mencionadas, se desarrollan las siguientes
operaciones:
28
¾ Q1: Durante este impulso se incrementa el Contador de Programa.
¾ Q4: Durante este impulso se busca el código de la instrucción en la memoria
del programa y se carga en el Registro de Instrucciones.
¾ Q2-Q3: Durante la activación de estas dos señales se produce la decodificación
y la ejecución de la instrucción.
Para conseguir ejecutar cada instrucción en un ciclo de instrucción (excepto las de
salto), se aplica la técnica de segmentación o pipe-line, que consiste en realizar en paralelo
las dos fases que comprende cada instrucción.
La estructura segmentada del procesador permite realizar al mismo tiempo la fase de
ejecución de una instrucción y la de búsqueda de la siguiente. Cuando la instrucción
ejecutada corresponde a un salto no se conoce cuál será la siguiente hasta que se realice, por
eso en esta situación se sustituye la fase de búsqueda por un ciclo “vacío”, originando que las
instrucciones de salto tarde en realizarse dos ciclos de instrucción.
2.5.3.1 Tipos de osciladores
Los PIC admiten cuatro tipos de osciladores externos para aplicarles la frecuencia de
funcionamiento, se colocan entre los pines OSC1 y OSC2. El tipo empleado debe
especificarse en dos bits de la “Palabra de Configuración”, como se comentará más adelante.
Los tipos que se pueden emplear son:
¾ Oscilador RC: Es un oscilador de bajo costo formado por una simple resistencia
y un condensador. Proporciona una estabilidad mediocre de la frecuencia, cuyo
valor depende de los valores de los dos elementos R-C.
¾ Oscilador HS: Es un oscilador que alcanza una alta velocidad comprendida entre
4 y 10 MHz y está basado en un cristal de cuarzo o un resonador cerámico.
¾ Oscilador XT: Es un oscilador de cristal o resonador para frecuencias estándar
comprendidas entre 100 Khz. y 4 MHz.
¾ Oscilador LP: Oscilador de bajo consumo con cristal o resonador diseñado para
trabajar en un rango de frecuencias de 35 a 200 KHz.
2.5.4 Reinicialización o RESET.
Cuando se aplica un nivel lógico bajo a la patilla MCLR# el microcontrolador
reinicializa su estado. Dos acciones importantes se producen en la reinicialización o RESET:
1. El Contador de Programa se carga con la dirección 0, apuntando a la primera
dirección de la memoria de programa en donde deberá estar situada la primera
instrucción del programa de aplicación.
29
2. La mayoría de los registros de estado y control del procesador toman un estado
conocido y determinado.
Se puede provocar el RESET de varias maneras, pero si se desea realizar
manualmente, habrá que colocar, conectado a la patilla MCLR#, un circuito con un pulsador,
que al ser apretado genere un nivel lógico bajo.
2.6 Arquitectura de los microcontroladores PIC16X84.
Para lograr una compactación de código óptima y una velocidad superior a la de sus
competidores, los microcontroladores PIC incorporan en su procesador tres de las
características más avanzadas en los grandes computadores:
¾ Procesador tipo RISC.
¾ Ejecución segmentada.
¾ Arquitectura HARVARD.
El juego de instrucciones se reduce a 35 y sus modos de direccionamiento se han
simplificado al máximo. Con la estructura segmentada se pueden realizar simultáneamente
las dos fases en que se descompone cada instrucción. Con la arquitectura HARVARD se
puede acceder de forma simultánea e independiente a la memoria de datos y a la de
programa. El aislamiento y la diferenciación de los dos tipos de memoria permiten que cada
uno tenga la longitud y el tamaño más adecuado. De esta forma, en el PIC16X84 la longitud
de datos es de un byte, mientras que la de las instrucciones es de 14 bits.
Otra característica relevante de los PIC es el manejo intensivo del Banco de
Registros, los cuales participan de manera muy activa en la ejecución de las instrucciones.
De igual forma, la memoria RAM complementa los registros internos implementando en sus
posiciones registros de propósito específico y de propósito general.
La arquitectura interna del PIC16X84 se presenta en la figura 2.4 y consta de siete
bloques fundamentales.
1. Memoria de programa EEPROM o Flash de 1 k x 14 bits.
2. Memoria de datos formada por dos áreas. Una RAM donde se alojan 22 registros de
propósito específico (SFR) y 36 de propósito general (GDR), y otra de tipo
EEPROM de 64 bytes.
3. Camino de datos con una ALU de 8 bits y un registro de trabajo W del que
normalmente recibe un operando y envía el resultado. EL otro operando puede
provenir del bus de datos o del propio código de la instrucción.
4. Diversos recursos conectados al bus de datos, tales como Puertas de Entrada/Salida,
Temporizador TMR0, etc.
30
5. Base de tiempos y circuitos auxiliares.
6. Direccionamiento de la memoria de programa en base al Contador de Programa
ligado a una Pila de 8 niveles de profundidad.
7. Direccionamiento directo e indirecto de la memoria RAM.
2.6.1 Organización de la memoria
Hay dos bloques de memoria en el PIC16X84. Éstas son la memoria del programa y
la memoria de datos. Cada bloque posee su propio bus, con la finalidad que el acceso para
cada bloque pueda ocurrir durante el mismo ciclo del oscilador. Figura 2.5.
31
2.6.1.1 Memoria de Programa.
La arquitectura de los PIC de la gama media admite un mapa de memoria de
programa capaz de contener 8192 instrucciones de 14 bits cada una. Este mapa se divide en
páginas de 2048 posiciones. Para direccionar 8 K posiciones se necesitan 13 bits, que es la
longitud que tiene el Contador de Programa. Sin embargo el PIC16X84 solo tiene
implementadas 1 K posiciones, por lo que se ignoran los tres bits de más peso del PC.
Al igual que todos los registros específicos que controlan la actividad del procesador,
el Contador de Programa está implementado sobre un par de posiciones de la memoria
RAM. Cuando se escribe el Contador de Programa como resultado de una operación de la
ALU, los 8 bits de menos peso del PC residen en el registro PCL, que ocupa, repetido, la
posición 2 de los dos bancos de la memoria de datos. Los bits de más peso, PC <12:8>,
residen en los 5 bits de menos peso del registro PCLATH, que ocupa la posición 0A H de los
dos bancos de la memoria RAM. En las instrucciones de salto, los 11 bits de menos peso del
PC provienen del código de instrucción y los otros dos de los bits de PCLATH <4:3>, tal y
como se muestra en la figura 2.6.
32
La Pila es una zona aislada de las memorias de instrucciones y datos. Tiene una
estructura LIFO, en la que el último valor guardado es el primero que sale. Tiene 8 niveles
de profundidad cada uno con 13 bits. Funciona como un buffer circular, de manera que el
valor que se obtiene al realizar el noveno POP es igual al que se obtuvo en el primero.
2.6.1.2 Memoria de Datos RAM
La memoria de datos del PIC16X84 dispone de dos zonas diferentes:
1. Área de RAM estática o SRAM, donde reside el Banco de Registros Específicos
(SFR) y el Banco de Registros de Propósito General (GPR). El primer banco tiene
24 posiciones de tamaño byte, aunque dos de ellas no son operativas, y el segundo
68.
2. Área EEPROM, de 64 bytes donde, opcionalmente, se pueden almacenar datos que
no se pierden al desconectar la alimentación. La zona de memoria RAM se halla
dividida en dos bancos (banco 0 y banco 1) de 128 bytes cada uno. (Figura 2.7). De
esta forma los registros GPR están agrupados entre 00h-0Bh y 80h-8Bh. Los
registros de propósito general pueden ser accedidos desde 0Ch-2Fh o 8Ch-AFh,
aunque se recomienda siempre el primer intervalo.
Las zonas de memoria 30h-7Fh y B0h-FFh no son empleadas y devuelven 0 en
lectura.
El área de memoria de datos también contiene la memoria de datos EEPROM. Esta
memoria no está directamente mapeada en la memoria de datos, pero está indirectamente
mapeada. Esto es, un puntero de dirección indirecta especifica la dirección de la memoria de
datos EEPROM para lectura/escritura. Los 64 bytes de memoria de datos EEPROM tienen el
rango de dirección 00h-3Fh.
Para acceder a la EEPROM en lectura y escritura empleamos dos registros, que
forman el puntero de dirección indirecta:
EEDATA (0008h), para datos
EEADR (0009h), para direcciones
Para definir el modo de funcionamiento empleamos los registros especiales:
EECON1 (0088h)
EECON2 (0089h)
33
2.6.1.3 Direccionamiento de la memoria de datos.
En los PIC de gama media la memoria de datos está organizada para alojar un
máximo de 4 bancos de 128 bytes cada uno. Los PIC16C84 sólo tienen implementados los
48 primeros bytes de los bancos 0 y 1. En el resto de los PIC de esta familia se destinan dos
bits del registro ESTADO (RP0 y RP1) para determinar el banco y otros siete para elegir una
de las 128 posiciones del banco seleccionado, tal y como muestra la figura 2.8.
34
¾ Direccionamiento Directo: El operando que utiliza la instrucción en curso se
referencia mediante su dirección, que viene incluida en el código OP de la misma,
concretamente en los 7 bits de menos peso. El banco a acceder lo determinan los bits
RP0 y RP1 del registro ESTADO. En el caso del PIC16C84 sólo se usa el bit RP0 al
tener implementados únicamente dos bancos.
¾ Direccionamiento Indirecto: Este modo de direccionamiento se usa cuando en una
instrucción se utiliza como operando el registro INDF, que ocupa la dirección =de
ambos bancos. En realidad el registro INDF no está implementado físicamente y
cuando se le hace referencia, se accede a la dirección de un banco especificada con
los bits de menos peso del registro FSR. El bit de más peso de FSR junto al bit IRP
del registro ESTADO se encargan de seleccionar el banco a acceder, mientras que los
7 bits de menos peso apuntan a la posición. Como sólo hay dos bancos en el
PIC16C84 en este modo de direccionamiento, el bit IRP es 0 siempre.
2.6.2 El Registro de Estado.
Hasta ahora ESTADO es el registro más usado y llega el momento de describirlo en
su totalidad. Ocupa la dirección 3 tanto del banco 0 como del 1 de la memoria de datos
RAM. Sus bits tienen tres misiones distintas:
1.
Se encargan de avisar de la incidencias del resultado de la ALU (C, DC y Z).
2.
Indican el estado de Reset (TO# y PD#).
3.
Seleccionan el banco a acceder en la memoria de datos (IRP, RP0 y RP1).
Cada bit de este registro tiene un significado particular que es el que sigue.
¾ BIT 0 o bit de carry ( C ). Bit de acarreo para las operaciones de suma y resta. Se
lleva a uno mediante las instrucciones ADDWF y SUBWF, si se genera un acarreo en
el bit de mayor peso.
Este bit también lo utilizan las instrucciones de rotación.
¾ BIT 1 o bit DC (Digit Carry). Este es un bit de acarreo de dígito, para por ejemplo la
aritmética en BCD. Se pone a uno con las instrucciones ADDWF y SUBWF, si se
genera un acarreo del bit 3 al grupo de cuatro bits superior.
¾ BIT 2 o bit Z (zero). Este bit se pone a uno si el resultado de la operación aritmética o
lógica ejecutada es nulo.
¾ BIT 3 o bit PD (Power Down). Este bit se pone a uno durante la conexión a la
alimentación del circuito, o durante la ejecución de una instrucción CLRWDT
relativa al temporizador watchdog. Se pone a cero mediante una instrucción SLEEP.
35
¾ BIT 4 o bit TO (Time Out). Este bit se pone a uno durante una conexión a la
alimentación o durante la ejecución de una instrucción CLRWDT o SLEEP. Se pone
a cero cuando el temporizador Watchdog se desborda.
¾ BIT 5 Y 6 o bits RP0 y RP1. Estos bits sirven para seleccionar las páginas de
memoria de programa. La tabla 1.5 precisa su modo de utilización, que es
perfectamente lógico sabiendo que cada página contiene 128 bytes.
¾ BIT 7 o bit IRP. Este bit está previsto para un futuro direccionamiento de paginado
indirecto, pero no se utiliza en el 16C84. Tan solo se usa para compatibilidad con las
futuras versiones
2.6.3 Temporizador/Contador TMR0.
Una de las labores más habituales en los programas de control de dispositivos suele
ser determinar intervalos concretos de tiempo, y recibe le nombre de “temporizador” (timer)
el elemento encargado de realizar esta función. También suele ser frecuente contar los
impulsos que se producen en el exterior del sistema, y el elemento destinado a este fin se
denomina “contador”. Si las labores del temporizador o contador las asignamos al programa
principal robarían mucho tiempo al procesador en detrimento de actividades más
importantes. Por este motivo se diseñan recursos específicamente orientados a estas
misiones.
Los PIC16X84 poseen un temporizador/contador de 8 bits, llamado TMR0, que
actúa de dos maneras diferentes:
1. Como contador de sucesos, que están representados por los impulsos que se aplican
a los pines RA4/T0CKI. Al llegar al valor FF H se desborda el contador y, con el
siguiente impulso, pasa a 00 H, advirtiendo esta circunstancia con la activación de
un señalizador y/o provocando una interrupción.
2. Como temporizador, cuando se carga en el registro que implementa el recurso un
valor inicial se incrementa con cada ciclo de instrucción (Fosc/4) hasta que se
desborda, o sea, pasa de FF H a 00 H y avisa poniendo a el bit señalizador y/o
provocando una interrupción.
Para que el TMR0 funcione como un cantador de impulsos aplicados al pin T0CKI
hay que poner a 1 el bit T0CS, que es el que ocupa la posición 5 del registro OPTION. En
esta situación, el registro TMR0, que es el ubicado en la dirección 1 del banco 0 de la
memoria de datos, se incrementa con cada flanco activo aplicado a la patilla T0CKI. El tipo
de flanco activo se elige programando el bit T0SE, que es el que ocupa la posición 4 del
36
registro OPTION. Si T0SE 0 1, el flanco activo es el de bajada, y si T0SE = 0, es el de
subida. Cuando se desea que TMR0 funcione como temporizador el bit T0CS = 0.
En realidad, los PIC16X84 disponen de dos temporizadores, el TMR0 y el Perro
Guardián (Watchdog). El primero actúa como principal y sobre él recae el control de tiempos
y la cuenta de impulsos. El otro vigila que el programa no se cuelgue, y para ello cada cierto
tiempo comprueba si el programa se está ejecutando normalmente. En caso contrario, si el
control está detenido en un bucle infinito a la espera de algún acontecimiento que no se
produce, el Perro Guardián “ladra”, lo que se traduce en un Reset que inicializa todo el
sistema.
A menudo el TMR0 y el Perro Guardián precisan controlar largos intervalos de
tiempo y necesitan aumentar la duración de los impulsos de reloj que les incrementa. Para
cubrir este requisito se dispone de un circuito programable denominado Divisor de
frecuencia, que divide la frecuencia utilizada por diversos rangos. Para programar el
comportamiento del TMR0, el Perro Guardián y el Divisor de frecuencia se utilizan algunos
bits del registro OPTION y de la Palabra de Configuración, que se verán más adelante. En la
figura 2.9 se proporciona un esquema simplificado de la arquitectura del circuito de control
de tiempos usado en los PIC16X84.
37
El Divisor de frecuencias puede usarse con el TMR0 o con el WDT. Con el TMR0
actúa como Pre-divisor, es decir, los impulsos pasan primero por el Divisor y luego se
aplican al TMR0, una vez aumentada su duración. Con el WDT actúa después, realizando la
función de Post-divisor. Los impulsos, que divide por un rango el Divisor de frecuencia,
pueden provenir de la señal de reloj interna (Fosc/4) o de los que se aplican al pin T0CKI. El
TMR0 se comporta como un registro de propósito específico (SFR) ubicado en la dirección 1
del banco 0 de la memoria de datos. EN igual dirección, pero en el banco 1, se halla el
registro OPTION.
TMR0 puede ser leído y escrito en cualquier momento al estar conectado al bus de
datos. Funciona como un contador ascendente de 8 bits. Cuando funciona como
temporizador conviene cargarle con el valor de los impulsos que se quiere temporizar, pero
expresados en complemento a 2. De esta manera, al llegar al número de impulsos deseados
se desborda y al pasar por 00 H se activa el señalizador TOIF
y/o se produce una
interrupción.
Para calcular los tiempos a controlar con TMR0 se utilizan las siguientes fórmulas
prácticas.
Temporización = 4 • Tosc • (Valor cargado en TMR0) • (Rango del Divisor)
Valor a cargar en TMR= = Temporización/4 • Tosc • Rango del Divisor
En cualquier momento se puede leer el valor que contiene TMR0, sin detener su
cuenta. En la figura 2.10 se ofrece el esquema de funcionamiento de TMR0.
Obsérvese que hay un bloque que retrasa 2 ciclos la cuenta para sincronizar el
momento del incremento producido por la señal aplicada a T0CKI con el que se producen los
impulsos internos de reloj. Cuando se escribe TMR0 se retrasan 2 ciclos su reincremento y
se pone a 0 el Divisor de frecuencia.
38
2.6.4 El registro OPTION.
La misión principal de este registro es controlar TMR0 y el Divisor de frecuencia.
Ocupa la posición 81 H de la memoria de datos, que equivale a la dirección 1 del banco 1.
EL bit T0CS (Timer 0 Clock edge Select) selecciona en el multiplexor MPX1 la procedencia
de los impulsos de reloj, que pueden ser del oscilador interno (Fosc/4) o los que se aplican
desde el exterior por la patilla T0CKI. El bit T0SE (Timer 0 clock Source sElect) elige el
tipo de flanco activo en los impulsos externos. El bit PSA del registro OPTION asigna el
Divisor de frecuencia al TMR0 (PSA= 0) o al WDT (PSA = 1).
Los 3 bits de menos peso de OPTION seleccionan el rango por el que divide el
Divisor de frecuencia los impulsos que se le aplican en su entrada. El bit 6 INTEDG
(INTerrupt EDGe) sirve para determinar el flanco activo que provocará una interrupción
externa al aplicarse al pin RB0/INT. Un 1 si es de subida y un 0 si es de bajada. El bit 7
RBPU# (RB Pull-Up) activa, si vale 0, o desactiva, cuando vale 1, las resistencias Pull-Up
que pueden conectarse en las líneas de la Puerta B .La figura 2.11 muestra la distribución y
función de los bits de OPTION.
39
2.6.5 El Perro Guardián (WDT).
Se trata de un contador interno de 8 bits que origina un Reset cuando se desborda. Su
control de tiempos es independiente del TMR0 y está basado en un simple circuito R-C. Su
actuación es opcional y puede bloquearse para que no funcione programando el bit WDTE
de la palabra de Configuración. La temporización nominal con la que se halla programado el
Perro Guardián es de 18 ms, pero utilizando el Divisor de frecuencia puede aumentarse hasta
alcanzar los 2,3 segundos.
Para evitar que se desborde el Perro Guardián hay que refrescarle previamente. En
realidad este refresco consiste en ponerle a cero mediante las instrucciones clrwdt y sleep. El
programador debe analizar las instrucciones de la tarea y situar alguna de esas dos en sitios
estratégicos por los que pase el flujo de control antes que transcurra el tiempo asignado al
WDT. De esta manera si el programa se cuelga no se refresca el Perro Guardián y se produce
la reinicialización del sistema.
La instrucción clrwdt borra al WDT y reinicia su cuenta. Sin embargo, la instrucción
sleep, además de borrar WDT detiene al sistema y lo lleva a un estado de reposo o de bajo
consumo. Si no se desactiva el Perro Guardián al entrar en modo de reposo, al completar su
cuenta provocará un Reset y sacará al microcontrolador del modo de bajo consumo. Para
desactivar el Perro Guardián hay que escribir un 0 en el bit 2 (WDTE) de la Palabra de
Configuración.
2.6.6 Las Puertas de E/S.
Los PIC16X84 sólo disponen de dos puertas de E/S. La Puerta A posee 5 líneas,
RA0-RA4, y una de ellas soporta dos funciones multiplexadas. Se trata de RA4/TOCKI, que
puede actuar como línea de E/S o como el pin por la que se reciben los impulsos que debe
contar TMR0. La Puerta B tiene 8 líneas, RB0-RB7, y también tiene una con funciones
multiplexadas, la RB0/INT, que, además de línea típica de E/S, también sirve como patilla
por la que reciben los impulsos externos que provocan una interrupción.
Cada línea de E/S puede configurarse independientemente como entrada o como
salida, según se ponga a 1 o a 0, respectivamente, el bit asociado del registro de
configuración de cada puerta (TRISA y TRISB). Se llaman PUERTA ”A” y PUERTA ”B”
los registros que guardan la información que entra o sale por la puerta y ocupan las
direcciones 5 y 6 del banco 0 de la memoria de datos. Los registros de configuración TRISA
y TRISB ocupan las mismas direcciones pero en el banco 1. Al reiniciarse el PIC todos los
bits de los registros TRIS quedan a 1, con lo que las líneas de las puertas quedan
configuradas como entradas. Cada línea de salida puede suministrar una corriente máxima de
20 mA y si es de entrada puede absorber hasta 25 mA. Al existir una limitación en la
40
disipación máxima de la potencia del chip se restringe la corriente máxima de absorción de
la Puerta A a 80 mA y la de suministro a 50 mA. La Puerta B puede absorber un máximo de
150 mA y suministrar un total de 100 mA.
2.6.6.1 La Puerta A.
Las líneas RA3-RA0 admiten niveles de entrada TTL y de salida CMOS. La línea
RA4/TOCKI dispone de un circuito Trigger Schmitt que proporciona una buena inmunidad
al ruido y la salida tiene drenador abierto. RA4 multiplexa su función de E/S con la entrada
de impulsos externos para el TMR0. En el circuito de la figura 2.12 se muestra la adaptación
de los pines RA3-RA0 a las señales internas del procesador.
Cuando se lee una línea de la Puerta A se recoge el nivel lógico que tiene en ese
momento. Las líneas cuando actúan como salidas están conectadas a unos biestable, lo que
significa que sus pines llevan el nivel lógico que se haya cargado por última vez en el
registro PUERTA A. La escritura de una puerta, tal y como se ve en la figura 2.12, implica
que primero se deposita el nivel lógico en la línea correspondiente del bus interno de datos y
se activa la señal WRITE, lo que origina el almacenamiento de dicho nivel en el biestable.
En esta situación, el biestable de configuración (TRIS) debería tener valor 0 para que actuase
41
como salida. Con estos valores la puerta OR tendría un 0 a su salida y la AND también.
Estos valores producen la conducción de los transistores MOS, en función del valor escrito,
dando como salida final VDD o VSS (1 ó 0 respectivamente).
Si una línea actúa como entrada, el nivel lógico depositado en ella desde el exterior
pasa a la línea correspondiente del bus interno de datos cuando se activa la señal READ y se
hace conductor el dispositivo triestado que les une. Al programarse como entrada, los dos
transistores MOS de salida quedan bloqueados y la línea de alta impedancia. Téngase en
cuenta que cuando se lee una línea de entrada se obtiene el estado actual que tiene su pin
correspondiente (almacenado en el tercer biestable) y no el que haya almacenado en el
biestable de datos. La información presente en una línea de entrada se muestrea al iniciarse
el ciclo de instrucción y debe mantenerse estable durante su desarrollo.
2.6.6.2 La Puerta B.
Consta de 8 líneas bidireccionales de E/S, RB7-RB0, cuya información se almacena
en el registro PUERTA B, que ocupa la dirección 6 del banco 0. El registro de configuración
TRISB ocupa la misma dirección pero del banco 1. La línea RB0/INT tiene dos funciones
multiplexadas; además el pin de E/S actúa como el pin para la petición de una interrupción
externa, cuando se autoriza esta función mediante la adecuada programación del registro
INTCON.
A todas las líneas de esta puerta se las permite conectar una resistencia pull-up de
elevado valor con el positivo de la alimentación. Para este fin hay que programar en el
registro OPTION el bit RBPU# = 0, afectando la conexión de la resistencia a todas las líneas.
Con el Reset todas las líneas quedan configuradas como entradas y se desactivan las
resistencias de pull-up.
Las cuatro líneas de más peso, RB7-RB4, pueden programarse para soportar una
misión especial. Cuando las 4 líneas actúan como entradas se las puede programar para
generar una interrupción si alguna de ellas cambia su estado lógico. Esta posibilidad es muy
práctica en el control de teclados. En la figura 2.13 se muestra el esquema de conexionado
entre los pines RB7-RB4 y las líneas correspondientes del bus interno.
El estado de los pines RB7-RB4 en modo de entrada se compara con el valor antiguo
que tenían y que se había almacenado en un biestable durante la última lectura de la Puerta
B. El cambio de estado en alguna de esas líneas origina una interrupción y la activación del
señalizador RBIF. La línea RB6 también se utiliza para la grabación serie de la memoria de
programas y sirve para soportar la señal de reloj. La línea RB7 constituye la entrada de los
datos en serie.
42
2.6.7 La Palabra de CONFIGURACION.
Se trata de una posición reservada de la memoria de programa situada en la
dirección 2007 H y accesible únicamente durante el proceso de grabación. Al escribirse el
programa de la aplicación es necesario grabar el contenido de esta posición de acuerdo con
las características del sistema. En la figura 2.14 se muestra la distribución y asignación de
los 14 bits de la Palabra de Configuración de los PIC16F84, que tienen las siguientes
funciones:
CP
CP
CP
CP
CP
CP
CP
CP
CP
CP PWRT WDT FOSC FOSC
E#
E
1
Figura 2.14
CP: BITS DE PROTECCIÓN DE LA MEMORIA DE CÓDIGO
1: No protegida
0: Protegida. El programa no se puede leer, evitando copias. Tampoco se puede
sobreescribir. Además evita que pueda ser accedida la memoria EEPROM de datos y,
finalmente, si se modifica el bit CP de 0 a 1, se borra completamente la EEPROM.
43
0
PWRTE: ACTIVACIÓN DEL TEMPORIZADOR “POWER-UP”
El temporizador “power-up” retrasa 72 ms la puesta en marcha o Reset que se
produce al conectar la alimentación al PIC, para garantizar la estabilidad de la tensión
aplicada.
1: Desactivado
0: Activado
WDT: ACTIVACIÓN DEL PERRO GUARDIÁN
1: Activado el WDT
0: Desactivado
FOSC1-FOSC0: SELECCIÓN DEL OSCILADOR UTILIZADO
1-1: Oscilador RC
1-0: Oscilador HS
0-1: Oscilador XT
0-0: Oscilador LP
2.6.8 La memoria EEPROM de Datos.
Los PIC16X84 tienen 64 bytes de memoria EEPROM de datos, donde se pueden
almacenar datos y variables que interesa que no se pierdan cuando se desconecta la
alimentación al sistema. Soporta 1.000.000 de ciclos de escritura/borrado y es capaz de
guardar la información sin alterarla más de 40 años. La memoria EEPROM no está mapeada
en la zona de la memoria de datos donde se ubican los registros SFR y GPR. Para poder
leerla y escribirla durante el funcionamiento normal del microcontrolador hay que utilizar 4
registros del banco SFR: EEDATA, EEADR y EECON1.
En el registro EEADR, ubicado en la dirección 9 del banco 0, se carga la dirección a
acceder de la EEPROM de datos. Las 64 posiciones de un byte ocupan las direcciones de un
mapa que comienza en 00 H y termina en 3F H, por eso los 2 bits de más peso de este
registro siempre valen 0. En el registro EEDATA, ubicado en la dirección 8 del banco 0, se
depositan los datos que se leen o escriben. El registro EECON1, que ocupa la dirección 88 H
de la memoria de datos, o la dirección 8 del banco 1, tiene misiones de control de las
operaciones en la EEPROM y la distribución de sus bits se presenta en la figura 2.15,
sirviendo cada uno de ellos para lo siguiente:
RD: Lectura
1: Se pone a 1 cuando se va a realizar un ciclo de lectura. Luego pasa a 0 automáticamente.
44
WR: Escritura
1: Se pone a 1 cuando se va a realizar un ciclo de ESCRITURA. Luego pasa a 0
automáticamente.
WREN: Permiso de escritura
1: Permite la escritura en la EEPROM.
0: Prohibe la escritura.
WRERR: Señalizador de error en escritura
1: Se pone a 1 cuando una operación de escritura ha terminado prematuramente.
0: La operación de escritura se ha completado correctamente.
EEIF: Señalizador de final de operación de escritura
1: Cuando este señalizador se pone a 1 indica que la operación se ha completado con éxito.
Se pone a 0 por programa.
0: La operación de escritura no se ha completado.
------
------
------
EEIF
WRERR
WREN
WR
RD
Figura 2.15
2.7 Interrupciones.
Las llamadas a las subrutinas mediante instrucciones del tipo CALL son
desviaciones del flujo de control del programa originadas por instrucciones, por lo que se
consideran síncronas. Se producen cada vez que se ejecuta dicha instrucción. La
interrupciones son desviaciones del flujo de control del programa originadas asíncronamente
por diversos sucesos que no se hallan bajo la supervisión de las instrucciones. Dichos
sucesos pueden ser externos al sistema, como la generación de un flanco o nivel activo en
una patilla del microcontrolador, o bien, internos, como el desbordamiento de un contador.
El comportamiento del microcontrolador ante la interrupción es similar al de la
instrucción tipo CALL de llamada a subrutina. En ambos casos se detiene la ejecución del
programa en curso, se salva la dirección actual del PC en la Pila y se carga el PC con una
dirección, que en el caso de CALL viene acompañando a la misma instrucción, y en el caso
de una interrupción es una dirección “reservada” de la memoria de código, llamada Vector
de Interrupción que da paso a un trozo de código denominado Rutina de Servicio de la
Interrupción (RSI).
45
La RSI suele comenzar guardando en la memoria de datos algunos registros
específicos del procesador. Concretamente aquellos que la RSI va a emplear y va a alterar su
contenido. Antes del retorno al programa principal se recuperan los valores guardados y se
restaura completamente el estado del procesador. Algunos procesadores salvan estos
registros en la Pila, pero los PIC no disponen de instrucciones para introducir (push) y sacar
(pop) información de la Pila, utilizando para este fin registros de propósito general de la
memoria de datos.
Los PIC16X84 pueden ser interrumpidos por 4 causas diferentes, pero todas ellas
desvían el flujo de control a la dirección 0004 H, por lo que otra de las operaciones iniciales
de la RSI es averiguar cuál de las posibles causas ha sido la responsable de la interrupción en
curso, para ello se exploran los señalizadores de las fuentes de interrupción. Otro detalle
importante en la RSI de los PIC16X84 es que estos microcontroladores poseen un bit GIE
(Global Interrupt Enable) que cuando vale 0 prohibe todas las interrupciones. Pues bien, al
comenzar la RSI dicho bit GIE se pone automáticamente a 0, con objeto de no atender
nuevas interrupciones hasta que se termine la que ha comenzado. En el retorno final de la
interrupción, GIE pasa a valer automáticamente 1 para volver a tener en cuenta las
interrupciones.
Antes del retorno conviene borrar el señalizador de la causa de interrupción que se
ha atendido, porque si bien los señalizadores se ponen a 1 automáticamente en cuanto se
produce la causa que indican, la puesta a 0 se hace por programa. En la figura 17 se muestra
un organigrama de las fases más importantes que se desarrollan durante el proceso de
ejecución de una interrupción.
2.7.1 Causas de Interrupción.
Los PIC16X84 tienen 4 causas o fuentes posibles de interrupción:
1. Activación de la patilla RB0/INT
2. Desbordamiento del temporizador TMR0
3. Cambio de estado en una de las 4 pines de más peso (RB7-RB4) de la Puerta
B
4. Finalización de la escritura en la EEPROM de datos.
Cuando ocurre cualquiera de los 4 sucesos indicados se origina una petición de
interrupción, que si se acepta y se atiende comienza depositando el valor del PC actual en la
Pila, poniendo el bit GIE = 0 y cargando en el PC el valor 0004 H, que es el Vector de
Interrupción donde se desvía el flujo de control. Cada fuente de interrupción dispone de un
señalizador o “flag”, que es un bit que se pone automáticamente a 1 cuando se produce.
46
Además cada fuente de interrupción tiene otro bit de permiso, que según su valor permite o
prohibe la realización de dicha interrupción.
2.7.2 El Registro de Control de Interrupciones INTCON.
La mayor parte de los señalizadores y bits de permiso de las fuentes de interrupción
en los PIC16X84 están implementados sobre los bits del registro INTCON, que ocupa la
dirección 0B H del banco 0, hallándose duplicado en el banco 1. El significado de cada bit,
que se muestra en la figura 2.16, es el siguiente:
GIE
EEIE
T0IE
INTE
RBIE
T0IF
INTF
RBIF
Figura 2.16
GIE: Permiso Global de Interrupciones
0: Prohíbe todas las interrupciones.
1: Permite la ejecución de todas las interrupciones, cuyos bits de permiso individuales
también las permitan.
EEIE: Permiso de Interrupción por fin de escritura en la EEPROM
0: Prohíbe que se produzca esta interrupción.
1: Permite que se origine esta interrupción cuando termina la escritura en la EEPROM de
datos.
T0IE: Permiso de Interrupción por sobrepasamiento del TMR0
0: Prohíbe esta interrupción.
1: Permite una interrupción al desbordarse el TMR0.
INTE: Permiso de Interrupción por activación de la patilla RB0/INT
0: Prohíbe esta interrupción.
1: Permite la interrupción al activarse RB0/INT.
RBIE: Permiso de Interrupción por cambio de estado en RB7-RB4
0: Prohíbe esta interrupción
1: Permite esta interrupción.
T0IF: Señalizador de sobrepasamiento del TMR0
0: Indica que el TMR0 no se ha desbordado.
1: Toma este valor cuando ha ocurrido el desbordamiento.
47
INTF: Señalizador de activación del pin RB0/INT
0: Indica que RB0/INT aún no se ha activado.
1: Se pone a 1 al activarse RB0/INT.
RBIF: Señalizador de cambio de estado en los pines RB7-RB4
0: No ha cambiado el estado de RB7-RB4.
1: Pasa a 1 cuando cambia el estado de alguna de esas líneas.
Siempre que se produzca una interrupción por cualquier causa, GIE=1 y el PC se
carga con el valor 0004 H, que es el Vector de Interrupción. Para conocer que causa ha
provocado la interrupción se exploran los señalizadores, tres de los cuales se ubican en el
registro INTCON y el cuarto, EEIF, que se pone a 1 cuando finaliza la escritura en le
EEPROM, se halla en el bit 4 del registro EECON1. Los señalizadores deben ponerse a 0 por
programa antes del retorno de la interrupción y son operativos aunque la interrupción esté
prohibida con su bit de permiso correspondiente.
2.7.3 Interrupción Externa INT.
Esta fuente de interrupciones es sumamente importante para atender los
acontecimientos externos en tiempo real. Cuando ocurre alguno de ellos activa el pin
RB0/INT y se hace una petición de interrupción. Entonces, de forma automática, el bit
INTF=1 y, si el bit de permiso INTE=1 se autoriza el desarrollo de la interrupción.
Mediante el bit 6, llamado INTDEG, del registro OPTION se puede seleccionar cual
será el flanco activo en RB0/INT. Si se desea que sea ascendente se escribe un 1 en dicho
bit, y si se desea descendente se escribe un 0. El procesador explora el señalizador INTF al
final del primer ciclo de reloj de cada ciclo de instrucción. Recuérdese que cada ciclo de
instrucción constaba de 4 ciclos de reloj: Q1, Q2, Q3 y Q4. Al terminar Q1 se exploran los
señalizadores produciéndose un período de latencia de 3 ó 4 ciclos de instrucción desde el
momento que hay un señalizador activado hasta que se inicializa la interrupción.
2.7.4 Interrupción por desbordamiento del TMR0.
Cuando el TMR0 se desborda y pasa del valor FF H al 00 H, el señalizador T0IF se
ubica automáticamente a 1. Sí además, el bit de permiso de interrupción del TMR0 T0IE=1
y el bit de Permiso Global de Interrupciones GIE=1, se produce una interrupción.
48
CAPITULO III
PROCESDOR DE SEÑALES DIGITALES
3.1 Introducción
Actualmente las aplicaciones de procesamiento digital de señales (DSP) han cobrado
gran
importancia
en
muchas
áreas
específicas
de
la
electrónica
como:
las
telecomunicaciones, el control industrial y el desarrollo de equipos médicos.
Un sistema de procesado digital de señal puede definirse como cualquier sistema
electrónico que realice procesado digital de señal, entendiéndose por él la aplicación de
operaciones matemáticas a señales representadas de forma digital. Las señales son
representadas de forma digital mediante secuencias de muestras. A menudo, estas muestras
se obtienen de señales físicas (por ejemplo, señales de audio) utilizando transductores (un
micrófono en este caso) y convertidores analógico-digitales.
Después del procesado matemático, las señales digitales pueden volver a convertirse
en señales físicas mediante convertidores digital-analógicos. Si bien, en principio, el corazón
de un sistema de procesado digital puede ser un microcontrolador, un procesador de
propósito general o un procesador digital de señal (DSP), en sistemas en los cuales la carga
computacional es extremadamente intensa la solución óptima pasa por escoger a un DSP.
Estos circuitos digitales baratos y relativamente rápidos han hecho posible construir
sistemas digitales altamente sofisticados, capaces de realizar funciones y tareas del
procesado de señales digitales que normalmente eran demasiado difíciles y/o caras con
circuitería o sistemas de procesado de señales analógicas. De aquí que muchas de las tareas
del procesado de señales que convencionalmente se realizaban analógicamente se realicen
hoy mediante hardware digital, más barato y a menudo más confiable.
Avances en la tecnología de fabricación de circuitos integrados también abren
nuevas áreas de desarrollo basadas en DSP, tales como sensores inteligentes, visión de robots
y automatización, mientras entrega las bases para continuar los avances en áreas
tradicionales del procesamiento digital de señales, tales como música, voz, radar, sonar,
video, audio y comunicaciones.
49
Las aplicaciones más comunes y económicas las encontramos en la telefonía celular;
en la figura 3.1 se ilustra a manera de bloques:
Cuando se habla a través de la bocina de un teléfono celular, la voz desde un
micrófono emite ondas sonoras a manera de señales analógicas, mismas que entran a un
convertidor analógico-digital para su transmisión en grupos de ceros y unos; aquí es donde
interviene el DSP, y en la última parte que es el receptor son nuevamente convertidos de
digital a analógico para ser recibidos como señal análoga por el receptor; esto trajo como
consecuencia una señal más fiel dado que eliminó el ruido de fondo y la interferencia.
Como se dijo anteriormente los DSP son utilizados para los sistemas pequeños, baratos y con
un gran volumen de producción como los de telefonía celular, disqueteras y modems, en
donde el costo y la integración son de la mayor importancia. En sistemas portátiles,
alimentados por baterías, el consumo es crítico. Sin embargo, la facilidad de desarrollo es
generalmente en estas aplicaciones menos importante para el diseñador. A pesar de que estas
aplicaciones casi siempre implican el desarrollo de hardware y software a medida, el enorme
volumen de producción justifica el esfuerzo extra de desarrollo. Una segunda clase de
aplicaciones englobaría a aquellas que procesan un gran volumen de datos mediante
algoritmos complejos. Ejemplos incluyen la exploración sonar y sísmica, donde el volumen
de producción es bajo, los algoritmos más exigentes y el diseño del producto más largo y
complejo. En consecuencia, el diseñador busca un DSP que tenga máximas prestaciones,
buena facilidad de uso y soporte para configuraciones multiprocesador. En algunos casos,
más que diseñar el propio hardware y software, el sistema se construye a partir de placas de
desarrollo de catálogo y el software a partir de librerías de funciones ya existentes.
3.2 ¿Qué es Procesamiento Digital de Señales?
Es una técnica que convierte señales de fuentes del mundo real (usualmente en forma
analógica), en datos digitales que luego pueden ser analizados. Este análisis es realizado en
forma digital pues una vez que una señal ha sido reducida a valores numéricos discretos, sus
50
componentes pueden ser aislados, analizados y reordenados más fácilmente que en su
primitiva forma analógica.
Procesamiento digital de señal (DSP) es una operación o transformación de una
señal en un hardware digital según reglas bien definidas las cuales son introducidas al
hardware a través de un software específico que puede o no manejar lenguajes tanto de alto
como de bajo nivel, es decir, se refiere al procesamiento electrónico de señales tales como
sonido, radio y microondas usando técnicas matemáticas para realizar transformaciones o
extraer información. En la práctica, las características que hacen a los DSP's tan buenos en el
manejo de señales los hacen adecuados para muchos otros propósitos, tales como
procesamiento de gráficos de alta calidad y simulaciones en ingeniería.
Eventualmente cuándo el DSP ha terminado su trabajo, los datos digitales pueden
volverse atrás como señales analógicas, con calidad mejorada. Por ejemplo: un DSP puede
filtrar ruido de una señal, remover interferencias, amplificar y/o suprimir frecuencias,
encriptar información, ó analizar una corriente compleja en sus componentes esenciales.
Este proceso deberá ser realizado en TIEMPO REAL, lo cuál es muy rápido. Por
ejemplo: los equipos de stereo manejan señales de sonido arriba de los 20 kilohertz (20.000
ciclos por segundo), necesitando así que el DSP realice miles de millones de operaciones por
segundo.
Para adentrar en su funcionamiento se pondrá el ejemplo de un filtro: el DSP recibirá
valores digitales o muestras procedentes de la señal de entrada, calcula qué salida se
obtendrá para esos valores con el filtro que se le ha programado y entrega esa salida.
Un posible sistema basado en un DSP puede ser el de la figura 3.2.
51
3.3 Historia de Los Procesadores Digitales de Señales:
En 1978, INTEL lanzó el 2920 como un "procesador analógico de señales". Este
poseía un chip ADC/DAC con un procesador de señales interno, pero no poseía un
multiplicador de hardware, el 2920 no tuvo éxito en el mercado.
En 1979, AMI lanza el S2811, fue diseñado como un microprocesador periférico, al
igual que el 2920 no tuvo gran éxito en el mercado.
En el mismo año, BELL LABS introduce el primer chip procesador digital de
señales (DSP), The Mac 4 Microprocessor. Luego en 1980 fueron presentados en el
ISSCC’80 los primeros DSP completos: el PD7710 de NEC y el DSP1 de AT&T, ambos
procesadores fueron inspirados en las investigaciones de PSTN Telecomunicaciones. En ese
mismo año NEC comenzó la producción del PD7710, la primera producción de DSP
completos en el mundo.
El primer DSP producido por TEXAS INSTRUMENTS, el TMS32010, probó ser un
suceso mayor.
Actualmente el TMS320C4X diseñado y producido por TEXAS INSTRUMENTS,
surge con ciertas ventajas frente al resto de los procesadores, ya que éste se diseña para ser
escalable; es decir, para que pueda trabajar en paralelo con otros dispositivos similares.
Muchos de los procesadores se engloban dentro de la filosofía CISC, (Complex
Instruction Set Computers) Aunque se pueden encontrar en el mercado algunos que operen
bajo la filosofía RISC (Reduced Instruction Set Computers); estos últimos dedicados para
aplicaciones concretas como la telefonía móvil.
3.4 Procesador de señales digitales.
Estrictamente hablando, el término DSP se aplica a cualquier chip que trabaje con
señales representadas de forma digital. En la práctica, el término se refiere a
microprocesadores específicamente diseñados para realizar procesado digital de señal. Los
DSP utilizan arquitecturas especiales para acelerar los cálculos matemáticos intensos
implicados en la mayoría de sistemas de procesado de señal en tiempo real. Por ejemplo, las
arquitecturas de los DSP incluyen circuitería para ejecutar de forma rápida operaciones de
multiplicar y acumular, conocidas como MAC. A menudo poseen arquitecturas de memoria
que permiten un acceso múltiple para permitir de forma simultánea cargar varios operandos,
por ejemplo, una muestra de la señal de entrada y el coeficiente de un filtro simultáneamente
en paralelo con la carga de la instrucción. También incluyen una variedad de modos
especiales de direccionamiento y características de control de flujo de programa diseñadas
para acelerar la ejecución de operaciones repetitivas. Además, la mayoría de los DSP
52
incluyen en el propio chip periféricos especiales e interfaces de entrada salida que permiten
que el procesador se comunique eficientemente con el resto de componentes del sistema,
tales como convertidores analógico-digitales o memoria.
Aunque el ejemplo del filtro de respuesta impulsiva finita (FIR) ha sido ampliamente
utilizado en el entorno DSP, es quizás el más simple que permite ilustrar la necesidad de
estas prestaciones en los DSP, las cuales permiten concebir muchas de las funciones de
procesado en tiempo real.
3.5 Características básicas de un DSP
Una de las más importantes características de un DSP es su capacidad de realizar
operaciones de multiplicación y acumulación (MACs) en sólo un ciclo de reloj. Para ello, es
necesario que el dispositivo posea la característica de manejar aplicaciones críticas en tiempo
real. Esto requiere de una arquitectura que soporte un flujo de datos a alta velocidad hacia y
desde la unidad de cálculo y memoria. Esta ejecución a menudo requiere el uso de unidades
DMA (Direct Memory Acess) y generadores de direcciones duales (DAG's) que operan en
paralelo con otras partes del chip.
La diferencia esencial entre un DSP y un microprocesador es que el DSP tiene
características diseñadas para soportar tareas de altas prestaciones, repetitivas y
numéricamente intensas. Por lo contrario, los microprocesadores de propósito general o
microcontroladores no están especializados para ninguna aplicación en especial.
Los DGA's realizan los cálculos de direcciones, permitiendo al DSP buscar dos datos
distintos para operar con ellos en un sólo ciclo de reloj, de tal forma que es posible ejecutar
algoritmos complejos en tiempo real.
Es importante para DSP's tener un mecanismo efectivo de salto para la ejecución de
loops ya que el código generalmente programado es altamente repetitivo. La arquitectura
permite realizar estos loops sin instrucciones adicionales ni demoras, las que al ejecutarse
millones de veces empiezan a generar retardos significativos.
Los DSP's deben manejar rangos dinámicos extendidos y de precisión para evitar
overflow y underflow y para minimizar los errores de redondeo. Para acomodarse a esta
capacidad, los DSP's incluyen acumuladores dedicados con registros más anchos que el
tamaño nominal de los datos para así conservar la precisión (por ejemplo, DSP's de 16 bits
poseen acumuladores de 32 bits para manejar el resultado de las multiplicaciones). También
deben soportar el manejo de buffers circulares para la ejecución de funciones algorítmicas,
tales como filtros. En estos tipos de buffers el puntero del buffer se actualiza en paralelo con
otras funciones del chip en cada ciclo de reloj. En cada ciclo el buffer circular realiza una
53
comprobación de "fin de buffer" para verificar si es necesario volver al inicio de éste sin
demorar así la ejecución del algoritmo a causa de la ejecución de instrucciones adicionales
de comparación y salto.
Por otro lado, los microcontroladores se utilizan sobre todo en aplicaciones donde
existen acontecimientos externos los que requieren de la detección y el control. El ambiente
externo es detectado por cualquiera de los dispositivos periféricos; puertos digitales I/O,
pines dedicados de interrupción, o las entradas análogas (de analógico a digital). La fuente
de las señales a estos pines viene de los interruptores, sensores análogos y/o digitales, y de
las señales de estado de otros sistemas. Cada entrada representa un pedazo de información
sobre el estado de un cierto acontecimiento exterior. Las salidas se envían a actuadores,
relays, motores o a otros dispositivos que controlen acontecimientos. Entre la detección y
actuación está el microcontrolador, analizando las entradas y el estado actual del sistema,
determinando cuándo y qué encender y/o apagar. El software es el que hace todo esto, toma
las decisiones, generalmente trabaja de una manera condicional; es decir, realiza saltos sólo
bajo ciertas condiciones y realiza manipulaciones a nivel de bits. Las interrupciones son
consideradas como condiciones externas que alteran el flujo principal del programa.
3.6 Diferencias entre Microcontroladores y DSP's:
Una de las diferencias más importante encontrada entre un DSP y un
Microcontrolador es la estructura de memoria que poseen. En un microcontrolador es posible
encontrar una memoria lineal, en la que se almacenan tanto datos como instrucciones de
programa. Esto obliga a generar programas que no sobrepasen límites de tamaño ya que
podrían sobrescribirse datos por instrucciones o viceversa. Un DSP posee dos bloques
separados e independientes de memoria, cada uno con su propio bus de acceso, permitiendo
así al procesador ir a buscar la siguiente instrucción y dato en el mismo ciclo de reloj
(Fetch).
Otra diferencia importante entre un Microcontrolador y un DSP (y aún entre DSP's)
es la cantidad de unidades de ejecución que poseen, las cuales son capaces de realizar
operaciones en paralelo. Por ejemplo, además de la típica ALU, un DSP posee bloques MAC
de multiplicación y acumulación, se encuentran también bloques sólo para corrimientos,
shifters.
Cabe destacar que en la actualidad cada vez se empieza a desarrollar más la
tecnología mezclada entre microprocesadores y DSP's. Diversas son las razones para que se
produzca esta integración, sin embargo a groso modo es posible identificar una en particular.
54
Los requerimientos de control en tiempo real bajo condiciones cada vez más exigentes en
cuanto a necesidad de cálculo han llevado a los fabricantes de microcontroladores
(microchip, ST, etc.) a integrar a sus microprocesadores características de DSP (unidades de
cálculo paralelas, pipeling, etc.) y por el otro lado los fabricantes de DSP's (Texas, Motorola,
Analog Device, etc.) empiezan a utilizar las características de Microcontroladores
(Conversores A/D, puertos digitales I/O, bloques PWM) integrándolas dentro del DSP.
3.7 Ventajas y Desventajas de los DSP’s:
¾ La Tecnología VLSI (Very Large Scale Integration) da la posibilidad de diseñar sistemas
con la capacidad para ejecutar procesamiento en tiempo real de muchas de las señales de
interés para aplicaciones en comunicaciones, control, procesamiento de imagen,
multimedia, etc.
¾ Los sistemas digitales son más confiables que los correspondientes sistemas análogos.
¾ Los sistemas digitales ofrecen una mayor flexibilidad que los correspondientes sistemas
análogos.
¾ Mayor precisión y mayor exactitud pueden ser obtenidas con sistemas digitales,
comparado con los correspondientes sistemas análogos.
¾ Un sistema programable permite flexibilidad en la reconfiguración de aplicaciones DSP.
¾ La tolerancia de los componentes en un sistema análogo hacen que esto sea una
dificultad para el diseñador al controlar la exactitud de la señal de salida análoga. Por
otro lado, la exactitud de la señal de salida para un sistema digital es predecible y
controlable por el tipo de aritmética usada y el número de bits usado en los cálculos.
¾ Las señales digitales pueden ser almacenadas en un disco flexible, Disco Duro o CD–
ROM, sin la pérdida de fidelidad más allá que el introducido por el conversor Análogo
Digital (ADC). Éste no es el caso para las señales análogas.
A pesar de ellas existen algunos inconvenientes que deberán ser tomados en cuenta al
momento de escoger una plataforma para el procesamiento de señales analógicas por medios
digitales:
¾ La conversión de una señal analógica en digital, obtenida muestreando la señal y
cuantificando las muestras, produce una distorsión que nos impide la exacta
reconstrucción de la señal analógica original a partir de muestras cuantificadas.
55
¾ Existen efectos debidos a la precisión finita que deben ser considerados en el procesado
digital de las muestras cuantificadas.
¾ Para muchas señales de gran ancho de banda, se requiere procesado en tiempo real. Para
tales señales, el procesado analógico, o incluso óptico, son las únicas soluciones válidas.
Sin embargo, cuando los circuitos digitales existen y son de suficiente velocidad se
hacen preferibles.
3. 8 Microcontroladores de señal dsPIC
El dispositivo seleccionado para el estudio de los sistemas digitales de procesado de
señal, es el microcontrolador de señal dsPIC, de la empresa Microchip.
Los dsPIC nacen después de que los DSP hayan sido desarrollados durante años por
otras empresas. En su diseño han participado expertos y especialistas de muchas áreas. Los
dsPIC se han aprovechado de la experiencia acumulada por otros fabricantes.
Microchip, fabricante de los dsPIC, los ha bautizado con el nombre de DSC (Digital
Signal Controller), que puede ser traducido como Controlador Digital de Señal.
Un DSC es un potente microcontrolador de 16 bits al que se le han añadido las
principales capacidades de los DSP. Es decir, los DSC poseen todos los recursos de los
mejores microcontroladores embebidos de 16 bits conjuntamente con las principales
características de los DSP, permitiendo su aplicación en el extraordinario campo del
procesamiento de las señales analógicas y digitalizadas.
Uniendo
adecuadamente
las
capacidades
de
un
DSP
con
un
potente
microcontrolador de 16 bits, el DSC reúne las mejores características de los dos campos y
marca el comienzo de una nueva era del control embebido.
El dsPIC DSC también incorpora la función de auto programación Flash de
Microchip, lo que permite revisiones de código y datos al final del proceso de producción o
en aplicaciones de usuario final, reduciendo de este modo el tiempo de desarrollo y puesta en
el mercado y aumentando la eficiencia y la flexibilidad en la fabricación.
3.8.1 Características de los DsPics
La familia dsPIC se caracteriza por una arquitectura Harvard de 16 bits, y añade a las
características típicas de control de la MCU de Microchip la potencia de cálculo de una
unidad 1xMAC DSP hasta 30 MIPS. En cuanto a memorias, la familia cuenta con hasta
144Kbytes de memoria FLASH para programa, 8Kbytes de SRAM para datos volátiles y
4Kbytes de EEPROM para datos no volátiles. Dicha familia ofrece, además, múltiples
periféricos, entre los que destacan los puertos de comunicaciones CAN, SPI, I2C y UART;
56
módulos Capture/Compare, codificadores de cuadratura, múltiples conversores A/D de 12
bits, etc.
Coste reducido, potencia de cálculo, variedad de periféricos y encapsulados
compactos (de 28 a 64 pines) hacen la familia de controladores mixtos dsPIC idónea para el
control de par, velocidad o posición de motores tanto brushed como brushless aplicando
algoritmos de última generación.
¾ Temporizadores de 16 y 32 bits
¾ Captura de entrada / comparación de salida
¾ Módulos de comunicación (como UART, interfaz SPI, interfaz I2C, interfaces
CAN y Codec) y un convertidor analógico-digital (ADC) de 12 bits
¾ Amplio rango de tensión de funcionamiento, 2,5V a 5,5V
¾ Memoria de programa Flash aumentada
¾ Memoria RAM de 2 Kb y memoria EEPROM no volátil de 1 Kb
¾ Número de pines reducido (18 y 28) para ahorrar espacio
3.8.2 Rango de funcionamiento
La nueva familia de controladores de señal digital dsPIC consigue las mayores
prestaciones de la Industria. Los dispositivos se caracterizan por tener el corazón de un
procesador de señal digital totalmente implementado, 30 MIPS sin pipeline, un rango de
funcionamiento de 2,5 V a 5,5 V, un compilador C de entorno amigable, y una arquitectura
y entorno de diseño familiar. Los primeros 20 dispositivos dsPIC30Fxxx se caracterizan por
una memoria flash incorporada de entre 12 y 144 Kbytes y hasta 8 Kbytes de memoria de
datos. Los dispositivos dsPIC están disponibles en tres familias de productos apuntando a
control de motores y conversión de potencia, sensor y aplicaciones de propósito general.
3.8.3 Arquitectura dsPIC de Microchip
La arquitectura de controlador de señal digital dsPIC de Microchip Technology toma
lo mejor de ambos mundos, combinando un potente microcontrolador de 16 bit con una rica
funcionalidad DSP en una arquitectura de cadena de instrucción única estrechamente
acoplada. El controlador de señal digital dsPIC fue desarrollado desde un principio con un
cuidado especial tanto en los requisitos DSP como en los de microcontrolador y presentará
un entorno familiar a los usuarios de microcontroladores tradicionales.
Las secciones de DSP y de MCU del dsPIC trabajan de forma cooperativa. Las
secciones comparten la carga de instrucciones y la lógica de decodificación. El dispositivo
tiene una funcionalidad DSP completa (no es sólo un apéndice multiplicador y sumador) y
soporta direccionamiento de memoria XY, un juego de operaciones de tipo MAC, lógica de
57
saturación y control de bucle por encima de cero. El MCU tiene su propia ALU y su propio
juego de registros, y el DSP también utiliza el juego de registros del MCU. Además de la
colección de registros el MCU, el motor DSP contiene os registradores de resultados e 40 bit.
La memoria de datos de 64 Kpalabras del dsPIC está particionada en espacios X e Y,
solamente para las instrucciones DSP, ver figura 3.3.
El espacio X se utiliza para operaciones MCU y DSP, que mientras el espacio Y se
utiliza a menudo para el almacenamiento de coeficientes con el fin de acomodar
instrucciones DSP de ciclo único. Toda la memoria puede ser accesible linealmente para
soportar una eficiente generación de código C.
El dsPIC cuenta con un amplio conjunto de funciones de manipulación de bit, tanto
para MCU como para DSP. Si bien la manipulación de bit está bien definida para los MCU,
no se ha utilizado de forma generalizada en los DSP. El dsPIC se basa en las características
de manipulación de bit del PIC18XXXX de Microchip, ofreciendo un amplio abanico de
58
operaciones de bit para los registros W (16 x 16 bit) y los registros de ficheros basados en
memoria. De todas formas, ello añade posibilidades de manipulación de bit más potentes en
la forma de un amplio abanico de operaciones de búsqueda de bit que pueden encontrar el
primer bit activo en una palabra de datos. La potencia de estas operaciones es tal que elimina
la necesidad de buscar una palabra, bit por bit, para encontrar el primero bit ‘uno’. Esto
ofrece un valioso soporte para funciones tales como el escalado de los operandos DSP y la
normalización de los valores del acumulador, y también ayuda a acelerar el proceso de bit de
E/S, así como en el sondeo de interrupciones.
Los recursos DSP están muy estrechamente ligados a los del MCU y consisten en un
multiplicador rápido de 16 x 16 bit y en un registro de desplazamiento de 40 bit, así como de
un sumador/restador y acumuladores. Además de ejecutar las instrucciones del DSP, los
recursos DSP también permiten disponer de nuevas y potentes instrucciones del MCU, tales
como el desplazamiento de múltiples bit en un único ciclo, utilizando para ello el registro de
desplazamiento.
Una característica clave del diseño del dsPIC es su habilidad para efectuar las
ejecuciones de forma rápida, con bajos tiempos de retardo ocasionados por la interrupción.
La arquitectura del juego de instrucciones del chip posibilita que la mayoría de las
instrucciones se ejecute en ciclo único, y sólo unas pocas requieren dos o tres ciclos. El
juego completo de instrucciones consta de 94 instrucciones, incluyendo 19 instrucciones
DSP dedicadas. El dsPIC tiene 16 interrupciones vectorizadas: puesta a cero (reset), siete
acumuladores no enmascarables y ocho interrupciones priorizadas. Todas las operaciones,
tanto DSP del como del MCU, pueden ser interrumpidas. El sombreado o shadowing, es
decir, cuando el hardware mantiene un juego de registros ocultos, además del juego activo,
se utiliza cuando resulta apropiado con el fin de efectuar un rápido desplazamiento del
contenido.
Arquitectura DSPIC’s:
¾
Arquitectura Harvard
¾
Datos de 16 bits
¾
Instrucciones de 24 bits
¾
PC de 24 bits
¾
Capacidad para ejecutar instrucciones de 3 operandos en un ciclo: ej. A+B=C
¾
Instrucciones de dos tipos: MCU y DSP
59
CAPITULO IV
PROGRAMACION DE LOS MICROCONTROLADORES
4.1 MicroCode Studio
4.1.1 Configuración
Lo primero que tenemos que hacer para comenzar a utilizar este editor es
configurarlo para tener el mejor rendimiento posible, para ello debemos colocar en una sola
carpeta de mecanique los programas tanto de Pic Basic Pro y un programa llamado Ic-prog,
con la finalidad de que cuando ejecutemos por primera vez el programa de microcode, pueda
encontrar rápidamente su compilador Pic Basic Pro y su programador Ic-prog.
Para ejecutar el programa nos vamos a la siguiente dirección "C:\Archivos de
programa\Mecanique\MCS\CodeStudio.exe", al iniciarlo por primera vez aparecerá la
siguiente pantalla el cual se observa en la figura 4.1.
En dicha pantalla buscamos View
y damos clic en Editor Options…, luego
marcamos la casilla de verificación show line numbers in left gutter la cual es muy
importante para que aparezca el número de línea en el cual nos encontramos programando y
60
en el momento de compilar podremos ubicarnos rápidamente en
el error si este se
produce(figura 4.2).
Si queremos que todos nuestros proyectos se guarden en una sola carpeta, podemos
indicar la carpeta predefinida en la que iremos guardando nuestro archivos *.bas, para ello
damos clic en el botón de Change y seleccionamos la carpeta previamente creada en el
Explorador de Windows, para guardar los cambios damos s clic en OK.
Ahora vamos a seleccionar el programador para en futuro poder llamarlo
directamente desde microcode, para ello otra vez entramos en View damos un clic en
PICBasic Options…, a continuación damos clic en la pestaña Programmer, aquí
aparecerán los programadores disponibles en nuestro caso debemos adicionar el programa
IC-Prog, presionamos el botón Add New Programmer ver en la fig. 4.3,
61
inmediatamente aparece otra pantalla en donde marcamos Create a custom
programmer entry y a continuación presionamos el botón Next, en la siguiente pantalla se
pedirá que escribamos un nombre con el cual va a ser identificado nuestro programador, por
ejemplo podemos darle el nombre IC-Prog y luego presionamos Next, ver figura 4.4.
62
Finalmente aparecerá otra pantalla en donde pedirá que ingresemos el nombre del
archivo ejecutable y luego presionamos Next. Aparecerá otra pantalla en la cual podremos
buscar manual ó automáticamente dicho archivo, si estamos seguros podremos presionar el
botón que dice Find Automatically (Figura 4.5).
4.1.2 Manejo del Programa
Microcode es un editor de texto como puede ser el Bloc de notas de Windows con la
particularidad que está diseñado para facilitar la programación de los microcontroladores
PIC, para la programación se debe primero escoger el modelo del PIC como por ejemplo
puede ser el PIC 16F84, a continuación escribimos el programa y lo guardamos con un
nombre de preferencia este debe ser que haga referencia al programa escrito, ejemplo led
intermitente.bas. Al finalizar el programa debemos compilarlo y si este está bien escrito y
sin fallas compilará y mostrará en la parte inferior izquierda el espacio que requiere en el
PIC, y en seguida se creará automáticamente 3 archivos: led intermitente.mac, led
intermitente.asm, y led intermitente.hex, este último es el más importante ya que este va a ser
utilizado para grabar dentro del microcontrolador. En la figura 4.6 se describe las partes de
MicroCode.
63
4.1.2.1 Modelo del MicroPic.- Como se dijo anteriormente es lo primero que se debe
seleccionar <antes de empezar a programar, lo seleccionamos viendo el número
del pic que se va a utilizar, ejemplo: 16F84, 16F28, 16F877A, etc.
4.1.2.2 Buscador de códigos.- Cada vez que creamos una variable, alias, incluimos un
define, o creamos algunos nombres de línea, microcode va adicionando en esta
ventana con la finalidad de saber qué componentes tiene el programa y también
como buscador de líneas, para ello simplemente se deberá dar un clic en el
nombre de la línea que deseamos encontrar y automáticamente apuntará dicha
línea.
4.1.2.3 Número de línea del programa.- Es muy útil en el momento de encontrar
errores, porque al compilar el programa nos indicará en que línea se produce el
error, en vista de que el número de línea no viene habilitado debemos
configurarlo como ya se indicó en la configuración (ver Configuración 4.1.1)
4.1.2.4 Espacio que ocupa el programa en el PIC.- Hace referencia al espacio que
necesita el Pic para ser grabado y aparece una vez que haya compilado y no haya
64
presentado errores. Esto es muy importante ya que si el programa es demasiado
grande debemos remplazar el Pic por otro de mayor capacidad.
4.1.2.5 Programa del microcontrolador.- En esta parte es en donde empezamos a
escribir nuestro programa, microcode reconoce palabras claves como VAR,
HIGH, LOW, PAUSE, etc., y los pone con mayúsculas y negrita, por lo que no
se podrá utilizar esta palabras reservadas como nombres de subrutinas o
variables, más adelante se indicará con más detalle cada una de estas palabras y
su función.
4.1.2.6 Comentarios.-
Es recomendable utilizar comentarios en lo posible aunque
parezca obvio, ya que alguien podría utilizar nuestro programa y tal vez con el
tiempo a lo mejor ni nosotros nos acordemos como lo hicimos ni como funciona
una determinada instrucción.
4.1.2.7 Encabezado del programa.-
En esta parte se coloca como comentario el
nombre del programa, autor, fecha de realización, y una explicación en resumen
de lo que realiza el programa. Para que en todos los encabezados de los nuevos
programas salga por defecto nuestro nombre y la Empresa debemos configurarlo
en View -- Editor Options – Program header.
4.1.2.8 Compilador.- Estos dos botones sirven para compilar el programa y crear los
archivos, ASM, MAC y el HEX. El archivo HEX es el que va a ser utilizado
para programar en el micro. El MAC solo sirve para el PicBasic y el ASM, para
los que quieren ver como lo hizo el compilador en assembler ya que podemos
abrirlo en MPLAB.
Compile Only – F9.- Este primer botón sirve solamente para
compilar, es decir nuestro programa lo cambia a assembler y crea el
archivo HEX.
Compile and Program – F10.- Este botón tiene doble función,
aparte de hacer lo mismo que el anterior, es decir compilar,
también puede llamar al progamador ICProg (ver Configuración
4.1.1), con la finalidad de ahorrarnos tiempo y no tener que abrir
por separado.
4.1.3 Identificación de errores
Cuando compilamos un programa, se realiza una verificación del mismo, en el caso
de existir errores microcode señala el primer error marcándole con una franja café, y en la
65
parte inferior muestra los demás errores con el número de línea y su explicación. En la figura
4.7 se muestra un error en la compilación
En tabla 4.1 se describe los errores más comunes
Mensaje
Explicación
Syntax error
error de sintaxis, mal escrito o falta o está demás una letra
Bad expression
mala expresión, mal escrito o falta o está demás una letra
la línea inici no es un nivel, o nombre de la línea
Id inici is not a label
incorrecto
For without a matching next
cuando falta un next
Next without a matching for
cuando falta un For
undefined symbol "portc"
cuando ponemos un puerto que no dispone el PIC
80000 numeric overflow
nos excedimos del valor límite ejem. PAUSE 80000
66
Nos olvidamos poner el número del pin 1,2,3. Ejem.
bad token "."
LOW portb.
ejem. LOW portb.O pusimos la letra (O) en vez del cero
bad variable modifier: .O.
(0)
este eror sale en compiladores de versiones antiguas, ya
que no dispone de este modelo de PIC por ejem en el PBP
processor file 12F675
2.33
undefined symbol "cncom"
Indica que no existe ese registro en el PIC seleccionado
Es una precaución que indica que el programa sobrepasa
code crossed boundary
las 2048 líneas de programación, aunque si compila no es
@800h
un problema
Tabla 4.1 Tabla de errores más comunes
4.2 Pic Basic Pro
El compilador PicBasic Pro (PBP) es nuestro lenguaje de programación de nueva
generación que hace mas fácil y rápido para usted programar micro controladores Pic micro
de Microchip Technology .El lenguaje Basic es mucho más fácil de leer y escribir que el
lenguaje ensamblador Microchip.
PBP por defecto crea archivos que corren en un PIC 16F84-04/P con un reloj de 4
Mhz. Solamente muy pocas partes son necesarias dos capacitores de 22 pf para el cristal de
4Mhz un resistor de 4.7K en el pin/MCLR y una fuente de 5 volt. Otros micros PIC además
del 16F84, así como otros osciladores de frecuencias distintas pueden ser usados por este
compilador.
El PBP produce código que puede ser programado para una variedad de micro
controladores PIC que tengan de 8 a 68 pins y varias opciones en el chip incluyendo
convertidores A/D, temporizadores y puertos seriales.
Hay algunos micros PIC que no trabajaran con el PBP, por ejemplo las series PIC
16C5X incluyendo el PIC 16C54 Y PIC 15C58. Estos micro PIC están basados en el viejo
núcleo de 12 bit en lugar del núcleo más corriente de 14 bit. El PBP necesita alguna de las
opciones que solamente están disponibles con el núcleo de 14 bit como el stack (pila) de 8
niveles.
Hay muchos micros PIC, algunos compatibles pin a pin con la serie 5 X, que pueden
ser usados con el PBP. La lista incluye PIC16C554, 556, 558, 61, 62(A), 620, 621, 622, 63,
64(A), 65(A), 71, 710, 711, 715, 72, 73(A), 74(A), 84, 923, 924, el PIC16F83 y 84, el
PIC12C671 y 672 y el PIC14C000, y Microchip sigue agregando otros. Para reemplazo
67
directo de un PIC166C54 o 58, el PIC16C554, 558, 620 y 622 funcionan bien con el
compilador y tienen aproximadamente el mismo precio.
Para propósitos generales de desarrollo usando el PBP, el PIC16F84 (o PIC16C84 si
el F84 no está disponible) es la elección común de micro PIC. Este micro controlador de 18
pin usa tecnología flash (EEPROM) para permitir rápido borrado y reprogramación para
acelerar la depuración de programas. Con el clic de un mouse en el software, el PIC16F84
puede ser borrado instantáneamente y luego ser reprogramado una y otra vez. Otros micros
PIC de las series 12C67X, 16C55X, 16C6X, 16C7X y 16C9X son programables una vez
(OTP) o tienen una ventana de cuarzo en su parte superior (JW) para permitir el borrado
exponiéndolo a una luz ultravioleta durante varios minutos.
El PIC16F84 (y ‘C84) además, contiene 64 bytes de memoria de datos no volátil que
puede ser usada para archivar el dato de programa y otros parámetros, aun cuando no haya
energía. A ésta área de datos, se puede acceder simplemente usando las órdenes “Read” y
“Write” del PBP. (El código programa es permanentemente guardado en el espacio de
código del micro PIC, tanto si hay o no energía.)
Usando el ‘F84 para el testeo del programa inicial, el proceso de depuración puede
ser más rápido. Una vez que las rutinas principales de un programa estén operando
satisfactoriamente, se puede utilizar un micro PIC con mayor capacidad o las opciones
expandidas del compilador.
Si bien muchas de las opciones del micro PIC serán discutidas en este manual, para
completar la información del micro PIC, es necesario obtener las apropiadas hojas de datos
del micro PIC o el CD-ROM de Microchip Technology Inc.
4.2.1 Variables
Variables es donde se guardan datos en forma temporaria en un programa PBP. Son
creadas usando la palabra clave VAR. Pueden bits, bytes ó word. Espacio para cada variable
es automáticamente destinado en la memoria del micro controlador por PBP. El formato para
crear una variable es el siguiente:
Etiqueta VAR tamaño (.modificadores)
Etiqueta es cualquier identificador excluyendo palabras claves como se describe
anteriormente. Tamaño es bit, byte ó word. Modificadores opcionales agregan control
adicional acerca de cómo se crea la variable. Algunos ejemplos de creación de variables son:
perro var byte
W0 var word
gato var bit
68
No hay variables predefinidas de usuarios de PBP. Por razones de compatibilidad
existen
dos
archivos
que
crean
las
variables
standard
usadas
con
BASIC
stamps:“bs1defs.bas” y “bs2defs.bas”. Para usar uno de estos archivos agregue la línea cerca
del comienzo del programa PBP. Estos archivos contienen numerosas declaraciones VAR
que crean todas las variables de BASIC Stamps y definiciones de pin.
Ejm: Include “bs1defs.bas” ó Include “bs2defs.bas”
De cualquier manera, en lugar de usar estos archivos envasados le recomendamos
que cree sus propias variables usando nombres con significado para usted.
El número de variables disponibles depende de la cantidad de RAM en un
dispositivo en particular y el tamaño de las variables y los arrays .PBP reserva
aproximadamente 24 posiciones RAM para su propio uso. También puede crear variables
temporarias adicionales para usar en ordenamiento de ecuaciones complejas.
4.2.2 Alias
VAR también puede ser usado para crear un alias para una variable. Esto es muy útil
para acceder al interior de una variable.
Ejm:
fido var perro´ fido es otro nombre de perro
b0 var w0.byte0 ´ b0 es el primer byte de word w0
b1 var w1.byte1 ´ b1 es el segundo byte de word w0
flea var perro.0 ´ flea es bit0 de perro
4.2.3 Arreglos
Los arreglos de variables pueden ser creados en una manera similar a las variables.
Etiqueta VAR tamaño (número de elementos). Etiqueta es cualquier identificador,
excluyendo palabras claves, como se describió anteriormente. Tamaño es BIT, BYTE ó
WORD. Número de elementos es cuantos lugares en el arreglo se desean. Algunos ejemplos
de creación de arreglo son los siguientes:
sharks var byte[10]
fish var bit [8]
La primer ubicación dentro del arreglo es el elemento cero. En el arreglo fish
anterior los elementos están numerados fish (0) a fish (7) conteniendo 8 elementos en total.
Dada la forma en que los arreglos están localizados en memoria hay límites de
tamaño para cada tipo.
69
Tamaño número máximo de elementos:
BIT 128
BYTE 64
WORD 32
4.2.4 Constantes
Las llamadas constantes pueden ser creadas de manera similar a las variables. Puede
ser mas conveniente usar un nombre de constante en lugar de un número constante. Si el
número necesita ser cambiado, únicamente puede ser cambiando en un lugar del programa
donde se define la constante. No pueden guardarse datos variables dentro de una constante.
Etiqueta CON expresión constante
Algunos ejemplos son:
Mice con 3
Traps con mice *1000
4.2.5 Símbolos
SYMBOL provee otro método para renombrar (darle alias) a variables y constantes.
SYMBOL no puede ser usado para crear una variable. Use VAR para crear una variable
SYMBOL lion = cat ´ cat fue previamente creada usando VAR
SYMBOL mouse = 1 ´ igual que mouse con 1
4.2.6 Constantes Numéricas
PBP permite definir constantes numéricas en tres bases: decimal, binario y
hexadecimal. Valores binarios son definidos usando el prefijo “%” y valores hexadecimales
usando el prefijo “$”. Los valores decimales se toman por defecto y no requieren prefijo.
´ valor decimal 100
%100 ´ valor binario para el decimal 4.
$100 ´ valor hexadecimal para el decimal 256.
Para facilitar la programación, los caracteres son convertidos en sus equivalentes
ASCII. La constante debe ser puesta entre comillas y contener sólo un carácter (de lo
contrario, ellas son una cadena de constantes).
“A” ‘ ASCII valor para el decimal 65
“d” ‘ ASCII valor para el decimal 100
70
4.2.7 Operadores Matemáticos
PBP efectúa todas las operaciones matemáticas en orden jerárquico .Esto significa
que existe precedencia para los operadores .Multiplicación y división son efectuados antes
que suma y resta, por ejemplo..Para asegurarse que las operaciones son efectuadas en el
orden que se desea, use paréntesis para agrupar las operaciones.
A=(B+C)*(D-E)
Todas las operaciones matemáticas se realizan sin signo y con una precisión de 16 bit.
Los operadores soportados se pueden observar en la tabla 4.2.
Operador
Descripción
Matemático
SQR
+
Raíz
Sumacuadrada
&
-
Bit
inteligente AND
Resta
*÷
Bit
inteligente OR
Multiplicación
ˆ
Bit
inteligente
EXCLUSIVE
OR
16 bits
superiores
de la
**
~
multiplicación
Bit
inteligente NOT
*/
&/
16 nits
medios NOT
de la AND
multiplicación
Bit
inteligente
/÷/
División
Bit inteligente NOT OR
//
Resto(módulo)
<<
Desplazamiento izquierdo
>>
Desplazamiento derecho
ABS
Valor absoluto
COS
Coseno
DCD
2m decodificador
DIG
Dígito
MAX
Máximo
MIN
Mínimo
NCD
Codificar
REV
Invertir bits
SIN
Seno
Tabla 4.2 Operadores Matemáticos
71
4.2.7.1 Multiplicación
PBP efectúa multiplicaciones 16 x 16 bits .El operador ´*´ devuelve los 16 bit
inferiores del resultado de 32 bit. Esta es la multiplicación típica encontrada en los lenguajes
de programación. El operador ´** devuelve los 16 bit superiores del resultado de 32 bit.
Estos dos operadores pueden ser utilizados en conjunto para realizar multiplexaxiones de 16
x 16 bit que produzcan resultados de 32 bit.
W1 = W0 * 1000 ´ multiplica el valor de W0 por 1000 y coloca el resultado en W1
W2 = W0 ** 1000 ´ W0 por 1000 y coloca los 16 bit superiores (que Deben ser 0) en W2
El operador ´*/ ´los 16 bit medios del resultado de 32 bit.
W3 = W1 */ W0 ´ multiplica W1 por W0 y coloca los 16 bit medios en W3
4.2.7.2 División
PBP efectúa divisiones de 16 x 16 bit . El operador ´/ ´ devuelve el resultado de 16
bit. El operador ´// ´ devuelve el resto (módulo del número).
W1 = W0 / 1000 ´ Divide el valor de W0 por 1000 y coloca el resultado en w1
W2 = W0 // 1000 ´ Divide el valor de W0 por 1000 y coloca el resto en W2
4.2.7.3 Desplazamiento
Los operadores ´<<´ y ´>> ´ desplazan un valor hacia la izquierda ó derecha
respectivamente, 1 a 15 veces .Los bits desplazados se colocan en 0 .
B0 = B0 << 3 ´ Desplaza B0 tres lugares a la izquierda ( igual a multiplicar por 8)
W1 = W0 >> 1 ´ Desplaza W0 una posición a la derecha y coloca el resultado en W1 (igual a
dividir por 2).
4.2.7.4 ABS
ABS devuelve el valor absoluto de un número. Si un byte es mayor de 127 (bits
altos) ABS devuelve un valor 256 - . Si un word es mayor de 32767 (bits altos), devuelve un
valor 65536 - . Ejm:
B1 = ABS B0
4.2.7.5 COS
COS es coseno en 8 bit de un valor dado. El resultado está dado en forma de dos
complementos. (ejm. - 127 a 127 ) .Usa una tabla de cuarto de onda para encontrar el
resultado. El coseno comienza con un valor en radianes binarios, 0 a 255, en lugar de los
comunes 0 a 358 grados.
Ejm:
B1 = COS B0
72
4.2.7.6 DCD I
DCD devuelve el valor decodificado de un número de bit. Cambia un número de bit
(0 a 15) por un número binario con ese bit seteado en 1. Todos los demás bits son 0.
B0 = DCD 2 ´ setea B0 como % 00000100
4.2.7.7 DIG
DIG devuelve el valor de un dígito decimal . Simplemente se le indica el número de
dígito a conocer ( 0 - 4 , siendo 0 el primero de la derecha) y ya está.
B0 = 123 ´ setea B0 en 123
B1 = B0 DIG 1 ´ setea B1 en 2 (dígito 1 de 123)
4.2.7.8 DIV32
PBPs multiplican (*) la función 16-bit x 16-bit obtienen un resultado 32-bit. Sin
embargo, puesto que el compilador utiliza solamente una talla variable máxima de 16 dígitos
binarios, el acceso al resultado tuvo que suceder en 2 pasos de progresión: c = b * retorna los
16 dígitos binarios más bajos del multiplicar mientras que d = ** de b retorna los 16 dígitos
binarios superiores.
No había manera de tener acceso al resultado 32-bit como unidad.
En muchos casos es deseable poder dividir el resultado 32-bit entero de multiplicar
por un número 16-bit para hacer un promedio o escalar. Una nueva función se ha agregado
para este propósito: DIV32.
DIV32 es limitado realmente a dividir un entero sin signo 31-bit (máximo
2147483647) por un entero sin signo 15-bit (máximo 32767). Esto debe ser suficiente en la
mayoría de las circunstancias.
Pues el compilador permite solamente una talla variable máxima de 16 dígitos
binarios, DIV32 confía que una multiplicación acaba de ser realizado y que las variables
internas del compilador todavía contienen el resultado 32-bit de la multiplicación .
Ninguna otra operación puede ocurrir entre la multiplicación y el DIV32 o las variables
internas pueden ser alteradas, destruyendo el resultado de 32-bit de la multiplicación. Este
medio, entre otras cosas, de los cuales ON INTERRUPT debe estar DISABLED antes de que
el multiplicar hasta después del DIV32.
Si ON INTERRUPT no se utiliza, allí no es ninguna necesidad de agregar DISABLE
al programa. Las interrupciones en ensamblador no deben tener ningún efecto en las
variables internas así que pueden ser utilizadas sin consideración alguna hacia DIV32.
73
El fragmento siguiente del código muestra la operación de DIV32:
a Var Word
b Var Word
c Var Word
dummy var Word
b = 500
c = 1000
DISABLED ' necesario si ON INTERRUPT es utilizado
dummy = b * c ' podría también utilizar el ** o * /
a = DIV32 100
ENABLED ' necesario si se utilizó ON INTERRUPT
Este programa asigna a b el valor 500 y c el valor 1000. Cuando estaba multiplicado
junto, el resultado sería 500000. Este número excede la talla 16-bit de la palabra de una
variable (65535). La variable simulada contiene tan solamente los 16 dígitos binarios más
bajos del resultado. En ningún caso, no es utilizada por la función DIV32. DIV32 utiliza las
variables internas al compilador como los operandos. En este ejemplo, DIV32 divide el
resultado 32-bit de la multiplicación b * c por 100 y salva el resultado de esta división, 5000,
en la variable A.
4.2.7.9 MAX y MIN
MAX y MIN devuelven el máximo y mínimo ,respectivamente , de dos números . Se
usan normalmente para limitar números a un valor.
B1 = B0 MAX 100 ´ setea B1 al mayor de B0 y 100 (B0 debe estar entre 100 y 255
B1 = B0 MIN 100 ´ setea B1 al menor de B0 y 100(B1no puede ser mayor de 100
4.2.7.10 NCD
NCD devuelve el número de prioridad de bit codificado (1-16) de un valor. Se usa
para encontrar el bit codificado con 1 de un valor dado . Devuelve 0 si no existen bits con
valor 1.
B0 = NCD %01001000 ´ setea B0 en 7
74
4.2.7.11 REV
REV invierte el orden de los bits inferiores de un valor .El número de bits a ser
invertidos es de 1 a 16 .
B0 = %10101100 REV 4 ´ setea B0 a %10100011
4.2.7.12 SIN
SIN es seno en 8 bits de un valor . El está dado en dos complementos (ejm. -127 a
127 ) .Usa una tabla de cuarto de onda para encontrar el resultado . Comienza con un valor
en radianes binarios , 0 a 255 , en lugar de los usuales 0 a 359 grados.
B1 = SIN B0
4.2.7.13 SQR
SQR devuelve la raíz cuadrada de un valor . Como PBP dolo trabaja con enteros , el
resultado será siempre un entero en 8 bits no mayor que el resultado actual .
B0 = SQR W1 ´ setea B0 con la raíz cuadrada de W1
4.2.8 Operadores de comparación
Se usan en declaraciones IF ... THEN para comparar una expresión con otra .Los
operadores se pueden observar en la tabla 4.3
Operador
Descripción
= ó ==
Igual
< > ó ¡=
No igual
<
Menor
>
Mayor
<=
Menor ó igual
>=
Mayor ó igual
Tabla 4.3 Operadores de comparación
Ejm: If i > 10 then loop
75
4.2.9 Operadores Lógicos
Los operadores lógicos difieren de las operaciones de bit inteligente. Entregan un
resultado CIERTO / FALSO de su operación .Valores 0 son tratados como falso. Cualquier
otro valor es cierto. Se usan junto a operadores de comparación en una declaración IF ..
THEN .Los operadores soportados se observan en la tabla 4.4
Operador
Descripción
AND ó &&
AND lógico
OR ó | |
OR lógico
XOR ó ^ ^
OR exclusivo lógico
NOT AND
NAND lógico
NOT OR
NOR lógico
NOT XOR
NXOR lógico
Tabla 4.4 Operadores lógicos
Ejm: If (A == big) AND ( B > mean) then run
4.2.10 Referencia de declaraciones PBP
En tabla 4.5 se muestran todas las instrucciones que se pueden utilizar en el Pic
Basic Pro.
@
Inserta una línea de código ensamblador
ASM...ENDASM
Inserta una sección de código ensamblador
BRANCH
GOTO computado(equiv. a ON..GOTO)
BRANCHL
BRANCH fuera de pagina(BRANCH largo)
BUTTON
Anti-rebote y auto-repetición de entrada en el pin especificado
CALL
Llamada a subrutina de ensamblador
CLEAR
Hace cero todas las variables
COUNT
Cuenta el numero de pulsos en un pin
DATA
Define el contenido inicial en un chip EEPROM
76
DEBUG
Señal asincrónica de salida en un pin fijo y baud
DISABLE
Deshabilita el procesamiento de ON INTERRUPT
DTMFOUT
Produce tonos en un pin
EEPROM
Define el contenido inicial en un chip EEPROM
ENABLE
Habilita el procesamiento de ON INTERRUPT
END
Detiene la ejecución e ingresa en modo de baja potencia
FOR...NEXT
Ejecuta declaraciones en forma repetitiva
FREQOUT
Produce hasta 2 frecuencias en un pin
GOSUB
Llama a una subrutina BASIC en la etiqueta especificada
GOTO
Continua la ejecución en la etiqueta especificada
HIGH
Hace alto la salida del pin
HSERIN
Entrada serial asincrónica(hardware)
HSEROUT
Salida serial asincrónica(hardware)
I2CREAD
Lee bytes de dispositivo I2C
I2CWRITE
Graba bytes en dispositivo I2C
IF..THEN..ELSE..ENDIF
Ejecuta declaraciones en forma condicional
INPUT
Convierte un pin en entrada
(LET)
Asigna el resultado de una expresión a una variable
LCDOUT
Muestra caracteres en LCD
LOOKDOWN
Busca un valor en una tabla de constantes
LOOKDOWN2
Busca un valor en una tabla de constantes o variables
LOOKUP
Obtiene un valor constante de una tabla
LOOKUP2
Obtiene un valor constante o variable de una tabla
LOW
Hace bajo la salida de un pin
NAP
Apaga el procesador por un corto periodo de tiempo
ON INTERRUPT
Ejecuta una subrutina BASIC en un interrupt
OUTPUT
Convierte un pin en salida
PAUSE
Demora (resolución 1mseg.)
77
PAUSEUS
Demora (resolución 1 useg.)
PEEK
Lee un byte del registro
POKE
Graba un byte en el registro
POT
Lee el potenciómetro en el pin especificado
PULSIN
Mide el ancho de pulso en un pin
PULSOUT
Genera pulso hacia un pin
PWM
Salida modulada en ancho de pulso a un pin
RANDOM
Genera numero pseudo-aleatorio
RCTIME
Mide el ancho de pulso en un pin
READ
Lee byte de un chip EEPROM
RESUME
Continua la ejecución después de una interrupción
RETURN
Continua en la declaración que sigue al ultimo GOSUB
REVERSE
Convierte un pin de salida en entrada o uno de entrada en salida
SERIN
Entrada serial asincrónica (tipo BS!)
SERIN2
Entrada serial asincrónica (tipo BS2)
SEROUT
Salida serial asincrónica (tipo BS1)
SEROUT2
Salida serial asincrónica (tipo BS2)
SHIFTIN
Entrada serial sincrónica
SHIFTOUT
Salida serial sincrónica
SLEEP
Apaga el procesador por un periodo de tiempo
SOUND
Genera un tono o ruido blanco en un pin
STOP
Detiene la ejecución del programa
SWAP
Intercambia los valores de dos variables
TOGGLE
Hace salida a un pin y cambia su estado
WHILE..WEND
Ejecuta declaraciones mientras la condición sea cierta
WRITE
Graba bytes a un chip EEPROM
XIN
Entrada X - 10
XOUT
Salida X - 10
Tabla 4.5 Referencia de declaraciones PBP
78
Conclusiones
Ha sido tanto el avance en el sector de la informática y la electrónica que hoy en día nos
vemos
beneficiados
en
ello,
teniendo
la
posibilidad
de
escoger
dispositivos
(microcontroladores) que se adapten a nuestras necesidades y a los requerimientos
planteados para la elaboración o la puesta en marcha de proyectos de automatización, o para
el manejo adecuado y eficiente de datos.
Dispositivos que tienen amplio campo de acción y que de una u otra forma representan
gran parte del desarrollo tecnológico que se viene dando, cada uno de ellos posee un sector
de aplicación distinto en que establece algunos requerimientos de trabajo a si como también
poseen especificaciones para su manejo dependiendo de las aplicaciones en las cuales se van
a utilizar.
El microcontrolador es en definitiva un circuito integrado que incluye todos los
componentes de un computador. Debido a su reducido tamaño es posible montar el
controlador en el propio dispositivo al que gobierna. En este caso el controlador recibe el
nombre de controlador empotrado (embedded controller).
Los microcontroladores están siendo empleados en multitud de sistemas presentes en
nuestra vida diaria, como pueden ser juguetes, horno microondas, frigoríficos, televisores,
computadoras, impresoras, módems, sistemas de arranque de automóviles, etc. Una
aplicación típica podría emplear varios microcontroladores para controlar pequeñas partes
del sistema. Estos pequeños controladores podrían comunicarse entre ellos y con un
procesador central, probablemente más potente, para compartir la información y coordinar
sus acciones, como, de hecho, ocurre ya habitualmente en cualquier PC.
Existe una gran diversidad de microcontroladores. Quizá la clasificación más importante
sea entre microcontroladores de 4, 8, 16 ó 32 bits. Aunque las prestaciones de los
microcontroladores de 16 y 32 bits son superiores a los de 4 y 8 bits, la realidad es que los
microcontroladores de 8 bits dominan el mercado y los de 4 bits se resisten a desaparecer. La
razón de esta tendencia es que los microcontroladores de 4 y 8 bits son apropiados para la
gran mayoría de las aplicaciones, lo que hace absurdo emplear micros más potentes y
consecuentemente más caros.
Hoy,
muchas
aplicaciones
requieren
microcontroladores
y
DSPs
trabajando
conjuntamente, y los fabricantes han respondido introduciendo microcontroladores con DSPs
incorporados. La operación básica de un DSP son MACC (Multiply-Accumulate). El número
de datos que un DSP puede Multiplicar y Acumular en una única operación, determinará el
rango y por consiguiente la aplicación
79
Recomendaciones
A la hora de escoger el microcontrolador a emplear en un diseño concreto hay que tener
en cuenta multitud de factores, como la documentación y herramientas de desarrollo
disponibles y su precio, la cantidad de fabricantes que lo producen y por supuesto las
características del microcontrolador (tipo de memoria de programa, número de
temporizadores, interrupciones, etc., es decir, su datasheet).
Antes de seleccionar un microcontrolador es imprescindible analizar los requisitos
de la aplicación:
• Procesamiento de datos: puede ser necesario que el microcontrolador realice cálculos
críticos en un tiempo limitado. En ese caso debemos asegurarnos de seleccionar un
dispositivo suficientemente rápido para ello. Por otro lado, habrá que tener en cuenta la
precisión de los datos a manejar: si no es suficiente con un microcontrolador de 8 bits, puede
ser necesario acudir a microcontroladores de 16 ó 32 bits, o incluso a hardware de coma
flotante. Una alternativa más barata y quizá suficiente es usar librerías para manejar los datos
de alta precisión.
• Entrada Salida: para determinar las necesidades de Entrada/Salida del sistema es
conveniente dibujar un diagrama de bloques del mismo, de tal forma que sea sencillo
identificar la cantidad y tipo de señales a controlar. Una vez realizado este análisis puede ser
necesario añadir periféricos hardware externos o cambiar a otro microcontrolador más
adecuado a ese sistema.
• Consumo: algunos productos que incorporan microcontroladores están alimentados con
baterías y su funcionamiento puede ser tan vital como activar una alarma antirrobo. Lo más
conveniente en un caso como éste puede ser que el microcontrolador esté en estado de bajo
consumo pero que despierte ante la activación de una señal (una interrupción) y ejecute el
programa adecuado para procesarla.
• Memoria: para detectar las necesidades de memoria de nuestra aplicación debemos
separarla en memoria volátil (RAM), memoria no volátil (ROM, EPROM, etc.) y memoria
no volátil modificable (EEPROM). Este último tipo de memoria puede ser útil para incluir
información específica de la aplicación como un número de serie o parámetros de
calibración.
El tipo de memoria a emplear vendrá determinado por el volumen de ventas previsto
del producto: de menor a mayor volumen será conveniente emplear EPROM, OTP y ROM.
En cuanto a la cantidad de memoria necesaria puede ser imprescindible realizar una versión
preliminar, aunque sea en pseudo-código, de la aplicación y a partir de ella hacer una
80
estimación de cuánta memoria volátil y no volátil es necesaria y si es conveniente disponer
de memoria no volátil modificable.
• Ancho de palabra: el criterio de diseño debe ser seleccionar el microcontrolador de menor
ancho de palabra que satisfaga los requerimientos de la aplicación. Usar un microcontrolador
de 4 bits supondrá una reducción en los costes importante, mientras que uno de 8 bits puede
ser el más adecuado si el ancho de los datos es de un byte. Los microcontroladores de 16 y
32 bits, debido a su elevado coste, deben reservarse para aplicaciones que requieran sus altas
prestaciones (Entrada/Salida potente o espacio de direccionamiento muy elevado).
• Diseño de la placa: la selección de un microcontrolador concreto condicionará el diseño de
la placa de circuitos. Debe tenerse en cuenta que quizá usar un microcontrolador barato
encarezca el resto de componentes del diseño.
81
Bibliografía
1. Carlos A. Reyes. “Aprenda rápidamente a programar Microcontroladores”. Ed.
Gráficas Ayere C.A. 2004.
2. Microchip, PIC16X84 Datasheet
3. Microchip, dsPIC30F Family Reference Manual
4. Microchip. http://www.microchip.com.
5. Microcontroladores: Enlaces. http://www.us-epanorama.net/microprocessor.html
6. Diseño
de
sistemas
con
microcontroladores:
Enlaces.
http://www.info-
ab.uclm.es/~amartine.
7. El Rincón del Pic. http://members.es.tripod.de/~InfoE/infop.htm.
8. Links sobre Pics de David Tait. http://www.man.ac.uk/~mbhstdj/piclinks.html.
9. http://perso.wanadoo.es/pictob/microcr.htm
10. http://es.encarta.msn.com/encyclopedia_761559091/Microprocesador.html
11. http://www.redeya.com/electronica/tutoriales/pic1.htm
12. http://html.rincondelvago.com/microcontrolador-pic-16f84.html
13. http://www.monografias.com/trabajos17/procesadores-digitalesseniales/procesadores-digitales-seniales.shtml.
14. http://www.todopic.com.ar/pbp_sp.html.
82
Glosario
ADC: (Convertidor Analógico a Digital) Dispositivo que convierte las señales
analógicas a señales digitales discretas o a números digitales discretos.
CISC: Las computadoras de conjuntos de instrucciones complejas (complex instruction
set computing) pueden ser muy poderosas; sin embargo las instrucciones requieren un
alto número de ciclos del reloj para ejecutarse.
CMOS: (Complementary Metal-Oxide Semiconductor), semiconductor complementario
de metal óxido es un tipo de circuito integrado utilizado en los procesadores y en la
memoria.
CPU: (Central Processing Unit) Unidad central de proceso.
DAC: (Convertidor Digital a Analógico) Dispositivo que convierte información digital,
a una señal analógica.
DSC: (Digital Signal Controller), controlador de señal digital
DSP: (Digital Signal Processor), procesador digital de señales.
EEPROM: (Electrically Erasable Programmable Read-Only Memory), memoria de sólo
lectura borrable y programable eléctricamente. Chip de memoria que conserva su
contenido aún sin corriente eléctrica, y cuyo contenido puede ser borrado y
reprogramado bien sea dentro de la computadora o desde una fuente externa. La
memoria de sólo lectura borrable y programable eléctricamente se usa donde la
aplicación requiere de un medio de almacenamiento estable, sin que exista corriente,
pero donde puede ocurrir que el chip tenga que ser reprogramado.
EPROM: (Erasable Programmable Read-Only Memory), memoria de sólo lectura
borrable y programable. Chip de memoria que conserva su contenido aún en la ausencia
de corriente eléctrica, y cuyo contenido puede ser borrado y reprogramado retirando una
cubierta protectora y exponiendo el chip a la luz ultravioleta.
FLASH: Forma especial de memoria de sólo lectura borrable y programable
eléctricamente [electrically erasable programmable read-only memory (EEPROM)] que
puede ser borrada a los niveles de señal que comúnmente se encuentran en una
computadora personal. Esto permite que su contenido sea reprogramado sin tener que
retirar los chips de la computadora.
OTP: (One Time Programmable) memoria no volátil de solo lectura programmable una
sola vez.
PIC: (Peripheral interface Controller) son microcontroladores fabricados por la
empresa Microchip Technology INC.
83
Pin: También llamado terminal o patilla, pin es cada uno de los contactos terminales de
un conector o componente electrónico (microcontrolador), fabricado de un material
conductor de la electricidad.
Pipeline decodificación anticipada (de instrucciones), en la arquitectura de procesadores,
garantiza que el procesador nunca tiene que esperar, pues
tan pronto como una
instrucción se ejecuta, otra está en espera. En el procesamiento en paralelo, método
utilizado para pasar instrucciones de una unidad de procesamiento a otra.
PSTN: (Public Switched Telephone System), la red de voz tradicional o PSTN, usa
técnicas de conmutación de circuitos. Esto significa que una comunicación particular
usa un enlace dedicado durante la duración de la llamada. Aunque esta provee una
conexión muy confiable para la transmisión de voz, hace un uso muy ineficiente del
ancho de banda.
Por otro lado, la red de datos generalmente usa conmutación de
paquetes.
PWM: (Pulse Wide Modulation) modulador de anchura de impulsos.
RAM: (Random Access Memory), memoria de sólo lectura.
RISC: (Reduce Instrucción Set Computer) en estos procesadores el repertorio de
instrucciones máquina es muy reducido.
ROM: (Read Only Memory), memoria de acceso aleatorio
SISC: (Computadores de Juego de Instrucciones Específico) Microcontroladores
destinados a aplicaciones muy concretas.
UART: (Universal Asynchronous Receiver/Transmitter) receptor/transmisor asíncrono
universal es un módulo electrónico que combina el conjunto de circuitos para transmitir
y para recibir, necesario para la comunicación asíncrona a través de una línea en serie.
USB: (Universal Serial Bus) es un moderno bus serie para los PC.
84