Jump to content

Communication between multiple PIC cores


avockley
 Share

Recommended Posts

First, a bit of background on the project. It's an analog synth that will have a control surface similar to the one on the Moog Little Phatty. It will be a few encoders with a bunch of buttons to select the function each will perform. These are on the master core, with that core communicating with a slave core on each monophonic synth board. Each of these slave cores with forward the commands on to a series of digital pots and switch to control the synth.

 

The issue I'm having right now is how the master core will send data to the slave cores. I'm trying to decide whether to use MIDI or IIC (or maybe mbNet?). The issue with MIDI is that the digipots are 8 or 10 bits each, so the 7 bit per packet restriction could cause some problems. I think IIC would be a good option, but I'm not really sure how receiving on the slaves would work.. Sending the data from the master core should be easy enough, with the built-in MIOS_IIC_ByteSend function, but I don't believe the built-in functions will work for receiving on the slaves. MBNet seems like it was designed for exactly this purpose, but as far as I can tell, it doesn't exist for MIOS8, and I'd rather not use a bunch of LPC1769 cores since they're overkill and quite a bit more expensive.

 

Any thoughts, or should I just stick to trying to make MIDI work?

  • Like 1
Link to comment
Share on other sites

An interesting project you are working on. I myself am developing a Moog style synth as well at the moment and am thinking about similar questions. Cool to meet another person interested in analog synth development driven by a midibox core. It would be cool to exchange some design thoughts (i.e. about the continuous wave shaper). As I am still in an early stage in the development process (currently tinkering with different VCO and VCF design variants), I haven't actually looked much into MIOS so far.

 

However, I came to the conclusion that using a single LPC1769 for both, user interface and synth would be best for me. As I estimated and also have been told, the module should easily have enough power to read all the inputs, write displays and other outputs, do some math, communicate over midi and drive the different synth modules. As long as you don't do any real time audio or CV signal processing by the core, there is anyway not much going on over the IOs most of the time.

 

My design won't be the most compact one, as I will do all the IOs with standard midibox modules, but it will be modular, which helps to try out different designs and interchange modules but keeping the digital part. Internally, the synth will work with a higher number of bits. When controlled over midi, I cut away the LSB.

 

I know, all this doesn't help to solve your specific problem, but maybe it might be of interest anyway. What I do know however is, that past midibox projects like the MB_SID use MBNET for coupling multiple PICs: http://www.midibox.org/dokuwiki/doku.php?id=mios_pic18f4685&s[]=mbnet

 

What was your reason to go for multiple PICs instead of a single LPC1769 anyway?

Edited by Highcooley
Link to comment
Share on other sites

A single LPC17 core was my initial thought, but I wasn't sure how to control so many devices with it. The problem is that each synth board will end up with something like 15 IIC-controlled digipots/switches/dacs and there just aren't that many IIC ports on the core. I suppose the best option would be to bit bang IIC on other pins on the core.

 

And I just discovered IIC bus hubs (TI PCA9518). I think I may have my solution. 

Edited by avockley
Link to comment
Share on other sites

Correct, I2C is a 10bit bus. All in all you could theoretically control up to 1136 nodes over one single bus. However, I would recommend controlling as few nodes over one bus as possible, as I2C is not very robust. 15 nodes shouldn't be a problem at all. Alternatively there is SPI, which is a bit more complex.

Check out the different midibox IO modules to learn more about how these buses work.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...