Computer -> Project communication

28 views
Skip to first unread message

Max Henstell

unread,
Sep 23, 2011, 2:01:50 PM9/23/11
to ope...@googlegroups.com
As several people pointed out last night, USB Serial is too slow for even DMX communication. It was suggested that we look at HID or just raw packets. I haven't been able to turn up much information on any speed limitations of HID, but the Atmega 32u4 (for example) supports both 1.5 and 12Mbps in some manner. I guess the mode implementation is up to the user.

A USB Serial option would be nice, but we definitely need a faster communications method, either implementing our own USB or using Ethernet, or both.

As for protocols, RDM doesn't look terribly difficult to implement, and gives us DMX compatibility. Also, ACN, if we wanna get crazy with it.

Thoughts?

Nick Vermeer

unread,
Sep 23, 2011, 3:06:33 PM9/23/11
to ope...@googlegroups.com
I posted some technical questions on the wiki page.  Not sure if we should have a multi-level protocol with a basic shift register based system for the output boards and optional controllers that manage busses of these sift register systems.

Max Henstell

unread,
Sep 25, 2011, 3:28:47 PM9/25/11
to ope...@googlegroups.com
Here's what I'm thinking on the hardware level, let me know if this makes sense.

Single master (the "logic unit") with an RS485 transceiver. Communication with dumb modules (no microcontroller) happens over unidirectional SPI over 485, at adjustable speeds (send-and-pray). Communications with smart modules (with micro) happens over bi-directional SPI over 485.

Looks like most 485 transceivers can do at least 16Mbps with slew rate limiting off, I see no reason to support at least 10Mbps. If I'm not terrible at math, that supports about 2000 RGB LEDs at 16bits/color, which is probably excessive. We could also support enabling the slew rate limiting for low speed communications (~500kbps) over longer distances, or for supporting DMX networks.

Does that sound practical?

Nick Vermeer

unread,
Sep 25, 2011, 3:52:49 PM9/25/11
to ope...@googlegroups.com
Which driver chips were you looking to use again? What's their max speed? requiring multi-port 10Mbit SPI probably puts us into ARM territory, as I don't think you can get that much data in and out of an atmega@16Mhz. 

Checking the math, 10 Mbit SPI seems to be able to do 104 updates/sec at 6000 channels (or 2k RGB) and 16 bit per channel. Thats way more than what we would want running on one controller anyway, so that should be good.

Nick Vermeer

unread,
Sep 25, 2011, 4:08:50 PM9/25/11
to ope...@googlegroups.com
Also, RS-485 is usually used in async serial, rather than synchronous.  For our application, we will need at least a Clock, Latch and Data pair for the unidirectional circuit, and RX,TX, Clock for the bidirectional link.  That increases the number of drivers a bit.

Max Henstell

unread,
Sep 25, 2011, 5:48:57 PM9/25/11
to ope...@googlegroups.com
Oh right, you need a clock for SPI. How about straight SPI for very short range communications? It looks like the 328 can do SPI at Fosc/2, or about 10MHz if nothing else is going on, so 4 or 5MHz should be more than doable, right?

We could also add a 485 transceiver for DMX applications.

Driver chips - for the LED drivers you mean? The ones I'm using personally are the TLC5971 - Max speed 20MHz.

Do you think 24bit color (8bit/channel) is adequate? 16 bits per channel seems a little out there, I only mentioned it because the TLC5971 is 16-bit/channel, so we should probably support it, even if we pad half the bits.

For higher speeds / larger installations - maybe we should consider an ARM-based master unit? If so, is this something we should develop in parallel? After the Atmega version? Instead of the Atmega version?
Reply all
Reply to author
Forward
0 new messages