Autor Tema: comunicación de 2 pic por RS232  (Leído 5751 veces)

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

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 405
comunicación de 2 pic por RS232
« en: 02 de Noviembre de 2009, 21:26:16 »
hola bueno hace un tiempo atras estuve preguntando como hacer la comunicacion de dos pic mediante la comunicacion RS232, el cual entendi, pero ahora estoy teniendo problemas con él y me di cuaenta ya en el circuito impreso, les comento, los 2 pic se envian datos, todo esto funciona bien, los datos que se envian es que el master ve su puerto B y dependiendo como esta este se lo envia al esclavo, en cuanto al esclavo le envia al master un 0 o 1 dependiendo de la entrada  C0. bueno todo funciona bien asta que el master tiene su puerto B casi todo en 1 (solo faltandole 2 o más) osea 00111111 por que en este momento se queda pegada la comunicacion y no hace nada el esclavo, por que deveria el esclavo reflejar en el puerto B tambien lo que tiene el master, pero no hace nada cuando le cambio o pongo todo el puerto B del master a cero este ya no pesca (esclavo) y segue manteniendo todo el puerto B en 1. bueno espero que m pueda nechar una manito en mi codigo por favor.
les dejo el codigo del master y del esclavo.

master:
Código: [Seleccionar]
#include <16F873a.h>
#FUSES NOWDT, XT, NOPUT, NOPROTECT, BROWNOUT, NOLVP, NOCPD, NOWRT
#use delay (clock=4000000) //Fosc=4Mhz
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7)
#include <stdlib.h>
#use standard_io(C)

int16 x;
void main(void)
{
 set_tris_B(0xFF);
 while(true){
  if(kbhit()){
   activado=GETC();  //guarda el valor enviado por el RS-232
}
   x=input_B();      //visualisa todo el puerto B y lo guarda en x
   putc(0x00 + x);   // enviamos por la RS232 lo que tenemos en el puerto B mediante la vatiable x
 }
}

esclavo:
Código: [Seleccionar]
#include <16F873a.h>
#device adc=10
#FUSES NOWDT, HS, NOPUT, NOPROTECT, BROWNOUT, NOLVP, NOCPD, NOWRT
#use delay (clock=20000000) //Fosc=20Mhz
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7)
#use standard_io(C)
#use standard_io(A)

int16 lectura;
int a;

char i=0;
char flag=0,var=20;   //variables globales

#int_RDA    //interrupcion para la resepcion del master
void RDA_isr()
{
if(kbhit()){
 lectura=GETC();  //guarda el valor enviado por el RS-485
}}


///LLAMADA FUNCION INTERRUPCION
#INT_TIMER0
void interrupcion()
{
   if(flag>var){      //¿ya es 1 segundo?
      var--;         //SI -> decremento var...
      if(var<18)
         var=20;      //...ajuste fino de 1s
      flag=0;         //reset flag para contar 1s
            if(i>2){                     //¿se ha mostrado digito 9?
            i=0; //SI -> restaura valor indice(para mostrar digito 0)
                   }
      else{         //(*) NO -> incrementa i
         i++;}
      }
   set_timer0(61);      //reset TMR0
   flag++;            //incremento variable flag
}

