viernes, 27 de abril de 2012

Programación ISP con Launchpad

Una de las grandes ventajas de los microcontroladores MSP430 de la serie value line G2xxx es que, a parte de ser baratos, están disponibles en encapsulado DIP de 14 o 20 pines. Eso los hace muy interesantes para cualquier proyecto sencillo desarrollado en una placa de topos e, incluso, en una protoboard.

Usando el Launchpad podemos programar cualquier microcontrolador de la serie value line para luego insertarlo en nuestro circuito. Sin embargo, a parte del engorro de quitar y poner chips, dado que los zócalos no son ZIF, nos arriesgamos a dañar los chips cada vez que los sacamos e insertamos del zócalo.

Dado el bajo precio de la placa Launchpad, siempre podemos insertar toda la placa en nuestro sistema y así, poder programarla mediante USB, no obstante, esta no es la solución más compacta.

En este artículo explicaré el procedimiento para programar In System (ISP) sistemas desarrolados con microcontroladores MSP430 value line.

Para que el microcontrolador sea programable In System  es necesario que se cumplan las siguientes condiciones:

  • Tener disponibles los pines TEST y RESET del microcontrolador. Estas dos señales, durante la programación ISP llevan el reloj y los datos, respectivamente, del canal de comunicación usado en la programación.
 
  • Que la señal RESET no se halle directamente conectada a alimentación. Dejar RESET conectado a la alimentación no perjudica el funcionamiento normal del microcontrolador, pero evita que pueda ser programada In System.

La siguiente figura muestra un esquema de un sistema sencillo basado en el microcontrolador MSP430G2452 que se halla incluido como segundo chip en la versión 1.5 del Launchpad.

Esquema de sistema sencillo basado en MSP430G2452

 El sistema tiene lo necesario para ser programado In System y un led conectado a P1.0 para poder verficar que el programa cargado corre correctamente. La línea TEST se lleva directamente al conector de programación. La línea RST (Reset), a parte de ir al conector, incluye una conexión a Vdd con una resistencia de 47k y un condensador de 1nF a masa. Si deseamos añadir al sistema un pulsador de Reset, éste se puede añadir entre RST y masa en paralelo con el condensador.

Importante: El condensador que se halla en la línea RST puede ser algo mayor de 1nF pero no mucho mayor. Si el valor es excesivo, el programador no será capaz de establecer la comunicación.

La siguiente imagen muestra el esquema anterior implementado en una placa protoboard.

Implementación en Protoboard


Para realizar conexión de programación se ha elegido una tira de 5 pines, macho en la placa y hembra en el cable de programación. Para evitar que se pueda conectar al revés, uno de los pines está cortado en el lado de la placa y cegado en el cable.

Disponer de Vdd en el conector de programación no es estríctamente necesario, pero permite alimentar la placa desde el Launchpad y evitar gastar pilas cuando se depura. Si se desea tener siempre alimentaciones independientes, se puede eliminar Vdd del conector de la placa. En todo caso, el sistema sólo puede tener una fuente de alimentación al mismo tiempo, bien sea propia o bien sea a través de conector de programación. Por tanto, mientras se depura con Vdd conectado, se han de quitar las pilas o cualquier otra fuente alternativa de la placa.

Para conectar la placa al Launchpad he montado un cable de algo menos de 20 cm que lleva las 4 señales de interés Vdd, TEST, RST y GND. El cable  tiene un conector hembra de 5 pines en el lado de la placa y 4 conectores hembra independientes en el lado del Launchpad. A la hora de diseñar el cable conviene que, al menos, TEST y RST sean de la misma longitud. Del mismo modo conviene mantener la longitud de los cables lo más corta posible.

Cable de conexión con sus colores



Cable construido


Para realizar las conexiones en el launchpad, deben quitarse los 5 jumpers que unen la zona de emulación con el resto de la placa.

