Autor Tema: COMUNICACION USART ENTRE DOS PIC"S  (Leído 2090 veces)

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

Desconectado gazu_n

  • PIC10
  • *
  • Mensajes: 13
COMUNICACION USART ENTRE DOS PIC"S
« en: 23 de Febrero de 2006, 22:59:00 »
hola amigos estoy haciendo un proyecto donde requiero comunicacion USART entre 2 pics 16f627a y 16f877a, pero no se que pasa y no recibe nada, ayudas por favor, aqui les mando los codigos:

DEL TX:

#include <16F627A.h>
#fuses INTRC_IO,NOWDT,NOPROTECT,PUT,NOLVP,BROWNOUT,NOCPD
#use delay(clock=4000000,RESTART_WDT)
#use RS232(BAUD=2400, BITS=8, PARITY=N, XMIT=PIN_B2, RCV=PIN_B1, RESTART_WDT)

#byte TRISA=0x85               // Definicion TRISA
#byte CMCON=0x1F                 // Definicion CMCON

int8 n=0x29;
int8 n1=0x55;

//int8 i,j;

//--------------------------------------------------------
void enviar_trama()
{
   delay_ms(1000);
   putc(n);
   delay_ms(500);
   putc(n1);
   delay_ms(500);
}


//--------------------------------------------------------
#INT_EXT
Ext_Int_Handler()
{
   disable_interrupts(INT_EXT);  // Deshabilita interrupcion EXT
   enviar_trama();
   delay_ms(25);                 // Rebote de contactos
   enable_interrupts(INT_EXT);   // Habilita interrupcion EXT
}

//--------------------------------------------------------
void main()
{
   CMCON=0x07;                   // Comparadores OFF y pines como I/O
   TRISA=0xFE;                   // PORTA entrada
   ext_int_edge(H_TO_L);
   enable_interrupts(INT_EXT);   // Habilita interrup. EXT
   enable_interrupts(GLOBAL);    // Habilita interrup. GLOBAL
   sleep();
}


DEL RX:

#include <16F877A.h>
#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP,BROWNOUT,NOCPD,NOWRT
#use delay(clock=4000000,RESTART_WDT)
#use RS232(BAUD=2400, BITS=8, PARITY=N, XMIT=PIN_C6, RCV=PIN_C7,RESTART_WDT)

#byte TRISC=0xC0        
#byte port_c=7

int1 cont1;

int8 i;
int8 trama;
int8 trama1;//=0b00000000;

#INT_RDA
void serial_isr()
{
 disable_interrupts(INT_RDA);
 trama=getc();
 if(trama==0x29)
 {
  output_high(PIN_B6);
  delay_ms(250);
  output_low(PIN_B6);

  trama1=getc();
  if(trama1==0x55)
  {
   output_high(PIN_B7);
   delay_ms(250);
   output_low(PIN_B7);
  }
 }
 enable_interrupts(INT_RDA);
}

#INT_EXT
Ext_Int_Handler()
{
 disable_interrupts(INT_EXT);
 if(cont1==0)
 {
   for(i=0;i<=7;i++)
   {
    if(bit_test(trama,i))
      {output_high(PIN_B5);}
    else
      {output_low(PIN_B5);}
    delay_ms(1000);
   }
   cont1=1;
   output_low(PIN_B5);
 }
 else
 {
   for(i=0;i<=7;i++)
   {
    if(bit_test(trama1,i))
      {output_high(PIN_B5);}
    else
      {output_low(PIN_B5);}
    delay_ms(1000);
   }
   cont1=0;
   output_low(PIN_B5);
 }
 enable_interrupts(INT_EXT);
}

void main()
{
 output_high(PIN_E0);
 output_low(PIN_E1);

 ext_int_edge(H_TO_L);
 enable_interrupts(INT_EXT);   // Habilita interrup. EXT
 enable_interrupts(INT_RDA);   // Habilita interrup. dato recibido en USART
 enable_interrupts(GLOBAL);    // Habilita interrup. GLOBAL

 cont1=0;
 while(1);
}

Desconectado grouchy

  • PIC10
  • *
  • Mensajes: 39
RE: COMUNICACION USART ENTRE DOS PIC"S
« Respuesta #1 en: 24 de Febrero de 2006, 10:42:00 »
Hola.
Hay varias cosas que pude checar en tu código.
Primero, no necesitas deshabilitar las interrupciones cuando las estas atendiendo, porque automaticamente el compilador genera el código para hacerlo por ti.
Segundo,  en el código del TX al utilizar la directiva #use RS232, no se si estas oucpando el UART del PIC, porque si NO te falta agregar FORCE_SW, por cierto seria bueno que ocuparas ERRORS en la directiva de #use RS232 del RX, para verificar si hubo errores en la transmision...............

Desconectado gazu_n

  • PIC10
  • *
  • Mensajes: 13
RE: COMUNICACION USART ENTRE DOS PIC"S
« Respuesta #2 en: 28 de Febrero de 2006, 11:27:00 »
gracias por la ayuda, ya pille el error era problema de hardware, de todas formas muchas gracias y estaremos charlando sobre otros tema

Desconectado gazu_n

  • PIC10
  • *
  • Mensajes: 13
RE: COMUNICACION USART ENTRE DOS PIC"S
« Respuesta #3 en: 02 de Marzo de 2006, 17:48:00 »
ahora con este codigo, como podria hacer para que se comuniquen estos pics via RF a traves de los modulos TLP434 y RLP434, alguien tiene idea sobre esto???, porque yo no puedo por ninguna forma, no se me ocurre nada

ayudas por favor


 

anything