Autor Tema: FIFO 16f876 (CCS)  (Leído 2154 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
FIFO 16f876 (CCS)
« 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.

Desconectado pacalaconcurso

  • PIC24F
  • *****
  • Mensajes: 718
RE: FIFO 16f876 (CCS)
« Respuesta #1 en: 16 de Marzo de 2004, 01:42:00 »
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();
}

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: FIFO 16f876 (CCS)
« Respuesta #2 en: 16 de Marzo de 2004, 11:12:00 »
Gracias pacala voy a probar a ver luego os cuento

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: FIFO 16f876 (CCS)
« Respuesta #3 en: 16 de Marzo de 2004, 11:36:00 »
Ya funciona ahora me voy a poner con los strings a ver que tal...
Un saludo desde Málaga city

Desconectado pacalaconcurso

  • PIC24F
  • *****
  • Mensajes: 718
RE: FIFO 16f876 (CCS)
« Respuesta #4 en: 16 de Marzo de 2004, 13:08:00 »
Oye Biot, es una pena que no uses la interrupcion de RX para recibir tus datos

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: FIFO 16f876 (CCS)
« Respuesta #5 en: 19 de Marzo de 2004, 23:44:00 »
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


 

anything