Jumpers a quitar
Una vez quitados los Jumpers, se conectan las líneas Vdd, TEST y RST al lado del emulador de los Jumpers correspondientes y la línea GND al pin de  arriba de la tira derecha de la placa. Se ha de vigilar porque el orden de los Jumpers no es mismo en todas las placas Launchpad. En todo caso no hay pérdida porque todas las señales se hallan correctamente serigrafiadas.
No hace falta retirar el microcontrolador del zócalo que hay en el Launchpad ya que, al quitar todos los Jumpers, el chip queda completamente aislado del emulador.

Conexión Protoboard - Launchpad para ISP


Conectamos el cable de programación que une el Launchpad a la placa que deseamos programar en modo ISP y ya sólo queda desacargar el programa para probarlo.

El código del programa que hace parpadear el LED en P1.0 se halla en este enlace. Basta crear un nuevo proyecto con la herramienta elegida para programar el chip y descargarlo en la placa igual que se haría con el chip contenido en el Launchpad.
En mi caso empleo mspgcc bajo eclipse tal y como describo en un artículo anterior.

Una vez descargado y depurado el programa, se puede usar la placa de manera autónoma con su propia alimentación después de desconectar el cable de programación.

Protoboard corriendo autónomamente

Con esto acaba este articulo. Sólo se trata de un pequeño sistema que hace parpadear un LED, pero es ampliable a cualquier sistema que deseemos programar en modo ISP.


AMPLIACIÓN PARA EL USO DEL CANAL SERIE

Es posible ampliar el sistema incorporando el canal serie a través de USB que proporciona el emulador. Para ello se han de añador dos lineas adicionales conectadas a los Jumpers correspondientes TXD y RXD. No obstante se ha de hacer con cuidado para placas Launchpad de versión 1.5 o posteriores. A parte del hecho de que el orden de señales se ha cambiado en los Jumpers, las conexiones del emulador no se hallan todas en el mismo lado.

La siguiente figura muestra un detalle del esquema de la Placa Launchpad v1.5 del documento slau318b.
Esquema de Jumpers en Launchpad v1.5

Cuidado que BTXD es la transmisión del emulador, que conecta con recepción del microcontrolador (RXD). Por su parte BRXD es la recepción del emulador, que conecta con la emisión del microcontrolador (TXD). Los valores rotulados en la placa RXD y TXD corresponden a Recepción y Transmisión respectivamente desde el punto de vista del microcontrolador.

En concreto, Vcc, TEST y RST se hallan todas en el lado del emulador, iguar que la línea RXD (BTXD del emulador). La línea TXD (BRXD del emuilador) del último Jumper, sin embargo, se halla en el lado de la placa correspondiente al microcontrolador, no en el lado del emulador. Este cambio se hizo para que, cambiando la orientación de los Jumpers asociados a BRXD y BTXD se puedan cambiar las conexiones establecidas:

  • Jumpers Verticales (Igual que los otros) TXD en P1.1 y RXD en P1.2
  • Jumpers Horizontales (Perpendiculares a los otros) TXD en P1.2 y RXD en P1.1
Esto era necesario para poder usar la conexión serie por Hardware que facilita la UART de los microcontroladores más avanzados de la seríe MSP430G2xxx



4 comentarios:

  1. Buenos articulos, te felicito mucho por ser uno de los los primeros, sino que el primero que escrive sobre el lounchpad en español felicidades y gracias, tus articulos me salvaron la vida jaaa, no reprobe

    ResponderEliminar
    Respuestas
    1. Me alegro que te sean de utilidad. Al pensar en el desarrollar el Blog una de las posibilidades era hacerlo en inglés para llegar a más gente, pero luego pensé que ya hay muchos Blogs de electrónica en Inglés y que quizás, dejarlo en castellano no era mala idea.

      Eliminar
  2. Muy buena publicación, muchas gracias por la información.

    ResponderEliminar
  3. Amigo gracias por la info me ha sido muy util. Estoy elaborando una guia de programacion para los MSP430 y quisiera incluir tu articulo.

    ResponderEliminar