Buscar en este blog

miércoles, 31 de octubre de 2012

"PicKit 2" en GNU/Linux usando el programa "pk2cmd"

En un post anterior hablaba sobre el uso del programador de microcontroladores PIC "PicKit 2" en Windows. Para usarlo desde GNU/Linux se puede utilizar el programa de línea de comandos "pk2cmd".

Programador PicKit 2 alimentando al PIC 16f628a
En este post muestro cómo instalé el "pk2cmd" en la versión Debian Squeeze de GNU/Linux y cómo utilizarlo para grabar un programa .hex al PIC.

Instalación

La instalación la realizo a partir del código fuente del programa. Este código fuente se puede descargar desde la web de Microchip. El archivo a descargar es el "PK2CMD V1.20 Linux & Mac OS X Source Code with Makefile".

El archivo descargado es de tipo .tar.gz por lo que se debe descomprimir. En mi caso lo descomprimí al escritorio en una carpeta de nombre "pk2cmdv1.20LinuxMacSource".

Una vez que lo descomprimen, en una ventana de comandos, hay que pasarse al directorio que tiene los archivos descomprimidos mediante (en mi caso):

cd /home/nombre_usuario/Escritorio/pk2cmdv1.20LinuxMacSource

Antes de compilar, hay que instalar otros programas que son necesarios para poder compilar. Esto lo pueden hacer como super usuario con el comando:

aptitude install libusb++-dev

Ahora sí se puede compilar el código fuente mediante:

make linux

Y luego, como super usuario, instalarlo con el comando:

make install

Una vez instalado, hay que añadir una línea al archivo oculto ".bashrc" que está en la carpeta personal (/home/nombre_usuario) del usuario GNU/Linux con el que queremos usar el PicKit2. En mi caso uso el editor de texto "Leafpad". Para esto ejecuto, como usuario normal:

leafpad /home/nombre_usuario/.bashrc

Añado al final del archivo la siguiente línea:

export PATH=$PATH:/usr/share/pk2

Finalmente "ejecuto", como usuario normal, las líneas del archivo ".bashrc" mediante

source /home/nombre_usuario/.bashrc

Con esto el programa "pk2cmd" debería haber quedado instalado y configurado para poder usarse.

Prueba de la instalación


Para probar que la instalación y la configuración funcionan, una primera forma es, con el PicKit 2 conectado al puerto USB, ejecutar, como usuario normal, el comando:

pk2cmd /?v

Este debería devolver algo como lo que se ve en la siguiente imagen:


Uso del programa "pk2cmd" en la ventana de comandos

Grabar un programa


Otra forma de verificar que el programa realmente funciona es grabar un archivo .hex al PIC y probarlo en su circuito correspondiente.

Lo usual para obtener el archivo .hex es escribir el código del programa en Assembler o en C y luego compilar. En este caso sin embargo, voy a probar con un archivo .hex de alguien que ya se tomó el trabajo de programar y compilar.

El archivo .hex a grabar corresponde a un programa que prende y apaga un LED conectado entre el pin 17 (RA0) y 14 (Vdd) del PIC 16f628a. Este se puede descargar desde "Blink a Led". Esta web tiene archivos .hex de programas que encienden y apagan un LED para muchos de los modelos de microcontroladores PIC.

Como voy a probar con un PIC 16f628a, descargo el archivo de nombre "b628i-1.hex". También pueden descargar el archivo "b628i-2.hex" que hace lo mismo pero encendiendo y apagando el LED a mayor velocidad.

En todos los siguientes comandos le solicito al programa "pk2cmd" que autodetecte el PIC que tengo conectado en el programador. Otra opción es indicarle qué modelo de PIC es.

Comandos

En todo los casos tengo el PIC 16f628a conectado al programador PicKit 2 y este al puerto USB de la computadora. Los comandos los ejecuto como usuario normal.

Con el siguiente comando se puede ver el manual del programa pk2cmd donde se explican más detalladamente las opciones de cada comando:

pk2cmd /?

Para verificar que autodetecta el PIC que tenemos conectado en el PicKit2:

pk2cmd -p

Para leer el archivo .hex que actualmente tiene grabado el PIC (en este caso lo guardo en mi escritorio con el nombre "actual.hex"):

pk2cmd -p -gf/home/usuario/Escritorio/actual.hex

Para grabar al PIC el nuevo archivo "b628i-1.hex" que lo tengo en el escritorio:

pk2cmd -p -m -f/home/usuario/Escritorio/b628i-1.hex

Para comparar el archivo que se grabó (el que tiene el PIC ahora) con el que se quería grabar "b628i-1.hex" que está en el escritorio:

pk2cmd -p -y -f/home/usuario/Escritorio/b628i-1.hex

Esto me devuelve "EEData Memory Errors" aunque al probar el PIC en el circuito eléctrico este funciona.

Para alimentar al PIC con un voltaje Vdd y que de esa forma comience a ejecutar el programa (en este caso lo alimentará con $V_{dd}=4V$):

pk2cmd -p -a4 -t

Para dejar de alimentar el PIC:

pk2cmd -p -r

Circuito eléctrico utilizado

El circuito eléctrico para probar que el programa fue grabado correctamente y por lo tanto el LED prende y apaga es el siguiente (se puede prescindir de los dos capacitores y el diodo de la izquierda ya que son de filtrado y protección):
Circuito utilizado para probar que el programa fue grabado al PIC (imagen tomada de la web de "Blink a Led" y modificada para simplificar el diagrama)

En mi caso, como se ve en la imagen al inicio del post, conecté el LED junto con la resistencia en serie directamente a los pines 17 (RA0) y 14 (Vdd) del zócalo ZIF que estoy usando para conectar el PIC al programador PicKit 2.

Fuentes


2 comentarios:

  1. hay un script para correrlo en forma gráfica (dar permiso de ejecución y ejecutarlo en consola o si lo prefieren, pueden crear el acceso directo):

    http://pastebin.com/2rKyjbkr

    ResponderEliminar