Arduino Playground is read-only starting December 31st, 2018. For more info please look at this Forum Post

The DMX Protocol




Bits

In the case of DMX a bit is 4 Microseconds long.

  • If we set pin 11 for 4us to LOW a �0� is submitted.
  • If we set pin 11 for 4us to HIGH a �1�is submitted.



Bytes

A DMX byte contains 11 bits, so a byte is 44us long.

  • The byte starts with a Start Bit, which is LOW (0).
  • After the Start Bit follows a Box of 8 Bits, this Box contains a Value between 0-255.
  • After this 8 Bit follows a Stop Bit and a Release Bit, both are High (1).


Every byte is storing one Value (Intensity) for one channel. Because DMX is controlling 512 channels we have to send 512 Bytes in a stream (packet).


Stream (packet)

Note, all timing is for a transmitter.

DMX commands are sent in a stream. The start of an update is signified by a break with a minimum duration of 92us and a mark (a logical one) with a minimum length of 12us. Followed by a start code, the standard value being 0x00 but other codes can be used. Then data is sent in a number of slots. The standard doesn't specify a minimum number of data slots but the minimum time between breaks is 1204us, and a maximum of 1s. If only one receiver is being used hence the need for only one slot, the packet must be stretched or extra empty slots added to meet the minimum timing. No maximum timing is specified so long as a packet is sent at-least once per second.





Info on alternative start codes can be found at: http://www.esta.org/tsp/working_groups/CP/DMXAlternateCodes.php