Firmware modification

Hi,

I have adhanced the firmware of the V2 SSC32 (Atmega168) by three new features:

*] A BAUD-command. This command reprograms the SSC32 to use any specified baud-rate. Example:

BAUD -1250\r – set the baud-rate to 125000 baud, using “double-speed” mode

BAUD 1250\r – the same, with normal speed mode

The idea is that uC’s running with power-of-two crystals (e.g. 16MHz) can hardly do any more than 38400 bits/sec using standard baud-rates. OTH, the SSC32 seems to work just fine with – e.g. – 125000 bits/sec. This is the setting I am currently using in conjunction with an AtomPRO28. The setting is not remembered across reboot, in order to prevent unusable bit-rate settings to require re-flashing of the firmware./*:m]
*] A binary modifier command. Prefixing any command by the string M~ changes the parsing rules for numbers: they are expected to be presented in binary, in Big-Endian byte-order. Pulse-widths are expected as 16 bits integers, servo-numbers as 8 bits integers. The modification remains active until the terminating \r (carriage return).

M~#<binary servo number>P<high byte><low byte>\r /*:m]
*] an asynchronous group-move modifier:

M+#13P1700T1000\r
M+#13P1300T1000\r

The M+ modifier delays the execution of the current group-move command until a previous group-move command has been completed. In addition, the SSC32 will transmit a . character back to the host if a pending asynchronous group-move command has completed.

This eliminates the need to duplicate the timing of group-move commands on the host-uC.
/*:m]
] Modifiers can be combined, i.e. a M~+ prefix to a group-move command with turn it into an asynchronous group-move command using binary integers./:m]

It is possible to download the firmware from

dot-heine.de/robots/

The usual disclaimers apply: use at your own risk; have fun, and don’t blame me if the modifications damage your hardware.

The modified firmware comes in the shape of a tar-ball, using the GNU autoconf/automake frame-work. You will need some flavour of the GNU AVR-toolchain to compile it. There are chances that the beast still compiles with CV’s AVR compiler, but I would not bet on it. The COPYING file in the top-level directory cites the copying notice which can by found on Lynxmotions web-pages.

Cheers,

Claus

Hi Claus,

Sounds great! Can you point me to a tarbel utility? I seem to have lost mine.

Regular ZIP files would be nice too!

Alan KM6VV

WinZIP should be able to handle .tar.[gz,bz2] files. However, I suspect you will need something like Cygwin to compile the firmware. Of course, I could provide an .abl file. This would probably be the best solution. Later …

Cheers,

Claus

Hi Claus,

I tried WinZip, it complains about an “invalid archive directory”.

What I’m mostly interested (first) is a boot loader. I don’t think the '168 boot loader has been posted yet to Lynxmotion. so an .abl file won’t do me any good. A “hex” (S record?) file might be useful.

thanks,

Alan KM6VV

Mmmh. I’ll have a look. The boot-loader should be available from Lynxmotion’s web-site, at least as source code, otherwise I could provide you with a working boot-loader for the 168. I’m at work ATM, I try to find some time tonight. You’ll get your hex-record later, and another archive format for the source code.

Cheers,

Claus

Hi Claus,

I didn’t see any boot loader code for the '168, just two .ABL files which don’t do me any good without a boot loader! I have the compiler and a programmer, so that wouldn’t be a problem.

Thanks for any help you can provide! Maybe I’ll just get the new SSC-32 on my next order anyway.

Cheers,

Alan KM6VV