TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Modulay en 15 de Marzo de 2004, 20:27:00
-
Hola amigos.
Estoy intentando transmitir un byte entre dos 16f876 usando el puerto serie de forma asíncrona.La cuestión es que he conseguido que el carácter o los caracteres lleguen a su destino para representarlos en un display,pero a costa de enviar siempre dos caracteres más que se pierden a saber por donde.Les pasteo el código y así lo ven mejor:
/*************
* TRANSMISOR *
**************/
#include <16F876.h>
#use delay (clock=4000000)
#use rs232 (BAUD=9600,XMIT=PIN_C6,RCV=PIN_C7,BITS=8)
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP
void fin_transmision()
{
putc("0");
putc("0");
}
void main()
{
char dato = "A";
putc(dato);
fin_transmision();
}
/***********
* RECEPTOR *
************/
#include <16F876.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT
#use delay (clock=4000000)
#use rs232 (BAUD=9600,XMIT=PIN_C6,RCV=PIN_C7,BITS=8)
#include <lcd.c>
void main()
{
char dato;
char *ptr = " recibido...";
lcd_init();
dato = getc();
lcd_putc(dato);
printf(lcd_putc,ptr);
}
Si no recurro a mandar esos dos caracteres de más no consigo sacar nada por el lcd.
¿Acaso debe estar lleno el FIFO del receptor para poder sacar el contenido de RCREG usando las funciones getc(),putc(),etc...?
Una ayudita por favorrrrrr que llevo dos días probando y probando y no hay manera.
-
pruieba a poner en el emisor un retardo para dejar tiempo al receptor a poner el mensajito en la pantalla, si no imagino que desbordaras el buffer al estar el emisor mandando datos a toda leche
/*************
* TRANSMISOR *
**************/
#include <16F876.h>
#use delay (clock=4000000)
#use rs232 (BAUD=9600,XMIT=PIN_C6,RCV=PIN_C7,BITS=8)
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP
void fin_transmision()
{
delay_ms(100);
}
void main()
{
char dato = "A";
putc(dato);
fin_transmision();
}
-
Gracias pacala voy a probar a ver luego os cuento
-
Ya funciona ahora me voy a poner con los strings a ver que tal...
Un saludo desde Málaga city

-
Oye Biot, es una pena
que no uses la interrupcion de RX para recibir tus datos

-
Tienes razón pacala (he vuelto jejej).Creo que mejor voy a hacer las cosas bien,pero lo que no tengo muy claro y a ver si me podeis sugerir algo es qué tipo de programa sería bueno implementar para sacarle jugo y asimilar bien el funcionamiento de este protocolo.Venga que seguro que tendréis por ahí alguno.Pistillassss,sugerenciasss




