jump to navigation

Documento: Programar un PIC con el programador por puerto paralelo desde Linux. 3 diciembre, 2006

Posted by pjmicrocontroladores in Documentación.
trackback

Vimos en un artículo anterior (1) como se podía construir el hardware para programar un microcontrolador usando un puerto paralelo. Construimos el programador (en sitios latinos podemos ver como lo llaman entrenador) basado en la simplicidad de desarrollo y en el bajo coste, sin renunciar con ello a la generalidad. Pero lo explicado no permite a los iniciados en el tema de los microcontroladores PIC conseguir escribir un programa en la memoria Flash del micro. Pasamos en este artículo a describir la otra pieza que nos hace falta para conseguirlo, el software.

Comenzamos por Linux, y próximamente lo explicaré para Windows. En primer lugar debemos descargarnos e instalar el programa necesario para comandar el programador por puerto paralelo. El elegido es Odyssey, por su simplicidad y ser código abierto. Está disponible en el enlace (2), pese a que recientemente se ha movido a (3).

Una vez descargado se descomprime, se configura, se compila y se instala.

tar xvf odyssey-0.4
cd odyssey-0.4
./configure
make
make install

Con esto tenemos el programa odyssey instalado en la ruta /usr/local/bin/. Si la ruta no esta en la variable PATH es recomendable ponerla. Queda configurar el programa odyssey para utilizar nuestro programador paralelo. Para ello editamos el fichero /usr/local/etc/odyssey.conf, allí modificamos la sección nombrada con [io] con la siguiente información:

[io]
driver=linuxppdev
port=0
clkpin=-3
rdatapin=-10
wdatapin=-2
vpppin=-6
pwrpin=4

Con esto indicamos los pines del puerto paralelo que harán la función deseada, y con el signo la polaridad. En linux, con el programa odyssey no hace falta usar el switch que se mostraba en la placa, basta dejarlo conectado al pin 6. También indicamos el puerto con el parametro port, donde 0 es LPT1, 1 para LPT2 y así.

Odyssey trabaja de dos formas según que valor pongamos al parámetro driver del fichero odyssey.conf. Si como anteriormente se elige linuxppdev se usará el driver ppdev para acceder al puerto paralelo. El único problema es que no debe haber otro programa que este accediendo al puerto paralelo de forma bloqueante y que hemos de tener el driver ppdev. Para cargar el driver podemos usar:

modprobe ppdev

y para comprobar que módulos están usando el puerto podemos teclear

lsmod

y ver qué módulos usan parport a parte de ppdev. Después ejecutamos

odyssey test

y si el programa accede a modo interactivo todo esta listo. En caso contrario tendremos que descargar los módulos distintos a ppdev que puedan bloquear el puerto paralelo, de la lista de módulos que usan parport. Por poner un ejemplo el módulo lp esta cargado doblemente por lo que necesitaremos hacer un doble

rmmod lp

para poder usar odyssey test. La otra forma de configurar odyssey es con un acceso directo al puerto, pero necesitamos permisos de root y anular por completo el uso de los drivers parport (parport y partport_pc). Como mejora, no hay que cargar el driver ppdev.

Una vez odyssey entra en modo interactivo veremos que nos informa de las señales de salida del programador. Debemos jugar activando y desactivando las señales del bus ICSP comprobándolas eléctricamente con diodos o con un tester, para ver que se consigue el resultado esperado. Para activar una señal usamos + seguido de v para VPP, c para CLK (señal de reloj) y d para DATA (o señal de datos). Cuando activamos la salida de datos, la entrada también debe activarse. Si tras probarlo todo está correcto, tenemos listo el programa odyssey y nuestro programador por puerto paralelo para programar los PIC.

Para grabar un programa a.hex conseguido con las gputils de la forma habitual:

gpasm a.s
gplink a.o (más librerías necesarias)

tenemos que usar el programa odyssey de la forma adecuada al objetivo a conseguir. Para escribir el programa en el microcontrolador (queda claro que el PIC debe estar en el programador o con la interfaz ICSP correctamente y el programador conectado tanto al PC como al alimentador externo), usamos:

odyssey PIC16F877 write a.hex

Para comprobar que el programa se escribió correctamente usamos:

odyssey PIC16F877 verify a.hex

Para leer el programa (si no está protegido):

odyssey PIC16F877 read a.hex

y para borrarlo podemos usar:

odyssey PIC16F877 erase

