Right, I have a side project that I'm thinking about.
I'll give you a quick run down, then ask the questions.
Its a digitally-controlled-analogue mixing desk. There will be a large box full of the analogue side of a mixing desk, and a large nice control surface.
The idea being the signal path for audio is very short, and near all the other audio processing things. The control surface can then be put somewhere more sensible.
The heart of each channel is a 16*16 audio matrix, and the multiple pga2310, meaning that the desk can be set up in many configurations, allowing for some insane routing options.
So, having come up with a nice lay-out for the control surface, it has the following PER CHANNEL:
53 push buttons
9 analogue inputs
200 LEDs
Now, i realise that no picaxe is ever likely to have that level of I/O. However, the picaxe is extremely useful for controlling the analogue side of things, eg sampling faders and setting the pga's etc, as well as bridging to SPI, as required for some of the io chips.
I originally thought of basing the whole thing around the I2C bus, with a USB-I2C convertor, the control surface can be read by a computer, sent by ethernet to another computer, then converted back to I2C to control the analogue.
This allows the controller-pc to read the values of all the controls very simpley.
Now, heres the problem:
53 button = ~7 bytes
9 analogue = ~72 bytes
200 LED = ~25 bytes
all rounded up.
therefor it takes 104 bytes to describe a channel.
which is 832 bits. for 8 channels, its 6656 bits
i2cfast runs at 400KHz. Including address etc, thats 100Kbps.
this means, to describe 8 channels, the max fps is 15 fps.
Ideally I would like to run it at 30 fps.
Question Time:
What is a fast and common protocol that would allow me to describe 8 channels (or more) at 30fps?
Is it a case of getting multiple I2C busses set up?
Or should I get something like a pci-96IO card and bit-bang multiple I2C ports?
I'll give you a quick run down, then ask the questions.
Its a digitally-controlled-analogue mixing desk. There will be a large box full of the analogue side of a mixing desk, and a large nice control surface.
The idea being the signal path for audio is very short, and near all the other audio processing things. The control surface can then be put somewhere more sensible.
The heart of each channel is a 16*16 audio matrix, and the multiple pga2310, meaning that the desk can be set up in many configurations, allowing for some insane routing options.
So, having come up with a nice lay-out for the control surface, it has the following PER CHANNEL:
53 push buttons
9 analogue inputs
200 LEDs
Now, i realise that no picaxe is ever likely to have that level of I/O. However, the picaxe is extremely useful for controlling the analogue side of things, eg sampling faders and setting the pga's etc, as well as bridging to SPI, as required for some of the io chips.
I originally thought of basing the whole thing around the I2C bus, with a USB-I2C convertor, the control surface can be read by a computer, sent by ethernet to another computer, then converted back to I2C to control the analogue.
This allows the controller-pc to read the values of all the controls very simpley.
Now, heres the problem:
53 button = ~7 bytes
9 analogue = ~72 bytes
200 LED = ~25 bytes
all rounded up.
therefor it takes 104 bytes to describe a channel.
which is 832 bits. for 8 channels, its 6656 bits
i2cfast runs at 400KHz. Including address etc, thats 100Kbps.
this means, to describe 8 channels, the max fps is 15 fps.
Ideally I would like to run it at 30 fps.
Question Time:
What is a fast and common protocol that would allow me to describe 8 channels (or more) at 30fps?
Is it a case of getting multiple I2C busses set up?
Or should I get something like a pci-96IO card and bit-bang multiple I2C ports?