Introducción a la arquitectura de microcontroladores PICmicro
Esteban Torres
Introducción al curso
El presente documento
esta redactado con el fin de presentar conceptos breves acerca de
las herramientas que se utilizarán durante el curso, los conceptos
descritos se contemplarán de forma natural conforme se vaya
avanzando en el curso, por lo que no SE DEBE poner al alumno a
memorizar los conceptos presentes.
Sobre lenguaje ensamblador:
El lenguaje ensamblador es una estructura de programación para
microprocesadores y microcontroladores entre otros circuitos
integrados programables mediante el uso mnemónicos.
Durante el presente curso se programarán microcontroladores PICmicro
de Microchip, para lo cual se utilizará el ambiente de desarrollo
MPLAB IDE v8 de Microchip, actualmente Microchip sostiene una
plataforma más reciente llamada MPLAB X, sin embargo no optamos por
esta plataforma debido a que se puede encontrar mayor información de
la versión 8 (aun así Microchip proporciona manuales muy completos
sobre MPLAB X), es importante que el estudiante al finalizar el curso
migre sus futuros proyectos a la nueva plataforma debido a que de la
misma manera, los futuros desarrollos de Microchip estarán
orientados a MPLAB X.
Recomendación: Cada compañía de procesadores y sistemas
embebidos cuenta con un foro de discusión, las publicaciones pueden
contener información útil así como los problemas planteados en
cada publicación, registrarse y participar es gratis:
A continuación se muestran breves conceptos de importancia para el
curso:
El microcontrolador PICmicro es un circuito integrado
programable desarrollado por Microhip, el concepto PIC proviene de
Peripheral Interface Controller. Los CI programables facilitan la
implementación lógica en el hardware a un costo considerable.
El lenguaje ensamblador es un lenguaje de bajo nivel con el
cual podemos programar microcontroladores, se le denomina de bajo
nivel debido a que cada instrucción del lenguaje corresponde a una
instrucción en código máquina, es decir instrucciones
implementadas físicamente en el hardware del controlador.
Este lenguaje se le realiza una traducción a valores o códigos de
operación que se maneja en notación hexadecimal, esta traducción
la ejecuta el MPASM el cual es el ensamblador que viene incluido en
el MPLAB. El MPASM se puede ejecutar al construir el proyecto desde
el IDE o directamente desde el ejecutable MPASMWIN que encontrarás
en tu carpeta de Microchip
Utilizaremos el hardware programador Pickit2 el cual cuenta también
con un software independiente y a la vez compatible con MPLAB, no se
recomienda que el alumno opte por el Pickit3 debido a que este es de
uso exclusivo para MPLAB por lo que otros compiladores fuera de este
IDE no le servirán. El Pickit2 puede resultar ser costoso, para esto
encontramos dos soluciones distintas:
-
Construir una tarjeta clon implementado el circuito que Microhip proporciona
-
Comprar una tarjeta clon
No obstante el Pickit2 original resulta ser una solución aplicable
si el alumno se hace un experto en programación de PIC's además de
que será útil cuando sus proyectos hayan llegado a un nivel de
complejidad tal que se requiera de un debugger en hardware, tal como
el que incluye el Pickit2.
MiniProg+
es una tarjeta clon barata de www.minirobot.com.mx
el cual no incluye debugging en hardware.
Igualmente en la misma pagina podemos encontrar el Pickit2
SIN DEBUGGER
Instrucciones reales del microcontrolador
En la siguiente tabla se expresan los distintos mnemónicos que se utilizan tal cual en el entorno MPLAB:
La tabla que se presenta se puede encontrar en la hoja de datos del
PIC12F508/509/16F505, en esta se muestran el set de instrucciones de
los pics mencionados. Se puede observar que el procesador solo
da soporte a dos tipos de instrucciones aritméticas las cuales son
suma y resta de bytes.
Como ejemplo si quisiéramos realizar la operación de
multiplicación, nos encontraríamos con el problema de que nuestro
procesador no da soporte físico a esta demanda por lo tanto
tendríamos que recurrir a realizar una solución en software
mediante una secuencia de sumas con nuestro pic.
En el caso del pic de gama media avanzada P18F4550, podemos
encontrar como se muestra en la imagen anterior que existe un soporte
físico a la operación, es decir que, dentro de la circuitería
interna de nuestro controlador ya se tiene un módulo especializado
en la unidad aritmética lógica para realizar este tipo de
operación.
Más sobre ensamblador y otras herramientas
El código máquina es un conjunto de instrucciones
implementadas de forma física en la Unidad Central de Procesamiento,
estas instrucciones están representadas en hexadecimal.
El ensamblador es un programa que crea código de objeto el
cual describe la tarea que hará el controlador, este maneja las
instrucciones identificadas por un número hexadecimal mediante
mnemónicos, esto para facilitar al usuario la tarea de programar.
Un
Macro es
una sección de código que se envuelve en una palabra, la cual se
puede realizar cuantas veces el programador lo requiera sin necesidad
de ejecutar un n número
de líneas, se utilizan cuando una actividad programada es constante
durante la ejecución normal del proyecto.
Los
macros justifican la evasión de las subrutinas
las cuales no se explican en esta introducción por ser un término
mejor comprendido en práctica.
Por
ejemplo: Imagine una dispensadora de agua, esta tiene que rellenar
botellones de agua y a la vez llevar una administración de las
botellas dispensadas, un Macro podría ser una serie de instrucciones
que haga al carro portador de botellas mover las botellas de
izquierda a derecha deteniéndose en el disparador de agua hasta
entregar el producto final a una cesta, en este caso el Macro sería
todo el proceso de movimiento y entrega que se hace por cada botella
de agua, mientras que el proyecto principal sería la administración
de las botellas dispensadas (ya sea un contador que se envíe por un
canal a un procesador maestro que controla a un conjunto de máquinas
dispensadoras de agua o un simple contador en display LCD) ,
en si el Macro es una tarea que se realiza con cierta constancia.
Ahora
puede imaginar que hay procesadores que dirigen todas estas tareas,
podemos darle una definición simple a lo que es un procesador, un
procesador es un circuito electrónico que procesa
ciertas
entradas (las cuales representan estados predeterminados por el
programador) y responde con ciertas salidas (igualmente con
respuestas predeterminadas por el programador). Estos procesadores
sostienen una característica importante la cual es ser programables,
este nivel de programación implementado en estos circuitos
electrónicos podemos pensar que son entradas digitales que
dependiendo del valor binario que obtenga toda esa entrada digital,
corresponderá a una configuración o una secuencia de
configuraciones ejecutada por el procesador, es aquí donde volvemos
a llamar al concepto de código máquina, el código máquina son
esos valores o instrucciones que el procesador esta diseñado a nivel
electrónico para entender y procesar una respuesta conmutando en
secuencia varias secciones de su circuitería interna respondiendo
con un estado o un valor en la memoria, periférico o puertos de
entrada y salida.
Sobre MPLAB
MPLAB IDE es un entorno de
desarrollo integrado (Integrated Development Enviroment), este
entorno en software contiene un ensamblador assembler,
además de un compilador
C.
MPLAB cuenta con dos tipos de código para ensamblador los cuales son
el absoluto y el re-ubicable.
El código absoluto es el código que se escribía en un
primer instante, este se arma como proyecto para un solo procesador,
después de su construcción el código queda casi obsoleto para
futuros proyectos.
Por otra parte el código relativo o re-ubicable se escribe
utilizando el linker del MPLAB, este linker se puede encontrar
en muchos otros programas ensambladores para otros tipos de
microcontroladores, lo que hace el código relativo es hacer tu
programa re-usable para otros procesadores, es decir que podemos
escribir nuestro código utilizando una serie de etiquetas que el
ensamblador interpretará, detallando distintas secciones de código
que al momento de construir el proyecto, el linker del ensamblador se
encargará de asignar las direcciones en la memoria para las
distintas secciones de código. Estos nos permite mover fácilmente
el código de un procesador a otro. Con la facilidad de poder
implementar linker, podremos realizar distintos objetos que
representarán subrutinas y macros, los cuales nos ahorrará tiempo
de programación al momento de diseñar proyectos.
Como se puede observar en el esquema anterior extraído del ASSEMBLER/LINKER/LIBRARIANUSER’S GUIDE que provee Microchip, los archivos fuentes pasan por un ensamblador, el cual pasa por el MPLINK (linker de MPLAB), el cual se encarga de acomodar las secciones de código escritas en los diferentes objetos incluidos al proyecto para traducirlo a código hexadecimal.
Además el MPLAB provee herramientas de programación y debugger,
los debugger se pueden usar al momento de programar, o como un
chequeo previo al código escrito.
Para un análisis previo el MPLAB tiene el MPSIM el cual es
una herramienta que nos ayuda a estudiar detalladamente la ejecución
de cada una de las instrucciones escritas al pic.
Con el MPSIM podemos verificar los procesos que se están ejecutando de forma secuencial línea por línea, además de presentar ventanas que nos muestran las dos memorias que posee el controlador, alterar los datos y provocar estados en los puertos de entrada y salida del microcontrolador.
MPLAB da soporte para programar dentro del mismo IDE cualquier
microcontrolador PIC, siempre y cuando el programador seleccionado
soporte a la unidad que se quiere programar. Entre los distintos
programador podemos encontrar el PICkit2 y el PICkit3.
Conclusión
Se han presentado conceptos y referencias generales del entorno de
programación MPLAB, además de todo lo que se relaciona con un
PICmicro, entre otras herramientas útiles. La teoría presentada es
muy difícil de asimilar en una primera lectura, el propósito del
texto no es preocupar al estudiante, si no de proveerles una idea de
lo que estarán manejando. Todo esto se irá comprendiendo de manera
fácil durante la práctica.
0 comentarios:
Publicar un comentario