TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: calopsia en 22 de Enero de 2011, 02:59:29
-
buenas gente tengo una duda... muy existencial..
resulta que he conectado un teclado de 4x3 usando el puerto b con los pullups activados..
el teclado funciiona perfectamente..
ahora lo que necesito hacer es enviar los datos de las teclas pulsadas por rs232,,
como este pic tiene uart por hardware, en el puerto b tmb
mas precisamente TX --> b2 , y RX - b1
cuando pongo la line de fuses use rs232 y lo seteo como va... el teclado ya no me funciona.. y si intento usar envio y recepcion por otro pin me envia basura ...
alguien me puede decir si se puede usar doblemente una pata? o alguna solucion
saludos!!!
-
buenas gente tengo una duda... muy existencial..
resulta que he conectado un teclado de 4x3 usando el puerto b con los pullups activados..
el teclado funciiona perfectamente..
ahora lo que necesito hacer es enviar los datos de las teclas pulsadas por rs232,,
como este pic tiene uart por hardware, en el puerto b tmb
mas precisamente TX --> b2 , y RX - b1
cuando pongo la line de fuses use rs232 y lo seteo como va... el teclado ya no me funciona.. y si intento usar envio y recepcion por otro pin me envia basura ...
alguien me puede decir si se puede usar doblemente una pata? o alguna solucion
saludos!!!
Ok mira lo que necesitamos es lo siguientes:
En que lenguaje programas
Puedes forzar Tx y Rx por Software para mandarlo por otro puerto
y si pudes usar un puerto para leer y escribir pero tendiras que utilizar un buffer para no tener choques de datos
-
hola si.. uso css como lenguaje..
como seria en ambos casos-.. en realidad en el fuse #use232 yo cambie los pines y si mando datos pero lo veo como basura nose porque.. son caracteres raros
-
hola si.. uso css como lenguaje..
como seria en ambos casos-.. en realidad en el fuse #use232 yo cambie los pines y si mando datos pero lo veo como basura nose porque.. son caracteres raros
Hay que ver tu codigo para saber como le estas mandando la informacion a tu terminal
-
#include <16F628.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES ER //External resistor osc, with CLKOUT
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOMCLR //Master Clear pin used for I/O
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES RESERVED //Used to set the reserved FUSE bits
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_A0,rcv=PIN_A1,bits=8,restart_wdt)
#include <KBD.C>
#int_RDA
void RDA_isr(void)
{
}
#int_TIMER0
void TIMER0_isr(void)
{
}
void main()
{
port_b_pullups(TRUE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
kbd_init();
enable_interrupts(INT_RDA);
enable_interrupts(INT_TIMER0);
enable_interrupts(GLOBAL);
// TODO: USER CODE!!
int i;
char k;
printf("holas");
delay_ms(500);
while(true)
{
k=kbd_getc();
if(k!=0)
{
if(k=='1')
{
//output_toggle(pin_a0);
printf("%c",k);
}
if(k=='9')
{
printf("%c",k);
}
}
}
}
-
Porque no intentas migrar esos dos pines del teclado que son para la USART al puerto A, por medio de una estructura, así te quedarían libres para la comunicación, solo necesitarias ponerles unas pullups y ya funcionarian adecuadamente la comunicación y el teclado sin interferencia.
-
eso habia pensado tmb.. pero no tengo mucha idea acerca de cambiar estos pines al puerto a.. no se como modificar la libreria kbd.c
me podrias dar una ayuda.. o guiarme como lo puedo hacer???
muchas gracias
-
Si tu teclado es de 4x3 y si lo unico que necesitas hacer es mandar datos, puedes dejar libre solamente el pin de RT (PIN_B2 como dices) y mudarlo a B0 que no se está usando aquí, prueba cambiando las partes del #define y conectando el pin del teclado que estaba en B2 dependiendo del teclado que tengas, rojo o azul, ahora en B0, aver si te funciona.
#ifdef blue_keypad ///////////////////////////////////// For the blue keypad
#define COL0 (1 << 0) //Antes estaba #define COL0 (1 << 2)
#define COL1 (1 << 3)
#define COL2 (1 << 6)
#define ROW0 (1 << 4)
#define ROW1 (1 << 7)
#define ROW2 (1 << 1)
#define ROW3 (1 << 5)
#else ////////////////////////////////////////////////// For the black keypad
#define COL0 (1 << 5)
#define COL1 (1 << 6)
#define COL2 (1 << 7)
#define ROW0 (1 << 1)
#define ROW1 (1 << 0) /Antes estaba #define ROW1 (1 << 2)
#define ROW2 (1 << 3)
#define ROW3 (1 << 4)
-
#define COL0 (1 << 5)
#define COL1 (1 << 6)
#define COL2 (1 << 7)
#define ROW0 (0 << 0) // Este seria el pin_a0?????
#define ROW1 (1 << 0) // este el es pin_b0
#define ROW2 (1 << 3)
#define ROW3 (1 << 4)
lo tengo asi.. y funciona el envio pero ahora no funciona el teclado.. jajaja
que puede estar mal.. el teclado es el tipico de 4x3 en proteus sale como keypad phone
conectado al puerto b..