¿Cómo determinar la velocidad en baudios del microchip periférico en tiempo de ejecución?

0

Estoy usando un microcontrolador PIC24H Microchip para comunicarme a través de UART con un módulo Bluetooth. La velocidad en baudios del módulo Bluetooth se puede configurar en tiempo de ejecución a través del software (a través de Bluetooth o por UART) y la velocidad en baudios cambiará después de un ciclo de alimentación.

Desafortunadamente, la única forma en que el microcontrolador puede averiguar qué velocidad en baudios está utilizando el UART del módulo Bluetooth es preguntándolo por UART.

¿Hay alguna manera de que pueda realizar la prueba del microcontrolador (tal vez por prueba y error) a qué velocidad de baudios del módulo Bluetooth está configurado? Solo puede ser un conjunto limitado de valores y probablemente se establecerá en 115K o 230K si eso lo hace más fácil.

    
pregunta CodeFusionMobile

1 respuesta

1

Una vez tuve un problema similar con un microcontrolador que no tenía un UART ni una frecuencia de reloj exactamente conocida (el cristal era demasiado caro). Dejé que la otra parte enviara un byte específico, por ejemplo, 0x01 y medí el tiempo que el bus estaba bajo. Esto fue 8 veces bit (startbit + 7 ceros de datos). Entonces, al dividir esto por 8, obtuve el valor al que debería configurar mi temporizador.
Por lo tanto, antes de configurar los pines de E / S para UART, utilícelos como E / S comunes hasta que el módulo Bluetooth envíe este carácter acordado y lo programe. Puede hacer esto ejecutando un bucle, o usar la captura por temporizador para detectar los flancos descendentes y ascendentes (más precisos).

    
respondido por el stevenvh

Lea otras preguntas en las etiquetas