sábado, 10 de julio de 2010

Control motor PaP Bipolar con CCS e "interrupcion" por USART programado en Linux

Como es sabido el uC PIC16F84A no cuenta con USART, sin embargo para controlar un motor de pasos bipolar en posición bidireccional, podemos usar un pequeño artilugio para hacer responder a una interrupcion al PIC, usando el protocolo rs232

bueno el codigo fuente es el siguiente

#include <16F84a.h>

#fuses XT,NOWDT

#use delay (clock=4000000)

//#use fixed_io(b_outputs=pin_b3)

//#use fixed_io(a_outputs=pin_a0,pin_a1,pin_a2,pin_a3)



#use rs232(xmit=PIN_B3,rcv=PIN_A4,bits=8)



//variables globales

int1 flagA=FALSE, flagB=FALSE;

int value=50;

//Interrupciones

#INT_EXT

void int_rb0(void){

char letra;

disable_interrupts(GLOBAL);

delay_ms(10);

letra=getc();

letra= toupper(letra);

switch(letra){

case 'D':printf("Derecha\r\n");

flagA=TRUE;

flagB=FALSE;

break;

case 'I':printf("Izquierda\r\n");

flagA=FALSE;

flagB=TRUE;

break;

}

enable_interrupts(GLOBAL);

}



//prototipos

void adelante(void);

void atras(void);







main(){

enable_interrupts(GLOBAL);

ext_int_edge(L_TO_H); //interrupcion en flanco de bajada

enable_interrupts(int_ext); //habilitada interrupcion Externa RB0

printf("Control de\n\r Motor de pasos Bipolar");

while(1){

if(flagA==TRUE)

adelante();

if(flagB==TRUE)

atras();

};

return 0;

}



void adelante(void){





Output_A(input_A()|0x05);

delay_ms(value);

Output_A(input_A()|0x06);

delay_ms(value);

Output_A(input_A()|0x0A);

delay_ms(value);

Output_A(input_A()|0x09);

delay_ms(value);

}





void atras(void){

Output_A(input_A()|0x09);

delay_ms(value);

Output_A(input_A()|0x0A);

delay_ms(value);

Output_A(input_A()|0x06);

delay_ms(value);

Output_A(input_A()|0x05);

delay_ms(value);

}


Aqui el circuito

Zinjal y PSeInt interesante

Saludos a todos, esta ocasion presento a ustedes algo que me encontre en la red, buscando informacion sobre, si existía, un software que pudiera ser capaz de hacer el diagrama de flujo a partir de el codigo fuente, y pues fui a dar con estos dos proyectos de la Universidad Nacional del Litoral en Santa Fe, Argentina, los cuales se me hacen muy interesantes, ya que PSeInt, es un programa que ayuda a los iniciados en programación, específicamente en algoritmia, y el segundo Zinjal es un IDE para lenguaje C/C++ que al igual que el primer proyecto pueden generar diagramas de Flujo a partir de fuente, lo que te da una mejor panorámica, en mi caso, he probado Zinjal usando codigo para CCS y pues si funciona muy bien, aun me falta probar con SDCC y con pic-gcc, pero supongo que no hay ningun problema.

Les dejo los links de las páginas de los autores:
http://zinjai.sourceforge.net/
http://pseint.sourceforge.net/

martes, 6 de julio de 2010

impresora xerox phaser 3117 en slackware

Bien, hasta ahora Slackware 13.1 me ha funcionado muy bien como maquina de escritorio, por el momento tuve un problema al instalar la impresora Xerox Phaser 3117, incluso baje el driver del fabricante pero no funciono, debido a la version del cups, pero eso, no fue problema, ya que buscando en la red una solucion para Ubuntu, me funciono muy bien en Slackware, y es la de instalar el driver para una impresora Samsumg. El vinculo al hilo es el siguiente
http://ubuntuforums.org/showthread.php?t=206009
Ya que estas ahi, solo baja el driver, descomprime con
tar zxvf Samsumg---XXXX.gz entra al menu System (XFCE) -- Impresoras, dar de alta una nueva impresora --- password de root --- dar clic en la impresora detectada ---- Seleccionar la opcion "Provide PPD file --- examinar --- ir a la carpeta donde descomprimiste el archivo -- aceptar -- imprimir la `pagina de prueba.

Bueno a grosso modo estos son los pasos para dejar funcionando esta impresora en Slackware 13.1