Autor Tema: Emular por sofware el protocolo UART  (Leído 1871 veces)

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

Desconectado Ev

  • PIC10
  • *
  • Mensajes: 2
Emular por sofware el protocolo UART
« 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:
 

* Trama-2-protocolo-Serial-1280x720.jpg
(68.83 kB, 1280x720 - visto 668 veces)


De antemano gracias. :)


Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Emular por sofware el protocolo UART
« Respuesta #1 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

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1295
Re:Emular por sofware el protocolo UART
« Respuesta #2 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.

Desconectado remi04

  • PIC24F
  • *****
  • Mensajes: 657
Re:Emular por sofware el protocolo UART
« Respuesta #3 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.

Desconectado Ev

  • PIC10
  • *
  • Mensajes: 2
Re:Emular por sofware el protocolo UART
« Respuesta #4 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.

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1295
Re:Emular por sofware el protocolo UART
« Respuesta #5 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.


 

anything