Autor Tema: COMUNICACION ENTRE PICS POR MEDIO DE MODULO RF  (Leído 2098 veces)

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

Desconectado osjovi1

  • PIC10
  • *
  • Mensajes: 4
COMUNICACION ENTRE PICS POR MEDIO DE MODULO RF
« en: 26 de Abril de 2011, 04:42:34 »
Buenas a todos,  necesito comunicar dos pic por medio de modulos rf, los modulos que estoy usando son: tecnologia LINX TXM-916-ES y RXM-916-ES, el pic 16f873lo tengo programado en C, y me gustaria saber que rutinas debo usar para la sustitucion de los encoders.  Para no tener que usar un codificador y decodificador.
Gracias.

Desconectado wannaky

  • PIC12
  • **
  • Mensajes: 92
Re: COMUNICACION ENTRE PICS POR MEDIO DE MODULO RF
« Respuesta #1 en: 17 de Mayo de 2011, 14:44:18 »
Hola, a mi ahora me tienen que llegar un par de módulos para comunicar dos pics, y lo voy a programar sin los encoders... Creo que no hay ninguna rutina en C para lo que tu quieres, te lo vas a tener que hacer tu...

Tendrás  que descartar tú los datos que no sean tuyos mediante soft, porque a tu receptor le va a entrar todo lo que haya por el aire con esa frecuencia, tendrás  que codificarte cada dato de forma que puedas discriminar...

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Re: COMUNICACION ENTRE PICS POR MEDIO DE MODULO RF
« Respuesta #2 en: 17 de Mayo de 2011, 22:19:33 »
Hola. puedes probar primero comunicando los 2 PIC por el módulo usart y luego interrumpes la línea de comunicación y pones los módulo LINX, debe funcionar igual, puede que aparezca ruido por esto debes emviar un dato bien codificado.

Saludos.

Desconectado alanitotkd

  • PIC10
  • *
  • Mensajes: 20
Re: COMUNICACION ENTRE PICS POR MEDIO DE MODULO RF
« Respuesta #3 en: 06 de Junio de 2011, 02:28:24 »
hola que tal el semestre pasado hicimos esto mismo con unos modulos de Rf te dejo el codigo tanto del TX como el RX espero y te funcione

TX
////////////////////////////////////////////////
#include "TX_4550.h"
#byte portb = 0xF81


int8 dat1, dat2=0xFF,i,j;
int16 data;
int32 send[18];
int32 start[3]={50,50,50};
char data1[5];


void main()
{

set_tris_b(0xFF);

while (TRUE)
{   
   i=0;
   j=0;

   dat1=portb;
   data= MAKE16(dat2,dat1);
   itoa(data,10,data1);
     
   for(i=0;i<=2;i++)
   {
      send=start;
   }
   for (i=0;i<=4;i++)
   {
      send[i+3]=data1;
   }
   for(i=0;i<=4;i++)
   {
      send[i+8]=data1;
   }
   for(i=0;i<=4;i++)
   {
      send[i+13]=data1;
   }
   
   for (j=0;j<=17;j++)
   {
   printf ("%c",send[j]); 

   }

}
}



RX
//////////////////////////////////////////////////////
#include "RX_4550.h"
#include <string.h>


#use standard_io(b)
#define ready  PIN_B7


int i,j,k,x,y,z,d;
int32 start[3]={'A','B','C'};
int32 dato[18];
int32 bandera[3];
int32 dat1[5];
int32 dat2[5];
int32 dat3[5];


void main()
{
set_tris_b(0xFF);
  while(TRUE)
  {   
   d=0;
   do
   {
      dato[d]=getc();
      if(dato[d]=='A')
      {
         dato[0]= 'A';
         d=0;
      }
      d++;
  }
 
  while(d<=17);
    //copia la bandera de inicio del dato recibido
      for(k=0;k<=2;k++)
      {
         bandera[k]=dato[k];
      }
      //copia en dat1 del dato recibido
      for(x=0;x<=4;x++)
      {
         dat1
  • =dato[x+3];

      }
      //copia en dat2 el resto de la bandera
      for(y=0;y<=4;y++)
      {
         dat2[y]=dato[y+8];
      }
      for(j=0;j<=4;j++)
      {
         dat3[j]=dato[j+13];
      }
     
      if(!strcmp(bandera, start))     
      {   
     
         if (!(strcmp(dat1,dat2))&&!strcmp(dat1,dat3))
         {
         OUTPUT_HIGH(ready);
         
           for(z=0;z<=4;z++)
           {
              printf("%c",dat3[z]);

           } 
          printf("\r");

         }
      }       
      else
      {
         printf("\f");
         printf("Esperando...");
         OUTPUT_LOW(ready); 
      }
   }
}





 

anything