Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

13/05/2015 #1

Avatar de seaarg

[Aporte] Conseguir 115200 bauds con pic
Foristas,

Tal vez muchos han luchado alguna vez con que no pueden lograr grandes velocidades en comunicacion serial.

En mi caso, estoy probando un modulito bluetooth con el cual quiero transferir grandes cantidades de datos desde un PIC, por lo que necesitaba la maxima velocidad posible.

Logre 115200 bauds SIN ERRORES desde un humilde 12F675, el cual no tiene UART sino que es por software.

Yo pensaba que a mas frecuencia de cristal, mejor era por lo que puse uno de 20 Mhz.

Jamas pude pasar los 9600, pero encontre que la clave es usar un cristal cuya frecuencia sea divisible en enteros por los baudios que se quieren obtener. http://www.nerdkits.com/forum/thread/214/ (en ingles)

El cristal deberia ser, optimamente 14.7456 MHz (por supuesto, si usan CCS tienen que configurar tambien la velocidad del reloj igualando al cristal que usen)

Sin embargo, probe que con un cristal de 14.31818 Mhz se logra perfectamente la comunicacion (no hay demasiado % de error) y, si nos ponemos exquisitos, pueden cargar el cristal con un capacitor en un terminal y un trimmer en el otro para correr un poco la frecuencia.

¿De donde saco dicho cristal? Agarren cualquier placa de video, vieja o nueva, motherboard, etc y lo van a ver ahi, esperandolos

Si tienen un pic de 4mhz (series viejas) pueden probar acercarse con un cristal de video que anda cerca de los 3.686400 que es una frecuencia base para UART http://en.wikipedia.org/wiki/Crystal...or_frequencies

En mi caso, teniendo en cuenta la capacitancia de la protoboard, anduvo perfecto asi sin capacitores.

Cabe tener en cuenta que mientras se transmite o recibe, el pic no deberia hacer otra cosa (si es UART software, en hard es otro cantar)

En mi caso, como es bluetooth hipoteticamente puedo llevarlo a mas velocidad pero por ahora esta bien asi.

Les dejo mi config:

Código:
#use delay(clock=14318180)
#use rs232(baud=115200,parity=N,xmit=PIN_A1,rcv=PIN_A2,bits=8,BRGH1OK,ERRORS,DISABLE_INTS)
Bueno, eso nomas, queria compartirles esta experiencia porque estoy seguro que a alguien le va a servir en algun momento. Saludos! ...
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.