Hardware Alternatives to SoftwareSerial?

I am working on a project that requires multiple Serial Inputs and Outputs. It's a modular design. Any of 8 outputs could be connected to any of 8 inputs. The message sent over connections must have some resolution.

I accomplished something along these lines in an earlier project using Digital Potentiometers and Analog Inputs on the Arduino. However, there was a great deal of noise and I was limited to an 8-bit resolution (256 steps). I'd really like to have the information passing over wires to have a larger resolution.

I looked into SoftwareSerial, but this doesn't seem to be the ideal thing. Also, multiplexing the Serial RX and TX doesn't seem to be the best approach either due to timing. I considered scanning every input pin for each output pin and sending an output for each input scan.

What would be ideal is a chip that runs on an I2C or SPI interface that's capable of receiving and transmitting packets of information between other chips like it. The core microcontroller would be able to use MISO to receive the stored information from each input or push out packets to those chips.

I hope I described this clearly. Please let me know if anyone has any recommendations or alternatives for modular pin-to-pin communication using ATMEGA

xiwi: I am working on a project that requires multiple Serial Inputs and Outputs. It's a modular design. Any of 8 outputs could be connected to any of 8 inputs. The message sent over connections must have some resolution.

I accomplished something along these lines in an earlier project using Digital Potentiometers and Analog Inputs on the Arduino. However, there was a great deal of noise and I was limited to an 8-bit resolution (256 steps). I'd really like to have the information passing over wires to have a larger resolution.

I looked into SoftwareSerial, but this doesn't seem to be the ideal thing. Also, multiplexing the Serial RX and TX doesn't seem to be the best approach either due to timing. I considered scanning every input pin for each output pin and sending an output for each input scan.

What would be ideal is a chip that runs on an I2C or SPI interface that's capable of receiving and transmitting packets of information between other chips like it. The core microcontroller would be able to use MISO to receive the stored information from each input or push out packets to those chips.

I hope I described this clearly. Please let me know if anyone has any recommendations or alternatives for modular pin-to-pin communication using ATMEGA

Looks like you are going to need some custom hardware. Here is a good place to start:Maxim MAX14830 Quad Serial UART This SPI chip has 4 UARTS with 128 words of buffer per channel

Chuck


Check out my Kickstarter Project Memory Panes an expansion RAM Shield for Mega2560's. It adds 1MB of RAM for those projects where 8KB is not enough.

Are you only making one input to one output connection at a time? Then you could use a mux, or analog switch, and select one input to listen to, and a demux, or a 2nd analog switch, and select one output to transmit to, and keep it hardware serial the whole way. DG408 from Vishay has only 17 ohm switch resistance and is pretty fast http://www.digikey.com/product-search/en?vendor=0&keywords=dg408 (copy & paste the link, or edit the front end of it; forum seems to be adding an extra http://%20 to links) If you used '1284P as the uC in between, you could store large amounts of data before passing them along also, to one or to many outputs, in its 16K SRAM.

Looks like you are going to need some custom hardware. Here is a good place to start:Maxim MAX14830 Quad Serial UART This SPI chip has 4 UARTS with 128 words of buffer per channel

Thanks Chuck. This would certainly get the job done, but it looks a little overkill for what I'm doing. The communication doesn't have to be this fast. I suppose I'm looking for something that would serve the same role as a digi pot (outputting one value that's easily read).

Another alternative I considered was putting ID'd ATTINYies at each input and output and run them all on a bus. Would this be unwise? Concerned about the price though.

Are you only making one input to one output connection at a time?

I will use multiple inputs and outputs at a time. Sorry for not specifying this in the original post. Thanks for the recommendation.

Oh, one more thing I considered. Is there a way to read PWM input? I know how to do output with a chip like the one below. If I could READ those messages with something similar that would be the bee's knees.

TLC 5940 - PWM Driver https://www.sparkfun.com/products/10136