TODOPIC
FORO TÉCNICO => Telefonía, GPS y Microcontroladores => Mensaje iniciado por: kricena en 07 de Marzo de 2012, 12:28:32
-
mi problema es el siguiente ;intento capturar una trama que me envia el gps para luego mostarrala en un lcd y en programa hyperterminal para eso uso un pic16f886 que solo cuenta con un modulo usart me han dicho que en ccs puedo "crear" un usart adicional pero nose como es...
saludos
-
Buenas kricena, si que se puede, mira como lo hago yo con un 16F877
#use RS232 (baud=9600, bits=8, parity=N, xmit=PIN_C6, rcv=PIN_C7,STREAM=PUERTO_PC) // Usart por hardware
#use RS232 (baud=4800, bits=8, parity=N, xmit=PIN_B1, rcv=PIN_B0,STREAM=PUERTO_RF,FORCE_SW) //Usart por software
la clave está en utilizar la interrupción externa configurada por flanco de bajada como pin de RX de la usart por software, de forma que cuando se reciba el starbit de la comunicación, entre en la rutina de la interrupción...
te adjunto la interrupción que yo utilizo tanto por la usart de hardware como la de software.
Interrupción usart hardware
#int_RDA // Recepción del puerto PC
void RDA_isr()
{
if (kbhit(PUERTO_PC))
{
dato_rx=fgetc(PUERTO_PC);
if(dato_rx==0x5A) //mira si el dato recibido es una 'Z' de final de trama
{
flag_pc=1;
cadena_rx[incremento_cadena]=dato_rx;
incremento_cadena=0;
}
else
{
cadena_rx[incremento_cadena]=dato_rx;
incremento_cadena++;
}
}
}
Interrupción usart por software
#int_EXT //Recepción del puerto RF
void ext_isr()
{
dato_rx=fgetc(PUERTO_RF);
if(dato_rx==0x5A) //mira si el dato recibido es una 'Z' de final de trama
{
cadena_rx[incremento_cadena]=dato_rx;
incremento_cadena=0;
flag_rf=1;
}
else
{
cadena_rx[incremento_cadena]=dato_rx;
incremento_cadena++;
}
}
y las configuraciones siguientes...
SET_TRIS_B(0x01);//b0->in, b1->out
SET_TRIS_C(0x80);//c6->out, c7->in
enable_interrupts(INT_RDA); //Interrupción USART1
enable_interrupts(INT_EXT); //Interrupción externa USART2
ext_int_edge(H_TO_L); //Flanco de bajada para int. ext
enable_interrupts(GLOBAL); //Habilitarmos interrupciones
Si no me he explicado bien me comentas... espero que te sea de utilidad...
un saludo,
Wannaky
-
por cierto, hay muchas variables que son de mi programa, que a ti no te van a hacer falta... pero el concepto es ese...
Saludos,
Wannaky