Menu
in

“¡Hola Mundo!” en C18 (con Bootloader)

En la actualidad existe una enorme variedad de lenguajes de programación para todo tipo de medios electrónicos capaces de interactuar con un usuario. Para un ordenador, un teléfono móvil, un automatismo y, por supuesto, para un simple y sencillo microcontrolador. Dentro de este vasto universo, siempre hay una etapa considerada “el inicio del aprendizaje”. La mayoría de las personas no comienzan sus experiencias desarrollando un programa capaz de controlar la ISS, sino que intentan partir de un objetivo (o logro) mínimo para luego escalar en complejidad sus conocimientos. En todo el mundo, a la primera experiencia en programación se la conoce como “¡Hola Mundo!”.  Gracias a la colaboración de Sebitronic y Jonbul (entre otros), iniciamos nuestro camino en C18. Y tú, ¿qué esperas para sumarte?

Una pequeña lámpara, un LED, un motor que gira gracias a una batería vieja que encontramos en algún cajón de trastos, o un LCD, cualquier artefacto al que podamos darle “vida” o actividad se transforma en nuestro “¡Hola Mundo!”, muchas veces, sin darnos cuenta. Ignorada por muchos, la historia de esta célebre frase nace en los Laboratorios Bell en un tutorial de introducción al lenguaje B (que luego sería reemplazado por el lenguaje C que hoy conocemos) escrito por Brian Kernighan en 1972. Por supuesto, todo esto en idioma inglés y con la frase “hello world”, escrita con minúsculas y sin los signos de admiración. El mundo de la programación la convirtió en la celebridad que es hoy y, como no podía ser de otra manera, en la programación de los microcontroladores también es muy común encontrarla. Sin embargo, llegar a dominar una visualización gráfica o alfanumérica que exprese estas palabras no es una tarea sencilla. Debido a esto, la tarea que puede realizarse y comprobarse con un microcontrolador durante los primeros pasos del aprendizaje es encender un LED.

Lograr que un sencillo LED encienda y apague puede significar, para muchas mentes creativas, la piedra basal de un imperio de industrias electrónicas dedicadas a la construcción de balizas, luces intermitentes de advertencia y/o luces indicadoras de giro para cualquier tipo de vehículos. Es decir, para muchos, lo que puede parecer poco quizás resulte todo lo que se necesita para triunfar. Pero volviendo al mundo real, el mensaje que intentamos transmitirte es que, por más que te parezca una actividad menor o de poca importancia, lograr un “¡Hola Mundo!” puede llevarte tan lejos como nunca has imaginado. Es por esto que, gracias a la ayuda de amigos del foro NeoTeo, vamos a dar el primer paso en nuestro camino para aprender, practicar y progresar en este lenguaje de programación tan apasionante y poderoso como es C18. Asumimos, por supuesto, que ya has instalado en tu ordenador la última versión de MPLAB IDE y la versión de evaluación o estudiantil del MPLAB C Compiler for PIC18 MCUs. Existen muchos tutoriales en la Web sobre cómo instalar estos programas y, haciendo nuevamente referencia a los amigos del foro NeoTeo, puedes descargar desde aquí el completo Tutorial de C18 de Suky.

Características a destacar del compilador C18
El MPLAB C18 es el compilador específico de Microchip para su línea de microcontroladores  PIC18 y tiene una sintaxis similar al lenguaje C convencional, con la salvedad de que se le han agregado diversas adaptaciones para transformarlo en una herramienta más apropiada para trabajar dentro del ambiente de programación de los PIC. Este compilador se maneja sin inconvenientes dentro del entorno visual del MPLAB, y sus características sobresalientes son:

  • Sólo sirve y está optimizado para los PIC 18.
  • Posee las funciones estándar del lenguaje C.
  • Permite la inclusión de trozos de lenguaje ASM.
  • Soporta interrupciones.
  • Contiene librerías para comunicaciones SPI, I2C, USART, y periféricos externos como LCD inteligentes.
  • Gracias a que utiliza el MPLAB, el entorno de programación es similar al utilizado en ASM.
  • Posee una versión estudiantil gratuita. Sólo basta con registrarse en la Web de Microchip para obtenerla. Además posee una versión de demostración de 60 días de evaluación.

