Go Down

Topic: Hardware Alternatives to SoftwareSerial? (Read 1 time) previous topic - next topic

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

chucktodd

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.
Currently built mega http server, Now converting it to ESP32.

CrossRoads

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.
Designing & building electrical circuits for over 25 years.  Screw Shield for Mega/Due/Uno,  Bobuino with ATMega1284P, & other '328P & '1284P creations & offerings at  my website.

xiwi

Quote
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.

Quote
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.

xiwi

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

Go Up