Autor Tema: Ayuda con PIC16F877  (Leído 2816 veces)

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

Desconectado Robert91

  • PIC10
  • *
  • Mensajes: 7
Ayuda con PIC16F877
« en: 24 de Junio de 2012, 19:19:57 »
Buenas tardes,

Estoy haciendo un proyecto en el que tengo un PIC (PIC18F6722) que se le podria decir Maestro, y varios PIC (PIC16F877) esclavos comunicandose por medio de puerto serial (solo los pines Tx y Rx). Cuando mando informacion del maestro a los esclavos la informacion se recibe bien, pero al mandar informacion de un esclavo al Maestro marca corto circuito (la simulacion la estoy haciendo en PROTEUS). Destaco que todos los pines Tx de los esclavos estan conectados al mismo Rx del Maestro. Para resolver esto me habian dado la recomendacion de poner en alta impedancia los puertos Tx hasta que les toque el turno de transmitir, pero al hacerlo con la sentencia set_tris_c(0b11111111) (todo el puerto C como entrada), funciona para todos, menos para el pin Tx, de igual manera con la sentencia output_float().

Utilizo el compilado CCS, agradeceria mucho que alguien me pudiera guiar en esto, diciendome como poner en alta impedancia los puertos que no se usen, o alguna otra solucion.

Muchas gracias de antemano, Robert.

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Ayuda con PIC16F877
« Respuesta #1 en: 24 de Junio de 2012, 20:27:46 »
puedes poner diodos en cada pin TX de tus esclavos para evitar que se pongan en corto al enviar informacion.

Pero por otro lado, no es muy recomendable usar el rs232 para comunicar mas de 2 dispositivos, te recomiendo que uses otro protocolo, como el I2C o el SPI que ademas son mas rapidos que el rs232
"Nada es imposible, no si puedes imaginarlo"

Desconectado Robert91

  • PIC10
  • *
  • Mensajes: 7
Re: Ayuda con PIC16F877
« Respuesta #2 en: 24 de Junio de 2012, 20:36:50 »
Ya habia intentado poner Diodos, funciona para los cortos pero la informacion sigue sin llegar bien. Necesito que solo se habiliten al momento de enviar informacion, porque aunque los pines no esten transmitiendo siempre estan a 5V.

Sii habia pensado usar otro protocolo, pero por el momento me es necesario utilizar RS232, muchas gracias por tu recomendacion, pero si necesito una solucion que involucre el RS232.

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Ayuda con PIC16F877
« Respuesta #3 en: 24 de Junio de 2012, 20:56:38 »
podrias poner tu diagrama de conexion para poder darte mas ideas o ver donde esta el error
"Nada es imposible, no si puedes imaginarlo"

Desconectado Robert91

  • PIC10
  • *
  • Mensajes: 7
Re: Ayuda con PIC16F877
« Respuesta #4 en: 24 de Junio de 2012, 21:11:43 »

Es un diagrama sencillo, ahi no se encuentra conectado el Tx del maestro, pero lo que esta conectado es basicamente con lo que tengo problemas.

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
Re: Ayuda con PIC16F877
« Respuesta #5 en: 24 de Junio de 2012, 21:37:30 »
Hola, para lo que quieres, tienes que implementar comunicacion RS485 ... hay info aqui en el foro, puedes usar el integrado sn75176  :mrgreen:
Y empleas tu comunicación 232, pero empleando estos integrados..
Saludos!

Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado Robert91

  • PIC10
  • *
  • Mensajes: 7
Re: Ayuda con PIC16F877
« Respuesta #6 en: 24 de Junio de 2012, 22:24:36 »
Todopic, muchas gracias, creo que me podria ayudar, lei un poco pero sigue sin quedarme claro el como podria implementarlo. Tambien decir que el PIC maestro se va a estar expandiendo a cada vez mas PIC's, ¿si me podrias instruir un poco sobre como usarlo?, o un tema del foro donde pueda obtener las referencias.

Muchas gracias de nuevo todopic.

Desconectado diguito_69

  • PIC16
  • ***
  • Mensajes: 136
Re: Ayuda con PIC16F877
« Respuesta #7 en: 24 de Junio de 2012, 22:38:09 »
En el esquema ese tendrías que invertir los diodos y poner una resistencia pull-up en el pin RX del maestro.

Saludos.
"Carezco de un don especial. Sólo soy apacionadamente curioso". Albert Einstein.

Desconectado Robert91

  • PIC10
  • *
  • Mensajes: 7
Re: Ayuda con PIC16F877
« Respuesta #8 en: 26 de Junio de 2012, 02:05:27 »
diguito_69, realce el diagrama como lo hiciste pero sigue resultando lo mismo. Sigo sin poder resolver el problema, ¿mas recomendaciones?

Desconectado diguito_69

  • PIC16
  • ***
  • Mensajes: 136
Re: Ayuda con PIC16F877
« Respuesta #9 en: 26 de Junio de 2012, 03:19:04 »
Hola, probaste que la comunicación con solo un pic se realice correctamente.

Acá te pongo un diagrama de como yo te decía que lo hagas por si no me entendiste bien.


Lo hice con terminales virtuales ya que no tengo tu código para probarlo y funciono bien. Pero tendría que funcionar igual con los pics.

La primer terminal representa al maestro y el resto a los esclavos.

Los diodos van de esa forma ya que en el estado de reposo en el pin tx siempre hay un "1", por lo tanto el diodo no conduce y la linea queda en alta impedancia, dejándola libre para los otros pics.

Saludos.
"Carezco de un don especial. Sólo soy apacionadamente curioso". Albert Einstein.

Desconectado Robert91

  • PIC10
  • *
  • Mensajes: 7
Re: Ayuda con PIC16F877
« Respuesta #10 en: 26 de Junio de 2012, 04:23:13 »
diguito_69, rivale y todopic, muchas gracias por sus respuestas acabo de solucionar el problema. Mi solucion es desactivar el uart completamente hasta que tenga que recibir o enviar datos con la funcion setup_uart(true/false), con esto ya puedo poner en alta impedancia los puertos y que ningune interfiera con otro.

Agradezco a todos por ayudarme y espero poder serles de ayuda en alguna ocasion   :-/ .

Desconectado diguito_69

  • PIC16
  • ***
  • Mensajes: 136
Re: Ayuda con PIC16F877
« Respuesta #11 en: 26 de Junio de 2012, 05:01:02 »
Que bueno que solucionaste el problema. Igual te recomendaría que no conectes directamente los pines tx entre si.

Tendrías que ponerle una resistencia de protección a cada pin tx, por si llega a haber un error en algún pic y se hace un cortocircuito.

Saludos.
"Carezco de un don especial. Sólo soy apacionadamente curioso". Albert Einstein.