Autor Tema: Transmision datos PIC to PC  (Leído 3146 veces)

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

Desconectado ORE

  • PIC10
  • *
  • Mensajes: 43
Transmision datos PIC to PC
« en: 04 de Junio de 2006, 14:28:49 »
Hola,

Estoy aplicando el programa de ejemplo del foro, mediante el cual se transmiten los datos del PIC al PC mediante el hyperterminal de windowa. Según recuerdo y tengo anotado en otra consulta que realize, la configuración de la salida del puerto C de mi PIC16F877, debe ser: set_tris_c(0b11XXXXXX); en referencia a los pins RC6 (TX) y RC7 (RX), ambos como entrada. Mis preguntas son:

1.¿Porque deben configurarse como entrada, si uno es de transmision y el otro de recepción?
Me dijeron que según el manual de CCS esto debe ser así. Lo busco en el manual y no encuntro tal directiva. Lo único que me crea el programa para el uso del RS232 es esta directiva: #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=9), pero no como he de configurar mi puerto C.

2.¿He de hacer uso del cable macho-hembra RS232 cruzado o sin cruzar para este tipo de transmisión? Para programar mi pic de 40 pins,, uso una adaptación del JDM Programer para 40 patillas, y el software WinPic800, y hago uso del cable sin cruzar. ¿Debo usar el mismo?

Estas preguntas las hago porque he tenido algun problema que otro con las transmisones, es mas fundi el puerto serie al intentar cargar el bootloader. Salto hasta el diferencial de mi casa.

Un saludo,

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Transmision datos PIC to PC
« Respuesta #1 en: 05 de Junio de 2006, 01:21:14 »
Te respondo a tu primera pregunta: el TRIS se autoconfigura con el uso de #use RS232, por lo que no debes preocuparte. De todas formas, en tu ejemplo, RC6 debería ser configurado como salida.

No estoy seguro de la respuesta a tu segunda pregunta, pero creo que el mismo cable te sirve. En cualquier caso, puedes probar a ver qué tal.

Desconectado ORE

  • PIC10
  • *
  • Mensajes: 43
Re: Transmision datos PIC to PC
« Respuesta #2 en: 05 de Junio de 2006, 18:03:47 »
Hola Nocturno,

Muchas gracias por tu respuesta. Pero me asalta una gran duda, o mejor dicho, un desconcierto total. Te explico: hace ya un mes aproximadamente realize una consulta sobre el SPI (cuando no tenía ni idea, si lees el mensaje de manuix lo entenderas), y le pregunte precisamente esto, porque había tenido problemas al enviar datos a tavés de hyperterminal de windows datos del PIC al PC, y esto es lo que me contesto:

Creo que alguien aquí alguien tiene que leer un manual de PICs antes de hablar....

    Escrito originalmente por O_R_EHola Maunix,
    Muchas gracias por la información, pero después de ver tu post, tengo una duda: tu me dices que coloque en el port c, set_tris_c(0b11001111), es decir, RC0=entrada, RC1=entrada, RC2=salida=CS(MAX187), RC3=salida=SCLK(MAX187), RC4=entrada=DOUT(MAX187), RC5=entrada=SDO(PIC16F877), RC6=entrada=TX, RC7=entrada=RX. Veo dos errores; el primero tiene que ver con el el pin RC5, no puede ser de entrada, ya que es un pin de salida de datos SPI, y el segundo es que el pin RC6 TX, lo activas como entrada, y no es para enviar datos al PC?



Yo puse mal 1 dígito pero tu estas leyendo de izquierda a derecha!!! y un número en cualquier base se lee de DERECHA A IZQUIERDA!!
Un 0 indica salida
Un 1 indica entrada

set_tris_c(0b11010111)
RC0 entrada
RC1 entrada
RC2 entrada: (los puse como entrada pero los podes poner como salida, no se que uso les daras en tu software)
RC3 salida : es el SCK , la salida de clock del SPI
RC4 entrada : es el SDI del pic, o salida del MAX
RC5: salida : SDO del pic
RC6 y RC7: deben ponerse como entrada para ser configurados como puerto de USART (leer el manual).


   
Tú me dices que RC6 como salida y RC7 como entrada, ¿Qué hago?

Un saludo,

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Transmision datos PIC to PC
« Respuesta #3 en: 06 de Junio de 2006, 01:25:45 »
No soy yo quien dice que RC6 es salida y RC7 es entrada; fuiste tu mismo quien lo dijo al incluir esta instrucción en tu programa:
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=9)

Y ya te digo, si pones esa instrucción, el compilador se encargará de colocar el TRIS correcto. Pero no obstante, si tú quieres configurarlo tendrías que poner lo siguiente:
set_tris_c(0b10000000);

Esto es porque los 1 significan entrada y los 0 salidas, y se lee efectivamente de derecha a izquierda. El pin 0 es el menos significativo y el de más a la derecha; el pin 7 es el más significativo y el de más a la izquierda (en el ejemplo el único que está a 1).

No sé si habré aclarado tu duda, pero sino, pregunta.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Transmision datos PIC to PC
« Respuesta #4 en: 06 de Junio de 2006, 05:16:16 »
Nocturno te esta diciendo lo correcto. A RB6 lo configuras como salida, y a RB7 como entrada.
Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado ORE

  • PIC10
  • *
  • Mensajes: 43
Re: Transmision datos PIC to PC
« Respuesta #5 en: 07 de Junio de 2006, 14:12:49 »
Hola,

Gracias a ambos por la aclaración. El motivo por el cual deseo configurar el port c para enviar datos al pc, es debido a que uso, aparte de RC6 y RC7, el resto de bits del puerto para un conversor A/D de 12 bits, y por ello venía mi pregunta, Entiendo que independientemente después de colocar la instruccion:

#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=9)

debo además configurarlo después el portc con set_tris_c(0b10000000), debido a los motivos que mencionaba anteriormente.

Espero estar en lo correcto, perdonen por mi ignorancia, pero la ultima vez fundi el puerto serie del pc, y quiero estar seguro de lo que hago.

Un saludo,


 

anything