Al instalar odyssey también instalamos su manual por lo que un “man odyssey” nos arrogará luz para los otros parámetros que admite el programa.

Visto lo más importante, en la próxima entrega mostraré la forma de usar el programador en windows.

1) https://pjmicrocontroladores.wordpress.com/2006/11/20/documento-programador-por-puerto-paralelo-para-pic/
2) http://www.desert.cx/odyssey/downloads.php
3) http://gforge.enseeiht.fr/frs/?group_id=10

PD: Agradezco comentarios de corrección o petición de ayuda que intentaré responder aquí mismo, pero no dejéis vuestro e-mail dado que no respondo privados, y solo conseguiréis que los recolectores de spam os acribillen.

Anuncios

Comentarios»

1. duber - 24 febrero, 2007

por favor

necesito programas de prueba para trabajar con el 16f877, para probar una quemador

2. pjmicrocontroladores - 24 febrero, 2007

Hola duber,

te recomiendo el típico led parpadeante:

#define TRISA (* (unsigned char *) 0x085)
#define PORTA (* (unsigned char *) 0x005)

void delayms(int a){
….int b,c;
….for(b = 0;b < a;b++){
……..for(c = 0;c < 66;c++){
…………__asm__ __volatile__ (“nop”);
……..}
….}
}

int main (){
….TRISA=0;
….while(1){
……..PORTA&=0xE;
……..delayms(500);
……..PORTA|=1;
……..delayms(500);
….}
}

Un saludo
Pedro José Ramírez

PD: Que malo son los comentarios para poner código. Retira los ….

3. Mytilus Robota Data » Blog Archives » problemas y soluciones de la programacion del PIC: parte 2 - 8 febrero, 2008

[…] (KDE), nos decantaremos por Odyssey, el cual es un software para el puerto paralelo. En esta pagina de Pedro José Ramírez Gutiérrez, te explican como […]

4. david - 17 marzo, 2008

Hola, tengo una duda con esto:
[io]
driver=linuxppdev
port=0
clkpin=-3
rdatapin=-10
wdatapin=-2
vpppin=-6
pwrpin=4
Siguiendo tu otra pagina lo he logrado comprender mas o menos (ya que en circuitos tengo poco conocimiento). Excepto lo de “pwrpin=4”, no tendría que ser 25? (siguiendo el esquema que sale en el otro documento (https://pjmicrocontroladores.wordpress.com/2007/03/02/programador-por-puerto-serie-para-pic/#comments))

También estaría muy agradecido (y supongo que alguien mas) si pones como controlar el programador por puerto serie. Sería tan sencillo como cambiar los valores de [io]?

Saludos y gracias de antemano.

5. pjmicrocontroladores - 17 marzo, 2008

Hola David

Hola, el valor de pwrpin da la capacidad al programador de apagar/encender el voltaje en VCC. En el programador por puerto paralelo no usa esta característica. Por eso está puesto a 4, para que siendo un pin de salida, no interrumpa la operación que se desea hacer. El pin 25 es tierra.

El enlace que has puesto es del programador serie. Supongo que te has esquivocado al copiar.

Respecto a este segundo programador por puerto serie, no sirve con odyssey. Tengo que buscar un poco de tiempo para poder preparar un documento para Linux por puerto serie, pero por ahora no podré.

Saludos
Pedro José Ramírez Gutiérrez.

6. luis enrique - 20 junio, 2008

hola quisiera saber como hago para eliminar este error : Missing I/O configuration parameter io.rdatapin
que debo ahacer ayuda por favor

saludos Luis M

7. pjmicrocontroladores - 20 junio, 2008

Pues por lo que entiendo parece que te falta

rdatapin=-10

en la configuración. Revisa que esté bien escrito.

Saludos
Pedro José Ramírez Gutiérrez.

8. ALI - 3 diciembre, 2008

NECESITO UN PROGRAMA EN C PARA QUE CONTROLE EL PUERTO PARALELO Y MEDIANTE ALGUNOS CONTADORES HAGA QUE DISPLAYS APAREZCAN LETRAS

9. pjmicrocontroladores - 3 diciembre, 2008

Hola Ali

Hay muchos programas para controlar distintos tipos de display por puerto paralelo en internet, para aquellos que quieran buscarlos.

Saludos
Pedro José Ramírez Gutiérrez.

10. arcachofo - 6 diciembre, 2008

Bueno… petición de colaboración… :), se aacaba de abrir este foro para gente que programa pics desde linux:

http://pic-linux.foroactivo.net/


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: