TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Ev en 01 de Octubre de 2019, 20:20:33

Título: Emular por sofware el protocolo UART
Publicado por: Ev en 01 de Octubre de 2019, 20:20:33
Lo que ocupo es que en cualquier PIC se pueda emular el protocolo UART(la cosa es que no se como empezar hacer el codigo, es la primera vez que hago algo asi en programacion) en lenguaje C, cuando conecte mi PIC al osciloscopio se vea como en la imagen:
  - Tienes que ingresar para ver archivos adjuntos -  

De antemano gracias. :)

Título: Re:Emular por sofware el protocolo UART
Publicado por: KILLERJC en 01 de Octubre de 2019, 22:25:42
Ya hay codigos que se enuentran por internet sobre UART por software. Lo mas seguro es que NO realicen los baudios que pretendes como en la imagen. Sino muchos menores..

Pero te podrian guiar a hacer el tuyo:

http://saeedsolutions.blogspot.com/2012/10/pic16f84a-software-uart-bit-banging.html
Título: Re:Emular por sofware el protocolo UART
Publicado por: elreypic2 en 02 de Octubre de 2019, 19:46:09
Excelente información KILLERJC.

De hecho las rutnias se pueden mejorar usando la función "__delay()" en lugar de la función "__delay_us()". Esto debido a que si se requiere configurar diferentes baudrates con mayor precisión, la fórmula para OneBitDelay sería Fosc/(4*Baudrate). De esa manera si quisieramos el baud rate de 115200 y usáramos un oscilador de 12MHz, entonces OneBitDelay = 12000000/(4*115200) = 26. Que en realidad obtendríamos un Baud rate de 115500 bps, teniendo un error del 0.26% lo que es bastante bueno. Recordemos que para el RS-232 la tolerancia es de hasta el 3%.

saludos EV y espero que esto te ayude aún más con tu proyecto.

elreypic.
Título: Re:Emular por sofware el protocolo UART
Publicado por: remi04 en 03 de Octubre de 2019, 03:15:34
Excelente información KILLERJC.

De hecho las rutnias se pueden mejorar usando la función "__delay()" en lugar de la función "__delay_us()". Esto debido a que si se requiere configurar diferentes baudrates con mayor precisión, la fórmula para OneBitDelay sería Fosc/(4*Baudrate). De esa manera si quisieramos el baud rate de 115200 y usáramos un oscilador de 12MHz, entonces OneBitDelay = 12000000/(4*115200) = 26. Que en realidad obtendríamos un Baud rate de 115500 bps, teniendo un error del 0.26% lo que es bastante bueno. Recordemos que para el RS-232 la tolerancia es de hasta el 3%.

saludos EV y espero que esto te ayude aún más con tu proyecto.

elreypic.

 Esos errores son aceptables si recibes byte a byte abriendo bit start y bit stop . Pero en una recepción continua por ejemplo tendrías frame error bastante rápido.
Título: Re:Emular por sofware el protocolo UART
Publicado por: Ev en 03 de Octubre de 2019, 12:24:25
Entonces elreypic2 sustituyo donde dice OneBitDelay las formulas que me escribio en el post para que funcione como lo quiero ?.
Gracias a todos me sirvieron sus comentarios.
Título: Re:Emular por sofware el protocolo UART
Publicado por: elreypic2 en 03 de Octubre de 2019, 17:26:27
Entonces elreypic2 sustituyo donde dice OneBitDelay las formulas que me escribio en el post para que funcione como lo quiero ?.
Gracias a todos me sirvieron sus comentarios.

No mencionas cual compilador C estas usando, pero si vas a usar el compilador del ejemplo (HI-TECH C), entonces tienes que cambiar las funciones "__delay_us()" por "__delay()".
Si es otro compilador como el de CCS, entonces tienes que usar "delay_cycles()".

saludos,

elreypic.