Autor Tema: USSART 16f873A y DMX  (Leído 6333 veces)

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

Desconectado chals1

  • PIC10
  • *
  • Mensajes: 3
USSART 16f873A y DMX
« en: 19 de Marzo de 2006, 12:53:00 »
Hola a todos.
Ten go un problemilla y espero que me podais ayudar por que creo que puede ser interesante para todos.

Tengo que leer una trama DMX por la USSART del 16f873A pero lo gracioso es que tiene 2 bits de stop por canal y una trama un poco rara al principio.

os pongo la trama del dmx .

                BREAK   MAB         DIRECCION       DATO1           DATO2.........DATOn
1--------              --------       -------------- ------------------------------
            |            |         | BS |                |      |             |      |         |
0          |______|         |___|                |BST|             |BST|         |
                                    BITSTART                BITSTART        BITSTART

weno.
primero la linea esta a 1, pasa a 0 un tiempo break, pasa a 1 llamado MAB, bit start, direccion del canal, 2bits stop,bit start, dato canal 1, 2bits stop,bit start, dato canal 2,2bits stop,bit start, dato canal n,

espero que os sirva.
 
 



Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: USSART 16f873A y DMX
« Respuesta #1 en: 20 de Marzo de 2006, 05:17:00 »
Escrito originalmente por chals1
Hola a todos.
Ten go un problemilla y espero que me podais ayudar por que creo que puede ser interesante para todos.

Tengo que leer una trama DMX por la USSART del 16f873A pero lo gracioso es que tiene 2 bits de stop por canal y una trama un poco rara al principio.

os pongo la trama del dmx .

                BREAK   MAB         DIRECCION       DATO1           DATO2.........DATOn
1--------              --------       -------------- ------------------------------
            |            |         | BS |                |      |             |      |         |
0          |______|         |___|                |BST|             |BST|         |
                                    BITSTART                BITSTART        BITSTART

weno.
primero la linea esta a 1, pasa a 0 un tiempo break, pasa a 1 llamado MAB, bit start, direccion del canal, 2bits stop,bit start, dato canal 1, 2bits stop,bit start, dato canal 2,2bits stop,bit start, dato canal n,

espero que os sirva.
 



Chals nunca leí el protocolo DMX pero la verdad con tu explicación tampoco he entendido.

Quizas si posteas con la directiva [code] que hace a tu texto monospaced eso pueda resolver los aspectos "visuales" de tu post.  La otra alternativa es que subas una imagen de lo que quieres describir y sobre todo aclarar donde está tu inconveniente.

Usas la usart? o lo realizas por software?

Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado Aureo

  • PIC10
  • *
  • Mensajes: 9
Re: USSART 16f873A y DMX
« Respuesta #2 en: 06 de Mayo de 2006, 11:46:07 »
El funcionamiento del bus DMX sería análogo al de un cartero repartiendo en una calle. Dicho cartero repartiría las cartas (datos) a las viviendas, pudiendo formarse una agrupación de más de una vivienda en forma de un bloque de la misma manera que un elemento DMX podría tener más de un canal asignado a él.

El tiempo de reparto del cartero, o duración máxima del paquete DMX512.

t(μs)=[(88)+(8)+(44)]+(CHL•44)


Siendo:

88 μs de 22 bits de nivel bajo que constituyen el BREAK
8 μs del MAB, mark after break. Que representan dos bits de nivel alto según la revisión de 1990 del protocolo.
A continuación se envía el primer cuadro (dato 0) que se utiliza como SC o código de start, el valor de este es 0.
Puntualizando el concepto de cuadro, cada cuadro está formado por un bit de start, de nivel bajo, el dato propiamente dicho (CD, Channel Data de 8 bits) y de dos bits de stop (a nivel alto).
A partir del cuadro 0 le siguen 512 cuadros que conforman los 512 canales del universo DMX.

t(μs)=[(88)+(8)+(44)]+(512•44)=88+8+44+22528)=22,668 milisegundos


 

Desconectado Aureo

  • PIC10
  • *
  • Mensajes: 9
Re: USSART 16f873A y DMX
« Respuesta #3 en: 20 de Mayo de 2006, 10:39:02 »
 

Para decodificar la trama DMX he pensado en esto. 

            Se entiende que el BREAK tiene un tramado de más de un byte, lo que en la USART vendrá como un byte a 0 con un error de lectura dado por el BIT STOP a 0 que activara el FERR. Al detectar estas condiciones en el byte recibido se puede certificar que se trata del Break. 

            Si detectamos el FERR pero en el interior hay algún bit en estado alto (digo alguno porque así se salta del bucle de comprobación) se puede suponer que acabamos de localizar el MAB puesto que el siguiente dato es 0 y nos forzara el FERR. Una vez localizado el MAB se sincroniza el dato 0 con la recepción de la USART.

             Una vez sincronizado, comprobamos el interior del byte recibido y el contador de canales, si ambos son = 0 entonces inicializamos el contador de canales a 1. Si El contador de canales es diferente de 0 esto implica que estamos en un FRAME diferente de 0, comparamos dicho canal con el dipswitch. Si su resta da 0 es que se ha localizado el primer canal por el que empieza nuestro elemento, por tanto salvo el dato. Si da 1, es el segundo canal por lo que también reservo el dato. Si obtenemos un 2 hemos localizado el tercer canal necesario, por tanto también se guarda.


              Hasta ahora creo que esto funcionaría, pero no acabo de ver claro como sincronizar el dato 0 a la recepción de la USART una vez localizo el MAB. Había pensado en crearme un registro SYNC para usarlo de variable auxiliar con el trozo del dato 0 que pueda haber leído después de localizar el MAB (ya se que son 0's), la intención es hacer que en la siguiente lectura la USART solo lea los bits que le quedan por leer del dato 0, y que a continuación ya no tenga que tocar nada para que el dato que me de la USART sea un FRAME de DMX.

             
 

Desconectado cartle

  • PIC10
  • *
  • Mensajes: 7
Re: USSART 16f873A y DMX
« Respuesta #4 en: 27 de Mayo de 2006, 05:05:32 »
Hola a todos, estoy interesado en este tema, tengo  una pregunta , en el primer cuadro SC o código de star, ¿qué información contiene?¿tiene 8 ó 9 bits?.

Saludos

Desconectado Aureo

  • PIC10
  • *
  • Mensajes: 9
Re: USSART 16f873A y DMX
« Respuesta #5 en: 01 de Junio de 2006, 19:26:11 »
Hola a todos, estoy interesado en este tema, tengo  una pregunta , en el primer cuadro SC o código de star, ¿qué información contiene?¿tiene 8 ó 9 bits?.

Saludos


Despues del MAB lee el start code, y despues guarda el byte dentro de un registro de recepción, que es lo que interesa.

El primer dato es 00000000, un byte todo a 0 y sirve para que sepas que la trama empieza a llegar.


 

anything