Autor Tema: ayuda comunicacion serial pic a pic  (Leído 8365 veces)

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

Desconectado Eyedol

  • PIC16
  • ***
  • Mensajes: 129
ayuda comunicacion serial pic a pic
« en: 21 de Septiembre de 2006, 12:56:28 »
saludos amigo estoy tratando de comunicar dos micros un pic16f877a y pic12c509a estoy utilizando proteus y no e podido lograr recibir un dato y enviarlo a un lcd. no se cual es el problema e intentado muchas cosas vistas en otros temas relacionados con este en este foro e hecho lo que hay dicen y aun nada logro. adjunto el codigo y el proyecto proteus.


transmisor:

define osc 4
x var byte
include "modedefs.bas"
pause 1000
loop:
x = 100
serout gpio.0,n2400,["ok",x]
gosub loop


receptor:

define osc 20
Define  LCD_DREG        PORTD
Define  LCD_DBIT        4
Define  LCD_RSREG       PORTB
Define  LCD_RSBIT       0
Define  LCD_EREG        PORTB
Define  LCD_EBIT        1

datos var byte

include "modedefs.bas"
pause 1000
lcdout $fe,1,"iniciando..."
pause 250
gosub loop

loop:

lcdout $fe,1,"leyendo..."

serin porta.1,n2400,["ok"],datos

pause 500

lcdout $fe,1,"el dato es: ",dec datos

gosub loop


