User Tools

Site Tools


midiboxdmx

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
midiboxdmx [2008/12/08 08:37]
philetaylor
midiboxdmx [2013/09/25 12:29] (current)
smashtv forum link updated
Line 1: Line 1:
-====== ​MidiboxDMX ​======+====== ​Intro ======
  
 +Midibox DMX is a DMX512 compliant controller for Midibox created by Phil Taylor - phil@taylor.org.uk
  
-A DMX512 compliant controller for Midibox created by Phil Taylor - phil@taylor.org.uk+Originally Discussed [[http://​midibox.org/​forums/​topic/​11597-dmx512-controller/​|here]]
  
-Originally Discussed [[http://​www.midibox.org/​forum/​index.php?​topic=12433.0|here]]+Here is a picture of my test system, It is enclosed in an old Strand Tempus 2-12 case (I bought 4 very cheap!)
  
-Here is a picture of my test system, I will box this once I decide on an enclosure. I have also included a closeup of the only bit of extra hardware (other than MBHP modules) that is required! +{{:midiboxdmx:mbdmx-boxed.jpg|}}
- +
-{{http://​www.lansystems.co.uk/​images/​dmx/​midibox-dmx1.jpg}}{{http://​www.lansystems.co.uk/​images/​dmx/​dmx-if.jpg}}+
  
 ===== Concept ===== ===== Concept =====
Line 48: Line 47:
  
 I have decided that after struggling with the limited memory of the PIC16F88, 352 DMX channels was just too ambitious. I have now reduced it to 256 channels. One of the main reasons for this decision is that I was missing too much IIC data and causing too many retries. I have now made the IIC handing interrupt based and buffered which seems to make it much more stable (I will be posting this update once I have tested it thoroughly.) I have decided that after struggling with the limited memory of the PIC16F88, 352 DMX channels was just too ambitious. I have now reduced it to 256 channels. One of the main reasons for this decision is that I was missing too much IIC data and causing too many retries. I have now made the IIC handing interrupt based and buffered which seems to make it much more stable (I will be posting this update once I have tested it thoroughly.)
 +
 +
 +===== ANSI E1.20-2006 RDM Support =====
 +
 +I have done some of the groundwork to providing RDM support, I have a copy of the ANSI E1.20-2006 standards document and the example C source from Wybron which give full details for creating an RDM responder. ​
 +
 +I have also been assigned a Manufacturer ID from ESTA. The reason that manufacturer ID's are important is that much like Ethernet, every RDM device must have a UID which is unique. The manufacturer ID that I have been assigned is 4D42h As it needs a '​company'​ name, it is assigned to my company (LAN Systems) as follows: "LAN Systems -- midibox project"​. Before anybody asks, this DOES NOT imply any commercial or other relationship between LAN Systems and the midibox project (there is none), they simply needed a company name to register it to.
 +
 +ESTA were concerned about controlling the allocation of UID's and I have committed to creating a website where people can request allocations,​ I will create this soon but as RDM support is quite a long way away I don't thinkt there is much of a rush!
 +
  
 ===== Hardware ===== ===== Hardware =====
  
-Pretty much all of the hardware is based around standard MBHP modules, the only addition is my simple TTL Serial <-> RS485 interface the schematic of which is below. I made it on a 6x6 piece of strip (vero) board:+Pretty much all of the hardware is based around standard MBHP modules, the only addition is my simple TTL Serial <-> RS485 interface the schematic of which is below. I made it on a 6x6 piece of strip (vero) board (I didn't bother with header connectors)
  
-{{http://www.lansystems.co.uk/​images/​dmx/IIC-DMX_IF.png}}+After reading the RDM spec, I realise that a simple BIAS circuit will also be required, this is only 2 extra resistors (+ 120ohm terminator) so I will post a modified circuit soon. 
 + 
 +{{:midiboxdmx:​iic-dmx_if.png|}} 
 + 
 +{{:​midiboxdmx:​dmx-if.jpg|}}
  
  
 ===== Firmware/​Software ===== ===== Firmware/​Software =====
  
-The software will be changing rapidly, it isn't really useful for anything other than playing with at the moment. I have not done make dist on either of them yet as they aren't really ready for 'prime time' so the mios-base kit is required to re-compile.+The software will be changing rapidly, it isn't really useful for anything other than playing with at the moment. I have not done make dist on either of them yet as they aren't really ready for 'prime time' so the mios-base kit is required to re-compile. ​It really is a moving target so keep checking back to see if I have updated it!
  
 Currently the software (firmware) is available in 2 parts, there is the IIC_DMX firmware which must be burnt to a PIC16F88 (you will require a PIC Burner for this, I use the MBHP PIC Burner from Mike as it also has an 18 pin socket. I am currently throttling the DMX output to approx 30 packets a second, this allows me to see the flickering LED so I know that it is working! It seems quite stable now I am throttling it as at full speed it seemed to cause random reboots of the PIC! Currently the software (firmware) is available in 2 parts, there is the IIC_DMX firmware which must be burnt to a PIC16F88 (you will require a PIC Burner for this, I use the MBHP PIC Burner from Mike as it also has an 18 pin socket. I am currently throttling the DMX output to approx 30 packets a second, this allows me to see the flickering LED so I know that it is working! It seems quite stable now I am throttling it as at full speed it seemed to cause random reboots of the PIC!
Line 80: Line 93:
 I am also working on a method of streaming a whole bank which will be something like <​COMMAND><​START CHAN><​END CHAN><​TERMINATOR><​VALUES * (END-START)><​TERMINATOR>​ . In addition to this I will have a reverse stream which asks the IIC_DMX to return what it thinks the values should be. I am also working on a method of streaming a whole bank which will be something like <​COMMAND><​START CHAN><​END CHAN><​TERMINATOR><​VALUES * (END-START)><​TERMINATOR>​ . In addition to this I will have a reverse stream which asks the IIC_DMX to return what it thinks the values should be.
  
-The package for IIC_DMX is available here: [[http://​www.lansystems.co.uk/​images/​dmx/​iic_dmx.zip|IIC_DMX Package]] ​ Currently Version 0.003b updated 08th December 2008+The package for IIC_DMX is available here: [[http://​www.lansystems.co.uk/​images/​dmx/​iic_dmx.zip|IIC_DMX Package]] ​ Currently Version 0.003b updated 08th December 2008. This now seems pretty stable. It uses a 16 byte ring buffer for received IIC data and a CRC8 byte as a data terminator.
  
  
Line 88: Line 101:
 It currently accepts MIDI CC commands and converts the value to 8 bit and sends them to the IIC_DMX. Any packets received over the IIC bus are forwarded directly back over MIDI. I have also included basic support for faders via an AIN module, currently only 8 are used but more will be added when I get round to it and these just change the first 8 DMX channels. Eventually I will build a DIN module and the faders will be able to operate on different '​banks'​. It currently accepts MIDI CC commands and converts the value to 8 bit and sends them to the IIC_DMX. Any packets received over the IIC bus are forwarded directly back over MIDI. I have also included basic support for faders via an AIN module, currently only 8 are used but more will be added when I get round to it and these just change the first 8 DMX channels. Eventually I will build a DIN module and the faders will be able to operate on different '​banks'​.
  
-The package for DMX_Controller is available here: [[http://​www.lansystems.co.uk/​images/​dmx/​dmx_controller.zip|DMX_Controller Package]] ​ Currently Version 0.003b updated 08th December 2008. This now seems pretty stable. It uses a 16 byte ring buffer for received IIC data and a CRC8 byte as a data terminator. +The package for DMX_Controller is available here: [[http://​www.lansystems.co.uk/​images/​dmx/​dmx_controller.zip|DMX_Controller Package]] ​ Currently Version 0.003b updated 08th December 2008. 
 **Please note** **Please note**
 Neither of these firmwares are any where near complete and may not work AT ALL. They are only really useful to somebody with a reasonable knowledge of C and/or Assembler and obviously I offer no warranty so if you blow-up your CORE/​IIC_MIDI or both don't blame me! Neither of these firmwares are any where near complete and may not work AT ALL. They are only really useful to somebody with a reasonable knowledge of C and/or Assembler and obviously I offer no warranty so if you blow-up your CORE/​IIC_MIDI or both don't blame me!
Line 96: Line 108:
  
 Pretty much everything at the moment, Pretty much everything at the moment,
- 
- 
  
  
  
midiboxdmx.1228725464.txt.gz · Last modified: 2008/12/08 08:37 by philetaylor