TODOPIC

Microcontroladores PIC => - Niple - => Mensaje iniciado por: Fidel Martins en 04 de Julio de 2023, 20:25:04

Título: Transformador de Baud Rate
Publicado por: Fidel Martins en 04 de Julio de 2023, 20:25:04
Buena a todos.
Necesito cambiar el baud rate que sale del GPS a 9600 y vá al navegador plotter, que recibe a 4800.
El pic es el 12f675 y la RS232 hecha en codigo.
El desafio es recibir de cinco a siete sentencias con un ancho de 40 a 60 bytes (no confirmado), una pegada a la otra, ocupando la recepcion 450ms, sobrando 550ms.
De inmediato ya veo que será sacrificado un paquete...y por ai empieza...
Título: Re:Transformador de Baud Rate
Publicado por: tsu_electronica en 05 de Julio de 2023, 03:51:20
interesante, lo que me pasa por la cabeza es que en niple se puede configurar por código 2 puertos para que cada uno trabaje a diferentes velocidades y eso parece que es sin problema lo que si creo es que el pic no tenga la memoria para recibir esos paquetes me parece que solo puede 30 o algo así hay que checar.
Título: Re:Transformador de Baud Rate
Publicado por: remi04 en 06 de Julio de 2023, 03:42:28
Si pudieses usar un pic con dos uart física tu puedes recibir a 9600 por una uart. Mientras estas recibiendo una sentencia completa, se estaría enviando simultáneamente la mitad de la anterior a 4800 por la otra uart. Luego en los 550 ms de reposo terminas de enviar la otra media sentencia que queda y así no pierdes ni una.

  Incluso en un pic con una sola uart física usando interrupciones haces el envío a 4800 por software.
Título: Re:Transformador de Baud Rate
Publicado por: dogflu66 en 06 de Julio de 2023, 06:07:33
Hola amigos; no quiero ser negativo, pero generar dos puertos serie por software con ese micro va a ser imposible.
Si tienes mucho tiempo entre tramas y suficiente memoria ram puedes crear una uart por software y un buffer donde almacenar la trama.
Posteriormente en la pausa que no recibes datos vaciar el buffer por otra uart por software.

Si dispones de un micro con una uart por hardware, puedes configurar una uart por software como entrada, y de inmediato enviar el byte recibido por la uart por hardware (esta ocupa un tiempo despreciable de proceso), de esta manera te ahorras el buffer de entrada y el programa sería muy simple.
También puedes reprogramar la uart cada vez y no usar el puerto por software, todo de pende de la memoria disponible.