..... todo lo demas funciona bien el lcd se ven actiavarse la linea de comunicacion serial asi que no se que sera pues he intentado usar lo asi: serin porta.1,t2400,1000,sindato,["ok"],datos  .... y aun asi no recibo datos e utilizado bytes de sincronizacion como en otros foros y nada no se que ocurre  :( :( :( :( :? :? :?....
« Última modificación: 21 de Septiembre de 2006, 13:38:59 por Eyedol »

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: ayuda comunicacion serial pic a pic
« Respuesta #1 en: 21 de Septiembre de 2006, 14:49:05 »
mmm ??? no se ve que este mal el programa, haber añadele una pausa al transmisor para que lo mande cada segundo o algo asi, tambien asegurate de que el pin de transmision si sea de salida, te lo digo porque luego me encuentro que esos pics pequeños tienen una que otra pata que solo es de entrada.
y trata de ver el dato en la segunda columna con LCDOUT$FE,$C0, "valor: ",dec datos.

y si pones el crystal de ambos a 4, espero sirva
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: ayuda comunicacion serial pic a pic
« Respuesta #2 en: 21 de Septiembre de 2006, 15:37:45 »
Hola mira hace tiempo que hice este ejemplo en pricipio era para los modulos de 433 de rf pero siempre hay que probarlos antes y aqui los conecte directo. checalo igual y te sirve.

TRANSMISOR.

Código: OpenOffice.org Basic
  1. '****************************************************************
  2. '*  Name    : UNTITLED.BAS                                      *
  3. '*  Author  : Max. E. Reyes Vera Juarez                         *
  4. '*  Notice  : Copyright (c) 2005 [select VIEW...EDITOR OPTIONS] *
  5. '*          : All Rights Reserved                               *
  6. '*  Date    : 21/09/2005                                        *
  7. '*  Version : 1.0                                               *
  8. '*  Notes   :                                                   *
  9. '*          :                                                   *
  10. '****************************************************************
  11. include "modedefs.bas"
  12. trisb=1
  13.  
  14. boton var PORTA.0
  15. C VAR BYTE
  16.  
  17.  
  18.   PAUSE 300
  19. loop:
  20. if boton=0 then
  21. HIGH PORTA.2
  22. LOW PORTA.3
  23. gosub led_on
  24. else
  25. LOW PORTA.2
  26. HIGH PORTA.3
  27. gosub led_off
  28. endif
  29. goto loop
  30.  
  31.  
  32. led_on:
  33.   FOR C=0 TO 16
  34.  serout  porta.1,T300,[6,6,"OK",3]
  35.  IF BOTON=1 THEN
  36.  GOTO LOOP
  37.  ENDIF
  38.  PAUSE 3000
  39.  NEXT C
  40. goto loop
  41.  
  42. led_off:
  43.  FOR C=0 TO 16
  44.  serout porta.1,T300,[6,6,"OK",8]
  45.  IF BOTON=0 THEN
  46.   GOTO LOOP
  47.  ENDIF
  48.  PAUSE 3000
  49.  NEXT C
  50. goto loop
  51.  
  52. end

RECEPTOR
Código: OpenOffice.org Basic
  1. '****************************************************************
  2. '*  Name    : UNTITLED.BAS                                      *
  3. '*  Author  : Max. E. Reyes Vera Juarez                         *
  4. '*  Notice  : Copyright (c) 2005 [select VIEW...EDITOR OPTIONS] *
  5. '*          : All Rights Reserved                               *
  6. '*  Date    : 21/09/2005                                        *
  7. '*  Version : 1.0                                               *
  8. '*  Notes   :                                                   *
  9. '*          :                                                   *
  10. '****************************************************************
  11. include "modedefs.bas"
  12.  
  13. trisb=1
  14. datos var byte
  15. led_rojo var portb.1
  16. led_verde var portb.2
  17.  
  18. PAUSE 300
  19. Loop:
  20. serin portb.0,T300,["OK"],datos
  21.  
  22. If datos=3 then led_on
  23. if datos=8 then led_off
  24. goto Loop
  25.  
  26. led_on:
  27. LCDOUT #DATOS
  28. High led_rojo
  29. low led_verde
  30. goto Loop
  31.  
  32. led_off:
  33. LCDOUT #DATOS
  34. low led_rojo
  35. high led_verde
  36. goto Loop
  37.  
  38. end

AQUI EL DIAGRAMA EN PROTEUS

"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: ayuda comunicacion serial pic a pic
« Respuesta #3 en: 21 de Septiembre de 2006, 15:41:16 »
jajajajaja no me habia fijado y eso lo hice  hace un año exactamente jajajajajaja :D :D como se pasa el tiempo parece que fue ayer cuando hacia eso con ayuda de RALF, por cierto alguien sabe algo de LEDROJ
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado Eyedol

  • PIC16
  • ***
  • Mensajes: 129
Re: ayuda comunicacion serial pic a pic
« Respuesta #4 en: 21 de Septiembre de 2006, 18:17:15 »
oye te puedo enviar mi diagrama proteus asi lo corres con mi programa creo que asi puedes examinar mejor. vi tu programa e visto muchos de tus programas es lo que tomado de ejemplo. ya le e colocado pausas y todo creo que es un problema con la electronica este proyecto lo estoy simulando enteramente no lo tengo montado aun en un protoboar. y no hace falta definirlos como salidas porque cuando simulo veo claramente cuando si ilumina el pin señal de que transmision de datos incluso e colocado un osciloscopio creo que el problema es la electronica aunque nose nose......
                                          Avisame a donde te envio el archivo para que prueves!!!!!

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: ayuda comunicacion serial pic a pic
« Respuesta #5 en: 21 de Septiembre de 2006, 22:01:36 »
Subelo aqui y asi varios podemos checar que onda,
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado Eyedol

  • PIC16
  • ***
  • Mensajes: 129
Re: ayuda comunicacion serial pic a pic
« Respuesta #6 en: 21 de Septiembre de 2006, 22:16:42 »
ok aqui les va el archivo para que lo revicen y vean que pasa.....

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: ayuda comunicacion serial pic a pic
« Respuesta #7 en: 22 de Septiembre de 2006, 12:24:29 »
Uchale, que crees que no puedo abrir el archivo, voy hacerlo con lo que pusiste, creo que mi version de proteus es muy viejita

Oye acabo de ver algo usas el puerto a como el receptor del dato y en el 877 este es una adc  a ver anexa la linea ADCON1=7 entes de la etiqueta LOOP. Tal vez sea eso
« Última modificación: 22 de Septiembre de 2006, 12:32:56 por navaismo »
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: ayuda comunicacion serial pic a pic
« Respuesta #8 en: 22 de Septiembre de 2006, 13:10:01 »
Hola mira mi version de protues no me deja simular la familia 12C pero ya checando a fondo el programa cambie unas cosas, por ejemplo en el transmisor:

 include "modedefs.bas"
 define osc 4
 
 x var byte
 x = 100
 
loop:
serout gpio.0,n2400,["ok",x]
pause 1000                                        'para que lo mande cada segundo
goto
loop


en el receptor:

include "modedefs.bas"
define osc 20
Define  LCD_DREG        PORTD
Define  LCD_DBIT        4
Define  LCD_RSREG       PORTB
Define  LCD_RSBIT       0
Define  LCD_EREG        PORTB
Define  LCD_EBIT        1


ADCON1=7
TRISA.1=1
datos var byte

'LOW PORTB.0 'ESTA LINEA SI CONECTAS EL RW DEL LCD AL PORTB.0 O SINO A TIERRA


pause 1000
lcdout $fe,1,"iniciando..."

loop:

 serin porta.1,n2400,["ok"],datos
 lcdout $fe,1,"el dato es: ",dec datos
PAUSE 1000
GOTO loop

En general es lo que añadi, y cambie los gosub por goto y solo cambiando para un 16f84 en lugar de un 12c si funciona
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado xocas

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 2312
Re: ayuda comunicacion serial pic a pic
« Respuesta #9 en: 22 de Septiembre de 2006, 19:00:45 »
hola

te comento amigo Eyedol que si no acompañas los .hex en el archivo zip no se puede realizar la simulacion en proteus. para poder decirte algo sobre tu problema tambien deberiamos contar con el codigo fuente, pero bueno, quizas nada de esto sea necesario porque te comento que hace algun tiempo hice un pequeño programa de comunicacion entre pics y precisamente uno de ellos era el 12c508a (o 509a ya no estoy muy seguro) y me pasaba que proteus no simulaba bien su funcionamiento, del cual estaba seguro porque lo habia ya probado.
para hacer las pruebas en proteus utilizo desde entonces la serie 12f629 en sustitucion de los 12c50x y ningun problema. si ademas programas en basic pues el paso de uno a otro no te sera ningun problema.

espero haberte ayudado porque mas bien me he enrollado un poquillo...

pd: doy por supuesto que conoces las diferencias entre usar un otp como el 12c5xx y otro que no lo es...

un saludo

Desconectado Eyedol

  • PIC16
  • ***
  • Mensajes: 129
Re: ayuda comunicacion serial pic a pic
« Respuesta #10 en: 23 de Septiembre de 2006, 13:36:36 »
bueno amigo muchas gracias. te comento que sucedian varias cosas 1. si habia que colocar la entrada analogica como entrada digital solo era necesario el ADCON1=7 para esto fue lo unico necesario pero queda esta duda el manual dice que serin "Pin automaticamente se convierte en entrada" bueno imagino que solo configura un pin normal y no modifica el registro analogico. COMO HAGO PARA CONFIGURAR SOLO EL PIN 0 DEL PORT A COMO DISCRETO Y EL RESTO COMO ANALOGICO???. (SE QUE PUEDO USART EL PUERTO USAR ES SOLO PARA SABER).

ESTOY MUY CONTENTO POR LOS RESULTADOS PERO NORMALMENTE RECIVE BIEN EL DATO QUE ES 100 PERO EVENTUALMENTE RECIBE UNO  (1) Y ESTO ME PARECE MUY MAL A LA HORA DE TENER SEGURIDAD EN LA EJECUCION DE UNA ORDEN.... SI PUEDEN EXPLICARME PORQUE SE LOS AGRADECERIA MUCHO.

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: ayuda comunicacion serial pic a pic
« Respuesta #11 en: 24 de Septiembre de 2006, 02:19:27 »
 :-/
Hola que bueno que funcione, lo de poner algunas entradas como digital o analogica en el datasheet del 877 viene esta tabla:



Y efectivamente el serin hace entrada automatico mas no te configura los registros especiales, si hubieras usado en el portc o portb no hubieses tenido problemas.
Con lo de recibir el dato pues habria que ver cual es el problema muy detenidamente como con el debugger o tal vez el lcd derepente solo pone 1 y no 100.

saludos
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado xocas

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 2312
Re: ayuda comunicacion serial pic a pic
« Respuesta #12 en: 24 de Septiembre de 2006, 15:28:20 »
hola

ante todo mis disculpas Eyedol porque asi que lei 12c509 y proteus ni siquiera cai en la cuenta de que habias posteado el codigo  :( :(

el codigo que te incluye navaismo deberia funcionar sin problemas. y siempre podras chequearlo en proteus tal como te comentaba anteriormente si en lugar de usar un 12c509a usas un 12f629.

y otra cosa que veo en tu codigo es el uso de gosub donde deberias usar goto. si en este caso no parece tener importancia en otros te puede volver loco una llamada a una subrutina que llama a otra subrutina y no aparece un return por ninguna parte...

un saludo

Desconectado Eyedol

  • PIC16
  • ***
  • Mensajes: 129
Re: ayuda comunicacion serial pic a pic
« Respuesta #13 en: 24 de Septiembre de 2006, 17:01:47 »
gracias navaismo y demas personas que me ayudaron a realizar esto. 


EDITADO POR LORDLAFEBRE:

Eyedol, con gusto por aqui puedes compartir software libre, pero no los que tienen licecia.
« Última modificación: 24 de Septiembre de 2006, 17:37:33 por LordLafebre »