<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-gb">
<link rel="self" type="application/atom+xml" href="http://forum.robosavvy.com/feed.php?f=5&amp;t=1022" />

<title>RoboSavvy Forum</title>
<subtitle>Robosavvy Forum: The largest online community of Humanoid Robot Builders</subtitle>
<link href="http://forum.robosavvy.com/index.php" />
<updated>2007-01-29T21:53:11+01:00</updated>

<author><name><![CDATA[RoboSavvy Forum]]></name></author>
<id>http://forum.robosavvy.com/feed.php?f=5&amp;t=1022</id>
<entry>
<author><name><![CDATA[billyzelsnack]]></name></author>
<updated>2007-01-29T21:53:11+01:00</updated>
<published>2007-01-29T21:53:11+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6666#p6666</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6666#p6666"/>
<title type="html"><![CDATA[dmtalk]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6666#p6666"><![CDATA[
This is good news that you can TX/RX at the same time.<br /><br />As for buffering.. I don't think this will be a problem. I was thinking potentially having some sort of dumb compression on the CM-5 &lt;-&gt; PC traffic. So I'd have to be inspecting the packets anyway, buffering the decompressed result wouldn't add anymore complexity. <br /><br />I might end up buffering anyway as I have no idea if the Atmega128 has enough power to do it just in time before sending.<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=459">billyzelsnack</a> — Mon Jan 29, 2007 9:53 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JonHylands]]></name></author>
<updated>2007-01-29T18:34:05+01:00</updated>
<published>2007-01-29T18:34:05+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6658#p6658</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6658#p6658"/>
<title type="html"><![CDATA[dmtalk]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6658#p6658"><![CDATA[
So I'm thinking about this a little more, and I realized there is one caveat - you need to make sure you have enough RAM for a receive buffer in the CM-5 (from the PC) to handle a full packet, which could reasonably be around 110 bytes. The Bioloid bus is a one-wire bus, so if the CM-5 started polling the servos just before it started to get a SYNC_WRITE from the PC, you would have to buffer a certain amount (if not all) of the SYNC_WRITE message.<br /><br />Either that or you would have to be able to cancel the read mid-stream, but that seems like it could make things more complicated on the CM-5 side of things, and you'd still need at least a partial buffer.<br /><br />- Jon<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=373">JonHylands</a> — Mon Jan 29, 2007 6:34 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JonHylands]]></name></author>
<updated>2007-01-29T18:28:31+01:00</updated>
<published>2007-01-29T18:28:31+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6657#p6657</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6657#p6657"/>
<title type="html"><![CDATA[dmtalk]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6657#p6657"><![CDATA[
So it seems I was wrong on this one - you can do simultaneous transmit and receive between a PC and an ATmega128.<br /><br />I guess that makes your concept of pushing sensor data to the PC from the CM-5 a pretty good one.<br /><br />Just goes to show, it doesn't matter how long you've been doing embedded programming, you still learn new stuff every day...<br /><br />- Jon<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=373">JonHylands</a> — Mon Jan 29, 2007 6:28 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[DerekZahn]]></name></author>
<updated>2007-01-29T17:45:58+01:00</updated>
<published>2007-01-29T17:45:58+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6655#p6655</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6655#p6655"/>
<title type="html"><![CDATA[dmtalk]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6655#p6655"><![CDATA[
I see.  I'd be astonished if an ATMega128 couldn't handle it (with the proper software support to keep both data paths busy), since this is exactly what "full duplex" means, but I have never tried it on an Atmel chip so I can't say for sure.<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=11">DerekZahn</a> — Mon Jan 29, 2007 5:45 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JonHylands]]></name></author>
<updated>2007-01-29T17:39:19+01:00</updated>
<published>2007-01-29T17:39:19+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6654#p6654</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6654#p6654"/>
<title type="html"><![CDATA[dmtalk]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6654#p6654"><![CDATA[
No, there isn't anything funny about the CM-5, its just an ATmega128.<br /><br />I guess I may stand corrected, but I'll be interested in hearing from an ATmega128 expert on whether the hardware UART can handle that.<br /><br />You're using LPC2138's for the nodes on Bing, which is a far more powerful processor than the ATmega128.<br /><br />- Jon<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=373">JonHylands</a> — Mon Jan 29, 2007 5:39 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[DerekZahn]]></name></author>
<updated>2007-01-29T17:31:03+01:00</updated>
<published>2007-01-29T17:31:03+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6653#p6653</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6653#p6653"/>
<title type="html"><![CDATA[dmtalk]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6653#p6653"><![CDATA[
Sorry to jump in here as I do not have a Bioloid, but I'm not quite understanding the limitation you're talking about Jon.  Is it a hardware or software limitation on the CM-5?  I use an RS-232 bus on Bing and every node (including the PC) is simultaneously sending and receiving data at 115k baud.  That way my packets only incur one byte of latency through each node.  The RX and TX paths are completely distinct (different pins, different hardware on the processor UARTs, etc) so there is no reason for it not to work, and I don't see any problems.  There is no "master" as such, each connection of RX-TX or TX-RX is completely distinct and requires no synchronization with the other path.<br /><br />Is the CM-5 hardware unusually badly designed so that it can only do half duplex?<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=11">DerekZahn</a> — Mon Jan 29, 2007 5:31 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JonHylands]]></name></author>
<updated>2007-01-29T17:03:36+01:00</updated>
<published>2007-01-29T17:03:36+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6652#p6652</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6652#p6652"/>
<title type="html"><![CDATA[dmtalk]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6652#p6652"><![CDATA[
The reason they each have their own wires is to make it electrically simpler to handle. It also allows a certain amount of multi-master, although there are no guarantees that it will work.<br /><br />The reason it makes more sense for the PC to be the master is then there are no timing/conflict issues.<br /><br />If you really wanted to do it that way, you could have the CM-5 send a special "notification packet" to the PC that would signal the PC that it was time for it to send position/speed values. The CM-5 would then have to wait until it got the data from the PC before sending anything else.<br /><br />If you're running a 115K link between the PC and the CM-5, you're going to be limited with how often you can send sensor data back. Using my previous estimate of 166 bytes per poll, that is 1660 bits per cycle. Your absolute theoretical maximum in that case would be around 69 cycles per second, and that's assuming you never send anything to the servos, only getting data from them.<br /><br />Basically, in real terms, you've got about 50 transactions per second, and you need to divide that up into sends and receives. You can increase that number by getting less data from each servo. My estimates are based on getting 8 bytes per servo, which includes position, speed, load, voltage, and temperature. You could skip the last two, and reduce the total transfer by 40 bytes, but you're still in the same general ballpark.<br /><br />Sending and receiving the "minimum" reasonable amount of data, you're looking at about 40 cycles per second, if you want load information from the servos. That's going to completely saturate your serial connection.<br /><br />These timing limitations are the main reason I am building a 1.0 Mbps wireless connection between the PC and the bus.<br /><br />- Jon<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=373">JonHylands</a> — Mon Jan 29, 2007 5:03 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[billyzelsnack]]></name></author>
<updated>2007-01-29T16:39:00+01:00</updated>
<published>2007-01-29T16:39:00+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6651#p6651</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6651#p6651"/>
<title type="html"><![CDATA[dmtalk]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6651#p6651"><![CDATA[
That's a good thing to know. I just assumed that you could because they each had their own wire. What's the point of them having their own wires?<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=459">billyzelsnack</a> — Mon Jan 29, 2007 4:39 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JonHylands]]></name></author>
<updated>2007-01-29T13:34:50+01:00</updated>
<published>2007-01-29T13:34:50+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6644#p6644</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6644#p6644"/>
<title type="html"><![CDATA[dmtalk]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6644#p6644"><![CDATA[
You have contention because you can't both read &amp; write at the same time. The only serial protocol I've ever heard of that allows that is SPI.<br /><br />If both the PC and the ATmega128 decide to start transmitting at the same time, you're going to have problems...<br /><br />I2C has a really nice way of dealing with that (multi-master), with a simple bus arbitration scheme built into the hardware that chooses the winner when there is a conflict.<br /><br />RS-232 has no such niceness...<br /><br />- Jon<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=373">JonHylands</a> — Mon Jan 29, 2007 1:34 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[billyzelsnack]]></name></author>
<updated>2007-01-29T07:16:26+01:00</updated>
<published>2007-01-29T07:16:26+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6636#p6636</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6636#p6636"/>
<title type="html"><![CDATA[dmtalk]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6636#p6636"><![CDATA[
Why would there be contention? You've got separate TX/RX wires between the PC and uC.<br /><br />I also am not so sure about a 1 to 1 send/receive of data. I think I'd prefer doing more reads than writes if I can sustain a any reasonable frames per second. Meaning.. I'd rather have 30 reads and 20 writes than 25 reads and 25 writes per second. I think that I might even not care so much about writes above say 50hz, but I'd sure take the ability to have reads at 100hz and beyond.<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=459">billyzelsnack</a> — Mon Jan 29, 2007 7:16 am</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JonHylands]]></name></author>
<updated>2007-01-29T04:51:07+01:00</updated>
<published>2007-01-29T04:51:07+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6635#p6635</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6635#p6635"/>
<title type="html"><![CDATA[dmtalk]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6635#p6635"><![CDATA[
I have thought about what you are talking about, with the auto-sync read. The only downside I see to it is the PC then has to be very careful about how it communicates with the bus, because you really want to send data down on the bus at least as often as you get data back again.<br /><br />Since the PC is not typically a hard real-time device, getting the timing correct (to avoid contention between the PC and the ATmega128) could prove problematic.<br /><br />- Jon<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=373">JonHylands</a> — Mon Jan 29, 2007 4:51 am</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[billyzelsnack]]></name></author>
<updated>2007-01-29T03:21:01+01:00</updated>
<published>2007-01-29T03:21:01+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6630#p6630</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6630#p6630"/>
<title type="html"><![CDATA[dmtalk]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6630#p6630"><![CDATA[
I'm thinking of coding up something a little different than a sync read. It could be thought of more as an auto sync read I guess.<br /><br />The idea is that you send a command from the PC with everything that you want and an update interval. The cm5 will then grab all that data from the servos and send it to the PC with no more read requests from the PC.<br /><br />This gets rid of some latency and bandwidth. For my application I would be sending the same packets over and over again, so why even bother. The rest of the api will still be there for one off requests, but this would be used most of the time.<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=459">billyzelsnack</a> — Mon Jan 29, 2007 3:21 am</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JonHylands]]></name></author>
<updated>2007-01-28T14:00:33+01:00</updated>
<published>2007-01-28T14:00:33+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6588#p6588</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6588#p6588"/>
<title type="html"><![CDATA[dmtalk]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6588#p6588"><![CDATA[
One of the things I'm working on in the next week is my 5-axis IMU. This will be a tiny board, that stacks under the Sparkfun 5-axis IMU board, with an ATmega168 on it. The 168 will get input from the IMU board via 6 A/D converters, and it will talk on the Bioloid bus at 1.0 Mbps as a slave device, just like anything else.<br /><br />The IMU will be powered off the bus, so it will literally be a bus device.<br /><br />My brother is puttng together a slave framework for parsing bus commands that will run on the 168. I'm going to finish that, and add in the IMU-specific code. I'm going to publish the whole thing once I'm done.<br /><br />Doing a bus device to run a standard hobby servo would be pretty straight forward, I think...<br /><br />- Jon<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=373">JonHylands</a> — Sun Jan 28, 2007 2:00 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[billyzelsnack]]></name></author>
<updated>2007-01-28T05:30:54+01:00</updated>
<published>2007-01-28T05:30:54+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6583#p6583</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6583#p6583"/>
<title type="html"><![CDATA[dmtalk]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6583#p6583"><![CDATA[
pepperm.<br /><br />Sure. I'll help out. Looks like your plans are very much in line with mine. I basically want to hang sensors off the normal Dynamixel bus. Specifically I want to make an interface that'll accept a standard RC gyro.<br /><br />My background is PC based software, but I am starting to get the hang of this uC stuff. As for circuit design. hahah. Let's just not talk about my progress with that!<br /><br />JonHylands.<br /><br />Yeah. I think sync read is going to be happening very soon in my code. <br /><br />128*1024/8 = 16384 bytes per second / 18 servos = 910 bytes per second per servo / 50hz = 18 bytes @ 50hz<br /><br />Maybe it's half that for bidirectional? Maybe it's div 9 for the 8n1? I dunno.<br /><br />So the bandwidth is there or can easily get there for the PC&lt;-&gt;CM5 (or whatever's in the middle) with a little dumb compression.<br /><br />There must be something else going on besides bandwidth. Maybe my serial read code is broke (still looking into that) or something else in code land. OR.. Maybe there it just a large constant expense to tx/rx any packet. If that's the case, then that is where a sync read could really shine.<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=459">billyzelsnack</a> — Sun Jan 28, 2007 5:30 am</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JonHylands]]></name></author>
<updated>2007-01-27T13:58:19+01:00</updated>
<published>2007-01-27T13:58:19+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6567#p6567</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6567#p6567"/>
<title type="html"><![CDATA[dmtalk]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=1022&amp;p=6567#p6567"><![CDATA[
What I'm planning on doing eventually is implement a new command: SYNC_READ.<br /><br />The premise behind this command is the connection between the ATmega128 and the AX-12s is very fast and low latency, and the connection between your PC program and the ATmega128 might not be.<br /><br />So basically, it will work like this:<br /><br />PC issues SYNC_READ, with start address (same for all servos), length (same for all servos), and the IDs you want to poll.<br /><br />ATmega128 gets the command, starts firing READ_DATA commands for each servo in the set, with the given start address and length. It stores the results in a RAM table it has set aside for this.<br /><br />When the last servo is done, it sends the response back to the PC, all in one shot.<br /><br />The numbers usually tell a lot of the story:<br /><br />Reading 8 bytes per servo, 20 servos (READ_DATA): 14 bytes per servo response, for a total of 280 bytes<br /><br />Using SYNC_READ for the same thing: 166 bytes<br /><br />It really depends on how you have your PC connection set up. If your PC is using a USB interface to directly talk to the bus, then SYNC_READ won't help you at all. But if you've got a wireless link in there, and you have any kind of measurable latency in your link, SYNC_READ would be a big boost.<br /><br />- Jon<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=373">JonHylands</a> — Sat Jan 27, 2007 1:58 pm</p><hr />
]]></content>
</entry>
</feed>