Título: Re:Transformador de Baud Rate
Publicado por: dogflu66 en 06 de Julio de 2023, 07:05:53
Con este MCU moderno de 8pin casi seguro puedes realizar lo que quieres PIC12F1840.
No lo he utilizado en ningún proyecto, pero si he realizado practicas con el, y es una verdadera bestia en miniatura.
En España se puede conseguir fácilmente por menos de 2€ en todos sus formatos.
Título: Re:Transformador de Baud Rate
Publicado por: Fidel Martins en 07 de Julio de 2023, 13:56:20
Solo ahora estoy leyendo sus respuestas. Muchas gracias a todos.
Me antecipe y hice un codigo con dos RS 232/codigo, donde separo una sola sentencia (por su inicial "$GPGLL), asi que llega, la voy guardando en la eeprom y cuando termina, la envio por la segunda RS 232.
Ojala funcione con solo esta sentencia.
Pero de qualquer forma, lo mas inportante, es el desafio en hacer...
Título: Re:Transformador de Baud Rate
Publicado por: Fidel Martins en 07 de Julio de 2023, 21:27:05
Estoy probando el codigo en MPLAB y percibo que para grabar un dato (byte) en la eeprom, se demora una eternidad, con el reloj a 4Mhz, gasta mas de 4ms para limpiar el bit "eecon1,wr"...
Con esse tiempo queda inposible hacer la tarea, puez para cargar un byte gasto 920us.
Título: Re:Transformador de Baud Rate
Publicado por: DominusDRR en 07 de Julio de 2023, 22:09:24
Estoy probando el codigo en MPLAB y percibo que para grabar un dato (byte) en la eeprom, se demora una eternidad, con el reloj a 4Mhz, gasta mas de 4ms para limpiar el bit "eecon1,wr"...
Con esse tiempo queda inposible hacer la tarea, puez para cargar un byte gasto 920us.

No tengo ni idea de como es tu código (tal vez debas compartirlo) y lo que diga, tal vez no tenga sentido, pero ¿Por qué no guardas todos los bytes que llegan en la memoria RAM?

Luego, cuando finalice la transacción de información procedes a guardar el contenido de la RAM a la EEPROM.
Título: Re:Transformador de Baud Rate
Publicado por: elreypic2 en 08 de Julio de 2023, 00:32:23
No conozco Niple, pero tal vez esté usando mucha memoria ram y no quede suficiente para crear el buffer de recepción de 60 bytes. Por lo que sólo quedarían 4 bytes de ram para implementar los dos puertos seriales.
Ya que no son simultáneos, siendo uno de recepción a 9600 bps y el de transmisión a 4800 bps. Lo ideal sería usar assembler y tal vez así sea posible implementar el código en este microcontrolador con tan poco recursos.
El problema de usar el eeprom como buffer de recepción es que la eeprom tiene un número maximo de escrituras y una vez alcanzado, la eeprom fallará y por lo tanto también la recepción/transmisión de datos.

elreypic
Título: Re:Transformador de Baud Rate
Publicado por: Fidel Martins en 08 de Julio de 2023, 10:54:47
No tengo ni idea de como es tu código (tal vez debas compartirlo) y lo que diga, tal vez no tenga sentido, pero ¿Por qué no guardas todos los bytes que llegan en la memoria RAM?

Luego, cuando finalice la transacción de información procedes a guardar el contenido de la RAM a la EEPROM.

No hay RAM suficiente, por eso eligi usar la EEPROM.
Los datos son apenas guardados para enviarlos enseguida.
Título: Re:Transformador de Baud Rate
Publicado por: Fidel Martins en 08 de Julio de 2023, 11:00:31
No tengo ni idea de como es tu código (tal vez debas compartirlo) y lo que diga, tal vez no tenga sentido, pero ¿Por qué no guardas todos los bytes que llegan en la memoria RAM?

Luego, cuando finalice la transacción de información procedes a guardar el contenido de la RAM a la EEPROM.

No hay RAM suficiente, por eso eligi usar la EEPROM.
Los datos son apenas guardados para enviarlos enseguida.

Si, justamente eso...poca RAM
De la EEPROM no funcionar por mucho tiempo, es cierto, pero el problema que expongo, es el tiempo que gasta para grabar un dato.
Título: Re:Transformador de Baud Rate
Publicado por: Eduardo2 en 08 de Julio de 2023, 11:24:56
Buena a todos.
Necesito cambiar el baud rate que sale del GPS a 9600 y vá al navegador plotter, que recibe a 4800.
....

¿No es al revés?  Si el GPS cumple la norma NMEA 0183  debe salir a 4800.
Título: Re:Transformador de Baud Rate
Publicado por: Fidel Martins en 08 de Julio de 2023, 11:42:05
No, no es asy.
La mayoria de los modulos antena/gps, salen a 9600.
Título: Re:Transformador de Baud Rate
Publicado por: Fidel Martins en 08 de Julio de 2023, 12:20:52
  - Tienes que ingresar para ver archivos adjuntos -  
codigo en prueba.  - Tienes que ingresar para ver archivos adjuntos -  
Título: Re:Transformador de Baud Rate
Publicado por: DominusDRR en 08 de Julio de 2023, 17:17:54
No hay RAM suficiente, por eso eligi usar la EEPROM.
Los datos son apenas guardados para enviarlos enseguida.

La escritura de la EEPROM es un cuello de botella en la latencia de un sistema con un microcontrolador.

Tal vez deberías escribir tu código en ensamblador, ya que un lenguaje alto nivel crea más código y ocupa más memoria RAM.

La otra opción es ocupar un microcontrolador de mejores características.

Título: Re:Transformador de Baud Rate
Publicado por: tsu_electronica en 08 de Julio de 2023, 17:49:21
no se si se pueda que nos compartas que modelo de gps estas trabajando para que veamos la cadena y nos demos una idea mas, mencionas tu primer comentario que son de 40 a 60 bytes y en el programa solo guardas 1, bueno no se si nos puedes proporcionar ese dato para simularlo.
Título: Re:Transformador de Baud Rate
Publicado por: remi04 en 12 de Julio de 2023, 14:09:30
De la eeprom olvídate por que es lenta de grabar por las esperas que hay que hacer y además, te duraría unas 300 horas el equipo antes de que falle la eeprom por agotar los ciclos de escritura.

 La única opción que veo es hacerte un FIFO con un array en RAM de 512 bytes donde almacenar (el máximo posible que te puede llegar), que serían las 7 sentencias de 60 bytes cada una y luego las vas enviando a la misma vez que recibes.  No esperas nada simplemente vas enviando byte a byte a 4800. El fifo se irá llenando pero cuando lleguen los 550 ms de espera entre tramas  se terminara de enviar por completo y antes de que empieces a recibir la siguiente, tu fifo ya estará limpio de nuevo.

 Para eso necesitas un micro con una uart a ser posible física, no emulada. O bien, un micro lo suficientemente veloz como para hacer todas esas operaciones por software, que también es posible.
 
 Pero no lo puedes hacer con ese micro en concreto sin perder tramas.
Título: Re:Transformador de Baud Rate
Publicado por: jansuini en 13 de Julio de 2023, 11:52:29
Hola
¿Que placa de GPS es?
¿No se puede programar la placa para que funcione a 4800 baudios y aparte para que solo escriba la trama de mensaje que te interesa?
En mi experiencia ,con las placas que he utilizado eso puede hacerse y en algún modelo de placa la configuración queda guardada en su propia EEPROM y en otro modelo yo programaba con un pic a la placa cuando arrancaba cada vez que le daba tensión y esta quedaba programada.-
Por otro lado ,según comentaron antes ,el protocolo NMEA por definición es a 4800 baudios ,lo que hacen algunos fabricantes es ponerlo a 9600 por comodidad.-
Sds.
Jorge
Título: Re:Transformador de Baud Rate
Publicado por: DominusDRR en 13 de Julio de 2023, 11:58:34
Tal vez si consigue una memoria SRAM externa y si tiene terminales extra, podría expandir la RAM para ahí, el OP disponga de un buffer de recepción.

(https://media-s3-us-east-1.ceros.com/microchip-technology/images/2022/03/24/49401375f38c6af4fada23f335afcba7/uni-o.jpg)
Título: Re:Transformador de Baud Rate
Publicado por: elreypic2 en 15 de Julio de 2023, 14:13:27
No sé si todavía exista interés en este proyecto. Pero tengo una sugerencia de posible solución muy económica.
Se pudiera utilizar un mcirocontrolador CH552G (E8051), que tiene un costo de solo $0.57 USD, y este contiene 2 UART , 16KB de memoria de código, 256B iRAM y 1KB de xRAM, oscilador interno, una maravilla a un precio incomparable. Es fácil de conseguir, en LCSC.com o bien ya ensamblado para realizar las pruebas en electrodragon.com
No require programador externo, este cuenta con un bootloader por USB muy fácil de utilizar.
Para su programación se puede utilizar el compilador SDCC que es gratuito, hay bastante información.

Creo en mi muy humilde opininión que con este microcontrolador se obtendría la solución a un coste muy, pero muy bajo y una rápida implementación.

elreypic.
Título: Re:Transformador de Baud Rate
Publicado por: DominusDRR en 15 de Julio de 2023, 14:22:14
No sé si todavía exista interés en este proyecto. Pero tengo una sugerencia de posible solución muy económica.
Se pudiera utilizar un mcirocontrolador CH552G (E8051), que tiene un costo de solo $0.57 USD, y este contiene 2 UART , 16KB de memoria de código, 256B iRAM y 1KB de xRAM, oscilador interno, una maravilla a un precio incomparable. Es fácil de conseguir, en LCSC.com o bien ya ensamblado para realizar las pruebas en electrodragon.com
No require programador externo, este cuenta con un bootloader por USB muy fácil de utilizar.
Para su programación se puede utilizar el compilador SDCC que es gratuito, hay bastante información.

Creo en mi muy humilde opininión que con este microcontrolador se obtendría la solución a un coste muy, pero muy bajo y una rápida implementación.

elreypic.

Dejaré esto por aquí, del foro de MCHP:


(https://pbs.twimg.com/media/F1GBMcPXwAQDTNr?format=jpg&name=medium)

Enlace al foro:

https://forum.microchip.com/s/topic/a5C3l000000MbjeEAC/t375114?page=13 (https://forum.microchip.com/s/topic/a5C3l000000MbjeEAC/t375114?page=13)
Título: Re:Transformador de Baud Rate
Publicado por: Fidel Martins en 16 de Julio de 2023, 13:09:30
Gracias por el aporte, Dominus
Lo que dices, es todo verdad y justamente este es el desafio.
Título: Re:Transformador de Baud Rate
Publicado por: Fidel Martins en 16 de Julio de 2023, 13:23:12
no se si se pueda que nos compartas que modelo de gps estas trabajando para que veamos la cadena y nos demos una idea mas, mencionas tu primer comentario que son de 40 a 60 bytes y en el programa solo guardas 1, bueno no se si nos puedes proporcionar ese dato para simularlo.
Estoy usando: "UAVGNSS module" - GN-802G/B
Viene con antena y L883 magnetómetro con salida I²C separada.
No encontre como cambiar la velocidad de salida.
Título: Re:Transformador de Baud Rate
Publicado por: Fidel Martins en 16 de Julio de 2023, 13:33:44
No sé si todavía exista interés en este proyecto. Pero tengo una sugerencia de posible solución muy económica.
Se pudiera utilizar un mcirocontrolador CH552G (E8051), que tiene un costo de solo $0.57 USD, y este contiene 2 UART , 16KB de memoria de código, 256B iRAM y 1KB de xRAM, oscilador interno, una maravilla a un precio incomparable. Es fácil de conseguir, en LCSC.com o bien ya ensamblado para realizar las pruebas en electrodragon.com
No require programador externo, este cuenta con un bootloader por USB muy fácil de utilizar.
Para su programación se puede utilizar el compilador SDCC que es gratuito, hay bastante información.

Creo en mi muy humilde opininión que con este microcontrolador se obtendría la solución a un coste muy, pero muy bajo y una rápida implementación.

elreypic.

Muy interesante, muchas gracias por el aporte.
Já lo ubique, su datasheet esta en chino.
Como es programado?
Puede ser en la IDE de Arduino?
Título: Re:Transformador de Baud Rate
Publicado por: elreypic2 en 18 de Julio de 2023, 15:48:52
Que tal Fidel Martins,

Puedes encontrar el datahseet en Inglés desde la página web del fabricante:
https://www.wch-ic.com/downloads/CH552DS1_PDF.html

Y sí, lo puedes programar usando el IDE de Arduino, solo tienes que instalar los archivos.
Esta es la página web con las instrucciones y los ejemplos:
https://github.com/DeqingSun/ch55xduino/tree/ch55xduino

elreypic


Título: Re:Transformador de Baud Rate
Publicado por: DominusDRR en 18 de Julio de 2023, 15:50:54
Que tal Fidel Martins,

Puedes encontrar el datahseet en Inglés desde la página web del fabricante:
https://www.wch-ic.com/downloads/CH552DS1_PDF.html

Y sí, lo puedes programar usando el IDE de Arduino, solo tienes que instalar los archivos.
Esta es la página web con las instrucciones y los ejemplos:
https://github.com/DeqingSun/ch55xduino/tree/ch55xduino

elreypic

Los videos de don bibliomán podrían ser útiles.

Título: Re:Transformador de Baud Rate
Publicado por: elreypic2 en 18 de Julio de 2023, 16:06:48
Es muy interesante ese video. Pero ese microcontrolador, el CH32V003, es un microcontrolador de 32-bits de arquitectura RISC-V.
El microcontrolador que yo propongo son 8051 de 8-bits.
Así que para programarlo en el IDE de Arduino no lleva mucho aprendizaje si ya se tiene la idea del arduino.
Yo, ya he probado el microcontrolador usando el IDE de arduino y usando SDCC con Code::Blocks.
No hay mayor dificultad si se usa el IDE de arduino. Consume más recursos y los códigos son más extensos, pero mucho más fácil que usar SDCC directamente y el ide de Code::blocks.

Elreypic.
Título: Re:Transformador de Baud Rate
Publicado por: Eduardo2 en 18 de Julio de 2023, 17:23:11
El microcontrolador que yo propongo son 8051 de 8-bits.
Así que para programarlo en el IDE de Arduino no lleva mucho aprendizaje si ya se tiene la idea del arduino.
Yo, ya he probado el microcontrolador usando el IDE de arduino y usando SDCC con Code::Blocks.
Está muy interesante el CH552, hay otro, el N76E003, basado en 8051 y similar en cuanto a memoria, bajo precio, 2 UARTs y programable con el IDE Arduino.
Tienen diferencias que hacen mas interesante a uno u otro. Por ejemplo el CH552 tiene ADC de 8bits (4 canales) y controlador USB, mientras que el N76E003 no tiene USB pero tiene un ADC de 12bits, 500ksps y 8 canales.
Título: Re:Transformador de Baud Rate
Publicado por: tsu_electronica en 18 de Julio de 2023, 17:25:24
checando el modulo gn802 trabaja con el chip ubx m8030 que si trabaja a diferentes velocidades desde 4800 asta 921600 y por defaul usa los 9600 lo que se tendría que testear es ver si es autorango hay que mandarle en 4800 para ver si ya responde y se queda en esa velocidad y con eso se solucionaría el detalle pero si trabaja a esa velocidad solo hay que checar como configurar jeje
Título: Re:Transformador de Baud Rate
Publicado por: elreypic2 en 18 de Julio de 2023, 18:45:12
Está muy interesante el CH552, hay otro, el N76E003, basado en 8051 y similar en cuanto a memoria, bajo precio, 2 UARTs y programable con el IDE Arduino.
Tienen diferencias que hacen mas interesante a uno u otro. Por ejemplo el CH552 tiene ADC de 8bits (4 canales) y controlador USB, mientras que el N76E003 no tiene USB pero tiene un ADC de 12bits, 500ksps y 8 canales.

Que tal Eduardo,
Será que tienes el link del wrap para usar el arduino IDE con el microcontrolador N76E003. Tengo algunas muestras de ese microcontrolador y me gustaría experimentar con él, usando el ARduino IDE.

elreypic.
Título: Re:Transformador de Baud Rate
Publicado por: Fidel Martins en 18 de Julio de 2023, 18:52:20
Hola
¿Que placa de GPS es?
¿No se puede programar la placa para que funcione a 4800 baudios y aparte para que solo escriba la trama de mensaje que te interesa?
En mi experiencia ,con las placas que he utilizado eso puede hacerse y en algún modelo de placa la configuración queda guardada en su propia EEPROM y en otro modelo yo programaba con un pic a la placa cuando arrancaba cada vez que le daba tensión y esta quedaba programada.-
Por otro lado ,según comentaron antes ,el protocolo NMEA por definición es a 4800 baudios ,lo que hacen algunos fabricantes es ponerlo a 9600 por comodidad.-
Sds.
Jorge
Que tal, Jorge...Estoy usando: "UAVGNSS module" - GN-802G/B
Sabes como la pongo en 4800?
Título: Re:Transformador de Baud Rate
Publicado por: jansuini en 21 de Julio de 2023, 11:16:12
Hola:
Seguramente con algunos mensaje NMEA que le envies pero deberías conseguir el manual de la placa.-
En unas placas que yo utilicé debía reconfigurarlas en el momento del arranque de la misma porque no guardaba configuración en EEPROM.-
En otro modelo que utilicé ,las configuraba con un soft de la misma placa por única vez y dejaba guardada la configuración en EEPROM por lo que ya quedaba configurada en 4800 baudios.-
Este es el modelo que yo utilicé:
https://articulo.mercadolibre.com.ar/MLA-772972538-modulo-gps-gy-neo6mv2-antena-chica-arduino-pic-avr-raspberry-_JM#position=16&search_layout=grid&type=item&tracking_id=5f736b11-ec8d-40ff-9e22-0eb67df6575b
Sds.
Jorge
Título: Re:Transformador de Baud Rate
Publicado por: elreypic2 en 21 de Julio de 2023, 12:47:36
Que tal, Jorge...Estoy usando: "UAVGNSS module" - GN-802G/B
Sabes como la pongo en 4800?

Este es el manual del módulo. Pero es un documento bastante extenso.

https://content.u-blox.com/sites/default/files/products/documents/u-blox8-M8_ReceiverDescrProtSpec_UBX-13003221.pdf

elreypic
Título: Re:Transformador de Baud Rate
Publicado por: DominusDRR en 21 de Julio de 2023, 13:09:39
Que tal, Jorge...Estoy usando: "UAVGNSS module" - GN-802G/B
Sabes como la pongo en 4800?

Este es el manual del módulo. Pero es un documento bastante extenso.

https://content.u-blox.com/sites/default/files/products/documents/u-blox8-M8_ReceiverDescrProtSpec_UBX-13003221.pdf

elreypic

Página 163:

Citar
Example:
$PUBX,41,1,0007,0003,19200,0*25

Baud rate = 19200

Título: Re:Transformador de Baud Rate
Publicado por: jansuini en 21 de Julio de 2023, 15:38:41
Si es un módulo UBLOX se configura con este software https://www.u-blox.com/en/product/u-center
Por supuesto para conectarte al módulo deberás usar un conversor 232-TTL para adecuar los niveles de tensión.-
Justamente estos módulos los configuras como querés con el soft ,luego le decis con el mismo soft que guarde la configuración en su EEPROM y listo¡¡
No necesitaras nada para que solo emita los comandos que te interesan a 9600 baudios
Título: Re:Transformador de Baud Rate
Publicado por: Fidel Martins en 22 de Julio de 2023, 17:40:50
Que tal, Jorge...Estoy usando: "UAVGNSS module" - GN-802G/B
Sabes como la pongo en 4800?

Este es el manual del módulo. Pero es un documento bastante extenso.

https://content.u-blox.com/sites/default/files/products/documents/u-blox8-M8_ReceiverDescrProtSpec_UBX-13003221.pdf

elreypic
Si, bastante enorme.
Aun asi, muchas gracias por la atención.
Título: Re:Transformador de Baud Rate
Publicado por: Fidel Martins en 22 de Julio de 2023, 17:45:33

[/quote]

Página 163:

Citar
Example:
$PUBX,41,1,0007,0003,19200,0*25

Baud rate = 19200
[/quote]
Gracias por el aporte, voi intentarlo.
Título: Re:Transformador de Baud Rate
Publicado por: Fidel Martins en 22 de Julio de 2023, 17:50:11
Si es un módulo UBLOX se configura con este software https://www.u-blox.com/en/product/u-center
Por supuesto para conectarte al módulo deberás usar un conversor 232-TTL para adecuar los niveles de tensión.-
Justamente estos módulos los configuras como querés con el soft ,luego le decis con el mismo soft que guarde la configuración en su EEPROM y listo¡¡
No necesitaras nada para que solo emita los comandos que te interesan a 9600 baudios
Eso parece mui bueno.
Gracias por el aporte.
Vere si bajo el prog. aun hoy
Título: Re:Transformador de Baud Rate
Publicado por: Fidel Martins en 28 de Julio de 2023, 10:35:48
No conseguí instalar el programa
Citar
Si es un módulo UBLOX se configura con este software https://www.u-blox.com/en/product/u-center
Buscando, encontré otro, pero no tiene como cambiar los baud.