Technorati Profile Add to Technorati Favorites ELECTRONICA DESARROLLO: 07_12

lunes, 31 de diciembre de 2007

Lenguajes de Programación para PICs

Este blog fue diseñado para apoyar a la comunidad de desarrolladores de electrónica. Se publicarán artículos de proyectos desarrollados por el Administrador del blog, Ingeniero Electrónico, quien estará atento a sus inquietudes o sugerencias igualmente todos pueden compartir sus conocimientos e intercambiar opiniones o aportes dentro de un marco de respeto y tolerancia. Los artículos publicados aquí son elaborados con tal sencillez que son totalmente comprensibles y los proyectos indicados pueden ser llevados a cabo por cualquier estudiante o profesional del ramo de la electrónica.

--English----Español


Programación de PICs y Lenguajes de programación.

Justificación:Ultimamente hemos encontrado a muchos estudiantes y colegas que nos preguntan acerca de como pueden iniciarse en la programación de PIC micro (Peripheral Interface Controller) es por esto que a continuación se dan algunas pautas y consejos tanto para quienes ya están involucrados en el medio como para quienes empiezan y desean hacerlo de la manera mas profesional posible.

Objetivo: ayudar a aclarar dudas sobre los lenguajes de programación para PICs estableciendo comparaciones entre ellos y sacando conclusiones para ayudar a las personas que se inician en este mundo y a despejar dudas a quienes ya están involucrados en él.

Utilidad:Para quienes quieren comparar ventajas y desventajas entre los diferentes lenguajes de programación para PIC. Para quienes quieren conocer proveedores de compiladores para PIC. Para quienes quieren iniciarse en algún lenguaje específico de programación para PIC hay ejemplos que les pueden servir de introducción.

Marco Teorico


Es muy común que las personas que se inician en la programación de microcontroladores PIC de Microchip encuentren como primer obstáculo el lenguaje con el que se programarán dichos dispositivos.
En este artículo describiré las opciones existentes sobre los lenguajes de programación sus ventajas y desventajas y las conclusiones finales.

Realmente cuando cargamos (quemamos) un PIC con un programa no lo hacemos con ningún lenguaje, en realidad lo cargamos con OPCODES o “códigos de operación” que por lo general están en base hexadecimal, sin importar la gama de PIC (baja, media o alta) esto siempre será así. Un ejemplo de opcode para PIC es:
286C
Que es una instrucción referente a GOTO 0X6C, es decir salte a la posición 6C de la memoria de programa.
Cuando se compila un programa cualquiera que sea y en el lenguaje que sea, se genera una lista de OPCODES la cual quedará almacenada en el archivo con extensión .hex.

Por ejemplo creamos la rutina ENCENDERLED, cuando compilemos se generará, entre otros, un archivo ENCENDERLED.hex que es el archivo que realmente le cargamos a la memoria de programa del PIC. Para efectuar la tarea de cargar el archivo *.hex al PIC es necesario tener una herramienta de hardware llamada programador que es la interfaz entre el computador y el pic.

Dentro de los lenguajes en los que programamos rutinas para PIC existen tres posibilidades:




  • Lenguaje BASIC

  • Lenguaje C

  • Lenguaje Ensamblador (assembler)



Un error común que cometen los principiantes cuando se les menciona la posibilidad de programar en Basic o C es pensar que con Visual Basic o Visual C++ pueden elaborar rutinas para PICs, pero en realidad lo que se debe tener en cuenta es que existen compiladores especiales para estos lenguajes y por ende la sintaxis es diferente de la de un lenguaje orientado a objetos.

A continuación veremos detalladamente cada una de las tres posibilidades enumeradas anteriormente, cada una con sus ventajas y desventajas asi como un sencillo ejemplo de aplicación en cada una de ellas.

1. El lenguaje BASIC:


Ventajas:



  • Es un lenguaje muy simple y con instrucciones fácilmente legibles, incluso por no expertos.


Desventajas:



  • Nunca vas a tener el control del programa en cuanto tiempos de ejecución y control de registros bit a bit.

  • Es muy complicado el manejo de interrupciones simultáneas en este lenguaje.
    Tiene limitaciones cuando genera el archivo .hex, es decir no optimiza el tamaño de memoria de programa del PIC.

  • La mayoría de compiladores para este lenguaje pueden utilizarse únicamente bajo ambiente Windows.




Existen varias casas que producen compiladores para este lenguaje, entre ellas se pueden mencionar a:


www.letbasic.com
www.melabs.com
www.basicmicro.com

El más conocido y que a mi parecer es mejor entre ellos es el PICBASIC PRO de MicroEngineering Labs Inc. No es gratuito.

Ejemplo: rutina que hace parpadear un led en el pin cero del puerto B cada 200 milisegundos en lenguaje Basic empleando el software PICBASIC PRO:



