<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>

<channel>
	<title>disputedip.com</title>
	<atom:link href="http://www.disputedip.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.disputedip.com</link>
	<description>this one i like, it squeks</description>
	<pubDate>Fri, 15 May 2009 21:32:13 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>A first corner - ahhh</title>
		<link>http://www.disputedip.com/239/a-first-corner-ahhh/</link>
		<comments>http://www.disputedip.com/239/a-first-corner-ahhh/#comments</comments>
		<pubDate>Fri, 15 May 2009 21:32:13 +0000</pubDate>
		<dc:creator>Martyn</dc:creator>
		
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.disputedip.com/?p=239</guid>
		<description><![CDATA[Well it made its first corner, video:
Go to http://www.youtube.com/watch?v=5a4zVuxzEdg for the HD version.
And here is the data from that run:

The todo list is as follows:

Retune controller (there is some nasty overshoot and the control signal itself is oscillating)
Calibrate the speeds - left and right wheel have different speeds (:() so need to go an work [...]]]></description>
			<content:encoded><![CDATA[<p>Well it made its first corner, video:</p>
<a href="http://www.disputedip.com/239/a-first-corner-ahhh/"><em>Click here to view the embedded video.</em></a>
<p>Go to <a title="HD Version" href="http://www.youtube.com/watch?v=5a4zVuxzEdg">http://www.youtube.com/watch?v=5a4zVuxzEdg</a> for the HD version.</p>
<p>And here is the data from that run:</p>
<p><a rel="lightbox" href="http://www.disputedip.com/wp-content/uploads/2009/05/graphy.jpg"><img class="aligncenter size-medium wp-image-240" title="Turn Graph" src="http://www.disputedip.com/wp-content/uploads/2009/05/graphy-300x219.jpg" alt="Turn Graph" width="300" height="219" /></a></p>
<p>The todo list is as follows:</p>
<ul>
<li>Retune controller (there is some nasty overshoot and the control signal itself is oscillating)</li>
<li>Calibrate the speeds - left and right wheel have different speeds (:() so need to go an work out the difference</li>
<li>Automate this, cause it took all day to get to this point</li>
</ul>
<p>Please note that this is a &#8216;jigged&#8217; callibration - the long straight allows me to guestimate the required speed differences and ticks per meter, so not too precise at this point in time.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.disputedip.com/239/a-first-corner-ahhh/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Micromouse Update</title>
		<link>http://www.disputedip.com/229/micromouse-update/</link>
		<comments>http://www.disputedip.com/229/micromouse-update/#comments</comments>
		<pubDate>Sun, 10 May 2009 17:18:36 +0000</pubDate>
		<dc:creator>Martyn</dc:creator>
		
		<category><![CDATA[Microcontrollers]]></category>

		<category><![CDATA[Micromouse]]></category>

		<category><![CDATA[Robots]]></category>

		<category><![CDATA[controller]]></category>

		<category><![CDATA[robot]]></category>

		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.disputedip.com/?p=229</guid>
		<description><![CDATA[As its exam time I have been carefully avoiding revision with a mix of counterstrike and micromouse work. New PCBs are 95% ready to be ordered and so my focus has turned to the controllers.
After implementing a fixed point maths system for the controller (10.5bits signed for those who care) and ziegler-nichols tuning the PI [...]]]></description>
			<content:encoded><![CDATA[<p>As its exam time I have been carefully avoiding revision with a mix of counterstrike and micromouse work. New PCBs are 95% ready to be ordered and so my focus has turned to the controllers.</p>
<p>After implementing a fixed point maths system for the controller (10.5bits signed for those who care) and ziegler-nichols tuning the PI controller I had a one wheel mouse - putting a bit more effort in I got it to two wheels - yay.</p>
<p>Tuning it was a bit of a chore - so automation is king and I was able to produce this graph (yes, no axis labels, minus 2 marks for me, x is the time, y (going back into the scene) is as the gain increases and z (going up) is the velocity for said gain:</p>
<p><a rel="lightbox" href="http://www.disputedip.com/wp-content/uploads/2009/05/unfitered.jpg"><img class="aligncenter size-medium wp-image-232" title="Unfiltered Results" src="http://www.disputedip.com/wp-content/uploads/2009/05/unfitered-300x224.jpg" alt="Unfiltered Results" width="300" height="224" /></a></p>
<p>The idea is to find the point where oscillations occur, the above plot was far too noisy so a 16 point moving average was applied:</p>
<p><a rel="lightbox" href="http://www.disputedip.com/wp-content/uploads/2009/05/filtered.jpg"><img class="aligncenter size-medium wp-image-230" title="Readable results" src="http://www.disputedip.com/wp-content/uploads/2009/05/filtered-300x224.jpg" alt="Readable results" width="300" height="224" /></a></p>
<p>I got a value of about 1.2, but it is questionable, will compare against some simulated controllers to see if it seems a likely value - it does however work well enough to control the motors!</p>
<p>Now the results:</p>
<p><a rel="lightbox" href="http://www.disputedip.com/wp-content/uploads/2009/05/graph.jpg"><img class="aligncenter size-medium wp-image-233" title="Data output" src="http://www.disputedip.com/wp-content/uploads/2009/05/graph-300x166.jpg" alt="Data output" width="300" height="166" /></a></p>
<p>It is nice having onboard bluetooth for this sort of debugging, anyhow, things look nice - the integral term does push things out of whack when going from zero or getting down to zero - but possibly an artefact of the controller being ill tuned - there is still a large overshoot to a step input which is not what you would expect from a z-n tuned controller&#8230;</p>
<p>Video, go to <a title="Youtube video" href="http://www.youtube.com/watch?v=AYmkJvthVJw" target="_self">http://www.youtube.com/watch?v=AYmkJvthVJw</a> and click on view in HD at the bottom! or watch it in small size bellow:</p>
<a href="http://www.disputedip.com/229/micromouse-update/"><em>Click here to view the embedded video.</em></a>
<p>Next time it will be slower and have a straight line controller built in, after that its onto cornering!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.disputedip.com/229/micromouse-update/feed/</wfw:commentRss>
		</item>
		<item>
		<title>First Mouse Movements</title>
		<link>http://www.disputedip.com/226/first-mouse-movements/</link>
		<comments>http://www.disputedip.com/226/first-mouse-movements/#comments</comments>
		<pubDate>Sat, 04 Apr 2009 22:43:40 +0000</pubDate>
		<dc:creator>Martyn</dc:creator>
		
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.disputedip.com/?p=226</guid>
		<description><![CDATA[Very bad video quality - but the mouse moves:
Will get a better camera in on Monday, but yay it moves. This is a very basic movement - accelerate to ~20% maximum speed, stay there and start to decelerate after 1s.
It moved very roughly, 0.5m in 1sec, making its theoretical (ish) top speed about 2.5m/s (when [...]]]></description>
			<content:encoded><![CDATA[<p>Very bad video quality - but the mouse moves:</p>
<a href="http://www.disputedip.com/226/first-mouse-movements/"><em>Click here to view the embedded video.</em></a>
<p>Will get a better camera in on Monday, but yay it moves. This is a very basic movement - accelerate to ~20% maximum speed, stay there and start to decelerate after 1s.</p>
<p>It moved very roughly, 0.5m in 1sec, making its theoretical (ish) top speed about 2.5m/s (when loaded). Although that metric does not take into account anything, so could be higher or lower :p.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.disputedip.com/226/first-mouse-movements/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Buttons - and LEDs :D</title>
		<link>http://www.disputedip.com/211/buttons-and-leds-d/</link>
		<comments>http://www.disputedip.com/211/buttons-and-leds-d/#comments</comments>
		<pubDate>Sat, 04 Apr 2009 16:45:02 +0000</pubDate>
		<dc:creator>Martyn</dc:creator>
		
		<category><![CDATA[Microcontrollers]]></category>

		<category><![CDATA[Micromouse]]></category>

		<category><![CDATA[News]]></category>

		<category><![CDATA[Robots]]></category>

		<category><![CDATA[button]]></category>

		<category><![CDATA[dspic]]></category>

		<category><![CDATA[led]]></category>

		<category><![CDATA[robot]]></category>

		<category><![CDATA[switch]]></category>

		<guid isPermaLink="false">http://www.disputedip.com/?p=211</guid>
		<description><![CDATA[Buttons are cool, so are menu&#8217;s. So with the help of a button, a few leds and a dspic I have a menu system (also note that this is blocking, the idea is that its used to start / stop the robot, so the robot does not move while the menu is active), first lets [...]]]></description>
			<content:encoded><![CDATA[<p>Buttons are cool, so are menu&#8217;s. So with the help of a button, a few leds and a dspic I have a menu system (also note that this is blocking, the idea is that its used to start / stop the robot, so the robot does not move while the menu is active), first lets look at the switch circuit and then at the dspic set up (c30 compiler, using a dspic33fj128gp804):</p>
<div id="attachment_218" class="wp-caption aligncenter" style="width: 342px"><a href="http://www.disputedip.com/wp-content/uploads/2009/04/sw.jpg"><img src="http://www.disputedip.com/wp-content/uploads/2009/04/sw.jpg" alt="Schematic for a switch for a dspic" title="Switch Schematic" width="332" height="281" class="size-full wp-image-218" /></a><p class="wp-caption-text">Schematic for a switch for a dspic</p></div>
<pre name="code" class="c:html:nocontrols">
/* Setup the IO Pin Assignment */
__builtin_write_OSCCONL(OSCCON &#038; ~(1<<6));

	RPINR7bits.IC1R = 5;	// Switch Input Capture

__builtin_write_OSCCONL(OSCCON | (1<<6));

/* Switch Input Capture Setup */
IC1CONbits.ICM = 0x02;	// Capture on falling edge
_IC1IF = 0;
_IC1IE = 1;

/* CPU Time Clock */
T1CONbits.TCKPS = 0x02;	// 40.5504Mhz / 64
TMR1 = 0x00;
PR1 = 634*4;			// Int at 1.000631313ms*4
_T1IF = 0;
_T1IE = 1;
T1CONbits.TON = 1;
</pre>
<p>The code is fairly simple: first attach the switch input to the input capture (ic1) peripheral, set up ic1 to trigger an interrupt on the falling edge and then there is the set up for my main timer loop, this occurs at ~250Hz, and yes I am using a weird value crystal.</p>
<p>Next lets look at the global variables (well global to the scope of the interrupts)</p>
<pre name="code" class="c:html:nocontrols">

// Switch input vars
int sw_counter = 0;
int sw_on = 0;

// Menu vars
int menu_counter = 0;
int menu_on = 0;
int menu_value = 0;
</pre>
<p>Next the interrupt for the input capture routine</p>
<pre name="code" class="c:html:nocontrols">void __attribute__((__interrupt__)) _NOPSV _IC1Interrupt(void)
{
	_IC1IF = 0; 		// Clear the interrupt
	_IC1IE = 0;			// Disable the interrupt
	_RED = 1;   		// Show the user the button pressed
	sw_on = 1; 		// Enable the debounce counter

	// If the menu is on already, increment the menu value
	// Otherwise turn the menu on and set the menu value to
	//default
	if (menu_on)
	{
		menu_val ++;
		menu_counter = 0;
	}
	else
	{
		menu_on = 1;
		menu_val = 0;
	}
}
</pre>
<p>And then the interrupt for the timer:</p>
<pre name="code" class="c:html:nocontrols">void __attribute__((__interrupt__)) _NOPSV _T1Interrupt(void)
{
	// Handle switch
	if (sw_on)				// If a switch 'event' is ongoing
	{
		sw_counter ++;
		if (sw_counter > 50)  	// 50x 1/250 = 200ms debounce
		{
			sw_on = 0;		// Switch no longer on
			sw_counter = 0;	// Counter to zero
			_IC1IF = 0;		// Clear the bounces
			_IC1IE = 1;		// Enable more switches
			_RED = 0;		// Led off
		}
	}

	// Menu
	if (menu_on)			// If menu is on
	{
		menu_counter ++;	// Increment counter

		// Leave menu active for 1s after last click
		if (menu_counter > 250)
		{
			menu_on = 0;	// Menu off
			menu_counter = 0; // Reset

			// Menu complete - do stuff
			switch (menu_val)
			{
				case 0:
					_RED = 0;
					Nop();	// Required if RED and GREEN
							// On same port
					_GREEN = 1;
					break;
				case 1:
					_RED = 1;
					Nop();	// Required if RED and GREEN
							// On same port
					_GREEN = 0;
					break;
				default:
					break;
			}
		}
	}
}
</pre>
<p>And thats it, google _NOPSV to find the macro for that (sometimes required to compile using c30). Also _RED and _GREEN are port bits, so something like #define _RED _RB1 to make _RED = 1 turn Port B pin 1 on. All quite useful, maybe&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.disputedip.com/211/buttons-and-leds-d/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Its must have been a good day for someone&#8230;</title>
		<link>http://www.disputedip.com/200/its-must-have-been-a-good-day-for-someone/</link>
		<comments>http://www.disputedip.com/200/its-must-have-been-a-good-day-for-someone/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 00:34:52 +0000</pubDate>
		<dc:creator>Martyn</dc:creator>
		
		<category><![CDATA[Microcontrollers]]></category>

		<category><![CDATA[Micromouse]]></category>

		<category><![CDATA[News]]></category>

		<category><![CDATA[Photoblog]]></category>

		<category><![CDATA[Robots]]></category>

		<category><![CDATA[desk]]></category>

		<category><![CDATA[graph]]></category>

		<category><![CDATA[picture]]></category>

		<category><![CDATA[robot]]></category>

		<guid isPermaLink="false">http://www.disputedip.com/?p=200</guid>
		<description><![CDATA[Today was a very unproductive one. Slept in, managed to do nothing till 2, then spend hours trying to work out why something had broken on my mouse - it was me, it was running 4 times slower because I put the line of code to tell it to run 4 times faster in the [...]]]></description>
			<content:encoded><![CDATA[<p>Today was a very unproductive one. Slept in, managed to do nothing till 2, then spend hours trying to work out why something had broken on my mouse - it was me, it was running 4 times slower because I put the line of code to tell it to run 4 times faster in the wrong place, that followed by a c# bottleneck - c#.net cannot handle 1mbit rs232 too well, its running fine at about 20% capacity, but between there and 50% capacity something goes very wrong. That lead to hours of no progress. And finally I though I may have broken one of my motors, the expensive ones, but it was fine, a bad connector, or maybe a break in the cable (think it was the former as after a lot of wiggling I cant detect a break). It must work - look at the graph bellow <img src='http://www.disputedip.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> result.</p>
<div id="attachment_198" class="wp-caption aligncenter" style="width: 310px"><a rel="lightbox" href="http://www.disputedip.com/wp-content/uploads/2009/04/p1012496.jpg"><img class="size-medium wp-image-198" title="Messy Desk" src="http://www.disputedip.com/wp-content/uploads/2009/04/p1012496-300x225.jpg" alt="A very messy desk" width="300" height="225" /></a><p class="wp-caption-text">A very messy desk</p></div>
<div id="attachment_199" class="wp-caption aligncenter" style="width: 571px"><img class="size-full wp-image-199" title="Great Graph" src="http://www.disputedip.com/wp-content/uploads/2009/04/graph1.jpg" alt="Graph if step input to motor" width="561" height="420" /><p class="wp-caption-text">Graph if step input to motor</p></div>
<p>The &#8216;rough&#8217; steady state speed of this input is about 2m/s, mwhahaha, lets hope there is some torque at 0.3m/s otherwise testing will be interesting&#8230;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.disputedip.com/200/its-must-have-been-a-good-day-for-someone/feed/</wfw:commentRss>
		</item>
		<item>
		<title>CRC With dsPIC</title>
		<link>http://www.disputedip.com/181/crc-with-dspic/</link>
		<comments>http://www.disputedip.com/181/crc-with-dspic/#comments</comments>
		<pubDate>Mon, 23 Mar 2009 21:12:40 +0000</pubDate>
		<dc:creator>Martyn</dc:creator>
		
		<category><![CDATA[News]]></category>

		<category><![CDATA[c30]]></category>

		<category><![CDATA[crc]]></category>

		<category><![CDATA[dspic]]></category>

		<category><![CDATA[microcontroller]]></category>

		<category><![CDATA[pic24]]></category>

		<guid isPermaLink="false">http://www.disputedip.com/?p=181</guid>
		<description><![CDATA[CRC&#8217;s are probably the most time consuming thing you can do in a data stream, but they have their uses - and not just for checking that data is correct, but more on that in a later post.
I found that the microchip documentation extremely useful, and I suspect you will to: Section 36 PCRC. But [...]]]></description>
			<content:encoded><![CDATA[<p><a title="CRC @ Wiki" href="http://en.wikipedia.org/wiki/Cyclic_redundancy_check">CRC</a>&#8217;s are probably the most time consuming thing you can do in a data stream, but they have their uses - and not just for checking that data is correct, but more on that in a later post.</p>
<p>I found that the microchip documentation extremely useful, and I suspect you will to: <a title="Section 36: PCRC" href="http://ww1.microchip.com/downloads/en/DeviceDoc/70298A.pdf" target="_blank">Section 36 PCRC</a>. But the biggest shout out should go to billysdomain in the <a title="Microchip Forums" href="http://www.microchip.com/forums/tm.aspx?m=398598">Microchip Forums</a> who actually got it working, the bits which make it work are his code, lets begin:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">int</span> CalculateCRC<span class="br0">&#40;</span>DataPL *DataPacket<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw4">unsigned</span> <span class="kw4">int</span> j, length = <span class="br0">&#40;</span>DATAPL_LEN*<span class="nu0">2</span><span class="br0">&#41;</span><span class="nu0">-2</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp;<span class="kw4">unsigned</span> <span class="kw4">char</span> *ptr, *data;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;ptr = <span class="br0">&#40;</span><span class="kw4">unsigned</span> <span class="kw4">char</span> *<span class="br0">&#41;</span>&amp;CRCDAT;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;CRCCON = 0&#215;0F;   &nbsp; &nbsp;<span class="co1">// Configure the polynomial length (PLEN)</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;_CRCIF = <span class="nu0">0</span>;         <span class="co1">// Clear the CRC flag</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp;_CRCIE = <span class="nu0">1</span>;         <span class="co1">// Enable the int</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;CRCXOR = 0&#215;1021; &nbsp; &nbsp;<span class="co1">// Polynomial - crc-16</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;CRCWDAT = 0&#215;0000; &nbsp; <span class="co1">// Initialize CRCWDAT with 0</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp;data = <span class="br0">&#40;</span>*DataPacket<span class="br0">&#41;</span>.<span class="me1">CHARS</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;length &gt;&gt;= <span class="nu0">1</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw1">for</span><span class="br0">&#40;</span>j = <span class="nu0">0</span>; j &lt; length; j++<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Must use pairs of bytes to get the correct result</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; *ptr = *data++; &nbsp;<span class="co1">//write data into FIFO</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; *ptr = *data++;  <span class="co1">//write data into FIFO</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>CRCCONbits.<span class="me1">CRCFUL</span><span class="br0">&#41;</span> &nbsp;<span class="co1">//check if FIFO is full</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CRCCONbits.<span class="me1">CRCGO</span> = <span class="nu0">1</span>; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//start CRC engine</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">while</span> <span class="br0">&#40;</span>!CRCCONbits.<span class="me1">CRCMPT</span><span class="br0">&#41;</span>; &nbsp; <span class="co1">//check if FIFO is empty</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CRCCONbits.<span class="me1">CRCGO</span> = <span class="nu0">0</span>; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//stop CRC engine</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;CRCDAT = 0&#215;0000;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;CRCCONbits.<span class="me1">CRCGO</span> = <span class="nu0">1</span>;  <span class="co1">// (Re)Start the calculation</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp;comms_datapacket = DataPacket; <span class="co1">// Save a reference</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="co1">// With a bit of luck CRC finishes before we send</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="co1">// the data via SPI&#8230;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw1">return</span> <span class="nu0">1</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//Use the software CRC calculator</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">static</span> <span class="kw4">const</span> <span class="kw4">unsigned</span> <span class="kw4">int</span> CRC16Table<span class="br0">&#91;</span><span class="nu0">256</span><span class="br0">&#93;</span> = <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">0&#215;0000,0&#215;1021,0&#215;2042,0&#215;3063,0&#215;4084,0&#215;50a5,0&#215;60c6,0&#215;70e7,</div>
</li>
<li class="li2">
<div class="de2">0&#215;8108,0&#215;9129,0xa14a,0xb16b,0xc18c,0xd1ad,0xe1ce,0xf1ef,</div>
</li>
<li class="li1">
<div class="de1">0&#215;1231,0&#215;0210,0&#215;3273,0&#215;2252,0&#215;52b5,0&#215;4294,0&#215;72f7,0&#215;62d6,</div>
</li>
<li class="li1">
<div class="de1">0&#215;9339,0&#215;8318,0xb37b,0xa35a,0xd3bd,0xc39c,0xf3ff,0xe3de,</div>
</li>
<li class="li1">
<div class="de1">0&#215;2462,0&#215;3443,0&#215;0420,0&#215;1401,0&#215;64e6,0&#215;74c7,0&#215;44a4,0&#215;5485,</div>
</li>
<li class="li1">
<div class="de1">0xa56a,0xb54b,0&#215;8528,0&#215;9509,0xe5ee,0xf5cf,0xc5ac,0xd58d,</div>
</li>
<li class="li2">
<div class="de2">0&#215;3653,0&#215;2672,0&#215;1611,0&#215;0630,0&#215;76d7,0&#215;66f6,0&#215;5695,0&#215;46b4,</div>
</li>
<li class="li1">
<div class="de1">0xb75b,0xa77a,0&#215;9719,0&#215;8738,0xf7df,0xe7fe,0xd79d,0xc7bc,</div>
</li>
<li class="li1">
<div class="de1">0&#215;48c4,0&#215;58e5,0&#215;6886,0&#215;78a7,0&#215;0840,0&#215;1861,0&#215;2802,0&#215;3823,</div>
</li>
<li class="li1">
<div class="de1">0xc9cc,0xd9ed,0xe98e,0xf9af,0&#215;8948,0&#215;9969,0xa90a,0xb92b,</div>
</li>
<li class="li1">
<div class="de1">0&#215;5af5,0&#215;4ad4,0&#215;7ab7,0&#215;6a96,0&#215;1a71,0&#215;0a50,0&#215;3a33,0&#215;2a12,</div>
</li>
<li class="li2">
<div class="de2">0xdbfd,0xcbdc,0xfbbf,0xeb9e,0&#215;9b79,0&#215;8b58,0xbb3b,0xab1a,</div>
</li>
<li class="li1">
<div class="de1">0&#215;6ca6,0&#215;7c87,0&#215;4ce4,0&#215;5cc5,0&#215;2c22,0&#215;3c03,0&#215;0c60,0&#215;1c41,</div>
</li>
<li class="li1">
<div class="de1">0xedae,0xfd8f,0xcdec,0xddcd,0xad2a,0xbd0b,0&#215;8d68,0&#215;9d49,</div>
</li>
<li class="li1">
<div class="de1">0&#215;7e97,0&#215;6eb6,0&#215;5ed5,0&#215;4ef4,0&#215;3e13,0&#215;2e32,0&#215;1e51,0&#215;0e70,</div>
</li>
<li class="li1">
<div class="de1">0xff9f,0xefbe,0xdfdd,0xcffc,0xbf1b,0xaf3a,0&#215;9f59,0&#215;8f78,</div>
</li>
<li class="li2">
<div class="de2">0&#215;9188,0&#215;81a9,0xb1ca,0xa1eb,0xd10c,0xc12d,0xf14e,0xe16f,</div>
</li>
<li class="li1">
<div class="de1">0&#215;1080,0&#215;00a1,0&#215;30c2,0&#215;20e3,0&#215;5004,0&#215;4025,0&#215;7046,0&#215;6067,</div>
</li>
<li class="li1">
<div class="de1">0&#215;83b9,0&#215;9398,0xa3fb,0xb3da,0xc33d,0xd31c,0xe37f,0xf35e,</div>
</li>
<li class="li1">
<div class="de1">0&#215;02b1,0&#215;1290,0&#215;22f3,0&#215;32d2,0&#215;4235,0&#215;5214,0&#215;6277,0&#215;7256,</div>
</li>
<li class="li1">
<div class="de1">0xb5ea,0xa5cb,0&#215;95a8,0&#215;8589,0xf56e,0xe54f,0xd52c,0xc50d,</div>
</li>
<li class="li2">
<div class="de2">0&#215;34e2,0&#215;24c3,0&#215;14a0,0&#215;0481,0&#215;7466,0&#215;6447,0&#215;5424,0&#215;4405,</div>
</li>
<li class="li1">
<div class="de1">0xa7db,0xb7fa,0&#215;8799,0&#215;97b8,0xe75f,0xf77e,0xc71d,0xd73c,</div>
</li>
<li class="li1">
<div class="de1">0&#215;26d3,0&#215;36f2,0&#215;0691,0&#215;16b0,0&#215;6657,0&#215;7676,0&#215;4615,0&#215;5634,</div>
</li>
<li class="li1">
<div class="de1">0xd94c,0xc96d,0xf90e,0xe92f,0&#215;99c8,0&#215;89e9,0xb98a,0xa9ab,</div>
</li>
<li class="li1">
<div class="de1">0&#215;5844,0&#215;4865,0&#215;7806,0&#215;6827,0&#215;18c0,0&#215;08e1,0&#215;3882,0&#215;28a3,</div>
</li>
<li class="li2">
<div class="de2">0xcb7d,0xdb5c,0xeb3f,0xfb1e,0&#215;8bf9,0&#215;9bd8,0xabbb,0xbb9a,</div>
</li>
<li class="li1">
<div class="de1">0&#215;4a75,0&#215;5a54,0&#215;6a37,0&#215;7a16,0&#215;0af1,0&#215;1ad0,0&#215;2ab3,0&#215;3a92,</div>
</li>
<li class="li1">
<div class="de1">0xfd2e,0xed0f,0xdd6c,0xcd4d,0xbdaa,0xad8b,0&#215;9de8,0&#215;8dc9,</div>
</li>
<li class="li1">
<div class="de1">0&#215;7c26,0&#215;6c07,0&#215;5c64,0&#215;4c45,0&#215;3ca2,0&#215;2c83,0&#215;1ce0,0&#215;0cc1,</div>
</li>
<li class="li1">
<div class="de1">0xef1f,0xff3e,0xcf5d,0xdf7c,0xaf9b,0xbfba,0&#215;8fd9,0&#215;9ff8,</div>
</li>
<li class="li2">
<div class="de2">0&#215;6e17,0&#215;7e36,0&#215;4e55,0&#215;5e74,0&#215;2e93,0&#215;3eb2,0&#215;0ed1,0&#215;1ef0</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">unsigned</span> <span class="kw4">int</span> ChecksumCalcS<span class="br0">&#40;</span><span class="kw4">unsigned</span> <span class="kw4">char</span> *data, <span class="kw4">unsigned</span> <span class="kw4">int</span> len<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp;<span class="kw4">unsigned</span> <span class="kw4">int</span> crc = <span class="nu0">0</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw4">unsigned</span> <span class="kw4">int</span> i;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw1">for</span><span class="br0">&#40;</span>i = <span class="nu0">0</span>; i &lt; len; i++<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; crc = <span class="br0">&#40;</span>crc &lt;&lt; <span class="nu0">8</span><span class="br0">&#41;</span> ^ CRC16Table<span class="br0">&#91;</span><span class="br0">&#40;</span><span class="br0">&#40;</span>crc &gt;&gt; <span class="nu0">8</span><span class="br0">&#41;</span> ^ *data++<span class="br0">&#41;</span><span class="br0">&#93;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw1">return</span> crc;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">void</span> __attribute__<span class="br0">&#40;</span><span class="br0">&#40;</span>__interrupt__<span class="br0">&#41;</span><span class="br0">&#41;</span> _NOPSV _CRCInterrupt<span class="br0">&#40;</span><span class="kw4">void</span><span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw4">unsigned</span> <span class="kw4">short</span> hardware, software;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;_CRCIF = <span class="nu0">0</span>;       <span class="co1">// Clear the interrupt</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp;<span class="kw1">while</span><span class="br0">&#40;</span>!CRCCONbits.<span class="me1">CRCMPT</span><span class="br0">&#41;</span>;    <span class="co1">// Wait for CRC shifter to clear FIFO</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="br0">&#40;</span>*comms_datapacket<span class="br0">&#41;</span>.<span class="me1">CRC</span> = CRCWDAT;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;hardware = CRCWDAT;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;software = ChecksumCalcS<span class="br0">&#40;</span><span class="br0">&#40;</span>*comms_datapacket<span class="br0">&#41;</span>.<span class="me1">CHARS</span>, </div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#40;</span>DATAPL_LEN*<span class="nu0">2</span><span class="br0">&#41;</span><span class="nu0">-2</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;CRCWDAT = <span class="nu0">0</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
<p>Ok, a lot of things to note <img src='http://www.disputedip.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<ul>
<li>This code will not work on its own</li>
<li>Putting a breakpoint on the last line of code will allow a software / hardware comparison</li>
<li>_NOPSV is a macro (google it)</li>
<li>The DataPL datatype is a union of an int array, char array and a large bitfield which allows me to have loads of small (or large) data types of non-standard size.</li>
<li>The interrupt is not required if working with more than 8 bytes of data as you need to wait for the buffer to clear before filling it - so might as well wait for it all to happen</li>
<li>This uses 8-bit data rather than 16-bit data, if you have a working example of this with a software table based alternative please email me! the table means I can calculate the CRC in C#</li>
<li>Most of code is by billysdomain - I was 80% there, missing 2 lines in my implementation, should have rtfm (more)</li>
</ul>
<p>Anyhow, hope this helps someone. I might do a quick post on using CRC for synchronising serial streams soon, guess how that&#8217;s done :p</p>
]]></content:encoded>
			<wfw:commentRss>http://www.disputedip.com/181/crc-with-dspic/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Timering with DSPic&#8217;s</title>
		<link>http://www.disputedip.com/161/timering-with-dspics/</link>
		<comments>http://www.disputedip.com/161/timering-with-dspics/#comments</comments>
		<pubDate>Sun, 22 Mar 2009 19:18:50 +0000</pubDate>
		<dc:creator>Martyn</dc:creator>
		
		<category><![CDATA[Microcontrollers]]></category>

		<category><![CDATA[Robots]]></category>

		<category><![CDATA[dspic]]></category>

		<category><![CDATA[microchip]]></category>

		<category><![CDATA[microcontroller]]></category>

		<category><![CDATA[timer]]></category>

		<category><![CDATA[tmr0]]></category>

		<guid isPermaLink="false">http://www.disputedip.com/?p=161</guid>
		<description><![CDATA[Timers on DSPics are easy - and after helping a few people out with timers at uni I thought I would post a really quick how-to on setting up a timer to interrupt at a set frequency. First lets start with a few bits you need to know:
Fosc = 40000000;
That&#8217;s it  Just make sure [...]]]></description>
			<content:encoded><![CDATA[<p>Timers on DSPics are easy - and after helping a few people out with timers at uni I thought I would post a really quick how-to on setting up a timer to interrupt at a set frequency. First lets start with a few bits you need to know:</p>
<p style="text-align: center;">Fosc = 40000000;</p>
<p>That&#8217;s it <img src='http://www.disputedip.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> Just make sure that this value is the number in Hz on your oscillator (or a multiple of it if using PLL)</p>
<p>Next its important to remember there are different types of timers on a pic, do some research and <a title="RTFM" href="http://en.wikipedia.org/wiki/RTFM">rtfm</a> before doing any pic / embedded work - will save you hours, I am using timer 1 - as its the first one in the manual :p</p>
<p>Next bits:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">T1CONbits.<span class="me1">TCKPS</span> = 0&#215;02; <span class="co1">// Select the PRESCALER</span></div>
</li>
<li class="li1">
<div class="de1">TMR1 = 0&#215;00; <span class="co1">// Make sure the timer is starting from zero</span></div>
</li>
<li class="li2">
<div class="de2">PR1 = <span class="nu0">600</span>; <span class="co1">// How long the timer should run before an interrupt (in timer ticks)</span></div>
</li>
<li class="li1">
<div class="de1">_T1IF = <span class="nu0">0</span>; <span class="co1">// Clear the interrupt flag</span></div>
</li>
<li class="li1">
<div class="de1">_T1IE = <span class="nu0">1</span>; <span class="co1">// Enable the interrupt</span></div>
</li>
<li class="li1">
<div class="de1">T1CONbits.<span class="me1">TON</span> = <span class="nu0">1</span>; <span class="co1">// Turn the interrupt on</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2"><span class="kw4">void</span> __attribute__<span class="br0">&#40;</span><span class="br0">&#40;</span>__interrupt__<span class="br0">&#41;</span><span class="br0">&#41;</span> __attribute__<span class="br0">&#40;</span><span class="br0">&#40;</span>no_auto_psv<span class="br0">&#41;</span><span class="br0">&#41;</span> _T1Interrupt<span class="br0">&#40;</span><span class="kw4">void</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Funky interrupt code goes</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
</ol>
</div>
<p>To explain, the prescale waits x many ticks before incrementing the timer counter and is usually a set number like 1,8,32 or 64. To calculate the number for PR1 you then juse a very simple formula:</p>
<p style="text-align: center;"><img src="http://www.disputedip.com/wp-content/plugins/wpmathpublisher/img/math_986_d00bbb03993dbb5d7298a9190582e4c2.png" style="vertical-align:-14px; display: inline-block;" alt="Fcy = Fosc/2" title="Fcy = Fosc/2"/></p>
<p style="text-align: center;"><img src="http://www.disputedip.com/wp-content/plugins/wpmathpublisher/img/math_968_ddeb9169eb784eae1dc9d5d65daf881a.png" style="vertical-align:-32px; display: inline-block;" alt="PR1 = (Freq^-1)/(Fcy^-1)" title="PR1 = (Freq^-1)/(Fcy^-1)"/></p>
<p>Where Freq is your desired interrupt frequency. Then just round the value of PR1 to the nearest integer if it is not one already. Simple!</p>
<p>As a side note - more information to why the interrupt function has a no_auto_psv attribute can be found at <a title="FlyingPic24" href="http://blog.flyingpic24.com/2008/01/22/updating-chapter-5/">FlyingPic24.com</a></p>
<p>Hope this has been useful - please comment if you have any corrections/questions/comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.disputedip.com/161/timering-with-dspics/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Its been a sufficiently long time, so to blogging again</title>
		<link>http://www.disputedip.com/152/its-been-a-sufficiently-long-time-so-to-blogging-again/</link>
		<comments>http://www.disputedip.com/152/its-been-a-sufficiently-long-time-so-to-blogging-again/#comments</comments>
		<pubDate>Fri, 13 Mar 2009 18:13:10 +0000</pubDate>
		<dc:creator>Martyn</dc:creator>
		
		<category><![CDATA[Micromouse]]></category>

		<category><![CDATA[News]]></category>

		<category><![CDATA[name]]></category>

		<category><![CDATA[robot]]></category>

		<guid isPermaLink="false">http://www.disputedip.com/?p=152</guid>
		<description><![CDATA[Heh, aside from lots of lectures and not so much coursework nothing to exciting has happened since the last blog entry. Apart from maybe this:
Do now need a name for it tho - Any ideas the random few who might happen across this page?
]]></description>
			<content:encoded><![CDATA[<p>Heh, aside from lots of lectures and not so much coursework nothing to exciting has happened since the last blog entry. Apart from maybe this:</p>
<div id="attachment_153" class="wp-caption aligncenter" style="width: 310px"><a rel="lightbox" href="http://www.disputedip.com/wp-content/uploads/2009/03/p1012467.jpg"><img class="size-medium wp-image-153" title="Mouse Feb 09" src="http://www.disputedip.com/wp-content/uploads/2009/03/p1012467-300x225.jpg" alt="Micromouse" width="300" height="225" /></a><p class="wp-caption-text">Micromouse</p></div>
<p>Do now need a name for it tho - Any ideas the random few who might happen across this page?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.disputedip.com/152/its-been-a-sufficiently-long-time-so-to-blogging-again/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Micromouse has shrunk a bit&#8230;</title>
		<link>http://www.disputedip.com/121/micromouse-has-shrunk-a-bit/</link>
		<comments>http://www.disputedip.com/121/micromouse-has-shrunk-a-bit/#comments</comments>
		<pubDate>Sun, 19 Oct 2008 11:01:40 +0000</pubDate>
		<dc:creator>Martyn</dc:creator>
		
		<category><![CDATA[Microcontrollers]]></category>

		<category><![CDATA[Robots]]></category>

		<category><![CDATA[cybernetics]]></category>

		<category><![CDATA[Micromouse]]></category>

		<category><![CDATA[rapid prototype]]></category>

		<category><![CDATA[reading university]]></category>

		<category><![CDATA[robot]]></category>

		<category><![CDATA[shapeways]]></category>

		<category><![CDATA[university of reading]]></category>

		<guid isPermaLink="false">http://www.disputedip.com/?p=121</guid>
		<description><![CDATA[A bit (lot) late, but I just noticed a video posted on youtube with a 1/2 size micromouse - Its tiny!

Anyhow, I have been working on my mouse as it is also my 4th (and final) year project for my MEng Cybernetics degree. Been working on the motor housing and choosing the components for the [...]]]></description>
			<content:encoded><![CDATA[<p>A bit (lot) late, but I just noticed a video posted on youtube with a 1/2 size micromouse - Its tiny!</p>
<p style="text-align: center;"><a href="http://www.disputedip.com/121/micromouse-has-shrunk-a-bit/"><em>Click here to view the embedded video.</em></a></p>
<p>Anyhow, I have been working on my mouse as it is also my 4th (and final) year project for my MEng Cybernetics degree. Been working on the motor housing and choosing the components for the hardware, to make sure it all fits I built everything up in Solidworks and got some prototypes made!</p>
<p>Head over to <a title="Shapeways - Rapid Prototyping" href="http://www.shapeways.com" target="_blank">www.shapeways.com</a> to see about their rapid prototyping server - its really fast, easy to use and mighty cheap.</p>
<p>Here are a couple of photos of the prototypes, first one is a &#8217;simplified&#8217; complete model and the second is the actual motor mount.</p>
<div style="width: 50%; float: left;">
<p style="text-align: center;">
<a href="http://www.disputedip.com/wp-content/uploads/2008/10/pic1.jpg" rel="lightbox"><img class="size-medium wp-image-123" title="Mouse Version 1" src="http://www.disputedip.com/wp-content/uploads/2008/10/pic1-300x225.jpg" alt="Rapid Prototype of Micromouse" width="240" height="180" /></a>
</p>
</div>
<div style="width: 50%; float: right;">
<p style="text-align: center;">
<a href="http://www.disputedip.com/wp-content/uploads/2008/10/pic2.jpg" rel="lightbox"><img class="size-medium wp-image-124" title="Motor Mount Version 1" src="http://www.disputedip.com/wp-content/uploads/2008/10/pic2-300x225.jpg" alt="Motor Mount Version 1" width="240" height="180" /></a>
</p>
</div>
<div style="clear: both;"></div>
<p>Unfortunately I had to change motor, so I have redesigned everything&#8230; But there was a special offer on at shapeways, so I was able to order more prototypes. This time I have also ordered parts which will be used on the final mouse including skids and sensor mounts.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.disputedip.com/121/micromouse-has-shrunk-a-bit/feed/</wfw:commentRss>
		</item>
		<item>
		<title>My home (btw - Microdirect suck)</title>
		<link>http://www.disputedip.com/119/my-home-btw-microdirect-suck/</link>
		<comments>http://www.disputedip.com/119/my-home-btw-microdirect-suck/#comments</comments>
		<pubDate>Tue, 23 Sep 2008 21:44:25 +0000</pubDate>
		<dc:creator>Martyn</dc:creator>
		
		<category><![CDATA[Randomness]]></category>

		<guid isPermaLink="false">http://www.disputedip.com/?p=119</guid>
		<description><![CDATA[Thought I would post a quick picture of my desk, its quite a state atm; but is quite a pleasant place to work. And the light is usually that high, its very bright so I keep it out of direct sight. (Click of larger image)

I got my PC down on the right behind the chair, [...]]]></description>
			<content:encoded><![CDATA[<p>Thought I would post a quick picture of my desk, its quite a state atm; but is quite a pleasant place to work. And the light is usually that high, its very bright so I keep it out of direct sight. (Click of larger image)</p>
<p style="text-align: center;"><a href="http://www.disputedip.com/wp-content/uploads/2008/09/mehome.jpg"><img class="size-medium wp-image-120" title="My Desk" src="http://www.disputedip.com/wp-content/uploads/2008/09/mehome-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p style="text-align: left;">I got my PC down on the right behind the chair, its 2.2ghz, 4gig RAM, and at the moment running Vista and Debian (I am working on some software for a client running linux). To the left of my monitor is my EEE PC 701, basically an email terminal, but also run IM and do random research on there. I am running synergy which allows me to move mouse and keyboard between the two, but have a spare mouse there still for some reason.</p>
<p style="text-align: left;">You can just see my 360 down on the right, there is a KVM switch on the floor (so I can switch using my foot!) and my current electronics project on the left of the desk. And the rest is random equipment / books / rubbish <img src='http://www.disputedip.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align: left;">Oh and microdirect suck, put an order in for a new router last Thursday (current router dies more often than I drink coffee, and I drink a lot of coffee), paid for next working day delivery. Ok, so I put the order in at midnight, but 1 working day after Friday is Monday, and with 2 non-working days in between Monday is a good guess, wrong, its late on Tuesday and its not here yet <img src='http://www.disputedip.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> Long live ebuyer !!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.disputedip.com/119/my-home-btw-microdirect-suck/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
