Preguntas sobre el protocolo DMX512 / STM

0

Quiero hacer un transmisor DMX512 con un STM32F103 usando HAL, CubeMX.

Encontré algo de documentación como aquí sobre el protocolo: Lighting-Control-using-DMX512-protocol-on-STM32 .

Lamentablemente no muestra código, sin embargo, tengo algunas preguntas sobre el protocolo en sí principalmente:

Estos son extractos del capítulo 2 del manual:

introduce la descripción de la imagen aquí

Preguntas:

  1. Tiempo"MARCAR" entre ranuras: 0 - < 1.00 s ... entonces, si el tiempo mínimo es 0, ¿por qué no lo deja por completo?
  2. "MARCAR" antes de ROTURA (MBB): 0 - < 1.00 s ... ¿lo mismo aquí? ¿Por qué molestarse en 'implementarlo'?
  3. También se menciona el TIEMPO DE INICIO, pero no hay requisitos de tiempo para ello ... ¿cómo puedo saber qué está permitido?
  4. En este archivo GitHub algún código (no HAL , pero se muestra STM32) donde hay muchos comentarios sobre las funciones de tiempo crítico, pero de acuerdo con la Tabla 1, para la mayoría de los elementos hay un máximo. Una segunda vez, esto no lo llamaría tiempo crítico. Sé que HAL / CubeMX tienden a tener una gran cantidad de código de sobrecarga, así que me pregunto si esto dará problemas.

Si alguien tiene más información sobre un transmisor DMX512, preferiblemente usando HAL / CubeMX, me gustaría saberlo (no se pudo encontrar ningún ejemplo / código).

    
pregunta Michel Keijzers

2 respuestas

1

Los transmisores DMX son superficialmente fáciles, pero hay una serie de trampas si quieres que tu kit juegue bien con al menos la mayoría del final realmente trashy del mercado de receptores DMX ...

En particular, si te mantienes en la tasa máxima (especialmente la tasa máxima en el conteo mínimo de canales, ~ 1.2ms por paquete) encontrarás mucha mierda barata que no la decodifica (latas LED baratas, mirándote). Incluso un paquete completo de 512 canales que se ejecuta a la velocidad máxima puede causar problemas con el kit de "Tercer nivel", por lo que los escritorios de iluminación adultos suelen tener una forma de combinar los tiempos DMX con algo un poco más conservador.

Otra trampa agradable es mover luces que hacen interpolación, estas realmente necesitan que tus cálculos de movimiento estén sincronizados con la temporización de cuadros DMX, para minimizar la fluctuación de fase, haciendo las sumas a 100Hz cuando el transmisor obtiene ~ 40 cuadros por segundo en el cable NO funciona bien.

El dolor de sincronización real está en los receptores, especialmente en un receptor con un micro de costo mínimo, en el lado del transmisor, simplemente sea muy conservador en lo que genera (y otorgue al operador la opción de reducir la velocidad si es necesario).

    
respondido por el Dan Mills
1

1 y 2: si faltara esta línea en la tabla, sería difícil ver los valores máximos. Esta tabla le muestra el rango de valores para ese parámetro que debe tratar como receptor.

3 El tiempo de inicio es el tiempo de bits de un bit de inicio, que es el mismo que el tiempo de bits de cualquier otro bit.

4 La razón por la que el código DMX es crítico en el tiempo es que los receptores tienen que hacer frente a lo que envía el transmisor, que puede tener algunos tiempos muy cortos que deben reconocerse, como el MAB. Como transmisor, puede ralentizar las cosas, tiene esa libertad, pero como receptor tiene que trabajar con el transmisor de cualquier otra persona, que puede usar los valores mínimos para los tiempos de transmisión.

Siempre es preferible utilizar el documento de origen definitivo cuando sea libre Disponible que los documentos secundarios. Eso le mostraría que está viendo la Tabla 7, la sincronización de los receptores, cuando necesita la Tabla 6, la sincronización de los transmisores.

    
respondido por el Martin

Lea otras preguntas en las etiquetas