Lenguaje C:

Ventajas:

  • Es un lenguaje de alto nivel mas cercano a la máquina.

  • Puedes construir rutinas matemáticas fácilmente.

  • Puede ser de ayuda al combinarlo con Ensamblador sobre todo en la gama alta.

  • Se pueden crear macros con este lenguaje, para después simplificar el código en diferentes desarrollos.

  • Es aceptado por la empresa fabricante Microchip, incluso ellos tienen algunos compiladores C.

Desventajas:



  • Los programas al compilarlos pueden resultar un poco extensos y pesados por ello debe tenerse en cuenta la capacidad de memoria de programa del PIC a utilizar.

  • Con este lenguaje tampoco se puede controlar del todo los tiempos y los registros bit a bit.

Para este lenguaje existen también varias casas que producen software y compiladores para este lenguaje entre ellas las más importantes son:



www.microchip.com con sus compiladores C18 para la gama alta y C30 para los dsPIC, ambos Como otras herramientas de esta marca, se puede incluir en el entorno gratuito MPLAB IDE, y permite a los desarrolladores, llevar a cabo su aplicación en un lenguaje de alto nivel. No son del todo gratuitos.
www.ccsinfo.com Sus herramientas más conocidas, son la serie de compiladores para las distintas familias de microcontroladores Microchip PIC® MCU: PCW IDE, PCWH IDE y PCWHD IDE. Ofrecen la posibilidad de que el usuario pueda elegir el compilador concreto para la familia que va a utilizar, y compilar en modo linea de comandos, tanto para Microsoft Windows, como para Linux. Para los usuarios de Microsoft Windows, también existe la posibilidad de utilizar su potente entorno de desarrollo PCWHD IDE, que incluye además de los compiladores para todas las familias de PICs y dsPICs, entre otras cosas, un editor de código con reconocimiento de comandos, un depurador ICD, y un Wizard que en base a lo que el usuario le indique, generará la mayor parte del código para inicializar el microcontrolador. Además incluyen una gran cantidad de librerías muy útiles para asociar con la rutina que estamos desarrollando. Este compilador también puede integrarse con MPLAB IDE. No es gratuito.
www.htsoft.com (HI-TECH) Sus herramientas más conocidas son PICC y PICC18. No son gratuitos.

Ejemplo: rutina que hace parpadear un led en el pin cero del puerto B cada 200 milisegundos en lenguaje C empleando el software de CCS PCW IDE:


Lenguaje Ensamblador:

Ventajas:



  • Es el lenguaje de bajo nivel natural de la línea PIC tanto para gama baja, media o alta.

  • Con el se tiene un aprovechamiento eficiente de los recursos del PIC.

  • Se pueden crear macros con este lenguaje, para después simplificar el código en diferentes desarrollos.

  • Con el se pueden controlar los tiempos y los registros bit a bit.

  • Excelente para manejar interrupciones simultáneas.

  • Cuando se genera el archivo .hex éste es completamente optimizado.

Desventajas:


  • En realidad desde mi punto de vista no existe ninguna, excepto cuando no se tiene experiencia en programación puede tardarse el desarrollo de alguna rutina en comparación con los otros lenguajes.


El compilador para este lenguaje es el MPLAB IDE el cual se consigue totalmente gratuito en la página de Microchip y constantemente están sacando nuevas versiones, debe aclararse que este solo funciona bajo ambiente Windows. Para Linux existe un versión alternativa llamada: PIKLAB la cual presenta simuladores, editores, ensambladores y soporta una gran cantidad de compiladores C para PIC.

Ejemplo: rutina que hace parpadear un led en el pin cero del puerto B cada 200 milisegundos en lenguaje Ensamblador empleando el software de Microchip MPLAB IDE:



CONCLUSIONES:


Después de haber analizado los diferentes aspectos que envuelven la programación de PICs en cuanto a los lenguajes,para trabajos profesionales se aconseja lo siguiente:


  • Lo ideal es manejar el lenguaje ensamblador para los rangos de gama baja, media y alta por versatilidad y mejor aprovechamiento de recursos del PIC.

  • Si usted va a comenzar con la programación de PICs debería primero dominar el lenguaje Ensamblador, no le aconsejaría el lenguaje BASIC. Una vez haya dominado el lenguaje Ensamblador para gama baja y media puede iniciarse con el lenguaje C.

  • El Lenguaje C es un lenguaje de alto nivel y puede resultar útil combinándolo con el lenguaje Ensamblador ya que nos puede ahorrar tiempo de programación, depuración y simulación sobre todo en la gama alta y en los dsPIC.

  • Puede emplear el Lenguaje C o el Ensamblador para crear macros que le simplifiquen desarrollos futuros.

Para ver la página personal del autor haz clic aqui