Autor Tema: Problema con RS-232 a más de 9600 baudios - SOLUCIONADO  (Leído 2606 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado DarkVect

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 302
Problema con RS-232 a más de 9600 baudios - SOLUCIONADO
« en: 03 de Abril de 2009, 09:41:18 »
Hola amigos,

He estado buscando por el foro y no he encontrado nada respecto al problema que tengo:

Comunico un 16F819 a 4MHz con un PC a través de un MAX232. El PIC responde a ciertas teclas del PC enviado unos ciertos bytes de configuración interna. Todo funciona perfectamente hasta 9600 baudios. Si pongo 19200 empiezo a recibir bytes incorrectos y además hay algunos que no llegan.

A qué puede deberse?

El cable que uso es de calidad y mide 1,5 metros así que por ahí no creo que haya problema.

Gracias y un saludo!
« Última modificación: 15 de Abril de 2009, 06:07:36 por DarkVect »

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Problema con RS-232 a más de 9600 baudios
« Respuesta #1 en: 03 de Abril de 2009, 11:27:03 »
Hola.

Pues debe ser porque la USART es software ... intenta subirle al cristal del oscilador.

Saludos
El papel lo aguanta todo

Desconectado DarkVect

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 302
Re: Problema con RS-232 a más de 9600 baudios
« Respuesta #2 en: 03 de Abril de 2009, 13:28:45 »
La UART es por software, estoy usando simultáneamente SPI para comunicarme con otro dispositivo y eso va bien. El cristal no puedo tocarlo, crees que sólo puede ser eso?

Desconectado DarkVect

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 302
Re: Problema con RS-232 a más de 9600 baudios
« Respuesta #3 en: 14 de Abril de 2009, 13:41:57 »
He estado provando y sigo con el mismo problema, no hay forma de que envíe bien a 19200 bauds.

La única interrupción que utilizo es la el Timer2 a 20ms y comunico por SPI cada 0,5s. Como los puertos de la UART coinciden con los usados en SPI la comunicación RS-232 la emulo por software con el comando de CCS #use rs232(baud=19200, xmit=PIN_B1, rcv=PIN_B2).

Como digo, el cristal es de 4Mhz y creo que debería ir de sobras con él, no?

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Problema con RS-232 a más de 9600 baudios
« Respuesta #4 en: 14 de Abril de 2009, 15:25:44 »
Hola.

Coloca tambien FORCE_SW

Saludos
El papel lo aguanta todo

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Problema con RS-232 a más de 9600 baudios
« Respuesta #5 en: 14 de Abril de 2009, 20:43:13 »
Puede ser por el cristal, prueba con 20.


salu2.

Desconectado DarkVect

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 302
Re: Problema con RS-232 a más de 9600 baudios - SOLUCIONADO
« Respuesta #6 en: 15 de Abril de 2009, 06:07:11 »
He añadido la instrucción DISABLE_INTS y ya funciona!!

#use rs232(baud=19200, xmit=PIN_B6, rcv=PIN_B7, BITS=8, PARITY=N, DISABLE_INTS)

Saludos!

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Problema con RS-232 a más de 9600 baudios - SOLUCIONADO
« Respuesta #7 en: 15 de Abril de 2009, 11:40:26 »
DISABLE_INTS significa que deshabilitará las interrupciones cuando se ejecute rutinas de I/O en la UART?

te quedaste con 4MHz verdad?

un saludo
.

Desconectado DarkVect

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 302
Re: Problema con RS-232 a más de 9600 baudios - SOLUCIONADO
« Respuesta #8 en: 15 de Abril de 2009, 15:19:01 »
Me he quedado con 4Mhz y 19200 que es lo máximo posible en este caso.

La instrucción DISABLE_INTS desahabilita las interrupciones durante el envío de UN caracter. Es decir durante 10 bits en una configuración 8N1 típica. A 19200 bps significa que como mucho, una interrupción se retarda 521us.

En mi caso ese retraso es totalmente permisble, así que todo ok.

Resumiendo:

El problema estaba en que a 9600 bps el tiempo de bit es suficientmente grande como para que salte la interrupción en medio, se sirva y al volver estemos todavía en el mismo bit. A 19200 eso ya no pasa y por lo tanto, la cagamos...

PD: la solución me la ha dado un gurú del foro de CCS.

Desconectado Azicuetano

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1020
    • Aplicaciones Electrónicas en Alicante.
Re: Problema con RS-232 a más de 9600 baudios - SOLUCIONADO
« Respuesta #9 en: 15 de Abril de 2009, 17:12:17 »
Esas son las cosas que no se aprenden en los libros.

Gracias por el dato DarkVect!


Un saludo desde Alicante.

Desconectado DarkVect

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 302
Re: Problema con RS-232 a más de 9600 baudios - SOLUCIONADO
« Respuesta #10 en: 16 de Abril de 2009, 06:34:38 »
De nada, para eso entramos todos al foro: para ayudar cuando podemos y ser ayudados cuando nos falla algo  :)