Autor Tema: Pregunta UART  (Leído 3437 veces)

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

Desconectado RaDoN

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1498
Pregunta UART
« en: 26 de Diciembre de 2005, 07:19:00 »
Estoy tratando de hacer un terminal fisico RS232, para el cual uso un 16F876-7. Programo en CCS, para habilitar la uart es necesario la directiva #use rs232 ....

Quiero que funcione por hard y no por soft, para lo cual segun indica CCS, no hay que especificar los pines XMIT y RCV, la duda viene, en que por hard este pic solo funciona  con cadenas de bits, de 8 o 9. El cual segun el data, el 9 puede ser usado de paridad, pero queda sujeto al firmware del usuario (nada de hard). Por lo cual habiendo hay un mixo de hard para el flujo de datos y soft para la paridad, no se si indicarle a CCS la paridad (PARITY=x) y si decirle 8 o 9 bits.

Alguien que haya trasteado con la UART y tenga experiencia, porque yo solo hecho 3 tonterias y ahora que quiero ahondar un poco me resalta esta duda.

Saludos y gracias de antemano.
Si juegas contra el mejor, pierdes como los demás.

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: Pregunta UART
« Respuesta #1 en: 27 de Diciembre de 2005, 00:08:00 »
Yo tampoco estoy muy seguro Radon. Creo que con:

#use RS232 (baud 1200, xmit=pin_a2, rcv=pin_a3, bits=8, parity=E) se haría una transmisión por soft empleando 8 bits de datos + 1 de paridad par (la E creo que era par).

Con:

#use RS232 (baud 19200, xmit=pin_c6, rcv=pin_c7, bits=8, parity=E) se haría una transmisión por hard, con la USART,  empleando 8 bits de datos + 1 de paridad par.

¿Estas seguro que para que funcione por hard, no hay que especificar los pines XMIT y RCV?

Otra cosa, ¿cuantos bits de stop se utilizan, 1 ó 2?

Un saludo

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
RE: Pregunta UART
« Respuesta #2 en: 27 de Diciembre de 2005, 04:52:00 »
Aporto un dato más:

Ahora todos los programas los hago en CCS 3.150 para el 16F876A, y uso el simulador PIC Simulator IDE v5.22 de Oshonsoft.

Como soy novato me formé un poco de lio al simular los programas con transmisión-recepción vía RS-232.

Los programas anteriores los había realizado para el 16F628A que tiene los Tx-Rx en RB1 y RB2 así que al hacer el nuevo para el 16F876 me los dejé puesto en esos pines, en lugar de los RC6 y RC7.

El simulador tiene un módulo para simular la USART por hard y otro distinto para simularla por Soft. Me lleve varias horas intentando saber qué habia mal en mi programa que no funcionaba la transmisión RS232, el simulador USART por Hard me decía que no estaba inicializado, sin darme cuenta que estaba activando el simulador de USART por soft en lugar del hard. Funcionaba realmente bien el 16F876 con los pines RB1 y RB2 pero por soft, en cuanto los cambié a RC6 y RC7 se desactivó en el simulador el modulo soft y se activó el hard automáticamente.

Conclusión: Sospecho que la USART se activa automaticamente en cuanto se usan para Tx-Rx en los pines adecuados.

En cuanto al noveno bit hay en el datasheet 16F87x todo un tratamiento específico:  En TXSTA y en RCSTA tienes Tx9 y Rx9 respectivamente para habilitar la transmisión y recepción del 9 bit. En la sección 10.2 USART Asynchronous mode tienes una discusión sobre el uso de este noveno bit: lo único que he sacado en claro es que si habilitamos el noveno bit, éste debe ser escrito ANTES que los otros ocho ya que al escribir los ocho primeros bits en el registro TXREG se transmiten automaticamente por lo que el noveno no te daría tiempo a escribirlo y perdería el tren de salida.

Imagino que CCS deberá tener todo esto en cuenta ... sin embargo voy a simularlo a ver a que resultados llego.




Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado RaDoN

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1498
RE: Pregunta UART
« Respuesta #3 en: 27 de Diciembre de 2005, 08:46:00 »
Aja, pues hay viene la duda, si quiero hacer funcionar el hard, que le indico a CCS, transmision de 9 bits ( y que use el ultimo de paridad) o si le digo que son 8 + la paridad. Es saber como lo entiende CCS, es cuestion de probar, pero ahora no tengo nada fisico con un max232 donde hacerlo loco La ayuda de CCS no aclara nada (al menos que yo haya visto).

Y cierto pocher, hay que poner los pins, no entendi bien "FORCE_SW
 Will generate software serial I/O routines even when the UART pins are specified."

Si alguien descubre algo mas que postee please
 Sonrisa Gigante
Si juegas contra el mejor, pierdes como los demás.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
RE: Pregunta UART
« Respuesta #4 en: 27 de Diciembre de 2005, 13:52:00 »
He estado haciendo pruebas y no consigo hacer funcionar la UART hard cuando uso el 9º bit desquiciado

De hecho ni transmito ni recibo .... en cuanto coloco de nuevo los 8 bits todo vuelve a funcionar correctamente (CCS 3.150)

Habrá que investigar más hacer más pruebas ... loco




Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado RaDoN

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1498
RE: Pregunta UART
« Respuesta #5 en: 27 de Diciembre de 2005, 15:56:00 »
Aja, y que pasa si le indicas 8bits a CCS y paridad?? con los pines del hard por supuesto, realiza la comunicacion por hard y CCS se encarga de probar la partidad con el 9º bits???Fumador
Si juegas contra el mejor, pierdes como los demás.

Desconectado txu2

  • PIC10
  • *
  • Mensajes: 3
RE: Pregunta UART
« Respuesta #6 en: 24 de Marzo de 2006, 15:22:00 »
buff yo estoy más perdido toavia, necesitaría algo d información o algun ejemplo d como empezar con la uart yo  estoy kon dspic y me gustaria pasar un string por el puerto serie como seria eso posible?

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: Pregunta UART
« Respuesta #7 en: 24 de Marzo de 2006, 16:05:00 »
Escrito originalmente por RedPic
He estado haciendo pruebas y no consigo hacer funcionar la UART hard cuando uso el 9º bit desquiciado

De hecho ni transmito ni recibo .... en cuanto coloco de nuevo los 8 bits todo vuelve a funcionar correctamente (CCS 3.150)

Habrá que investigar más hacer más pruebas ... loco




RedPic yo no uso el CCS pero si he usado modo 9 bits en los pics 16F873 programandolos en ensamblador .  

Te propongo que veas que código ensamblador te produce el compilador en las rutinas de configuración y utilización de usart y podriamos revisarlo juntos a ver que es lo que hace mal.

- 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