Since the processor on the SSC-NG is surface mount, I plan to provide a 6-pin (standard AVR) programming header. The SPI clock and data pins will be brought to this header, but no chip/slave select pins. If there is room I will have a separate SPI header with the slave select pin.
I also plan to bring the I2C lines to a separate header if there is room. Based on firmware, it could act as an I2C master or slave. If I have to choose between I2C and SPI, I will choose I2C because I think it is more useful for this purpose. (Please comment if you feel otherwise.)
On the topic of data links, the processors I am considering have 2 UARTs, so the TTL and RS232 asynchronous ports will be separate, and can be used at the same time and at different Baud rates. I don’t know yet if this will be useful, but that is how I am planning to connect it.
Something I forgot to mention before on A/D inputs. The SSC-32 actually has a 10-bit A/D, but only returns 8 bits. There are 2 reasons for this. First, I wanted to return a single byte from a query. Second, A/D converters on most microcontrollers don’t have accuracy to match their resolution. The 2 least significant bits are usually lost to noise anyway. The 8-bit A/D results are taken from 10-bit readings run through a software low-pass filter and then truncated to 8 bits. It’s only 8 bits, but they are 8 good bits. There would be nothing preventing me from returning 10-bit values on the SSC-NG, but of course the software interface would need to be different.
So that brings me to a question–backwards compatability in the software interface. How important is it that the interface exactly match the SSC-32? Would it be OK if the analog voltage query commands started returning 2 bytes, for example? Or even returned a value in ASCII? The software interface development is a ways off, but I would like to know the answers to these basic questions before I start working on it.
BTW, I started calling the product SSC-NG instead of SSC-24 because I don’t think it will have only 24 I/Os. In some early discussions with Jim it seemed like it might have that limit, but my current plans are to have 32 I/O points just like the SSC-32. To make the I/O more generally useful, I will (try to) use switchable VServo/5V supplies for some of the I/O banks (similar to the MiniABB). The ABCD inputs will disappear, replaced by analog-capable I/O pins in the main I/O set. The Baud inputs will probably also disappear, replaced by a software mechanism for setting Baud rate.
Thanks again for the comments.
Mike