Question concerning the 1usec resolution of SSC-32

Hello out there,
I’m new here - und my english is not so good - so pardon errors and if this question was already under discussion.

I looked at the SSC-32 scematic - and wondered, because I also tried kind of this - and failed…
Is it really possible to do this resolution this way?

I try to discripe, what I think:
You say, there is an 1usec resolution on each channel. (= 0.000001sec).
Lets say channels 0, 8, 16 and 24 should pulse 1001 usec.
channels 1, 9, 17 and 25 should pulse 1002 usec.
channels 2, 10, 18 and 26 should pulse 1003 usec.
and so on
So there is realy a timespan, in which all channels have to be updated with 1usec resolution.
During this 1usec there have 32 Bits to be shifted. (= 0.00000003125 sec per bit)

So the Bits have to be shifted at 32MHz.
Is this possible with an ATMEGA8 or an ATMEGA16 ?

Im verry sorry if I understood something wrong. Pleas help me.
Thank you very much,
Anhalter

The SSC-32 provides 4 banks of servo outputs. Each bank of 8 servos are output at the same time. So the SSC-32 generates pulses for servo outputs 0-7, then it does 8-15, then 16-23, and finally 24-31. It also uses shift registers to multiplex the outputs. Hope this helps…

Thanks for your reply. The update of the shift registers are exactly what I’m asking for.
I understand your point, updating the banks successively. This reduces the challenge to 1 bank.

If there is only one 8bit-shift-register (bank) - and these 8 servos (inside 1 bank) should output nearly the same values: Difference only 1usec between each channel … then you have to shift-output 8Bit per 1uSec during some uSecs.

This means that you have to shift the bits with a freq of 8Mhz, which is also quite high for ATMEGA.
Is this possible?

Inside the SSC-32 documentation I found a annotation about open source.
lynxmotion.com/images/data/ssc-32.pdf
Is the ATMEGA-program really open source? Can you tell me, where to find it?

I really try to understand the concept.
Thank you verry much,
Anhalter

Mike had an article published in “Circuit Cellar Magazine” a while back which might furnish you with additional information.

The source code was available at one time.

the 1 uS is resolution, possibly not the minimum delta between different servo times. Multiple servos can be “latched” at the same time. But that’s from memory, there may be other factors.

Just curious, why all the interest? The code is very tightly written, making it very difficult to port to another processor family. A good study, 'tho.

Alan KM6VV

That version of the manual is out of date. Please use the current manual, located here: lynxmotion.com/images/html/build136.htm

I always liked that old manual. Maybe it’s the “look and feel”, or the format.

Alan KM6VV

Hello all,
thank you very much for further information. It helped me to understand.

@Alan:
I don’t understand “Just curious”. Seems to be a phrase, a “saying” - but I think you’re asking for my reasons to ask all this in detail.
Let me describe in short…

I started to think about my first Hexapod, because I saw one at a exhibition of Fraunhofer Institut.
After this I did the construction (SolidWorks) and thoughts about the programming.
Then I bought the servos and declared the cutting of my parts (from 3mm aluminium).
Also I did the programming of my ATMEGA8 controllers for 8-channel servo-output, which works - but seemed to be the limit (to me! :wink: ).
But I needed more servo-outpus. Far more.

So I looked around in the web - and found diffenent solutions including the Lynxmotion - SSC-32. A terrific controller with far more complexity (groop move) I ever dreamed of.
And a webpage which opened a whole Hexapod-Universe for me!! (I discarded “all” and did a whole new construction.)

So “make or buy”, Lynxmotion sells this controller for a unbeatable price - from freak to freak, I think :wink:.
But, in my country I’d have to import the controller from Germany. And in Germany the controller is sold double-priced. They sell it for
64.95 Euro which is 88.50 US-Dollar. Lynxmotion sells for 39.95 US-Dollar (= 29.00 Euro).
So noDna earns more than Lynxmotion does, whitout having any development, production or material costs like Lynxmotion has.
This - in my humble opinion - is a cheekiness and disagrees (contradictories? contraries?) the Lynxmotion mind.

Back to your question: To keep up my project I think double-tracked.
A) I try to buy a SSC-32 directly from Lynxmotion.
B) I’d like to basically (not the program) understand, why they are so much better, than I had been. :wink:

Hope this wasn’t too much introduction. :wink:
Is there any way, to get/buy Mikes article in Circuit Cellar Magazine.
Anhalter

Try Robotshop in Canada. They can probably save you some money.
lynxmotion.com/ViewPage.aspx … =23#canada

Looks like you can purchase the article here:

circuitcellar.com/magazine/188toc.htm

The SSC-32 is certainly better/cheaper then anything else I have seen. Just good C coding, I would guess. 8 R/C servos is easily done, but 32, even with the extra shift registers, is quite a chore! This level of programming requires an intimate knowledge of the particular processor, down to the hardware level. Much timing study is required. Interrupts are heavily used, and every last ounce of processor time is wrung out of the processor.

Email Mike via this list using messages (private mail), or look for an email address in the article. I found him quite helpful and willing to answer my questions. Maybe even direct a post directly to him on this list!

Of course you don’t have to know all the internals in order to use the SSC-32. I’ve implemented hexapods, bipeds, and my current quadruped with the SSC-32. An octopod is not even out of the question…

Alan KM6VV
P.S. “Just Curious” is and idiom meant to represent a minor interest in a subject or topic.

Thank you Alan for the link. I bought the article just now and’ll read it tonight. I like it very much, so far. I’m curious about it. May I be able to …

Robot Dude, you are right, why not compare worldwide. :wink: I’ll give it a try.

Thank you all for your kind help. I took me a step forward.

Anhalter

1 usec is the resolution of the servo control commands. The SSC-32 shifts at 7.4 Mhz, so it takes just over 1usec to update a bank of servos. There is a little extra code to set up the shift, so the overall resolution of the SSC-32 is about 1.5usec. The SSC-32 chooses the closest supported pulse width to the commanded pulse width, so the output pulse will always be within 0.5usec of the commanded pulse width. More important, there is almost no jitter from pulse to pulse, so the servo position is very steady.

I hope this helps satisfy your curiosity.

Mike