Protocolo DALI: ¿Es válido incluir esto para conveniencia de decodificación de Manchester?

0

Comprensión: DALI utiliza la decodificación de datos asíncronos utilizando 1 bit de inicio y 2 bits de parada. El 1 bit de inicio es uno lógico (1), también codificado durante la codificación Manchester y los 2 bits de parada (la señal es ALTA durante largos períodos, al menos 2 * 833us) designa la idle_signal .

Ahora,siestoydescodificandoestosdatosutilizandoelmétododeanchodepulsomedidooelmétododemuestreo,¡notendréinterrupcióndecierreparaelúltimobit"1" !! Estoy utilizando específicamente el método de decodificación de ancho de pulso para la decodificación de Manchester.

Puedo resolver este problema comprobando el bit LSB durante la codificación de Manchester. Si LSB es 1, incluiré una breve señal de restablecimiento al final. Me aseguraré de ignorar el resto de los datos después de haber recibido el marco requerido. De todos modos, esta corta señal de reinicio no caerá en mi rango largo o corto y también puedo detener mi temporizador para responder a cualquier otra interrupción después de que se reciba el cuadro requerido.

Pregunta:

  1. ¿Es válido de acuerdo con el estándar DALI? ¿Qué podría salir mal con mi enfoque?
  2. En general, ¿qué método se utiliza para el estándar DALI? Basado en muestreo o en ancho de pulso ??
  3. La falta de preámbulo, ¿causa algún problema?

Gracias de antemano!

PS:

  • No estoy seguro de la terminología "Decodificación de datos asíncronos", lo que quise decir es que no hay datos de preámbulo involucrados que den al decodificador el tiempo suficiente para sincronizarse.
  • Los métodos basados en muestreo [página 7], basados en ancho de pulso [página 6] se describen en este app-note .
  • Imagen de esta fuente .

EDITAR: Mi lógica de Manchester_Decoding es aquí .

EDIT2:

¡Sí! Es un claro malentendido, tan pronto como puse la lógica en el papel, ¡ya lo entendí! Estaba pensando en cómo terminará el último pulso si la SEÑAL es alta durante tiempos más prolongados, pero como podemos ver en la figura, el último 1 se descodificará antes de sí mismo.

Sin embargo, deseo conocer el estándar de implementación general para DALI y los problemas causados por la falta de datos de preámbulo en el contexto de DALI.

    
pregunta charansai

1 respuesta

1

No hay necesidad de un preámbulo, este es un protocolo muy simple. Hay un tiempo mínimo entre cuadros, lo que significa que puede detectar fácilmente cuando la línea está inactiva. Luego, una vez que la línea baja durante el tiempo de inactividad, se mide para asegurarse de que la línea sea alta a 3 / 4T y sepa que ha tenido un bit de inicio.

Es asíncrono porque solo hay una línea de datos, no reloj y datos. Eso no tiene nada que ver con DALI per se, eso es solo un término estándar de comunicaciones.

Si observa la nota de aplicaciones Atmel a la que hace referencia, habla de dos formas diferentes de hacer la decodificación. Asegúrese de que su tiempo de muestreo sea lo suficientemente rápido para su método basado en la muestra elegida. Personalmente, creo que la combinación de interrupciones de borde e interrupciones de temporizador es una sobrecarga menor ya que no tiene tantas interrupciones de temporizador para garantizar que el tiempo de muestreo sea lo suficientemente rápido. Lo que lleva muy bien a ...

... "cómo lo hace el estándar". No especifica cómo se implementa, solo se debe hacer de una manera sólida para garantizar que funcione en todas las circunstancias.

    
respondido por el DiBosco

Lea otras preguntas en las etiquetas