Autor Tema: comunicacion rs232 entre pics no hace nada  (Leído 2041 veces)

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

marco_recargado

  • Visitante
comunicacion rs232 entre pics no hace nada
« en: 30 de Enero de 2007, 17:34:06 »
Hola Tengo dos pic16f877 y los quiero comunicar entre si , hice un programa para visualizar los datos que manda cada en el puerto b pero no me funciona , les pongo el programa para ver si pueden ver algun error de antemano gracias


este el programa para uno de ellos

#include <16F877A.h>                ///   libreria para el manejo del pic16f877a
#use delay(clock=20000000)          ///   declara el la frecuencia del cristal
#fuses xt,NOWDT,NOPUT,NOLVP,NOBROWNOUT,NOWRT,
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

#byte portb = 6


void main()
{
int tx,rx;

set_tris_b(0x00);                     ///   declara puerto b como salidas
tx=0;
portb=0x00;
while(1)
{
if(kbhit())
{
rx=getc();
portb=rx;
}
tx=tx+1;
putc(tx);
}
}




este es para el otro:



//////PROGRAMA DE EJEMPLO DE COMUNICACION RS232 ENTRE PICS ///////////////////
////////LA SEÑAL QUE RECIBE LA MANDA A PUERTO B/////////////////////////////////

#include <16F877A.h>                ///   libreria para el manejo del pic16f877a
#use delay(clock=20000000)          ///   declara el la frecuencia del cristal

#fuses HS,NOWDT,NOPUT,NOLVP,NOBROWNOUT,NOWRT,NOPROTECT
#use rs232(baud=1200, xmit=PIN_C6, rcv=PIN_C7)
#byte porta = 5
#byte portb = 6

void main()
{
int tx=0,rx=0;
set_tris_b(0x00);
set_tris_a(0x00),
portb=0x00;
porta=0x00;
while(1)
{
delay_ms(100);
tx=tx+1;
porta=tx;
putc(tx);
if(kbhit())
{
rx=getc();
portb=rx;
}
}
}





al simular en proteus no obtengo nada ademas ya lo hice fisicamente y tampoco ya lei en el foro y he visto que dicen que es mas eficiente hacerlo con protocolo i2c y tal vez empiece a hacerlo pero no quisiera quedarme derrotado asi y lograr hacer la comunicacion.  los pines de cada uno de los 16f877 estan directos al otro es decir la terminal del puerto C6 esta al C7 del otro sin ningun integrado de por medio.

Desconectado Azicuetano

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1020
    • Aplicaciones Electrónicas en Alicante.
Re: comunicacion rs232 entre pics no hace nada
« Respuesta #1 en: 30 de Enero de 2007, 19:36:00 »
No tendrías que poner la misma velocidad de transmisión en los 2 PIC´s??

Pon esta misma línea en los 2 PIC´s.

#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

Ya nos comentas.


Un saludo desde Alicante.

marco_recargado

  • Visitante
Re: comunicacion rs232 entre pics no hace nada
« Respuesta #2 en: 30 de Enero de 2007, 20:14:30 »
ya corregi ese la velocidad sin embargo sigo teniendo el mismo problema no estoy recibiendo en ninguno de los pics ningun dato

Desconectado Azicuetano

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1020
    • Aplicaciones Electrónicas en Alicante.
Re: comunicacion rs232 entre pics no hace nada
« Respuesta #3 en: 30 de Enero de 2007, 20:20:05 »
Hola marco!

En el primer programa has puesto un cristal de 20 Mhz y en los fuses has puesto 'XT'.

En el segudo programa lo has puesto bien.

No me había dado cuenta en el mensaje anterior, sorry. A ver si hay suerte.


Un saludo desde Alicante.

Desconectado dhmejia

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 260
Re: comunicacion rs232 entre pics no hace nada
« Respuesta #4 en: 31 de Enero de 2007, 10:15:56 »
Adicional a lo que recomienda Azicuetano creo que deberías declarar también el puerto C, con RX como entrada y TX como salida, además deberías iniciar la prueba solo enviando desde un pic a otro (no que los dos envien en algún momento) porque como no tienes sincronizado el sistema es posible que en algún momento ambos micros estén enviando información.  Luego de tener funcionando el envio de un micro a otro puedes pasar a la comunicación bidireccional.  en cuanto al código me parecería mejor el uso de interrupciones para recibir los datos.

saludos,
Pereira - Colombia

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: comunicacion rs232 entre pics no hace nada
« Respuesta #5 en: 31 de Enero de 2007, 11:45:50 »
Fijate además de verificar el bit de OERR del RCSTA.  Si este se enciende la usart queda inhibida para seguir recibiendo.

Otra pregunta, usas RS232 o USART? Digo, usas niveles TTL o estas usando un MAX232 por ejemplo?

Hago la aclaración ya que se presta a confusión y si usas realmente el RS232 pudieras estar cableando mal el integrado MAX232 o compatible.

Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)


 

anything