Autor Tema: RS-485 problema de comunicación entre PICs (HSERIN,HSEROUT)  (Leído 7442 veces)

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

Desconectado Dicxio

  • PIC10
  • *
  • Mensajes: 2
Re: RS-485 problema de comunicación entre PICs (HSERIN,HSEROUT)
« Respuesta #15 en: 03 de Julio de 2009, 09:45:46 »
Hola Ra2ven:

          Disculpas las demoras en mi respuesta, si aún no has resuelto el conflicto, aqui te dejo un breve código que muestra como realizar la comunicación.

Pic 1
Código: [Seleccionar]
#include <16F876.h>
#device adc=8

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES HS                       //High speed Osc (> 4mhz)
#FUSES NOPUT                    //No Power Up Timer
#FUSES PROTECT                  //Code protected from reads
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected
#FUSES NODEBUG                  //No Debug mode for ICD

#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)

char r;


#int_RDA
void  RDA_isr(void)
{
  if(kbhit()){
    r=getch();
    }
}

void main()
{
   enable_interrupts(global);
   enable_interrupts(int_rda);   
   set_tris_A(0xF0);
   output_bit(pin_c0,0);
 
inicio:
if (input(Pin_A4))
   {
      output_bit(pin_c0,1);
      putc('d');
      delay_ms(1);
      output_bit(pin_c0,0);
   }
   delay_ms(500);
Goto inicio;
}

El código del Pic 2
Código: [Seleccionar]
#include <16F876.h>
#device adc=8

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES HS                       //High speed Osc (> 4mhz)
#FUSES NOPUT                    //No Power Up Timer
#FUSES PROTECT                  //Code protected from reads
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected
#FUSES NODEBUG                  //No Debug mode for ICD

#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)

char r;

#int_RDA
void  RDA_isr(void)
{
  if(kbhit()){
    r=getch();
    }
}

void main()
{
   enable_interrupts(global);
   enable_interrupts(int_rda);
   output_bit(pin_c0,0);
   r='b';
   
inicio:

 if (r=='d')
   {
      output_bit(pin_c0,1);
      printf("L");
      delay_ms(1);
      output_bit(pin_c0,0);
      r='b';
   }
Goto inicio;
}

Y te adjunto el proyeco en el Proteus.

Cualquier duda sobre el código, solo consultalo.

Saludos cordiales
Ing. Rodrigo Ramirez

Desconectado jansuini

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 566
Re: RS-485 problema de comunicación entre PICs (HSERIN,HSEROUT)
« Respuesta #16 en: 03 de Julio de 2009, 12:36:35 »
Hola:
No he estado conectado desde el principio con este tema ,pero hasta donde veo van un par de aclaraciones:
1 -al max 485 hay que habilitarlo para transmitir antes de "transmitir" y luego pasarlo a modo de recipción .
2 -En transmisiones sincronicas ,por un lado se transmiten datos y por otro se transmite el clock ,por eso es sincronica ,para transmiir con un solo 485 en cada pic ,se hace en modo asincrono.

Saludos
Jorge


 

anything