void main(void)
{
   set_tris_B(0x00);
   enable_interrupts(INT_TIMER0);            //interrupcion TIMER0 activada
   setup_counters(RTCC_INTERNAL,RTCC_DIV_256);   //configuracion interrupcion TMR0
   set_timer0(61);                        //carga TMR0

   enable_interrupts(GLOBAL);      //todas las interrupciones activadas
   enable_interrupts(INT_RDA);     //interrupcion INT_RDA activada. comunicacion RS-485
 
while(TRUE){
  
  if(input(PIN_C0)){//mando senal al master
   if(i==2){putc(a=1);}
   output_high(PIN_C1);
   output_low(PIN_C2);}
   else{           // esta desactivada
   if(i==2){putc(a=0);}
   output_low(PIN_C1);
   output_high(PIN_C2);}  

   output_b(lectura); //avilito puerto b como resepcion de comunicacion con master
  }  
  
}
« Última modificación: 05 de Noviembre de 2009, 01:09:55 por japifer_22 »

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 405
Re: comunicación de 2 pic por RS232
« Respuesta #1 en: 03 de Noviembre de 2009, 23:07:59 »
hola bueno me di cuenta que todo va bien pero lo que esta dando problema me da la impresion que es el master con el pin 26 osea el puerto B5 e provado todos los demas y me funciona bien ensiendo este y me da problema, pero de todas formas no descarto que pueda ser tambien el esclavo, bueno alguna sugenrencia al respecto ?????? gracias

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 405
Re: comunicación de 2 pic por RS232
« Respuesta #2 en: 04 de Noviembre de 2009, 00:09:33 »
suuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu me acavo de dar cuenta que el error estava entre la silla y el circuito  :mrgreen: despues de tanto armar y desarmar, la cosa estava buena  :5] jajajajajaja puffff pero en fin.................

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: comunicación de 2 pic por RS232
« Respuesta #3 en: 04 de Noviembre de 2009, 10:59:03 »
Que bueno, esas cosas siempre pasan.

Saludos
El papel lo aguanta todo

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 405
Re: comunicación de 2 pic por RS232
« Respuesta #4 en: 05 de Noviembre de 2009, 01:06:55 »
hola amigos otra vez.. me esta matando este programita que estoy haciendo  :5] por que pensé que era el hardware pero no, ósea me funciono por un periodo muy corto, pero me sigue dando error. el error me proviene del puerto B para ser mas especifico el B5, pongo en 1 lógico este pin y se me vuelve loco el pic. por que lo que ago es que el master le envié al esclavo  el estado de los pines del puerto B, en este todo funciona bien excepto el B5 que me anda mal, bueno si mantengo este en bajo los demás trabajan bien ósea llegan al esclavo sano y salvo  :mrgreen:, pero pongo en 1 como bien dije mas arriba este pin y el esclavo para de leer el puerto B del master (ósea como que se pierde la comunicación), pero ago otras cosas en el esclavo y funciona bien, esto mienta el B5 esta en 1, pero el master queda sin hacer nada, y por ende se pega todo y pierdo la comunicación absoluta, por que se deberá esto ????. bueno alguna idea alrespecto, por favor nesesito ayuda en esto ya que de verdad e estado luchando con esto hace vastante pero no puedo sacar la pana de esto  :5], reitero su ayuda.

Desconectado darck_khronos

  • PIC18
  • ****
  • Mensajes: 493
Re: comunicación de 2 pic por RS232
« Respuesta #5 en: 05 de Noviembre de 2009, 10:19:46 »
te paso uno que hice hace tiempo


Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 405
Re: comunicación de 2 pic por RS232
« Respuesta #6 en: 06 de Noviembre de 2009, 04:07:45 »
hola darck_khronos saves e provado tu programa y me pasa lo mismo osea si pongo el B5 del master en alto se pierde la comunicacion del master y del esclavo... sera que mi PCB esta malo ????? tu implementaste esto ????? en PCB ?


por otro lado y aprobechando este post, como puedo visualizar lo que esta en el puerto B del master, en una LCD del esclavo ???? osea si yo tengo en master: esto del B0 al B7 10010101, como lo puedo ver de igualforma en la LCD del esclavo ???

Desconectado ramirez

  • PIC16
  • ***
  • Mensajes: 195
Re: comunicación de 2 pic por RS232
« Respuesta #7 en: 07 de Enero de 2010, 08:50:38 »
Hola a todos, estoy muy interesado en este hilo, ya que deseo empezar a aprender la comunicacióin entre 2 pics. He descargado el archivo que nos ha dejado nuestro amigo darck_khronos, pero tengo una versión anterior  que no me permite verlo en isis. Agradecería enormemente, y si es posible, que alguién lo pasara a una versión anterior.

De nuevo gracias a todos por vuestra colaboración.

Desconectado ramirez

  • PIC16
  • ***
  • Mensajes: 195
Re: comunicación de 2 pic por RS232
« Respuesta #8 en: 07 de Enero de 2010, 11:51:36 »
Ya  he conseguido abrir el fichero. De todas formas, gracias.