sábado, 9 de mayo de 2015



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:

  1. Construir una tarjeta clon implementado el circuito que Microhip proporciona
  2. 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

Otras tiendas importantes se pueden observar en el mapa de distribuidores de Sparkfun.com



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.
Next
Entrada más reciente
Previous
This is the last post.

0 comentarios:

Publicar un comentario