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");
sábado, 27 de enero de 2007
Usando Parapin
Etiquetas:
linux,
parapin,
puerto paralelo
Suscribirse a:
Comentarios de la entrada (Atom)
1 comentario:
¿Como puedo instalar el parapin en el Tinycore version 3.0.3?
Publicar un comentario