Estas características convierten al compilador MPLAB C18 en una herramienta ideal para los desarrollos que podamos realizar con los PIC de la línea 18F y, en particular, el 18F2550 que utilizamos en nuestra entrenadora NeoTeo. Al instalar el MPLAB C18 en el ordenador, este se coloca por defecto en un directorio que el instalador genera y queda como C:/MCC18. Luego, se crean, entre otras, las siguientes carpetas que contienen los archivos necesarios para utilizar el compilador y que deben ser incluidos en los proyectos que intentemos construir:

  • h: Este directorio contiene los archivos de cabecera (Header Files) de la librería estándar de C y los archivos con las especificaciones del procesador PIC seleccionado (en nuestro caso, el 18F2550).
  •  lib: Contiene las librerías estándar del lenguaje C (clib.lib o clib_e.lib), las propias de los microcontroladores PIC (p18xxx.lib o p18xxx_e.lib donde xxx especifica el dispositivo) y los módulos start-up (c018.lib, c018_e.lib, c018i.lib, c018i_e.lib, c018is.lib, c018iz_e.lib)
  • lkr: Contiene los archivos que utilizará el enlazador del lenguaje (Linker Script File).
  • mpasm: Contiene los archivos de cabecera que utiliza el ensamblador MPASM para los dispositivos soportados por el compilador MPLAB C18.

¿Con qué vamos a trabajar?
Lo primero que debemos construir es una pequeña placa que se pueda instalar de manera sencilla en la entrenadora NeoTeo (en el espacio reservado para el puerto B) y que incorpore al menos 8 LEDs, uno por cada pin de salida del puerto. En nuestro desarrollo, como puedes ver en la imagen superior, hemos incorporado, además, 2 pulsadores para ser utilizados en programas y actividades futuras, es decir, cuando comencemos a realizar rutinas más complejas ya que, dentro de un mismo puerto que encenderá LEDs, leeremos interruptores y aprovecharemos a darle más acción al puerto. Para facilitar el trabajo de carga y renovación de programas sobre el PIC, utilizaremos el sistema Bootloader, que ya hemos visto en artículos anteriores. Esto nos facilitará la tarea de realizar ensayos a granel con la sola conexión USB de la entrenadora, que le brindará alimentación y datos a nuestras prácticas.

Partimos de un programa básico
Para realizar las prácticas en C18 y comenzar con una base que funcione, te proponemos utilizar los archivos que se encuentran al final de este artículo que, como puedes comprobar en los videos, funcionan. A partir de ellos, tú podrás realizar las reformas y ampliaciones que quieras hasta lograr funcionamientos más elaborados. Por ejemplo, puedes realizar un contador que, al pulsar sobre el botón que se encuentra en la placa bootloader, provoque el cambio de LED que se encienda sobre la placa de muestra, o también puedes intentar hacer desplazar de un lado a otro un LED encendido y, por supuesto, encender todos los LEDs, apagar uno con el pulsador o hacer que uno apagado se mueva de un lado a otro de manera automática y miles de variantes que se te ocurran realizar con 8 LEDs.

Dentro de los ejemplos que te dejamos al final del artículo para que puedas descargar, no debes alterar las partes ubicadas al inicio del archivo “main.c”, donde se invoca la configuración de los “fuses” y el direccionamiento correcto de los vectores al usar el sistema bootloader. Si alteras alguno de esos valores, el sistema puede adoptar un comportamiento impredecible y puede suceder que debas cargar nuevamente el archivo bootloader para recomenzar el trabajo. Es decir, puedes llegar a corromper el bootloader dentro del PIC y esto provocaría una catástrofe que sólo se remedia comenzando todo de nuevo. No te alarmes si todo empieza a funcionar de manera escandalosa o sin sentido. Vuelve todo atrás, revisa tus pasos previos y allí encontrarás el error. Reinicia la carga de los archivos desde cero y todo vuelve a comenzar.

Por lo tanto, debes observar que hemos marcado de manera muy clara la línea divisoria desde donde puedes comenzar a trabajar. A partir de allí comienza tu magia. Recuerda que tienes todo un grupo de gente que está deseosa de ver tus avances y trabajos. En el foro NeoTeo hay un grupo importante de amigos que esperan aprender este lenguaje y tú puedes participar de manera activa con tus códigos. Observa bien lo que hemos hecho, cambia un bit de lugar, cambia un pulsador de lugar, intenta construir un contador, avanza un paso, el que quieras, el que puedas y compártelo. Enséñanos tú a nosotros. Busca mejorar nuestro código. ¿Nuestro código tiene defectos? ¿Cuáles, dónde, por qué? De eso se trata la idea, de avanzar poco a poco entre muchos hasta lograr desarrollos importantes en este programa. Te recomendamos, como siempre, que acompañes tus códigos o ensayos con videos donde se pueda apreciar y demostrar que el código funciona. Ahora tienes más herramientas: cuentas con el bootloader que te facilitará las prácticas y también cuentas con dos programas de ejemplos para dar el paso inicial. ¡Vamos amigo, te seguimos!

Escrito por Mario

Leave a Reply