sábado, 27 de enero de 2007

Usando Parapin

A partir de aquí solo haré mención al uso de la librería que nos provee Parapin en modo de usuario, para ver su funcionamiento como driver del kernel vean la documentación oficial.

Primero que nada hay que inicializar la libreria que nos proporciona Parapin, esto se realiza mediante la siguiente función:

int pin_init_user(int lp_base);

Tambien hay que comentar que en Parapin los pines se manejan en forma individual, esto por medio de la constante ``LP_PINnn', en donde nn es un numero del 01 al 17, por ejemplo tenemos que LP_PIN01 es el pin 01 del puerto, LP_PIN09 es el pin 09 y asi los demás.

Para establecer que pines serán entradas y cuales salidas se utilizan las siguientes funciones:

void pin_input_mode(int pins);
void pin_output_mode(int pins);
void pin_mode(int pins, int mode);

El argumento pins se el descrito anteriormente, como ejemplo tendríamos los siguientes:

pin_input_mode(LP_PIN01);
/* Pin 1 es entrada */

pin_output_mode(LP_PIN14 | LP_PIN16);
/* Pins 14 y 16 son salidas */

Como ya se menciono en entradas anteriores los pines 2 al 9 no se pueden configurar individualmente como entradas o como salidas, solo se pueden configurar en grupo, por lo que si activamos un solo pin como entrada o como salida todo el grupo tomo esa configuración, también se tiene un alias para este grupo; "LP_DATA_PINS".

pin_input_mode(LP_DATA_PINS);
/* Establecemos los pines del 2 al 9 como entradas*/

La función pin_mode() hace los mismo que las funciones pin_input_mode() y pin_output_mode():

pin_mode(LP_PIN02, LP_INPUT);
/* Pins del 2 al 9 son entadas*/

pin_mode(LP_PIN01 | LP_PIN02, LP_OUTPUT);
/* Pin 1, y los Pines 2-9 son todos salidas*/

pin_input_mode(LP_DATA_PINS);
/*Pins 2-9 son salidas */

Ya que establecimos que pines serán entradas y cuales serán salidas, haremos uso de las siguientes funciones:

void set_pin(int pins);
void clear_pin(int pins);
void change_pin(int pins, int state);
int pin_is_set(int pins);

Las 2 primeras funciones nos ponen un 1(alto a 5V TTL) o un 0 (bajo 0V TTL) en el pin especificado, ejemplos:

set_pin(LP_PIN01 | LP_PIN04 | LP_PIN07 | LP_PIN14 | LP_PIN16);
/* Pins 1, 4, 7, 14, y 16 estan en alto */

clear_pin(LP_PIN01 | LP_PIN16);
/* Pins 1 y 16 ahora estan abajo */

change_pin(LP_PIN01 | LP_PIN02, algun_entero ? LP_SET : LP_CLEAR);
/* Pins 1 y 2 ahora están en bajo solo si algún_entero == 0 */

/* comprobar el estado del pin 1 */
printf("Pin 1 is %s!\n", pin_is_set(LP_PIN01) ? "on" : "off");


martes, 23 de enero de 2007

Instalacion de parapin.

Primero bajamos el código de la pagina de Parapin y lo descomprimimos en cualquier directorio. En este caso utilizare la beta 1 de la versión 1.5.0.

Una vez descomprimido, en una terminal nos vamos al directorio donde descomprimimos el código fuente:

[usuario@localhost ~]$ cd Directorio

Ya que estamos en el directorio en que descomprimimos el código, y dependiendo del kernel que utilizamos (2.4.XX o 2.6.XX) ejecutamos el scrip de conflagración (setup-2.4.sh o setup-2.6.sh). Si no sabemos que kernel utilizamos utilizamos el comando uname -r:

[usuario@localhost ~] uname -r
2.6.17-6mdv

En mi caso utilizo el kernel 2.6.17-6mdv, el cual es el que viene en mi Mandriva 2007, y por lo tanto haré uso de setup-2.6.sh:

[usuario@localhost parapin-1.5.0-beta1]$ ./setup-2.6.sh

Hecho lo anterior se definire el Makefile que utilizaremos.Si vamos a utilizar la librería en espacio de usuario hacemos

[usuario@localhost parapin-1.5.0-beta1]$ make

Una vez hecho o anterior solo falta realizar la instilación:

[usuario@localhost parapin-1.5.0-beta1]$ su
Contraseña
[root@localhost parapin-1.5.0-beta1]# make install

En el caso de que deseemos usar el modulo de kernel utilizamos make all y make allinstall.

jueves, 18 de enero de 2007

PARAPIN, una librería para controlar el puerto paralelo en linux.

En ocasiones cuando uno quiere realizar un proyecto de control o de monitoreo de un dispositivo X por medio de una PC lo mas conveniente es hacer uso del puerto paralelo, Parapin es una librería con la cual podemos realizar el control del puerto paralelo de una forma sencilla y rápida. Parapin consta de dos partes: una es una librería con la cual podemos programar en C en el espacio de usuario, y la otra parte es un modulo del kernel para poder manipular en forma avanzada el puerto paralelo.

Con Parapin podemos manipular desde un solo pin hasta todo el conjunto de pines del puerto como E/S, con la excepción de los pines 10, 11, 12, 13 y 15. En el caso de los pines 2 al 9 solo se pueden configurar todos juntos, es decir, no podemos hacer que el pin 2 sea una entada y el 3 una salida.

Pagina de Parapin

lunes, 15 de enero de 2007

Mas del puerto paralelo en linux.

Si quieren saber mas de la programación del puerto paralelo en linux, visiten esta pagina.