This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
product:usb2ax:dynamixel_protocol_notes [2015/02/04 01:07] xevel created |
product:usb2ax:dynamixel_protocol_notes [2015/02/10 18:39] (current) xevel |
||
---|---|---|---|
Line 34: | Line 34: | ||
FIXME | FIXME | ||
+ | |||
+ | ===== Timing ===== | ||
+ | |||
+ | Here are some info on the response timing of the AX-12 to different commands. Return Delay Time is zero. | ||
+ | |||
+ | == Time between instruction and status packets == | ||
+ | |||
+ | Minimum time elapsed between the stop bit of the checksum of the instruction packet and the start bit of the first bytes of the status packet. | ||
+ | |||
+ | ^ Command ^ Delay before response (µs) ^ | ||
+ | | PING | 18 | | ||
+ | | READ_DATA | 22 | | ||
+ | | WRITE_DATA (N bytes) | 24 + N * 6 | | ||
+ | |||
+ | Depending on when the motor-control interrupt fires, these time can increase by up to the duration of that interrupt (see below). | ||
+ | |||
+ | WRITE_DATA to EEPROM memory will answer with the same delay, but then the servo will not answer to another command before many milliseconds (up to 9 **ms** per byte based on the ATMega8 datasheet, though experimental verification put it at around 6 +/-1 ms per byte). | ||
+ | |||
+ | It seems that for most operations, the status packet is sent after everything has been checked but applied after the status packet. | ||
+ | |||
+ | |||
+ | |||
+ | == Motor-control interrupt == | ||
+ | |||
+ | The motor control interrupt runs every 1ms on an AX servo, and lasts about 130µs. during that time, no communication can occur, though incoming bytes are not lost. If it occurs in the middle of a packet, then that delay will be observed between two bytes, that would have been otherwise back to back. |