<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-175860550079165897</id><updated>2012-02-16T16:40:35.326-08:00</updated><title type='text'>YE MONSTER DUCK SHW</title><subtitle type='html'>ME218C: 3 engineers building a wireless, remote controlled duck watercraft</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>David</name><uri>http://www.blogger.com/profile/11660641757701699786</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_UdjjHC5mrlc/SKMSYRDW7-I/AAAAAAAAAIs/4IQapxMsxOc/s1600-R/run.jpeg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>52</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-3008102047031398599</id><published>2008-05-29T11:50:00.000-07:00</published><updated>2008-05-29T12:10:48.277-07:00</updated><title type='text'>We survived!</title><content type='html'>&lt;span style="color: rgb(102, 51, 0); font-family: trebuchet ms;font-family:trebuchet ms;" &gt;We made it through the final checkoff despite our last-second problems with the iButton reader. Here are some celebratory before, after, and action shots!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="font-family: trebuchet ms; font-weight: bold; color: rgb(102, 51, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_zqnCVf2uF8k/SD785wEXiuI/AAAAAAAAABM/Eg9SFyrGjXM/s1600-h/CraftBefore.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_zqnCVf2uF8k/SD785wEXiuI/AAAAAAAAABM/Eg9SFyrGjXM/s320/CraftBefore.jpg" alt="" id="BLOGGER_PHOTO_ID_5205876288372837090" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a style="font-family: trebuchet ms; font-weight: bold; color: rgb(102, 51, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_zqnCVf2uF8k/SD79OwEXivI/AAAAAAAAABU/9BkYN10Z4e8/s1600-h/CraftAfter.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_zqnCVf2uF8k/SD79OwEXivI/AAAAAAAAABU/9BkYN10Z4e8/s320/CraftAfter.jpg" alt="" id="BLOGGER_PHOTO_ID_5205876649150089970" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a style="font-family: trebuchet ms; font-weight: bold; color: rgb(102, 51, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_zqnCVf2uF8k/SD79PQEXiwI/AAAAAAAAABc/HP8BF3w0mhQ/s1600-h/CraftAction1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_zqnCVf2uF8k/SD79PQEXiwI/AAAAAAAAABc/HP8BF3w0mhQ/s320/CraftAction1.jpg" alt="" id="BLOGGER_PHOTO_ID_5205876657740024578" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a style="font-family: trebuchet ms; font-weight: bold; color: rgb(102, 51, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_zqnCVf2uF8k/SD795QEXi1I/AAAAAAAAACE/uhsqIFyLWe4/s1600-h/CraftAction2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_zqnCVf2uF8k/SD795QEXi1I/AAAAAAAAACE/uhsqIFyLWe4/s320/CraftAction2.jpg" alt="" id="BLOGGER_PHOTO_ID_5205877379294530386" border="0" /&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 51, 0); font-family: trebuchet ms;font-family:trebuchet ms;" &gt;For some reason, the blog insists on loading the above image sideways....&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="font-family: trebuchet ms; font-weight: bold; color: rgb(102, 51, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_zqnCVf2uF8k/SD79QgEXiyI/AAAAAAAAABs/pgfW0OoyzY0/s1600-h/HelmBefore.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_zqnCVf2uF8k/SD79QgEXiyI/AAAAAAAAABs/pgfW0OoyzY0/s320/HelmBefore.jpg" alt="" id="BLOGGER_PHOTO_ID_5205876679214861090" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a style="font-family: trebuchet ms; font-weight: bold; color: rgb(102, 51, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_zqnCVf2uF8k/SD79QwEXizI/AAAAAAAAAB0/9tucliLIV3I/s1600-h/HelmAfter.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_zqnCVf2uF8k/SD79QwEXizI/AAAAAAAAAB0/9tucliLIV3I/s320/HelmAfter.jpg" alt="" id="BLOGGER_PHOTO_ID_5205876683509828402" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a style="font-family: trebuchet ms; font-weight: bold; color: rgb(102, 51, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_zqnCVf2uF8k/SD795gEXi2I/AAAAAAAAACM/ZanoA2XXXmM/s1600-h/HelmAction.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_zqnCVf2uF8k/SD795gEXi2I/AAAAAAAAACM/ZanoA2XXXmM/s320/HelmAction.jpg" alt="" id="BLOGGER_PHOTO_ID_5205877383589497698" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms; color: rgb(102, 51, 0);"&gt;Great work, guys!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms; color: rgb(102, 51, 0);"&gt;~Laurel&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-3008102047031398599?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/3008102047031398599/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=3008102047031398599' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/3008102047031398599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/3008102047031398599'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/we-survived.html' title='We survived!'/><author><name>Laurel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_zqnCVf2uF8k/SD785wEXiuI/AAAAAAAAABM/Eg9SFyrGjXM/s72-c/CraftBefore.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-6029205586434320238</id><published>2008-05-27T17:31:00.000-07:00</published><updated>2008-05-27T17:33:32.429-07:00</updated><title type='text'>The Final Countdown</title><content type='html'>&lt;span style="font-family: times new roman; color: rgb(51, 51, 255);"&gt;We added an additional battery for the pump that clocks in at 11.10 V (even though it claims to be a lowly 9.6V) It delivers a steady stream of water.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman; color: rgb(51, 51, 255);"&gt;Finished testing today. All systems are go!&lt;br /&gt;&lt;br /&gt;David out&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-6029205586434320238?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/6029205586434320238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=6029205586434320238' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/6029205586434320238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/6029205586434320238'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/final-countdown.html' title='The Final Countdown'/><author><name>David</name><uri>http://www.blogger.com/profile/11660641757701699786</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_UdjjHC5mrlc/SKMSYRDW7-I/AAAAAAAAAIs/4IQapxMsxOc/s1600-R/run.jpeg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-5449092387694981591</id><published>2008-05-26T21:44:00.000-07:00</published><updated>2008-05-26T21:53:11.055-07:00</updated><title type='text'>DUN done</title><content type='html'>&lt;span style="font-family: times new roman; color: rgb(51, 51, 255);"&gt;We draw 110 mA according to my multimeter. 110 mA *h = 880 mAH &lt; 1500 mAH for the battery. We're good. (Theoretical is 2100 mAH, but uses a lot of worst case calculations)&lt;br /&gt;&lt;br /&gt;We decorated the duck and enabled the eyes. They are awesome.&lt;br /&gt;&lt;br /&gt;There was an issue with shifting in just one time to the display, so now it does it every 600 mS based off of the 200 ms timer.&lt;br /&gt;&lt;br /&gt;We turn off all the LEDs except the ship number at the end to indicate gameover.&lt;br /&gt;&lt;br /&gt;We are considering adding a second battery for the pump because it is lame.&lt;br /&gt;&lt;br /&gt;We had a full successful run, including pings during and after pairing, start game from admirals, stand down, base switching, and end game. The motors behaved as expected at all poitns.&lt;br /&gt;&lt;br /&gt;TODO Tomorrow:&lt;br /&gt;Check craft/helm pairing with others (We had successful control of the hot dog today)&lt;br /&gt;Fix up pump&lt;br /&gt;Take videos&lt;br /&gt;Waterproofing&lt;br /&gt;&lt;br /&gt;David out&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-5449092387694981591?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/5449092387694981591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=5449092387694981591' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/5449092387694981591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/5449092387694981591'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/dun-done.html' title='DUN done'/><author><name>David</name><uri>http://www.blogger.com/profile/11660641757701699786</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_UdjjHC5mrlc/SKMSYRDW7-I/AAAAAAAAAIs/4IQapxMsxOc/s1600-R/run.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-2618490649038976865</id><published>2008-05-26T12:42:00.001-07:00</published><updated>2008-05-26T12:45:35.361-07:00</updated><title type='text'>Readying for wet run</title><content type='html'>&lt;span style="color: rgb(51, 51, 255); font-family: times new roman;"&gt;I saw some strange things this morning.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255); font-family: times new roman;"&gt;1. Motors and pump did not respond. This was due to a low voltage battery; problem disappeared when it was charged.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255); font-family: times new roman;"&gt;2. Display was not correct in 7 seg. At times, the team/goal LEDs did not turn on correctly. We knocked down the baud rate to the lowest setting and stopped updating every 200 ms. Now it just updates on standdown and goal change.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255); font-family: times new roman;"&gt;Tested all specials. The quack does not respond all the time. The packet sent is correct, but the timing on the PIC side needs tweaking. The pump and flagon seem to work just fine.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255); font-family: times new roman;"&gt;Next step: Power budget, wet run, waterproofing, LED eyes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255); font-family: times new roman;"&gt;David out&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-2618490649038976865?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/2618490649038976865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=2618490649038976865' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/2618490649038976865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/2618490649038976865'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/readying-for-wet-run.html' title='Readying for wet run'/><author><name>David</name><uri>http://www.blogger.com/profile/11660641757701699786</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_UdjjHC5mrlc/SKMSYRDW7-I/AAAAAAAAAIs/4IQapxMsxOc/s1600-R/run.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-3657901611626224006</id><published>2008-05-26T01:00:00.001-07:00</published><updated>2008-05-26T01:06:35.896-07:00</updated><title type='text'>Endgame movements</title><content type='html'>&lt;span style="font-family: times new roman; color: rgb(51, 51, 255);"&gt;Laurel and I completed the code and electronics for the LED and 7 segment displays today. The bitshift can occur at speeds up to the max of what the E128 can SSP out (25 Mhz/2) For some reason, we found that bits 4 and 7 had to be switched on the charts for the LED display. Quirk: if you call the ShowBoatNumber() function, you also have to update the team affiliation. I placed the refresh for every 200 ms and it is functionally stable, though the update rate is visible.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman; color: rgb(51, 51, 255);"&gt;Benjie and I have hashed out a scheme where we are constantly reading the analog voltages from the drumsticks and use the average for speed every 200 ms. It works out quite nicely; we want the voltage for max speed to be (at the greatest!) about 500 (value from the analog voltage in)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman; color: rgb(51, 51, 255);"&gt;New iButton check on the PIC works fine. Now it will reject 0x00 and 0x00 as well as 0xff and 0xff as successive valid reads&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman; color: rgb(51, 51, 255);"&gt;Karl was able to ping the Helm in its "looking for iButton state" and the Kraft in its "waiting to pair state." That seems solid.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman; color: rgb(51, 51, 255);"&gt;Our helm construction is well on its way. We have tested out hardware for the quack switch (works!) but are still seeing the pump turn on at the start. I have implemented a pump timer which will call for water until 10 seconds after the user stops yelling. The pump code currently is not functional; nor is the duck release. Those are top priority tomorrow.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman; color: rgb(51, 51, 255);"&gt;Agenda for tomorrow:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman; color: rgb(51, 51, 255);"&gt;Fix pump and duck release&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman; color: rgb(51, 51, 255);"&gt;Integrate with drumsticks&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman; color: rgb(51, 51, 255);"&gt;Make power system more stable&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman; color: rgb(51, 51, 255);"&gt;Waterproof the duck&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman; color: rgb(51, 51, 255);"&gt;David out&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-3657901611626224006?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/3657901611626224006/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=3657901611626224006' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/3657901611626224006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/3657901611626224006'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/endgame-movements.html' title='Endgame movements'/><author><name>David</name><uri>http://www.blogger.com/profile/11660641757701699786</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_UdjjHC5mrlc/SKMSYRDW7-I/AAAAAAAAAIs/4IQapxMsxOc/s1600-R/run.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-28105361569100406</id><published>2008-05-23T20:08:00.000-07:00</published><updated>2008-05-23T21:11:34.563-07:00</updated><title type='text'>Helm LEDs</title><content type='html'>&lt;span style="color: rgb(102, 51, 0);font-family:trebuchet ms;" &gt;Helm LEDs have been soldered onto the LED board. Should be ready to go.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 0);font-family:trebuchet ms;" &gt;I implemented a simple color code to keep track of what LED is what. Black/white wires are for the stand down LED, red/white wires are for team indicators, and green/white wires are for base indicators. 7-Segment cables have been made and are ready to go. Just need a bit of software and this part should be ready.&lt;br /&gt;&lt;br /&gt;We are also the proud owners of a Shamu and Crew lunch box. Looks like everything will fit inside, awesome.&lt;br /&gt;&lt;br /&gt;I'm hoping that we can get the whole thing mostly together by the end of the weekend so that we'll have plenty of time to test/break/fix things.&lt;br /&gt;~Laurel&lt;br /&gt;&lt;br /&gt;EDIT: Fry's order has arrived! I'll bring it to the lab tomorrow morning/afternoon.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-28105361569100406?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/28105361569100406/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=28105361569100406' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/28105361569100406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/28105361569100406'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/helm-leds.html' title='Helm LEDs'/><author><name>Laurel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-8034985900847399848</id><published>2008-05-22T16:31:00.000-07:00</published><updated>2008-05-23T21:10:53.639-07:00</updated><title type='text'>LED shift order</title><content type='html'>&lt;span style="color: rgb(102, 51, 51);font-family:trebuchet ms;" &gt;I wrote up a table that outlines the order bits should be clocked into the shift registers. For a given pattern, clock in the bit in column 1 first and work your way to the bit in column 16. (I'm not sure how SSP shifts data. Is LSB or MSB first? Something to look into.) Table can be found in the team folder as LEDshiftTable.xls.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 51);font-family:trebuchet ms;" &gt;Logic for 7-segment display is inverted, if you want a particular segment on, set it to zero. Setting a segment pin equal to 1 turns it off. Base, team, and stand down LEDs have normal logic (1 is on, 0 off).  The sheet of paper with 7-segment drawings and my scrawl all over it might be a bit confusing since the numbering on it is different from the numbering in the table (segment 1 is actually the 16th value shifted in, 2nd segment is the 15th value shifted in, etc.) Probably best to just ignore it and only use the table. Drop me a line if you have any questions. I'll try to be on-hand during programming time for question answering.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 51);font-family:trebuchet ms;" &gt;LED board is practically ready to go, just need to figure out how long LED wires need to be, solder them in, and pop in the shift registers. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 51);font-family:trebuchet ms;" &gt;Lunch box has been acquired, just need to mount the E128, xBee, and sensor circuitry inside.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 51, 51);font-family:trebuchet ms;" &gt;I'm 100% serious about the beer and ice cream being up for grabs....please don't make me eat/drink it all -_-&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 51);font-family:trebuchet ms;" &gt;~Laurel&lt;br /&gt;&lt;br /&gt;EDIT: &lt;strike&gt;Just looked it up, LSB is shifted first. So all off would be 11111111 1000000 (0xFF 0x80)&lt;br /&gt;Red Team with Blue Base active, no stand down, and craft 3 would be:  00100011 10001001 (0x23 0x89)...I think I'm going to modify the table to show the bit order rather than the shift order...should be easier to understand.&lt;/strike&gt;&lt;br /&gt;&lt;br /&gt;Okay, I was confused. Turns out we can do LSB or MSB first depending on if the LSB first bit is set/clear in the SPICR1 register. I'm not sure how David has it set up (I'm assuming MSB first since that's the default.) The LEDshiftTable.xls file has tables for both situations so we should be covered no matter what we choose.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-8034985900847399848?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/8034985900847399848/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=8034985900847399848' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/8034985900847399848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/8034985900847399848'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/led-shift-order.html' title='LED shift order'/><author><name>Laurel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-4110594663565683875</id><published>2008-05-22T01:18:00.000-07:00</published><updated>2008-05-22T01:43:41.024-07:00</updated><title type='text'>LED board</title><content type='html'>&lt;span style="font-family: trebuchet ms; color: rgb(102, 51, 0);"&gt;Since we have tons of LEDs to power, Benjie and I decided to use a pair of shift registers rather than a ton of pins. This way we can use the built in serial communications stuff in the E128 to control all of our LEDs. I soldered up the board for this, it's a bit of a mess, but at least it's a color-coded one?&lt;/span&gt;&lt;br /&gt;&lt;a style="font-family: trebuchet ms; color: rgb(102, 51, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_zqnCVf2uF8k/SDUtjwEXisI/AAAAAAAAAA8/_XNDS-xDAHM/s1600-h/IMG_0040.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_zqnCVf2uF8k/SDUtjwEXisI/AAAAAAAAAA8/_XNDS-xDAHM/s320/IMG_0040.jpg" alt="" id="BLOGGER_PHOTO_ID_5203115036718369474" border="0" /&gt;&lt;/a&gt;&lt;span style="font-family: trebuchet ms; color: rgb(102, 51, 0);"&gt;Red - 5V&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms; color: rgb(102, 51, 0);"&gt;Black - Ground&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms; color: rgb(102, 51, 0);"&gt;White - Clock&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms; color: rgb(102, 51, 0);"&gt;Green - MOSI/serial input to shift registers&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms; color: rgb(102, 51, 0);"&gt;Blue+Yellow - connect shift registers to buffers&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms; color: rgb(102, 51, 0);"&gt;We still need to get some HC 74HC164s since the student shop doesn't have any (instead the have the opposite 74HC165...how useless). Dan says they have the part we need at Jameco.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms; color: rgb(102, 51, 0);"&gt;The board was made with wiring in mind, so the LED output order is a bit wonky:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms; color: rgb(102, 51, 0);"&gt;From the top (where the power and ground rails are) to the bottom (where there's empty board).&lt;/span&gt;&lt;br /&gt;&lt;u style="font-family: trebuchet ms; color: rgb(102, 51, 0);"&gt;Right Side     |   Left side&lt;/u&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms; color: rgb(102, 51, 0);"&gt;    1          |      5&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms; color: rgb(102, 51, 0);"&gt;    2          |      6&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms; color: rgb(102, 51, 0);"&gt;    3          |      7&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms; color: rgb(102, 51, 0);"&gt;    4          |      8&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms; color: rgb(102, 51, 0);"&gt;    9          |     13&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms; color: rgb(102, 51, 0);"&gt;    10        |     14&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms; color: rgb(102, 51, 0);"&gt;    11        |     15&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms; color: rgb(102, 51, 0);"&gt;    12        |     16&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms; color: rgb(102, 51, 0);"&gt;This shouldn't be a problem so long as we are smart about how we wire up the LEDs (i.e. put all the 7-segment control lines in order). I still need to figure out the pinout for the small 7-segment LEDs (Big ones require too much voltage). Once I get that figured out, I'll add some molex plugs for them to plug into at the bottom of the board.&lt;br /&gt;&lt;br /&gt;Oh, long serial data, and power cables have been made. They're hanging by the E128 pinout paper.&lt;br /&gt;&lt;br /&gt;I &lt;3 Benjie's sharpies,&lt;br /&gt;~Laurel&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-4110594663565683875?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/4110594663565683875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=4110594663565683875' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/4110594663565683875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/4110594663565683875'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/led-board.html' title='LED board'/><author><name>Laurel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_zqnCVf2uF8k/SDUtjwEXisI/AAAAAAAAAA8/_XNDS-xDAHM/s72-c/IMG_0040.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-2350762671402113365</id><published>2008-05-21T16:22:00.000-07:00</published><updated>2008-05-21T16:30:29.856-07:00</updated><title type='text'>Pins from lunchbox to backboard</title><content type='html'>GND                                1&lt;br /&gt;    7 seg display:         9&lt;br /&gt;    TeamColor                2&lt;br /&gt;    ActiveBase                 2&lt;br /&gt;    StandDown                1&lt;br /&gt;    ibutton                          3(2?)&lt;br /&gt;    Mic                                  1&lt;br /&gt;    Tilt switch                   1&lt;br /&gt;    BIGREDBUTTON1&lt;br /&gt;&lt;br /&gt;Total 21&lt;br /&gt;or (20) if we give up the ibutton led&lt;br /&gt;&lt;br /&gt;Hooray molex.   &gt;_&lt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-2350762671402113365?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/2350762671402113365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=2350762671402113365' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/2350762671402113365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/2350762671402113365'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/pins-from-lunchbox-to-backboard.html' title='Pins from lunchbox to backboard'/><author><name>Benjie Nelson</name><uri>http://www.blogger.com/profile/10028387849597664193</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-4619848810431082009</id><published>2008-05-20T12:54:00.000-07:00</published><updated>2008-05-20T13:08:47.765-07:00</updated><title type='text'>Care for a quacker?</title><content type='html'>&lt;span style="color: rgb(102, 51, 0);"&gt;&lt;span style="font-family: trebuchet ms;"&gt;The duck quack for special 1 has been built, coded, and (lightly) tested. Thank you A quarter for providing us with a convenient sound chip from Radio Shack.&lt;br /&gt;&lt;br /&gt;The red/white wire are power/ground and the white/green wires are signal/ground. To play a sound, pull the white signal  wire low and hold. To play the sound again, pull the white signal wire high, wait a moment, then pull and hold it low again.&lt;br /&gt;&lt;br /&gt;All this is already taken care of in software. To play the sound, just send a navigation command with bit 4 high in the Special Actions Byte. Pin A1 on DumbPIC controls the sound.&lt;br /&gt;&lt;br /&gt;\o\&lt;br /&gt;~Laurel&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-4619848810431082009?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/4619848810431082009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=4619848810431082009' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/4619848810431082009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/4619848810431082009'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/care-for-quacker.html' title='Care for a quacker?'/><author><name>Laurel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-8713080433313420849</id><published>2008-05-19T08:59:00.000-07:00</published><updated>2008-05-19T09:02:39.660-07:00</updated><title type='text'>Pictures!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_UdjjHC5mrlc/SDGkghdS38I/AAAAAAAAABU/zAwReSZyq9c/s1600-h/IMG_0674.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_UdjjHC5mrlc/SDGkghdS38I/AAAAAAAAABU/zAwReSZyq9c/s320/IMG_0674.JPG" alt="" id="BLOGGER_PHOTO_ID_5202119923233644482" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_UdjjHC5mrlc/SDGkRBdS36I/AAAAAAAAABE/Yux_j5qu4N4/s1600-h/IMG_0686.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_UdjjHC5mrlc/SDGkRBdS36I/AAAAAAAAABE/Yux_j5qu4N4/s320/IMG_0686.JPG" alt="" id="BLOGGER_PHOTO_ID_5202119656945672098" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_UdjjHC5mrlc/SDGkgxdS39I/AAAAAAAAABc/NL8KIWD22rI/s1600-h/IMG_0679.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_UdjjHC5mrlc/SDGkgxdS39I/AAAAAAAAABc/NL8KIWD22rI/s320/IMG_0679.JPG" alt="" id="BLOGGER_PHOTO_ID_5202119927528611794" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_UdjjHC5mrlc/SDGkQhdS34I/AAAAAAAAAA0/uJ8OQ8aHU4k/s1600-h/IMG_0688.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_UdjjHC5mrlc/SDGkQhdS34I/AAAAAAAAAA0/uJ8OQ8aHU4k/s320/IMG_0688.JPG" alt="" id="BLOGGER_PHOTO_ID_5202119648355737474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_UdjjHC5mrlc/SDGkQxdS35I/AAAAAAAAAA8/pLOJ7Z_mYp4/s1600-h/IMG_0689.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_UdjjHC5mrlc/SDGkQxdS35I/AAAAAAAAAA8/pLOJ7Z_mYp4/s320/IMG_0689.JPG" alt="" id="BLOGGER_PHOTO_ID_5202119652650704786" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_UdjjHC5mrlc/SDGkRBdS36I/AAAAAAAAABE/Yux_j5qu4N4/s1600-h/IMG_0686.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_UdjjHC5mrlc/SDGkRBdS36I/AAAAAAAAABE/Yux_j5qu4N4/s320/IMG_0686.JPG" alt="" id="BLOGGER_PHOTO_ID_5202119656945672098" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_UdjjHC5mrlc/SDGkRRdS37I/AAAAAAAAABM/Xk_58FkpOYE/s1600-h/IMG_0685.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_UdjjHC5mrlc/SDGkRRdS37I/AAAAAAAAABM/Xk_58FkpOYE/s320/IMG_0685.JPG" alt="" id="BLOGGER_PHOTO_ID_5202119661240639410" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-8713080433313420849?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/8713080433313420849/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=8713080433313420849' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/8713080433313420849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/8713080433313420849'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/pictures.html' title='Pictures!'/><author><name>David</name><uri>http://www.blogger.com/profile/11660641757701699786</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_UdjjHC5mrlc/SKMSYRDW7-I/AAAAAAAAAIs/4IQapxMsxOc/s1600-R/run.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_UdjjHC5mrlc/SDGkghdS38I/AAAAAAAAABU/zAwReSZyq9c/s72-c/IMG_0674.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-4702924491510589520</id><published>2008-05-18T23:29:00.000-07:00</published><updated>2008-05-19T01:04:25.431-07:00</updated><title type='text'>Victory dance v 2.0</title><content type='html'>&lt;span style="color: rgb(102, 51, 0);"&gt;&lt;span style="font-family: trebuchet ms;"&gt;Now with more beer!&lt;br /&gt;&lt;br /&gt;Smart PIC/Dumb PIC setup is working nicely. They both read the xBee transmission line and respond appropriately. Whoo!&lt;br /&gt;&lt;br /&gt;We also fixed up the board for the Duck. The battery connection is much more solid now and we've improved the connection to the pump.&lt;br /&gt;&lt;br /&gt;David added a better jumper on Blinkyn, so now he's more reliable. Blinkyn, not David.&lt;br /&gt;&lt;br /&gt;We were seeing the pump turn on sometimes right on powerup. We think it's software (pulldown didn't help) but we're not sure. It's working now, but we don't expect it to stay that way. We commented out setup IO, iButton, xbee and clrf intcon and uncommented them one by one. Unfortunately, it worked in the end. Go figure.&lt;br /&gt;&lt;br /&gt;Green tea mochi ice cream and Mission Street beer are up for grabs. Enjoy~!&lt;br /&gt;~Laurel&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-4702924491510589520?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/4702924491510589520/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=4702924491510589520' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/4702924491510589520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/4702924491510589520'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/victory-dance-v-20.html' title='Victory dance v 2.0'/><author><name>David</name><uri>http://www.blogger.com/profile/11660641757701699786</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_UdjjHC5mrlc/SKMSYRDW7-I/AAAAAAAAAIs/4IQapxMsxOc/s1600-R/run.jpeg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-7363368253258352845</id><published>2008-05-18T12:25:00.001-07:00</published><updated>2008-05-18T12:28:11.923-07:00</updated><title type='text'>Schedule for today</title><content type='html'>&lt;span style="color: rgb(51, 51, 255);"&gt;Implement ReadW command (DLL)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Implement multiple read scheme (DLL)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    Suggestion: Oversend the address. The smart pic sends 10, the dumb pic samples 3 times.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;                                 Each sample is blocking. Once 3 are received, pick either the number that was&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;                                repeated, or the last number received if they are all different&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Implement smart pic code that sends the number when received (LF)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Incorporate ReadW into dumb pic code (LF + DLL)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Test on breadboard (LF + DLL)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Wire into duck (LF + DLL)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Test on duck (LF + DLL)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Check off + celebrate&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255); font-family: times new roman;"&gt;David out&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-7363368253258352845?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/7363368253258352845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=7363368253258352845' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/7363368253258352845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/7363368253258352845'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/schedule-for-today.html' title='Schedule for today'/><author><name>David</name><uri>http://www.blogger.com/profile/11660641757701699786</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_UdjjHC5mrlc/SKMSYRDW7-I/AAAAAAAAAIs/4IQapxMsxOc/s1600-R/run.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-2306571213252839921</id><published>2008-05-17T21:48:00.000-07:00</published><updated>2008-05-17T22:34:34.051-07:00</updated><title type='text'>Victory Dance</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;span style="font-family: trebuchet ms; color: rgb(102, 51, 0);"&gt;\o\ /o/ \o\  /o/ \o\ /o/ \o\  /o/ \o\ /o/ \o\  &lt;/span&gt;&lt;span style="font-family: trebuchet ms; color: rgb(102, 51, 0);"&gt;&lt;br /&gt;\o/&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms; color: rgb(102, 51, 0);"&gt;     The Helm and craft are talking to each other, admirals, and occasionally the world at large (is someone braodcasting?) We've simulated an entire game with a helm, craft, and "admiral" xBee sending/receiving communications. We've tried all the communication combinations we could think of and it works as far as we can tell.&lt;br /&gt;&lt;br /&gt;Today is a good day.&lt;br /&gt;&lt;br /&gt;While soldering the iButton connector to the PIC on the craft board we realized that only one PIC can read the iButton. This PIC (henceforth referred to as 'smart PIC') is the only PIC that knows the iButton serial number. After bouncing around a few ideas, we think the best way to take care of this issue to use SSP between the PICS. Once the smart PIC is fully matched with the helm (first valid navigation command received,) it will SSP the address of the paired helm over to the dumb PIC. Meanwhile, the dumb PIC just sits and waits until it hears the address from the smart PIC. Once both PICs know who to listen to, they parse packets as normal.&lt;br /&gt;&lt;br /&gt;\o\&lt;br /&gt;~Laurel&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-2306571213252839921?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/2306571213252839921/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=2306571213252839921' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/2306571213252839921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/2306571213252839921'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/victory-dance.html' title='Victory Dance'/><author><name>Laurel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-784061925570498105</id><published>2008-05-16T23:12:00.001-07:00</published><updated>2008-05-16T23:17:00.119-07:00</updated><title type='text'>Good news, everyone!</title><content type='html'>&lt;a style="color: rgb(51, 51, 255); font-family: times new roman;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_UdjjHC5mrlc/SC53eBdS33I/AAAAAAAAAAs/yVCAAHFjcnM/s1600-h/goodnews.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_UdjjHC5mrlc/SC53eBdS33I/AAAAAAAAAAs/yVCAAHFjcnM/s320/goodnews.jpg" alt="" id="BLOGGER_PHOTO_ID_5201225977330589554" border="0" /&gt;&lt;/a&gt;&lt;span style="color: rgb(51, 51, 255); font-family: times new roman;"&gt;Pic code has been tested! It goes all the way through (with simulated inputs) from being pinged, then detecting an iButton, then receiving a message and finding a helm, to receiving navigations commands (with timeout!) And...it does standdown! We're pretty much done on this side!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255); font-family: times new roman;"&gt;The helm code can ID all of the admiral commands, but has problems sending. The problem is the extra layer implemented by SendMessage; the receiving E128 can't see all the packets from the new architecture. The old xbee harness works ok, though.  All the supporting code for the state machines is present; now we actually need to program the game.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255); font-family: times new roman;"&gt;We have acquired an additional E128 for admiral spoofing. If only we could acquire an admiral XBee...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255); font-family: times new roman;"&gt;We rock! Let's check off for the whole week on Sunday!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255); font-family: times new roman;"&gt;We approve of the outrigger modifications. AWESOME!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255); font-family: times new roman;"&gt;David out&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-784061925570498105?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/784061925570498105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=784061925570498105' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/784061925570498105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/784061925570498105'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/good-news-everyone.html' title='Good news, everyone!'/><author><name>David</name><uri>http://www.blogger.com/profile/11660641757701699786</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_UdjjHC5mrlc/SKMSYRDW7-I/AAAAAAAAAIs/4IQapxMsxOc/s1600-R/run.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_UdjjHC5mrlc/SC53eBdS33I/AAAAAAAAAAs/yVCAAHFjcnM/s72-c/goodnews.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-4338493763137648609</id><published>2008-05-16T12:29:00.001-07:00</published><updated>2008-05-16T23:59:43.936-07:00</updated><title type='text'>Rock and a hard place</title><content type='html'>Attempts to stabilize the craft&lt;span style="font-family:georgia;"&gt;:&lt;br /&gt;&lt;br /&gt;Attempt:&lt;br /&gt;Added pink foam under to raise it out of the water and strapped a big rock to the bottom.&lt;br /&gt;Result:&lt;br /&gt;More stable, same water profile, really heavy. Likes to spin, hates to go forward. seems to wallow in the water.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Attempt:&lt;br /&gt;Remove the rock&lt;br /&gt;Result:&lt;br /&gt;Super tippy. rollin' all over the place, especially side to side (as always)&lt;br /&gt;&lt;br /&gt;Attempt:&lt;br /&gt;Add two outrigger ducks to make it a trimaran&lt;br /&gt;Result:&lt;br /&gt;Much much more stable rolling. Still a little tippy forward, but I think that the bumper should help with that. Plus the tri-duck affair has a classy look (and since it is really the pink foam under the ducks that causes the flotation we can fire them off if we like).&lt;br /&gt;&lt;br /&gt;Things left to do for seaworthyness:&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;wait for it to dry and attach pink foam and outriggers with glue&lt;/li&gt;&lt;li&gt;attach bumper around all 3 ducks.&lt;/li&gt;&lt;li&gt;attach some kind of keel to help the craft drive straight&lt;/li&gt;&lt;li&gt;figure out how we are going to keep the inside dry and how/if we are going to try and seal the top&lt;/li&gt;&lt;/ol&gt;PS: a piece of wire-wrap wire, two alligator clips and a 3 amp power supply makes a great pink foam cutter.&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-4338493763137648609?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/4338493763137648609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=4338493763137648609' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/4338493763137648609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/4338493763137648609'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/rock-and-hard-place.html' title='Rock and a hard place'/><author><name>Benjie Nelson</name><uri>http://www.blogger.com/profile/10028387849597664193</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-5130901592349258985</id><published>2008-05-16T01:01:00.000-07:00</published><updated>2008-05-16T01:47:15.386-07:00</updated><title type='text'>Craft code, redone!</title><content type='html'>&lt;span style="font-family: trebuchet ms; color: rgb(102, 51, 0);"&gt;SO...massive restructuring of code for the craft is complete. I ran it through the debugger and it seems to work. I haven't tested all cases, I'd like to sit down with you guys, walk you through it and test all the possibilities we can think of.&lt;br /&gt;&lt;br /&gt;The new version is much simpler, all packets are parsed by the same chunk of code rather than each state calling a unique parsing function. The code figures out where to return to using the Exit subroutine (based on the ExitPing idea suggested by Benjie). Exit checks a variable that tracks the current state of the craft (already in place since it's required for a ping response) and figures out if it should return to looking for iButton, looking for helm, or game mode. If it's really confused and can't figure out what state to return to, it just goes back to MAIN and resets.&lt;br /&gt;&lt;br /&gt;Checking is now a bit more robust. Admiral addresses are fully checked, both MSB and LSB, instead of just bit 7 of the LSB. MSB and LSB of helm address are also checked. I'm still debating if I want to put in really robust checks for header bytes and/or admiral messages. Checking individual bits is more straightforward, but if a garbled packet gets sent out, the chances of it triggering unwanted behavior are much higher.&lt;br /&gt;&lt;br /&gt;Stages of checking are:&lt;br /&gt;Check Header --&gt; Check if address is valid (unless iButton) --&gt; execute command&lt;br /&gt;If an invalid header or address is detected, we just go back to polling for packets&lt;br /&gt;&lt;br /&gt;Calls for game setup functions (Interrupts, 3s timer, PWM, etc.) are somewhat buried. They are called right after the first valid navigation command is received from the paired helm. The team LED is also lit up at this time (I arbitrarily assigned  pin A1 to Red and A2 to  Blue).&lt;br /&gt;&lt;br /&gt;Code is saved as code/Handshake/Handshake2.asm and code/craft_v0.asm I'll start messing around with stuff outside the debugger tomorrow...hopefully it will still work.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-5130901592349258985?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/5130901592349258985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=5130901592349258985' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/5130901592349258985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/5130901592349258985'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/craft-code-redone.html' title='Craft code, redone!'/><author><name>Laurel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-3718428794441296463</id><published>2008-05-15T18:14:00.000-07:00</published><updated>2008-05-15T18:19:36.847-07:00</updated><title type='text'>Successful wet run</title><content type='html'>&lt;a style="color: rgb(51, 51, 255); font-family: times new roman;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_UdjjHC5mrlc/SCzhCxdS32I/AAAAAAAAAAk/b9lhnt2K6jg/s1600-h/IMG_0683.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_UdjjHC5mrlc/SCzhCxdS32I/AAAAAAAAAAk/b9lhnt2K6jg/s320/IMG_0683.JPG" alt="" id="BLOGGER_PHOTO_ID_5200779107458277218" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255); font-family: times new roman;"&gt;The duck drives and squirts water from the virtual helm! Here's our duck after a successful run in ...wait for it...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255); font-family: times new roman;"&gt;a dry duck!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255); font-family: times new roman;"&gt;We found why we were spinning in circles the other night. Even though LeftPic and RightPic were in two different projects, they were referencing the same set of code.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255); font-family: times new roman;"&gt;Things to fix:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255); font-family: times new roman;"&gt;1. Duck sits low in the water&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255); font-family: times new roman;"&gt;2. We can't attain top speed in the front (can't decode 0x80, always 0x70)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255); font-family: times new roman;"&gt;3. The left motor is backwards (We have to set it to "reversed" to have it go correctly with respect to the helm settings)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255); font-family: times new roman;"&gt;4. Cable to the ship XBee is squirrelly&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255); font-family: times new roman;"&gt;5. Add LEDs to indicate sending and receiving on xbee boards&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255); font-family: times new roman;"&gt;6. Resolder connections on the helm power board&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255); font-family: times new roman;"&gt;Congratulations all around!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255); font-family: times new roman;"&gt;David out&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-3718428794441296463?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/3718428794441296463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=3718428794441296463' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/3718428794441296463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/3718428794441296463'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/successful-wet-run.html' title='Successful wet run'/><author><name>David</name><uri>http://www.blogger.com/profile/11660641757701699786</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_UdjjHC5mrlc/SKMSYRDW7-I/AAAAAAAAAIs/4IQapxMsxOc/s1600-R/run.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_UdjjHC5mrlc/SCzhCxdS32I/AAAAAAAAAAk/b9lhnt2K6jg/s72-c/IMG_0683.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-1735563537602832918</id><published>2008-05-15T16:32:00.000-07:00</published><updated>2008-05-15T16:37:47.813-07:00</updated><title type='text'>Killing me softly with NOPs</title><content type='html'>Sendshit works now. Problem traced to some kind of timing. We firet got really on the trail when we tried to have the pic send the information asynchronously to the e128 bypassing the xbees.  Only every other packet was getting through. weird. Could we be filling up the tx and discarding every other packet? Adding a ton (7-10) NOPs between each byte sent out to the xbee fixes the problem. Yaaaay&lt;br /&gt;&lt;br /&gt;(Still confusing as to the root cause..)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-1735563537602832918?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/1735563537602832918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=1735563537602832918' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/1735563537602832918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/1735563537602832918'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/killing-me-softly-with-nops.html' title='Killing me softly with NOPs'/><author><name>Benjie Nelson</name><uri>http://www.blogger.com/profile/10028387849597664193</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-6558104259280551445</id><published>2008-05-15T03:03:00.000-07:00</published><updated>2008-05-15T03:06:53.139-07:00</updated><title type='text'>Helm ahoy!</title><content type='html'>&lt;span style="color: rgb(102, 51, 0);font-family:trebuchet ms;" &gt;Today we built the helm....well the non-electronic bits anyways.&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_zqnCVf2uF8k/SCvhmzdgZzI/AAAAAAAAAA0/5U_X_Wctc3M/s1600-h/IMG_0029.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_zqnCVf2uF8k/SCvhmzdgZzI/AAAAAAAAAA0/5U_X_Wctc3M/s320/IMG_0029.jpg" alt="" id="BLOGGER_PHOTO_ID_5200498251494614834" border="0" /&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 51, 0);"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Circuitry for the helm has been prototyped, the drumsticks and microphone work pretty well. Basic software for reading the inputs has also been written and somewhat tested by David's test harness.&lt;br /&gt;&lt;br /&gt;In other news, xBee and the iButton are now playing together nicely. The problem was I accidentally used "CALL" instead of "GOTO" when jumping to the CheckPing function.&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 51, 0);"&gt;&lt;span style="font-family:trebuchet ms;"&gt; Now that this bug is fixed, the code (saved in Pairing2) can read iButtons even when the E128 is constantly sending and the PIC is calling SendShit in response to those sends. It does not use any interrupts, I'm not sure if we want to try adding them or just let it be and only use interrupts in later bits of code.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 51, 0);"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Christ I'm an idiot....I wasted not only my day, but David's as well tracking down that problem &gt;_&lt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 0);"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;br /&gt;While debugging I noticed that the PIC doesn't instantly start printing out received data when the E128 talks to it...it will be silent for a few seconds (5-10) then spew data. I'm not sure if the xBees need some time to warm up or if I'm doing something weird. Although, another team did mention that they were having the same issue...hmmm.&lt;br /&gt;&lt;br /&gt;Also, SendShit does not seem to be working properly...When I expect to see the PIC respond like crazy to e128 transmissions the transmit line simply idles high. Also, the improved checksum needs to be added to the code in Pairing2.&lt;br /&gt;&lt;br /&gt;Last in the lab, but only by a few minutes.&lt;br /&gt;~Laurel&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-6558104259280551445?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/6558104259280551445/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=6558104259280551445' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/6558104259280551445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/6558104259280551445'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/helm-ahoy.html' title='Helm ahoy!'/><author><name>Laurel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_zqnCVf2uF8k/SCvhmzdgZzI/AAAAAAAAAA0/5U_X_Wctc3M/s72-c/IMG_0029.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-326607063425412878</id><published>2008-05-15T00:45:00.001-07:00</published><updated>2008-05-15T00:48:19.586-07:00</updated><title type='text'>Still working on the iButton</title><content type='html'>&lt;span style="color: rgb(51, 51, 255); font-family: times new roman;"&gt;The iButton and ping response integration is still non functional. I thought I had it working, but it was a special case. The issue is that several packets received in a row will cause the iButton to stop responding. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255); font-family: times new roman;"&gt;I tried several tactics, such as not scanning for the iButton after each reading of the serial, but the scope line remains obstinately low or high. When it starts out before any packets are received, it will behave ok. After it receives several packets in a row, it will stop responding. First we tried interrupts disabled, but this did not have any effect.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255); font-family: times new roman;"&gt;I'll continue with this tomorrow&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255); font-family: times new roman;"&gt;David&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-326607063425412878?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/326607063425412878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=326607063425412878' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/326607063425412878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/326607063425412878'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/still-working-on-ibutton.html' title='Still working on the iButton'/><author><name>David</name><uri>http://www.blogger.com/profile/11660641757701699786</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_UdjjHC5mrlc/SKMSYRDW7-I/AAAAAAAAAIs/4IQapxMsxOc/s1600-R/run.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-4219184359190250370</id><published>2008-05-14T13:14:00.000-07:00</published><updated>2008-05-14T13:34:29.140-07:00</updated><title type='text'>Go for gameplay?</title><content type='html'>&lt;span style="color: rgb(102, 51, 0);font-family:trebuchet ms;" &gt;Code for decoding and responding to messages during the craft's gameplay state has been written. The code seems to work in the debugger, and after a few fixes seems to work alright with the simple test harness. We haven't tested all possible cases, or admiral messages.&lt;br /&gt;&lt;br /&gt;While I was coding, we had a visitor.&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_zqnCVf2uF8k/SCtL0zdgZyI/AAAAAAAAAAs/sWgcD-hY6h0/s1600-h/IMG_0026.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_zqnCVf2uF8k/SCtL0zdgZyI/AAAAAAAAAAs/sWgcD-hY6h0/s320/IMG_0026.jpg" alt="" id="BLOGGER_PHOTO_ID_5200333565268616994" border="0" /&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 51, 0);font-family:trebuchet ms;" &gt;When implementing the continuous send we were having a bit of trouble getting the craft to act properly.  One of the motors and the pump weren't responding to commands. Possible causes include loose wires, weirdness in the circuit board (why can't we keep power properly connected?), and bad code...the usual suspects really.&lt;br /&gt;&lt;br /&gt;The float overnight test was a success, there was a &lt;span style="font-style: italic;"&gt;tiny &lt;/span&gt;bit of water inside the duck, but it's quite possible that was simply water that hadn't dried...sadly I dropped the duck right after checking so it looks a bit wetter on the inside now -_-&lt;br /&gt;&lt;br /&gt;Next I think I'll work on writing code to sync with a craft. But I can hold off on this if either of you guys want help with your stuff.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-4219184359190250370?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/4219184359190250370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=4219184359190250370' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/4219184359190250370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/4219184359190250370'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/go-for-gameplay.html' title='Go for gameplay?'/><author><name>Laurel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_zqnCVf2uF8k/SCtL0zdgZyI/AAAAAAAAAAs/sWgcD-hY6h0/s72-c/IMG_0026.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-4988828048381755350</id><published>2008-05-13T01:14:00.000-07:00</published><updated>2008-05-13T02:21:39.188-07:00</updated><title type='text'>Code for Duck</title><content type='html'>&lt;span style="font-family: trebuchet ms; color: rgb(102, 51, 0);"&gt;Assembly code for the duck is coming along, I made the arbitrary decision that since we have on/off water, any water value we get that's 8 or above will turn on the water (easier to code than checking for any non-zero value, not to mention that noise in analog water communications would make our water be on constantly). Not sure if this is the best idea, thoughts?&lt;br /&gt;&lt;br /&gt;To send messages, I plan to move the desired ME218 bytes and receiver addresses into specific registers then call a SendShit (yes, I'm actually going to name it that) subroutine that shoves the bytes in order to the USART and thus the xBee....speaking of which, I still need to write a subroutine to calculate the checksum...meaning I should also double-check which bytes are included in the checksum.&lt;br /&gt;&lt;br /&gt;Next big steps for me:&lt;br /&gt;1) Finish writing up code for the gameplay portion of the state machine&lt;br /&gt;2) Test it in the debugger&lt;br /&gt;3) Figure out how to integrate David's iButton reading stuff&lt;br /&gt;4) Code up the pregame sync with helm part&lt;br /&gt;5) Test pairing of craft with helm&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-4988828048381755350?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/4988828048381755350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=4988828048381755350' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/4988828048381755350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/4988828048381755350'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/code-for-duck.html' title='Code for Duck'/><author><name>Laurel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-7321160335491103462</id><published>2008-05-12T15:20:00.001-07:00</published><updated>2008-05-12T15:31:43.407-07:00</updated><title type='text'>More drumming thoughts</title><content type='html'>&lt;span style="font-family: times new roman; color: rgb(51, 51, 255);"&gt;    Here's my scheme to encode two drumsticks and two buttons into a navigation packet.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman; color: rgb(51, 51, 255);"&gt;First, we use Benjie's circuit and the A/D converter to read in the speed of each drumbeat. We encode 5 regions: Stop, Slow, medium, fast, and max as 0-4.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman; color: rgb(51, 51, 255);"&gt;For speed, we take both sticks and add the speed region together. The result is going to be 0-8, so we will scale by 2 for the packet. When neither is pounding, speed is 0. When we're pounding away, it's going to be 8. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman; color: rgb(51, 51, 255);"&gt;For direction, we will first assign a sign to each data, with the button on the drumsticks signaling negative. Then we subtract the numbers. If left is full forwards and right is full backwards, we will have 4-(-4) = 8. If left equals right, we will have 0, going straight. If left is full backwards and right is full forwards, we will have -4-4 = -8. We will then have a number from -8 to 8, we will shift to 0 to 15. This is asymmetric, but we can merge two states in the packet (e.g. turn left slowly and turn left slightly faster will be blended)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman; color: rgb(51, 51, 255);"&gt;Thoughts?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman; color: rgb(51, 51, 255);"&gt;David&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-7321160335491103462?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/7321160335491103462/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=7321160335491103462' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/7321160335491103462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/7321160335491103462'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/more-drumming-thoughts.html' title='More drumming thoughts'/><author><name>David</name><uri>http://www.blogger.com/profile/11660641757701699786</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_UdjjHC5mrlc/SKMSYRDW7-I/AAAAAAAAAIs/4IQapxMsxOc/s1600-R/run.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-2627329924870552980</id><published>2008-05-12T02:42:00.000-07:00</published><updated>2008-05-12T02:49:08.994-07:00</updated><title type='text'></title><content type='html'>State of things:&lt;br /&gt;The wired board controls the motor in the test harness with the pic in either spot. Everything is on it, except the i-button is not  hooked up to anything although the led is wired on. Do we want to use a pin for that, so it will blink or something when it is ready to be used? That would be a very minor change. Only other addition is whatever specials we need/want.&lt;br /&gt;Also where do we want to mount the i-button. I'm thinking right in the front and center: in the chest, but on the back would also be a good spot.&lt;br /&gt;I am so excited to type at the keyboard and have the board turn the motor.&lt;br /&gt;&lt;br /&gt;I was missing some packets though... don't know what was going on. The testbed said "all packets sent" but nothing would happen until I sent it a few more times... The motor was right between the two xbees but I'd hope that it could deal with that. Is there any other reason for it to be ignored?&lt;br /&gt;&lt;br /&gt;Anyway. It is bedtime++&lt;br /&gt;&lt;br /&gt;-Benjie&lt;br /&gt;&lt;span style="font-family: georgia;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-2627329924870552980?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/2627329924870552980/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=2627329924870552980' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/2627329924870552980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/2627329924870552980'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/state-of-things-wired-board-controls.html' title=''/><author><name>Benjie Nelson</name><uri>http://www.blogger.com/profile/10028387849597664193</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-602335422516290082</id><published>2008-05-11T23:44:00.000-07:00</published><updated>2008-05-11T23:47:25.040-07:00</updated><title type='text'>Work assignments</title><content type='html'>Laurel: Work on packet parsing and PIC state machine&lt;br /&gt;David: Work on helm backbone software and iButton integration&lt;br /&gt;Benjie: Finish duck electronics, start helm construction and helm electronics&lt;br /&gt;&lt;br /&gt;Everyone: Think about specials and how to implement&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-602335422516290082?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/602335422516290082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=602335422516290082' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/602335422516290082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/602335422516290082'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/work-assignments.html' title='Work assignments'/><author><name>David</name><uri>http://www.blogger.com/profile/11660641757701699786</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_UdjjHC5mrlc/SKMSYRDW7-I/AAAAAAAAAIs/4IQapxMsxOc/s1600-R/run.jpeg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-8170450312467746226</id><published>2008-05-11T22:47:00.001-07:00</published><updated>2008-05-12T09:52:09.935-07:00</updated><title type='text'>Laurel's tutorial on PWM (as recorded by DLL)</title><content type='html'>Translated Version:&lt;br /&gt;The PWM is controlled by the CCP1MX and P1Mx pins.&lt;br /&gt;CCP1MX controls which pins are active high. We desired 1100.&lt;br /&gt;P1MX controls whether we drive the motor in full h-bridge mode forward or backwards. Toggle these to change direction.&lt;br /&gt;&lt;br /&gt;Pin connections:  P1B and P1D should be attached to the motor outputs&lt;br /&gt;When going forward, P1B is held low and P1D is modulated.&lt;br /&gt;When going backwards, P1D is held low and P1B is modulated.&lt;br /&gt;&lt;br /&gt;Benjie's code starts with a baseline speed from -8 to 8, then adds the direction (for the right motor) since the direction nibble ranges from full left turn to full right turn.&lt;br /&gt;&lt;br /&gt;Our PWM period is 0x80. We write to CCPR1L to change duty cycles.&lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;0xF8 is our input raw motor speed = -8&lt;br /&gt;Our first bit is high, so we want to go backwards.&lt;br /&gt;Bitshift to upper nibble = 1000 = 128 = 0x80&lt;br /&gt;Which mean we go backwards at FULL SPEED&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*********************************************************************&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Transcript from Laurel re: PWM Pins&lt;br /&gt;&lt;br /&gt;To whom it may concern:&lt;br /&gt;&lt;br /&gt;The PWM is controlled by CCP1CON. Note that CCP1M1 is not equal to P1M1. \ (&gt;_&lt;) \&lt;br /&gt;(Laurel is unhappy) So, we want CCP1M to be 1100: The magic combination with P1A and P1c active-High, P1B, P1D active -high. This is set for full H-Bridge control, the P1m1 and P1m0 are 11 (reverse) or 01 (forwards).&lt;br /&gt;&lt;br /&gt;CCP1Mx enables PWM by setting bits 3 and 2 high. having bits 0 and 1 low makes it so that it's active high, which assume hi is on and low is off.&lt;br /&gt;&lt;br /&gt;P1m control direction and whether it's half bridge or full bridge mode. For full bridge forward, we want *01* for full bridge reverse, we want *11*&lt;br /&gt;&lt;br /&gt;Current configuration:&lt;br /&gt;CCP1Mx: 1100&lt;br /&gt;P1Mx: Toggle to go for'ard, back'ard&lt;br /&gt;&lt;br /&gt;When it's going for'ard, P1B is held low, and P1D is modulated. Higher high times on the duty cycle means it goes for'ards faster!&lt;br /&gt;&lt;br /&gt;When it's going back'ards, P1D is held low, and P1B is moduled. Higher high times on the duty cycle means it goes back'ards faster!&lt;br /&gt;&lt;br /&gt;P1A and P1C are doing crazy things. IGNORE THEM!!! (or figure out what they mean later)&lt;br /&gt;&lt;br /&gt;What Benjie's code does is calculate duty cycle based on direction. It looks at speed and direction bits. The code is currently written for the right motor. Since higher numbers means RIGHT TURN, it adds direction nibble to speed nibble. The higher the direction nibble is, the more we want to be truckin' forward on the right motor. Speed is baseline, goes from full backwards (-8) to full forwards (8). Thus, we add the direction er...directly to the speed and we get our desired duty cycle and motor direction. Negative number means we, the right motor, are going backwards  (Hereafter referred to as RIGHT MOTOR)&lt;br /&gt;&lt;br /&gt;To set direction, we set P1Mx accordingly. To set duty cycle, we write to CCPR1L.&lt;br /&gt;&lt;br /&gt;Raw motor speed: -8 to 8&lt;br /&gt;Look at 1st bit to set direction.&lt;br /&gt;Bitshift to upper nibble&lt;br /&gt;Our duty cycle is ready!&lt;br /&gt;&lt;br /&gt;Note that our PWM period is 0x80.&lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;0xF8 is our input raw motor speed = -8&lt;br /&gt;Our first bit is high, so we want to go back'ards.&lt;br /&gt;Bitshift to upper nibble = 1000 = 128 = 0x80&lt;br /&gt;Which mean we go backwards at FULL SPEED&lt;br /&gt;&lt;br /&gt;Example 2:&lt;br /&gt;0x06 is our input raw motor speed = 6  = 00000110&lt;br /&gt;Our first bit is low, so we want to go for'ards.&lt;br /&gt;Bitshift to upper nibble 0110 = 0x60 which is pretty fast for our duty cycle&lt;br /&gt;75% Benjie, you rock!&lt;br /&gt;&lt;br /&gt;Sincerely,&lt;br /&gt;Laurel Fullerton, Mechanical Engineering, Stanford University&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-8170450312467746226?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/8170450312467746226/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=8170450312467746226' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/8170450312467746226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/8170450312467746226'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/laurels-tutorial-on-pwm-as-recorded-by.html' title='Laurel&apos;s tutorial on PWM (as recorded by DLL)'/><author><name>David</name><uri>http://www.blogger.com/profile/11660641757701699786</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_UdjjHC5mrlc/SKMSYRDW7-I/AAAAAAAAAIs/4IQapxMsxOc/s1600-R/run.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-8948411960752722280</id><published>2008-05-10T16:52:00.000-07:00</published><updated>2008-05-10T17:22:28.875-07:00</updated><title type='text'>Countdown to Victoly!</title><content type='html'>&lt;span style="color: rgb(51, 51, 255);font-size:100%;" &gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;Laurel and I decided on a modified buffer scheme.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;Scheme:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;Search for a specific sequence of bytes:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt; &lt;p class="NoSpacing"  style="margin-left: 1in; text-indent: -0.25in; color: rgb(51, 51, 255);font-family:times new roman;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:100%;"&gt;&lt;span style=""&gt;0.&lt;span style=""&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-size:100%;"&gt;Start Delimiter (always 0x7E)&lt;/span&gt;&lt;/p&gt;  &lt;p class="NoSpacing"  style="margin-left: 1in; text-indent: -0.25in; color: rgb(51, 51, 255);font-family:times new roman;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:100%;"&gt;&lt;span style=""&gt;1.&lt;span style=""&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-size:100%;"&gt;Length – MSB (should be 0)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="NoSpacing"  style="margin-left: 1in; text-indent: -0.25in; color: rgb(51, 51, 255);font-family:times new roman;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:100%;"&gt;&lt;span style=""&gt;2.&lt;span style=""&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-size:100%;"&gt;Length – LSB (should be 8)&lt;/span&gt;&lt;/p&gt;  &lt;p class="NoSpacing"  style="margin-left: 1in; text-indent: -0.25in; color: rgb(51, 51, 255);font-family:times new roman;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:100%;"&gt;&lt;span style=""&gt;3.&lt;span style=""&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-size:100%;"&gt;API identifier (0x81 for received transmission)&lt;/span&gt;&lt;/p&gt;&lt;span style="color: rgb(51, 51, 255);font-size:100%;" &gt;&lt;span style="font-family:times new roman;"&gt;Once we received all these packets, we'll assume that the next 8 bytes are valid and will parse them accordingly. We will need storage space for&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;Source MSB&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;Source LSB&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;ME218 Byte0 Header&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;ME218 Byte1 Navigation&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;ME218 Byte2 Special&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-size:100%;" &gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;How things can go horribly wrong:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;1. We receive a partial packet while checking for our first 4 states- This one's not so bad. We'll just start looking again for the start delimiter.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;2. We receive a partial packet while we think we're&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-size:100%;" &gt;&lt;span style="font-family:times new roman;"&gt; receiving good data- This one's a bit worse. The current packet is trash, and the next packet is trashed as well because our parsing is off. The good news is that we'll detect the fact that the second packet is bad because the four byte sequence will be off. We'll ignore the rest of the packet until a good sequence comes in. The strength of this scheme is that we can wait any length of time until this happens; a valid packet&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;could be 1 ms or 1 s away and we would still be able to detect it.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;State progression:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-size:100%;" &gt;&lt;a style="font-family: times new roman;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_UdjjHC5mrlc/SCY7-lv0rJI/AAAAAAAAAAc/Dwx9AjlX9qY/s1600-h/RX+Plan.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 203px; height: 263px;" src="http://3.bp.blogspot.com/_UdjjHC5mrlc/SCY7-lv0rJI/AAAAAAAAAAc/Dwx9AjlX9qY/s320/RX+Plan.jpg" alt="" id="BLOGGER_PHOTO_ID_5198908766316440722" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-size:100%;" &gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;Reason *not* to do the timer:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;1. Needs a lot of buffers to store all the data&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;2. Hard to debug/test: no way to indicate why a packet was rejected&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;3. Timers are squirrelly&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-8948411960752722280?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/8948411960752722280/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=8948411960752722280' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/8948411960752722280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/8948411960752722280'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/countdown-to-victoly.html' title='Countdown to Victoly!'/><author><name>David</name><uri>http://www.blogger.com/profile/11660641757701699786</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_UdjjHC5mrlc/SKMSYRDW7-I/AAAAAAAAAIs/4IQapxMsxOc/s1600-R/run.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_UdjjHC5mrlc/SCY7-lv0rJI/AAAAAAAAAAc/Dwx9AjlX9qY/s72-c/RX+Plan.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-7186028995523637340</id><published>2008-05-10T00:34:00.000-07:00</published><updated>2008-05-10T02:03:05.410-07:00</updated><title type='text'>Timing on PIC</title><content type='html'>&lt;span style="font-family: trebuchet ms; color: rgb(102, 51, 51);"&gt;While writing up code for the PIC to read messages off of the xBee I asked Paul a simple question that's greatly complicated how we should implement the reading of messages.&lt;br /&gt;&lt;br /&gt;The original plan was to read  12 bytes of data and shuffle the useful ones into the appropriate registers. Seems simple enough but it's a bit too simple. This method does not protect against the xBee receiving a partial packet. In this set up, if a partial packet comes through, the first byte of the next packet will be read as a middle byte of the partial packet. The packets will be perpetually off and the craft won't be able to parse the transmissions.&lt;br /&gt;&lt;br /&gt;Paul's suggestion was that we calculate the time it would take the xBee to shift in the next byte of data (the byte time) and have a timer that signals a timeout if it takes much longer than the byte time to receive the next byte. If this timer expires, we've received a partial packet so we should ignore the transmission and treat the next incoming byte as the first byte of a new packet.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 51); font-family: trebuchet ms;"&gt;The xBee has a baudrate of 9600, this means that the PIC receives 9600 bits per second. There are 8 bits to a byte, as well as some framing bits. If we assume 10 bits per transmitted byte, it takes slightly over 1 millisecond for the next byte of data to be shifted in. So we need a timer that's longer than 1 ms and shorter than 0.2 s (the time elapsed before the next command from the helm) a few ms should be safe.&lt;br /&gt;&lt;br /&gt;Shouldn't be too tough to implement, except the craft only has one timer remaining and it needs to be used for the 3 second communications timeout timer specified in the protocol. (If the craft does not hear anything from its paired helm within 3 seconds, it needs to shut off all motors, water, special commands and just listen for transmissions.)  Timers 1 and 2 are used by the PWM system, so we'll need to use another PIC or be smart about how we use timer 0.&lt;br /&gt;&lt;br /&gt;Timer 0 steadily increments a register until it overflows from 0xFF to 0x00. It then throws a flag and does nothing until the flag is cleared and another non-zero value is written to the timer 0 register. This register can be read/written to at any time.&lt;br /&gt;&lt;br /&gt;I currently have code written and tested that detects when three seconds has passed. It uses massive prescaling on timer 0 (256) and counts ~230 overflows to time 3 seconds. Overflows are handled with a simple interrupt service routine since they happen almost constantly.&lt;br /&gt;&lt;br /&gt;I think we can piggyback the shorter USART timeout timer on the 3 second timer. When monitoring for the timeout we need to first record the current count on timer 0, then monitor the timer 0 register as it counts up. If it counts up a few ms worth of tics (about 20 tics) before the next byte arrives, then there has been a timeout on the USART transmission.&lt;br /&gt;&lt;br /&gt;Then again, it might be easier to just look at all the incoming bytes...The first few in a packet always have the same values. 218 data can potentially look like one or two of them, but four in a row? (Start Delimiter, Length MSB, Length LSB, API identifier should be constant across all messages.) I'm not entirely sure how to get back on track using this method...I'll have to think about it when it's not 2 am.&lt;br /&gt;&lt;br /&gt;Lessons learned while coding 3 second timer&lt;br /&gt;1) Writing anything to the timer 0 register changes the prescale, this is a pain...thankfully reading the timer 0 register should leave the prescale alone.&lt;br /&gt;2) The W in MOVWF is very important, especially when using it to restore the STATUS register on your way out of an interrupt.&lt;br /&gt;&lt;br /&gt;Time to crash&lt;br /&gt;~Laurel&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: trebuchet ms; color: rgb(102, 51, 51);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-7186028995523637340?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/7186028995523637340/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=7186028995523637340' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/7186028995523637340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/7186028995523637340'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/timing-on-pic.html' title='Timing on PIC'/><author><name>Laurel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-2237562279891697454</id><published>2008-05-09T22:44:00.000-07:00</published><updated>2008-05-09T22:48:33.995-07:00</updated><title type='text'>XBee progress</title><content type='html'>&lt;span style="color: rgb(0, 0, 153); font-family: times new roman;"&gt;I wired up the red XBee board to talk via a molex connector. It takes two jumper wires: &lt;/span&gt; &lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-family: times new roman;"&gt;Tie pins 10-13 9-12&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-family: times new roman;"&gt;Six pin molex&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-family: times new roman;"&gt; From top:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-family: times new roman;"&gt; +5&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-family: times new roman;"&gt; From XBee Dout&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-family: times new roman;"&gt; To XBee Din&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-family: times new roman;"&gt; x&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-family: times new roman;"&gt; x&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-family: times new roman;"&gt; gnd&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-family: times new roman;"&gt;Four pin molex&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-family: times new roman;"&gt;  From top:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-family: times new roman;"&gt;  +5&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-family: times new roman;"&gt;  From XBee Dout&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-family: times new roman;"&gt;  To XBee Din&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-family: times new roman;"&gt;  gnd&lt;/span&gt;&lt;br /&gt;  &lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-family: times new roman;"&gt; Helm 03 LED red is burned out; voltages look good, though.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-family: times new roman;"&gt;Yellow LED is on (ON LED) , Red LED blinks (Associated) which matches Peter and Ted's.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-family: times new roman;"&gt;I finished my send menu for the XBee harness.  It incorporates checksums, and to the best of my knowledge is sending at 9600 baud (data appears on the SCI line) Decided not to go for interrupts; don't think it'll take too long or that we'll miss messages. We'll put the receive on an interrupt routine.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-family: times new roman;"&gt;David out.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-2237562279891697454?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/2237562279891697454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=2237562279891697454' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/2237562279891697454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/2237562279891697454'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/xbee-progress.html' title='XBee progress'/><author><name>David</name><uri>http://www.blogger.com/profile/11660641757701699786</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_UdjjHC5mrlc/SKMSYRDW7-I/AAAAAAAAAIs/4IQapxMsxOc/s1600-R/run.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-3312754079360289294</id><published>2008-05-08T23:32:00.000-07:00</published><updated>2008-05-08T23:58:19.081-07:00</updated><title type='text'>Pump and PWM</title><content type='html'>&lt;span style="color: rgb(102, 51, 51);font-family:trebuchet ms;" &gt;Bilge pump has been mounted on the duck, thankfully Benjie had the brilliant idea of hanging the pump by its hose. This way we won't need to worry about kinks in the hose or water leaking into the duck. Best of all, we won't have an unsightly hose on the outside of the craft. \o\&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 51);font-family:trebuchet ms;" &gt;Motors are also mounted, though they still need waterproofing. Again, big props to Benjie for finding a way to attach them other than zip ties. Right now we're waiting for the glue to dry on the pump insertion before we try attaching anything else. I'm thinking we'll be spending the next few days gluing at the start of the day then not touching the duck until the next day when we glue something else. Thankfully we have time to do this without rushing.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 51);font-family:trebuchet ms;" &gt;PWM is working on the PIC, I've fixed the bug that was causing the duty cycle to always be half of what we expected...I think it was a bank select error.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 51);font-family:trebuchet ms;" &gt;Communications Commitee draft is now out to the public...hopefully the draft isn't too confusing.&lt;br /&gt;&lt;br /&gt;Next big steps:&lt;br /&gt;1) Designing/soldering circuitry for craft&lt;br /&gt;2) Writing assembly code to decode/respond to helm messages - I think this will mostly be motor control and water activation. I don't know if they expect us to be able to send out responses to iButton broadcasts...but I could be wrong.&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 51, 51);font-family:trebuchet ms;" &gt;3) Getting xBee to do our bidding&lt;br /&gt;&lt;br /&gt;Oh, a possible useful tool I stumbled across:&lt;br /&gt;Decimal/binary/hex converters: &lt;a href="http://www.efunda.com/units/base_n.cfm?base_from=10"&gt;eFunda&lt;/a&gt; and &lt;a href="http://www.ronshardwebapps.com/Numbers.asp"&gt;Some guy named Ron&lt;/a&gt;&lt;br /&gt;The eFunda one is a bit better, it shows the number in all binary, hex, and base 10 across the top...if you scroll down you'll get results up to base 36.&lt;br /&gt;~Laurel&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-3312754079360289294?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/3312754079360289294/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=3312754079360289294' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/3312754079360289294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/3312754079360289294'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/pump-and-pwm.html' title='Pump and PWM'/><author><name>Laurel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-4554033428026761136</id><published>2008-05-08T22:58:00.000-07:00</published><updated>2008-05-08T23:00:19.731-07:00</updated><title type='text'>iButton, V2</title><content type='html'>&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="font-family: times new roman;"&gt;iButton is up and running on the PIC after much head bashing.&lt;br /&gt;&lt;br /&gt;Lessons:&lt;br /&gt;&lt;br /&gt;1. Make extra sure to check your banksel&lt;br /&gt;2. Reset flags as late as possible. I reset a flag...then reset some timing registers which automatically set the flag!&lt;br /&gt;3. The PIC executes an instruction in the 600-1000 ns range. Plan accordingly&lt;br /&gt;4. The iButton is very time sensitive, especially in its 5 us pause time.&lt;br /&gt;&lt;br /&gt;David out&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-4554033428026761136?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/4554033428026761136/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=4554033428026761136' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/4554033428026761136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/4554033428026761136'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/ibutton-v2.html' title='iButton, V2'/><author><name>David</name><uri>http://www.blogger.com/profile/11660641757701699786</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_UdjjHC5mrlc/SKMSYRDW7-I/AAAAAAAAAIs/4IQapxMsxOc/s1600-R/run.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-2064430499834984482</id><published>2008-05-07T23:25:00.001-07:00</published><updated>2008-05-07T23:42:55.167-07:00</updated><title type='text'>Waterproofing update</title><content type='html'>&lt;span style="color: rgb(102, 51, 0);font-family:trebuchet ms;" &gt;The waterproofing test seemed pretty successful, the adhesives that stuck to the test container did a great job of waterproofing (if we replace the seals that didn't stick too well we'll have an orange juice container to drive around). Since we aren't sure what adhesive will work best on the duck, we cut it open (first blood!) and did a test panel of different adhesives on the inside. Six different adhesives were tested, the one that sticks the best will be our sealant.&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_zqnCVf2uF8k/SCKgNBWXMWI/AAAAAAAAAAk/g-6AeypeoKY/s1600-h/IMG_0022.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_zqnCVf2uF8k/SCKgNBWXMWI/AAAAAAAAAAk/g-6AeypeoKY/s320/IMG_0022.jpg" alt="" id="BLOGGER_PHOTO_ID_5197893065499947362" border="0" /&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 51, 0);font-family:trebuchet ms;" &gt;For some reason the silicone sealant we bought doesn't seem to be sticking to anything...strange since multiple people have told me that silicone would be the way to go...&lt;br /&gt;&lt;br /&gt;In other news, the Communications Committee has released a draft B of the protocol. No drastic changes, just a few extra commands sprinkled in as well as a final compromise on the 'special' commands. The Pseudocode has been updated to reflect the changes. Unless Matt has any major complaints about the draft (I don't forsee any) we should be ready to get started on coding up communications shuff.&lt;br /&gt;~Laurel&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-2064430499834984482?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/2064430499834984482/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=2064430499834984482' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/2064430499834984482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/2064430499834984482'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/waterproofing-update.html' title='Waterproofing update'/><author><name>Laurel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_zqnCVf2uF8k/SCKgNBWXMWI/AAAAAAAAAAk/g-6AeypeoKY/s72-c/IMG_0022.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-6342330571304865986</id><published>2008-05-07T17:41:00.001-07:00</published><updated>2008-05-07T18:01:34.477-07:00</updated><title type='text'>Using speed and direction to steer a tank</title><content type='html'>&lt;span style="font-family:georgia;font-size:100%;"&gt;I propose the following encoding:&lt;br /&gt;&lt;br /&gt;Helm&lt;br /&gt;The helm has two analog inputs (one from the left stick and one from the right) and two digital inputs from the reverse buttons on the sticks. If you use the digital input as a sign bit you get a signed 9 bit number for left and right (ie -255 to 255).  We need to convert that into a nibble that represents speed (0 being full back and 16 being full forward) and a direction that is 0 meaning full right and 16 meaning full left. The first thing is to add 255 to each to make a 9 bit unsigned number.&lt;br /&gt;&lt;br /&gt;To construct the speed nibble use:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Speed = (Left + Right)/(32)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;div style="text-align: left;"&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;I think that divide by 32 should concat to just the 4 most significant bits.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Direction = (Right - Left)/(32)&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;With this encoding pounding on both drums gets full forward, zero turn. Doing nothing is zero drive zero turn. One full forward one full back gives zero speed and full turn. However you should note that with our helm it is impossible to give a full forward and full turn command. I don't believe that this is a fault of the encoding, because I cannot imagine a drumming pattern that I would expect to give that output. To turn you have to slow down. I think this is fine. &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family:georgia;font-size:100%;"&gt;&lt;br /&gt;Boat&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;if we interpret the number coming in as -8 to 8, we need to extract a -8 to 8 value for each boat motor.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Left motor = (speed - direction)|limited to +- 8&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Right motor = (speed - direction)|limited to +- 8&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;  Incidentally I don't think that our helm will ever require the limit to +-8. I think that it is inherent in the limit in the helm and boat because we are doing tank drive. In the same way what does a drive-rudder boat do with a zero speed full turn? I'd have to think harder to be sure but I think what I said is true. Anyway: whaddyathink?&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:georgia;font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:georgia;font-size:100%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:georgia;font-size:100%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:georgia;font-size:100%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-6342330571304865986?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/6342330571304865986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=6342330571304865986' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/6342330571304865986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/6342330571304865986'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/using-speed-and-direction-to-steer-tank.html' title='Using speed and direction to steer a tank'/><author><name>Benjie Nelson</name><uri>http://www.blogger.com/profile/10028387849597664193</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-6529449685602065302</id><published>2008-05-07T17:30:00.000-07:00</published><updated>2008-05-07T17:41:06.646-07:00</updated><title type='text'>Microphone</title><content type='html'>&lt;span style="font-family: georgia;"&gt;Progress on the microphone as a digital input:&lt;br /&gt;We now have a circuit that takes the two mic leads and outputs a digital signal that can be interpreted as "whether someone is/was recently screaming into the mic.&lt;br /&gt;&lt;br /&gt;Here is the signal processing/circuit overview&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-family: georgia;"&gt;Input signal is the microphone input which I assume to basically be a sin wave centered at ground&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: georgia;"&gt;run through an inverting amplifier (gain of 22), this gives a bigger amplitude and saturates all voltages below gnd.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: georgia;"&gt;the output of that is run through a diode to charge a RC circuit (R = 1M C = 10uF tau = 0.1 sec)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: georgia;"&gt;This is run through a buffer&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: georgia;"&gt;and into a standard comparator with hysteresis circuit for a clean digital input.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-family: georgia;"&gt;It's pretty nice in that complicated words usually come out as just being one digital signal for the length of the word.&lt;br /&gt;&lt;br /&gt;Also the zigbees are soldered. yaay!&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-6529449685602065302?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/6529449685602065302/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=6529449685602065302' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/6529449685602065302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/6529449685602065302'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/microphone.html' title='Microphone'/><author><name>Benjie Nelson</name><uri>http://www.blogger.com/profile/10028387849597664193</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-2270258419940643567</id><published>2008-05-07T13:18:00.000-07:00</published><updated>2008-05-07T14:01:03.099-07:00</updated><title type='text'>More todo list!</title><content type='html'>&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="font-family:times new roman;"&gt;Here's what's keeping me up at night:&lt;br /&gt;&lt;br /&gt;Power system design&lt;br /&gt;Pinouts on PIC and E128- Breakout board?&lt;br /&gt;Write code to translate drumbeats through A/D to direction commands&lt;br /&gt;7 Segment display and driver for helm&lt;br /&gt;&lt;br /&gt;We can hit these pretty hard even before the communications flurry dies down&lt;br /&gt;&lt;br /&gt;David out&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-2270258419940643567?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/2270258419940643567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=2270258419940643567' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/2270258419940643567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/2270258419940643567'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/more-todo-list.html' title='More todo list!'/><author><name>David</name><uri>http://www.blogger.com/profile/11660641757701699786</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_UdjjHC5mrlc/SKMSYRDW7-I/AAAAAAAAAIs/4IQapxMsxOc/s1600-R/run.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-2990081942215977011</id><published>2008-05-07T11:17:00.000-07:00</published><updated>2008-05-09T00:02:04.517-07:00</updated><title type='text'>Waterproofing test</title><content type='html'>&lt;span style="color: rgb(102, 51, 0);"&gt;&lt;span style="font-family:trebuchet ms;"&gt;We're going to need to cut holes in our beloved duck eventually, we should make sure we can plug them before we go too far. Here's an idea I had:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Cut holes in a sacrificial Tupperware&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Run cable ties, wires, whatever we think we'll need to run through holes in the actual craft through the Tupperware holes&lt;/li&gt;&lt;li&gt;Plug up/seal the holes - we might want to try multiple seals&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Float Tupperware and look for leaks&lt;/li&gt;&lt;/ol&gt;Other crap to tackle:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Sending basic messages with xBee&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Maybe practice sending/receiving iButton serial numbers once David gets iButton reading working on PIC&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Cutting water hose to length and checking pressure of squirted water&lt;/li&gt;&lt;ul&gt;&lt;li&gt;If there isn't enough pressure to squirt water up/over edge of goal, we'll need to design something to hold the nozzle at the right height&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Figure out what specials we want and how to activate them&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Waiting for Comm Committee to make final decision on number/type required &gt;_&lt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Solder up H-bridge for controlling submarine motors. We'll need it eventually, might as well get it out of the way now&lt;/li&gt;&lt;li&gt;Figure out/mess with PWM on PIC&lt;/li&gt;&lt;li&gt;Make final decision on if/what small ducks we want to order&lt;/li&gt;&lt;li&gt;Current calculations on submarine motors and pump...along with whatever other sample calculations we can think of&lt;/li&gt;&lt;li&gt;Remember to eat/sleep&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-2990081942215977011?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/2990081942215977011/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=2990081942215977011' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/2990081942215977011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/2990081942215977011'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/waterproofing-test.html' title='Waterproofing test'/><author><name>Laurel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-7418136189105206895</id><published>2008-05-07T00:04:00.000-07:00</published><updated>2008-05-07T00:22:06.803-07:00</updated><title type='text'>Code that isn't</title><content type='html'>&lt;span style="font-family: trebuchet ms; color: rgb(102, 51, 0);"&gt;Pseudocode for the helm, craft, general read/write from xBee have been written and are in the team folder. The pseudocode outlines the big picture of what helms/craft should do throughout the course of the game.&lt;br /&gt;&lt;br /&gt;Pseudocode for how the craft should respond to commands has not been written (i.e. how to calculate motor PWM duty cycle based on speed/direction commands). This is mostly due to the fact that it's quite possible the communications committee will completely revamp what/how commands will be sent (especially in regard to special commands and water commands) at tomorrow's meeting with Matt.&lt;br /&gt;&lt;br /&gt;A document containing all I know about xBee has also been added to the team folder. I have (at least) one question for the teaching staff:&lt;br /&gt;-Will we need to send any configuration commands to the xBee chips (i.e. programming in our address, setting it to API mode, etc.) every time the craft/helm boots up, or is this already taken care of? I &lt;span style="font-style: italic;"&gt;think &lt;/span&gt;Karl already programmed in the addresses, I'm not sure if the other parameters of interest were also taken care of. Especially since we've covered how to configure the xBee in lecture.&lt;br /&gt;&lt;br /&gt;If someone remembers to ask this before I get a chance, let me know.&lt;br /&gt;~Laurel&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-7418136189105206895?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/7418136189105206895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=7418136189105206895' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/7418136189105206895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/7418136189105206895'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/code-that-isnt.html' title='Code that isn&apos;t'/><author><name>Laurel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-4871601019640176327</id><published>2008-05-06T23:12:00.000-07:00</published><updated>2008-05-06T23:15:54.979-07:00</updated><title type='text'>I, Button.</title><content type='html'>&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;  &lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="font-family: times new roman;"&gt;iButton reading on the E128 is up! The code is in our project directory/currentcode/ibuttonTest&lt;br /&gt;&lt;br /&gt;Here's the good news: you load the .h and call ReadSerialNumber() and it works!&lt;br /&gt;Here's the bad news: it's blocking and a little bit squirrelly when you break contact with the button. But the first value seems pretty stable or we can do some filtering or majority voting to fix it.&lt;br /&gt;&lt;br /&gt;Here's a small Q &amp;amp;A&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;1.What is the iButton?&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;     DS1990A Self timed memory storage device&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt; 2.What is the iButton reader?&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;      Reads data stored on iButton&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;      Serial transfer on half duplex line (tx or rx, but not at same time) within "discretely defined time slots" &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;         Translation: The clock rate is set, we're doing asynchronous communications&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;     CMOS open drain output, needs 5 kohm pullup&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;3. How do you power it?&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;     Parasitic power: it steals power from the data line&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;4. How do you connect to it?&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;     1 data line, one ground line&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;5. How do you signal you want data?&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;     Commands and data are sent bit by bit (starting with LSB) based on timing&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;     Synchonization based on falling edge when master pulls line low (kind of like slave select...)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;     33H or OFH (That's the only command)    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;6. What kind of communications does it use?&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;     Asynchronous style over a regular I/O pin&lt;br /&gt;&lt;br /&gt;A big thanks to Laurel for solving my command problem!&lt;br /&gt;&lt;br /&gt;Tomorrow: time to program it on the PIC&lt;br /&gt;&lt;br /&gt;David out&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-4871601019640176327?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/4871601019640176327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=4871601019640176327' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/4871601019640176327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/4871601019640176327'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/i-button.html' title='I, Button.'/><author><name>David</name><uri>http://www.blogger.com/profile/11660641757701699786</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_UdjjHC5mrlc/SKMSYRDW7-I/AAAAAAAAAIs/4IQapxMsxOc/s1600-R/run.jpeg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-6783985296575105612</id><published>2008-05-06T15:13:00.000-07:00</published><updated>2008-05-06T15:28:56.235-07:00</updated><title type='text'>To Boldly Go (tm)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_UdjjHC5mrlc/SCDYfgG4J_I/AAAAAAAAAAM/tyFEtEUJd3M/s1600-h/IMG_0666.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_UdjjHC5mrlc/SCDYfgG4J_I/AAAAAAAAAAM/tyFEtEUJd3M/s320/IMG_0666.JPG" alt="" id="BLOGGER_PHOTO_ID_5197392005691877362" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_UdjjHC5mrlc/SCDYfgG4KAI/AAAAAAAAAAU/j_gtKFaNTQE/s1600-h/IMG_0672.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_UdjjHC5mrlc/SCDYfgG4KAI/AAAAAAAAAAU/j_gtKFaNTQE/s320/IMG_0672.JPG" alt="" id="BLOGGER_PHOTO_ID_5197392005691877378" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms; color: rgb(51, 51, 255);"&gt;Our test was a success! Our duck moved quickly enough on two motors (even loaded with one battery and the bilge pump) that we decided they were sufficient for propulsion. We will use two PICs; one for each motor.&lt;br /&gt;&lt;br /&gt;Go duck!&lt;br /&gt;&lt;br /&gt;David out&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-6783985296575105612?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/6783985296575105612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=6783985296575105612' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/6783985296575105612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/6783985296575105612'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/to-boldly-go-tm.html' title='To Boldly Go (tm)'/><author><name>David</name><uri>http://www.blogger.com/profile/11660641757701699786</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_UdjjHC5mrlc/SKMSYRDW7-I/AAAAAAAAAIs/4IQapxMsxOc/s1600-R/run.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_UdjjHC5mrlc/SCDYfgG4J_I/AAAAAAAAAAM/tyFEtEUJd3M/s72-c/IMG_0666.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-5647520307804466024</id><published>2008-05-06T14:25:00.000-07:00</published><updated>2008-05-06T14:26:11.989-07:00</updated><title type='text'>Design review</title><content type='html'>&lt;span style="font-family: times new roman; color: rgb(0, 0, 153);"&gt;The duck arrived!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman; color: rgb(0, 0, 153);"&gt;Testing:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman; color: rgb(0, 0, 153);"&gt;1. Strap motors to duck, put on bilge pump, see if runs&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman; color: rgb(0, 0, 153);"&gt;2. Benjie: Mock up mike circuit, see if triggered by drums&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman; color: rgb(0, 0, 153);"&gt;3. Order ducks ASAP&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman; color: rgb(0, 0, 153);"&gt;4. David: iButton reading&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman; color: rgb(0, 0, 153);"&gt;5. Laurel: Pseudocode for what the duck will need to do&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman; color: rgb(0, 0, 153);"&gt;David out&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-5647520307804466024?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/5647520307804466024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=5647520307804466024' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/5647520307804466024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/5647520307804466024'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/design-review.html' title='Design review'/><author><name>David</name><uri>http://www.blogger.com/profile/11660641757701699786</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_UdjjHC5mrlc/SKMSYRDW7-I/AAAAAAAAAIs/4IQapxMsxOc/s1600-R/run.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-4356710835313578359</id><published>2008-05-06T12:13:00.000-07:00</published><updated>2008-05-06T12:14:03.752-07:00</updated><title type='text'>Monster Duck</title><content type='html'>I checked the tracking and it is supposed to arrive today!&lt;br /&gt;I just checked and it's not here yet....   boo&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-4356710835313578359?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/4356710835313578359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=4356710835313578359' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/4356710835313578359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/4356710835313578359'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/monster-duck.html' title='Monster Duck'/><author><name>Benjie Nelson</name><uri>http://www.blogger.com/profile/10028387849597664193</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-7123627058319161475</id><published>2008-05-06T12:03:00.000-07:00</published><updated>2008-05-06T12:12:41.129-07:00</updated><title type='text'>Drum sticks:</title><content type='html'>&lt;span style="font-family: georgia;"&gt;I have decided that I speak in Georgia Font:&lt;br /&gt;As we saw yesterday drumsitck prototype works pretty well.&lt;br /&gt;For the sake of completeness:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;16 inch aluminum tube&lt;/li&gt;&lt;li&gt;5" stiff bare wire&lt;/li&gt;&lt;li&gt;little blob of foam core&lt;/li&gt;&lt;li&gt;electrical wires&lt;/li&gt;&lt;/ul&gt;push the stiff wire through the foam core, and solder the electrical wire to that end. carefully thread the whole thing through the aluminum tube so that the electrical wire comes out one end of the tube and the stiff wire sits in the last five inches of the other end, not touching the sides. Tape another wire to the outside of the tube near the handle. When you strike the stick the stiff wire bends and touches the inside of the aluminum tube, making a connection. This is used to charge an RC drain so we have a basically steady voltage that goes up the more often you hit and slowly drains otherwise. Sweet.&lt;br /&gt;&lt;br /&gt;Possible future improvements: use a spring that is less likely to bend over time and touch the side.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-7123627058319161475?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/7123627058319161475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=7123627058319161475' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/7123627058319161475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/7123627058319161475'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/drum-sticks.html' title='Drum sticks:'/><author><name>Benjie Nelson</name><uri>http://www.blogger.com/profile/10028387849597664193</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-8720913344904249769</id><published>2008-05-06T08:10:00.000-07:00</published><updated>2008-05-06T08:15:04.554-07:00</updated><title type='text'>Design meeting highlights</title><content type='html'>1. E128 helm, set of pics at the boat. All the pics listen to all the commands and respond accordingly&lt;br /&gt;2.  Fans do not work well, even with ducts. We could try to find an additional Mako submarine for additional motors&lt;br /&gt;3. Without the 12V DC motors and fans, our equipment weights 3.4 lbs, equivalent to 1/2 gallon of water displaced&lt;br /&gt;4. Considered increasing/decreasing drag by lowering objects in the water to steer&lt;br /&gt;&lt;br /&gt;David out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-8720913344904249769?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/8720913344904249769/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=8720913344904249769' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/8720913344904249769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/8720913344904249769'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/design-meeting-highlights.html' title='Design meeting highlights'/><author><name>David</name><uri>http://www.blogger.com/profile/11660641757701699786</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_UdjjHC5mrlc/SKMSYRDW7-I/AAAAAAAAAIs/4IQapxMsxOc/s1600-R/run.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-3728659995884986594</id><published>2008-05-06T02:36:00.000-07:00</published><updated>2008-05-06T03:02:58.380-07:00</updated><title type='text'>OMG options</title><content type='html'>&lt;span style="color: rgb(102, 51, 0);"&gt;&lt;span style="font-family: trebuchet ms;"&gt;So...it seems there are quite a few options when ordering 2" rubber ducks&lt;br /&gt;&lt;a href="http://www.celebrateexpress.com/celebration/pages/products/product_bd.aspx?SKU=E55751&amp;amp;TabID=4294967232&amp;amp;keycode=ECA-293&amp;amp;mr:trackingCode=410855DA-B91A-DD11-AD5F-000423C27502&amp;amp;mr:referralID=NA"&gt;Plain rubber ducks for ~$1.00 each&lt;/a&gt;&lt;a href="http://www.orientaltrading.com/application?namespace=browse&amp;amp;namespace=search&amp;amp;No=0&amp;amp;sp=true&amp;amp;Ntt=rubber+duck&amp;amp;Ntk=all&amp;amp;Ntx=mode%2bmatchallpartial&amp;amp;categoryFromSearch=true&amp;amp;event=catalog&amp;amp;event=button.search&amp;amp;y=0&amp;amp;N=380647&amp;amp;origin=page.jsp&amp;amp;origin=searchMain.jsp&amp;amp;x=0"&gt;&lt;br /&gt;Insane variety of themed ducks for ~$0.50 each&lt;/a&gt;&lt;br /&gt;If we order the Christmas Carol ducks, the price drops to ~$0.25 cents each&lt;br /&gt;&lt;br /&gt;In other news, the communications committee seems to have reached a consensus on how the game will be implemented. There are still a few hotly-contested topics, especially the number of bits/inputs that should be associated with special craft functions. Some teams want to implement lots of special features while others are reluctant to add extra requirements to the project. We should be able to finish up a draft of the communications protocol by tomorrow's deadline since most of the issues are relatively small details. I just hope that our protocol doesn't screw over the people that need to implement it...I wish we had more feedback on whether or not we're being stupid -_-&lt;br /&gt;&lt;br /&gt;~Laurel&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-3728659995884986594?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/3728659995884986594/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=3728659995884986594' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/3728659995884986594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/3728659995884986594'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/omg-options.html' title='OMG options'/><author><name>Laurel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-2256757865907672857</id><published>2008-05-05T17:29:00.000-07:00</published><updated>2008-05-05T17:38:47.214-07:00</updated><title type='text'>Pon Pon Pata Pon</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;&lt;span style="font-family: trebuchet ms;"&gt;I'm playing around with sensors to detect when the drum is hit. Currently I'm looking into magnetic switch sensors on the drumsticks and magnets on the drum. The sensors work pretty reliably so long as they get close enough to the magnets. If we use these, we'll need 'HIT HERE" labels on the drum and the stick covers can't be too thick. Otherwise the sensor will be too far away to detect anything. I'm looking into how far is too far and I think distances less than ~1 cm should be alright.&lt;br /&gt;&lt;br /&gt;Though I just realized that the user can achieve max speed commands by simply leaving the sticks in contact with the drum....hmmm.&lt;br /&gt;&lt;br /&gt;~Laurel&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-2256757865907672857?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/2256757865907672857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=2256757865907672857' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/2256757865907672857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/2256757865907672857'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/pon-pon-pata-pon.html' title='Pon Pon Pata Pon'/><author><name>Laurel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-7528766908961486844</id><published>2008-05-05T09:06:00.000-07:00</published><updated>2008-05-05T09:07:21.677-07:00</updated><title type='text'>SSP Woes</title><content type='html'>I believe it was a timing issue. It seems to reliably communicate now!&lt;br /&gt;&lt;br /&gt;Next stop: iButton reading.&lt;br /&gt;&lt;br /&gt;David out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-7528766908961486844?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/7528766908961486844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=7528766908961486844' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/7528766908961486844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/7528766908961486844'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/ssp-woes.html' title='SSP Woes'/><author><name>David</name><uri>http://www.blogger.com/profile/11660641757701699786</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_UdjjHC5mrlc/SKMSYRDW7-I/AAAAAAAAAIs/4IQapxMsxOc/s1600-R/run.jpeg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-6455965230209496082</id><published>2008-05-05T04:23:00.000-07:00</published><updated>2008-05-05T05:08:19.675-07:00</updated><title type='text'>Communications Committee - Day 1</title><content type='html'>&lt;span style="color: rgb(102, 51, 0); font-family: trebuchet ms;font-family:trebuchet ms;" &gt;I'm making my entries in brown Trebuchet font...because I can...&lt;br /&gt;&lt;br /&gt;The Communications Committee made some progress, though not quite as much as I'd like.&lt;br /&gt;&lt;br /&gt;Main conclusions:&lt;br /&gt;&lt;/span&gt;&lt;ul  style="color: rgb(102, 51, 0); font-family: trebuchet ms;font-family:trebuchet ms;"&gt;&lt;li&gt;&lt;span style="color: rgb(102, 51, 0);"&gt;All admiral commands will be processed by the helms. Crafts respond only to helm commands.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(102, 51, 0);"&gt;Project-specific data will be sent in two bytes&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(102, 51, 0);"&gt;Byte 1: Speed (4 bits) Direction (4 bits)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(102, 51, 0);"&gt;Byte 2: On/Off (1 bit) Water on/off (1 bit) remaining bits are reserved for 'special' commands&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;span style="color: rgb(102, 51, 0); font-family: trebuchet ms;font-family:trebuchet ms;" &gt;Stuff we need to figure out:&lt;/span&gt;&lt;br /&gt;&lt;ul style="color: rgb(102, 51, 0); font-family: trebuchet ms;"&gt;&lt;li&gt;Does the received packet contain the sender's address (I think it does) or does the XBee board strip that off and only transmit the data bytes?&lt;/li&gt;&lt;li&gt;Confirm iButton sync, what's hard-wired/in look up tables what needs to get sorted out initially&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;We think only red/blue affiliation for each iButton will need to be looked up.  Helms/craft will need to transmit/listen for the serial number that matches the one on the iButton they read.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;span style="color: rgb(102, 51, 0); font-family: trebuchet ms;font-family:trebuchet ms;" &gt;Stuff people are working on until next meeting&lt;/span&gt;&lt;br /&gt;&lt;ul style="color: rgb(102, 51, 0); font-family: trebuchet ms;"&gt;&lt;li&gt;Cornering TAs to talk about XBee and iButtons (I'm working on this with Matt)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Write up 'Communications Story' outlining what needs to be said when and by whom&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Sketching up state diagram of how communications will be carried out&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Specifically assigning bits to commands&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: rgb(102, 51, 0); font-family: trebuchet ms;"&gt;More updates as we figure stuff out...I plan to read through the XBee user manual tomorrow to see what I can figure out before cornering Karl.&lt;br /&gt;~Laurel&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-6455965230209496082?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/6455965230209496082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=6455965230209496082' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/6455965230209496082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/6455965230209496082'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/communications-committee-day-1.html' title='Communications Committee - Day 1'/><author><name>Laurel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-6262605971535709515</id><published>2008-05-04T23:36:00.001-07:00</published><updated>2008-05-04T23:39:57.225-07:00</updated><title type='text'>SSP/SPI</title><content type='html'>I spent the evening reacquainting myself with the SPI interface. The goal was to create an SPI PIC debugger with the E128 slaved to displaying information from the PIC. I have partially succeeded; communications are occurring, but the PIC is not successfully reading its own BF flag (buffer full).&lt;br /&gt;&lt;br /&gt;I am currently managing the slave select line myself on the PIC. It should transmit, then set the flag high when the last data is shifted in. Problem is, it never does. As far as I can tell, the BF flag in the status register is never set, and the next transmission doesn't occur.&lt;br /&gt;&lt;br /&gt;Ways to approach:&lt;br /&gt;1. Hold SS low all the time for the debugging process&lt;br /&gt;2. Put out the state of BF to a pin and watch it on the oscope&lt;br /&gt;3. Check what the state of BF is normally and verify it does stay low.&lt;br /&gt;&lt;br /&gt;Goal for tomorrow: finish debugging, take a look at the iButton. If ambitious, dump the iButton number onto the bus.&lt;br /&gt;&lt;br /&gt;David out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-6262605971535709515?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/6262605971535709515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=6262605971535709515' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/6262605971535709515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/6262605971535709515'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/sspspi.html' title='SSP/SPI'/><author><name>David</name><uri>http://www.blogger.com/profile/11660641757701699786</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_UdjjHC5mrlc/SKMSYRDW7-I/AAAAAAAAAIs/4IQapxMsxOc/s1600-R/run.jpeg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-2801385057122538837</id><published>2008-05-04T18:43:00.000-07:00</published><updated>2008-05-04T18:44:13.545-07:00</updated><title type='text'>Briefing</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Goal:&lt;/span&gt;&lt;br /&gt;The goal of this project is to provide a framework in which you can apply your knowledge of microcontrollers and multiprocessor communications to a task that will provide an enjoyable experience for the users and the observers.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Purpose:&lt;/span&gt;&lt;br /&gt;The underlying purpose of this project is to provide you with an opportunity to gain experience in integrating all that you have learned in the ME218 course sequence, with an emphasis on the new material in ME218c.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The Task:&lt;/span&gt;&lt;br /&gt;Design and build a remotely operated Water Craft and a companion Helm (remote controller). Groups of Water Craft will operate in Terman Pond and cooperatively strive to protect their own Base and neutralize the opposition’s Base.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-2801385057122538837?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/2801385057122538837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=2801385057122538837' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/2801385057122538837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/2801385057122538837'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/briefing.html' title='Briefing'/><author><name>David</name><uri>http://www.blogger.com/profile/11660641757701699786</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_UdjjHC5mrlc/SKMSYRDW7-I/AAAAAAAAAIs/4IQapxMsxOc/s1600-R/run.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-4899187468808903969</id><published>2008-05-04T18:21:00.000-07:00</published><updated>2008-05-04T18:25:20.812-07:00</updated><title type='text'>Supply Run</title><content type='html'>Laurel and I made the first supply run for the SS Ducky yesterday. It was a resounding success!&lt;br /&gt;&lt;br /&gt;Highlights:&lt;br /&gt;1. Submersible submarine motors we can use to turn the duck&lt;br /&gt;2. Beefy computer fans we can use to propel the duck&lt;br /&gt;3. A bilge pump that shoots water at 600 GPH, plus the necessary connections&lt;br /&gt;4. A pair of DK bongos we can hack to prototype the helm&lt;br /&gt;http://en.wikipedia.org/wiki/DK_Bongos&lt;br /&gt;5. 2 accessory ducks for flotation&lt;br /&gt;6. Microphone&lt;br /&gt;7. Various PS2 and PSP games which have been placed under lock and key until "we make it through this"&lt;br /&gt;8. Various waterproofing means (silicone adhesive, silicone tape, liquid electrical tape)&lt;br /&gt;&lt;br /&gt;Late night testing reveals that the submarine motors, fans, and bilge pumps all function satisfactorily at 12-14 V. Sweet.&lt;br /&gt;&lt;br /&gt;David out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-4899187468808903969?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/4899187468808903969/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=4899187468808903969' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/4899187468808903969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/4899187468808903969'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/supply-run.html' title='Supply Run'/><author><name>David</name><uri>http://www.blogger.com/profile/11660641757701699786</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_UdjjHC5mrlc/SKMSYRDW7-I/AAAAAAAAAIs/4IQapxMsxOc/s1600-R/run.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-175860550079165897.post-681991544227143716</id><published>2008-05-04T18:00:00.001-07:00</published><updated>2008-05-04T18:11:15.236-07:00</updated><title type='text'>Preliminary Sketches</title><content type='html'>...also known as what Laurel does to put off working on her other classes.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img176.imageshack.us/my.php?image=orzcf8.jpg" target="_blank"&gt;&lt;img src="http://img176.imageshack.us/img176/2316/orzcf8.th.jpg" alt="Free Image Hosting at www.ImageShack.us" border="0" /&gt;&lt;/a&gt; &lt;a href="http://img516.imageshack.us/my.php?image=fantb2.jpg" target="_blank"&gt;&lt;img src="http://img516.imageshack.us/img516/6797/fantb2.th.jpg" alt="Free Image Hosting at www.ImageShack.us" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Click on thumbnails for larger image&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/175860550079165897-681991544227143716?l=monsterduck.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://monsterduck.blogspot.com/feeds/681991544227143716/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=175860550079165897&amp;postID=681991544227143716' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/681991544227143716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/175860550079165897/posts/default/681991544227143716'/><link rel='alternate' type='text/html' href='http://monsterduck.blogspot.com/2008/05/preliminary-sketches.html' title='Preliminary Sketches'/><author><name>Laurel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
