<?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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MightyOhm &#187; Microcontrollers</title>
	<atom:link href="http://mightyohm.com/blog/tag/microcontrollers/feed/" rel="self" type="application/rss+xml" />
	<link>http://mightyohm.com/blog</link>
	<description>Join the resistance.</description>
	<lastBuildDate>Wed, 16 May 2012 17:02:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Microcontroller Mondays @ ATX Hackerspace</title>
		<link>http://mightyohm.com/blog/2010/12/microcontroller-mondays-atx-hackerspace/</link>
		<comments>http://mightyohm.com/blog/2010/12/microcontroller-mondays-atx-hackerspace/#comments</comments>
		<pubDate>Mon, 13 Dec 2010 17:18:07 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Microcontrollers]]></category>
		<category><![CDATA[atxhack]]></category>

		<guid isPermaLink="false">http://mightyohm.com/blog/?p=3416</guid>
		<description><![CDATA[I am hosting a weekly microcontroller study group at the ATX Hackerspace. If you are interested in learning about microcontrollers in a casual setting, come on by at 7:30pm tonight. Tonight at 7:30pm we will hold our weekly evening of microcontroller exploration, otherwise known as Microcontroller Monday. The idea is not to have a fixed agenda [...]]]></description>
			<content:encoded><![CDATA[<p><a class="tt-flickr tt-flickr-Medium" title="ATmega8U2/16U2/32U2 Breakout Board" href="http://www.flickr.com/photos/mightyohm/5059845695/"><img class="alignnone" src="http://farm5.static.flickr.com/4147/5059845695_b9016520d7.jpg" alt="ATmega8U2/16U2/32U2 Breakout Board" width="500" height="165" /></a></p>
<p>I am hosting a weekly microcontroller study group at the <a href="http://www.atxhackerspace.org">ATX Hackerspace</a>.  If you are interested in learning about microcontrollers in a casual setting, <a href="http://www.atxhackerspace.org/index.php/Location">come on by</a> at 7:30pm tonight.</p>
<blockquote><p>Tonight at 7:30pm we will hold our weekly evening of microcontroller exploration, otherwise known as Microcontroller Monday.</p>
<p>The idea is not to have a fixed agenda or format.  This is not a class, though I&#8217;m pretty sure everyone who comes will learn something.</p>
<p>Some examples of things we might do on MM:</p>
<p>- start learning about the MSP430 and play with the MSP430 launchpads at the space<br />
- have Danny and Christian teach us about the dsPIC<br />
- build some USB devices and play with LUFA (the open source AVR USB library)<br />
- corrupt Arduino users with the notion that there is something beyond analogWrite()<br />
- discuss related topics, like circuit design, PCB layout, etc.</p>
<p>If any of this sounds interesting, consider stopping by tonight.</p>
<p>I plan to be at the space from 7:30 to around 10PM, but that doesn&#8217;t mean people can&#8217;t start hacking earlier or stay later.  While this event is open to non-members, since a member needs to be present to keep the space open, non-members should adhere to the 7:30pm &#8211; 10pm schedule.</p></blockquote>
<p>ATX Hackerspace maintains a <a href="http://www.atxhackerspace.org/index.php/Calendar">calendar</a> so you can stay up to date with this and other goings-on at the space.</p>
]]></content:encoded>
			<wfw:commentRss>http://mightyohm.com/blog/2010/12/microcontroller-mondays-atx-hackerspace/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Atmel retiring ATmega48/88/168 microcontrollers</title>
		<link>http://mightyohm.com/blog/2009/07/atmel-retiring-atmega4888168-microcontrollers/</link>
		<comments>http://mightyohm.com/blog/2009/07/atmel-retiring-atmega4888168-microcontrollers/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 14:38:16 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Microcontrollers]]></category>
		<category><![CDATA[Atmel]]></category>
		<category><![CDATA[AVR]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[obsolete]]></category>

		<guid isPermaLink="false">http://mightyohm.com/blog/?p=2063</guid>
		<description><![CDATA[Has anyone else noticed that the ATmega48/88/168 family of 8-bit AVR microcontrollers recently joined Atmel&#8217;s &#8220;mature devices&#8221; list, shown above? Truthfully, I was not surprised to see this, having been tipped off by an Atmel sales rep earlier this year at ESC in San Jose. The good news is that while these much-loved ATmega devices [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.atmel.com/dyn/products/devices.asp?Status=Mature&amp;family_id=607&amp;family_name=AVR%AE%208-Bit%20RISC"><img class="alignnone size-full wp-image-2070" title="Atmel AVR Microcontrollers - Mature Devices" src="http://mightyohm.com/blog/wp-content/uploads/2009/07/avr_mature.png" alt="Atmel AVR Microcontrollers - Mature Devices" width="488" height="462" /></a></p>
<p>Has anyone else noticed that the ATmega48/88/168 family of 8-bit AVR microcontrollers recently joined Atmel&#8217;s &#8220;<a href="http://www.atmel.com/dyn/products/devices.asp?Status=Mature&amp;family_id=607&amp;family_name=AVR%AE%208-Bit%20RISC">mature devices</a>&#8221; list, shown above?</p>
<p>Truthfully, I was not surprised to see this, having been tipped off by an <a href="http://www.atmel.com">Atmel</a> sales rep earlier this year at <a href="http://mightyohm.com/blog/2009/03/esc-silicon-valley-2009/">ESC</a> in San Jose.</p>
<p>The good news is that while these much-loved ATmega devices are slowly being obsoleted, they are being replaced by the largely-identical <a href="http://www.atmel.com/dyn/resources/prod_documents/8161S.pdf">&#8216;PA&#8217; series</a>, which includes the ATmega48PA, ATmega88PA, <a href="http://www.atmel.com/dyn/products/product_card.asp?part_id=4586">ATmega168PA</a>, and the ATmega328P.  The &#8216;PA&#8217; devices are enhanced versions of the former &#8216;P&#8217; series, which added energy-saving <a href="http://www.atmel.com/ad/picopower/">picoPower</a> functionality to the original devices.</p>
<p>Porting code to the new family should be fairly straightforward given that the PA family is designed to be a drop-in replacement.  To help with the switchover, Atmel has released some <a href="http://atmel.com/dyn/products/app_notes.asp?family_id=607#Migration%20Notes">migration notes</a>, including <a href="http://atmel.com/dyn/resources/prod_documents/doc8035.pdf">AVR512</a>, &#8220;<strong>Migration from ATmega48/88/168 to ATmega48P/88P/168P</strong>&#8221; and <a href="http://atmel.com/dyn/resources/prod_documents/doc8196.pdf">AVR528</a>, &#8220;<strong>Migrating from ATmega48/88/168 and ATmega48P/88P/168P to ATmega48PA/88PA/168PA</strong>&#8220;.  Regardless, check your header files and fuse bits for any changes.</p>
<p>If you are anxious about switching devices, <strong>don&#8217;t panic</strong>, the ATmega48/88/168 devices <a href="http://www.stkcheck.com/evs/atmel/atmelheader2.asp?mfg=atmel&amp;part=ATmega168">are still in stock at all major distributors</a>, while the PA devices <a href="http://octopart.com/parts/search?q=ATmega168PA">aren&#8217;t even on the radar yet</a>.  While professionals might want switch AVRs for new designs, hobbyists will likely still be using the older devices for years to come.  (Long live the <a href="http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en010230">PIC16F84</a>!)</p>
]]></content:encoded>
			<wfw:commentRss>http://mightyohm.com/blog/2009/07/atmel-retiring-atmega4888168-microcontrollers/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>AVR, Eclipse and the Mac</title>
		<link>http://mightyohm.com/blog/2009/05/avr-eclipse-and-the-mac/</link>
		<comments>http://mightyohm.com/blog/2009/05/avr-eclipse-and-the-mac/#comments</comments>
		<pubDate>Tue, 12 May 2009 23:48:44 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Books and Resources]]></category>
		<category><![CDATA[Microcontrollers]]></category>
		<category><![CDATA[AVR]]></category>
		<category><![CDATA[OS X]]></category>

		<guid isPermaLink="false">http://mightyohm.com/blog/?p=1682</guid>
		<description><![CDATA[Pete Harrison at Micromouse Online wrote a short tutorial about using Eclipse to program AVRs.   Eclipse is  an open source IDE that is supported on many platforms, including OS X on the Mac. I have never used Eclipse myself, so I can&#8217;t vouch for how well this works, but I would like to upgrade [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.micromouseonline.com/blog/2009/03/01/avr-eclipse-mac/"><img src="http://www.micromouseonline.com/blog/wp-content/uploads/2009/03/picture-1.png" alt="" width="424" height="458" /></a></p>
<p>Pete Harrison at <a href="http://www.micromouseonline.com">Micromouse Online</a> wrote <a href="http://www.micromouseonline.com/blog/2009/03/01/avr-eclipse-mac/">a short tutorial</a> about using <a href="http://www.eclipse.org/">Eclipse</a> to program AVRs.   Eclipse is  an open source <a href="http://en.wikipedia.org/wiki/Integrated_development_environment">IDE</a> that is supported on many platforms, including OS X on the Mac.</p>
<p>I have never used Eclipse myself, so I can&#8217;t vouch for how well this works, but I would like to upgrade from the command line tools I am using (part of AVRMacPack, which is now called <a href="http://www.obdev.at/products/crosspack/index.html">CrossPack</a>).  I could use Apple&#8217;s <a href="http://developer.apple.com/TOOLS/xcode/">Xcode</a> but last time I checked, the AVR integration in Xcode wasn&#8217;t that great.</p>
<p>Is anyone using Eclipse for AVR development?  What do you like/dislike about it?</p>
<p><a href="http://www.micromouseonline.com/blog/2009/03/01/avr-eclipse-mac/">AVR, Eclipse and the Mac | Micromouse Online<br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mightyohm.com/blog/2009/05/avr-eclipse-and-the-mac/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Introducing the AVR HV Rescue Shield</title>
		<link>http://mightyohm.com/blog/2009/03/introducing-the-avr-hv-rescue-shield/</link>
		<comments>http://mightyohm.com/blog/2009/03/introducing-the-avr-hv-rescue-shield/#comments</comments>
		<pubDate>Wed, 11 Mar 2009 15:52:09 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Kits]]></category>
		<category><![CDATA[Microcontrollers]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[ATmega]]></category>
		<category><![CDATA[ATtiny]]></category>
		<category><![CDATA[AVR]]></category>
		<category><![CDATA[open source hardware]]></category>
		<category><![CDATA[pcb]]></category>
		<category><![CDATA[shield]]></category>

		<guid isPermaLink="false">http://mightyohm.com/blog/?p=1419</guid>
		<description><![CDATA[This all started last year, when I was playing with an ATmega168 microcontroller and did something silly.  I programmed the RSTDISBL fuse bit, which effectively makes it impossible to reflash the chip using an ordinary (serial) programmer. Instead of giving up and throwing out the &#8220;dead&#8221; chip,  I decided to try to revive it using [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://mightyohm.com/blog/products/avr-hv-rescue-shield/"><img class="alignnone size-medium wp-image-1441" title="AVR HV Rescue Shield with ATmega168 target installed" src="http://mightyohm.com/blog/wp-content/uploads/2009/03/rescue-shield-with-atmega2_scaled-500x375.jpg" alt="AVR HV Rescue Shield with ATmega168 target " width="500" height="375" /></a></p>
<p>This all started last year, when I was playing with an ATmega168 microcontroller and did something silly.  I <a href="http://mightyohm.com/blog/2008/09/i-programmed-the-rstdisbl-fuse/">programmed the RSTDISBL fuse</a> bit, which effectively makes it impossible to reflash the chip using an ordinary (serial) programmer.</p>
<p>Instead of giving up and throwing out the &#8220;dead&#8221; chip,  I decided to try to revive it using an obscure high voltage parallel programming mode that isn&#8217;t supported by most AVR programmers.  Armed with my <a href="http://www.arduino.cc">Arduino</a> and the ATmega168 <a href="http://www.atmel.com/dyn/resources/prod_documents/doc2545.pdf">datasheet</a>, I quickly designed and constructed a programmer using parts I already had on my workbench.</p>
<p>A few hours later, I tested my new programmer and it worked!  I revived my &#8220;dead&#8221; AVR by using spare parts and a few lines of Arduino code.  That week I published the schematics and Arduino sketch to the site and called it my <a href="http://mightyohm.com/blog/2008/09/arduino-based-avr-high-voltage-programmer/">Arduino-based AVR High Voltage Programmer</a>.</p>
<p>The response was overwhelming.  Since I first posted the design, many people have built their own and used it to fix their &#8220;dead&#8221; AVR microcontrollers by restoring the fuse bits to sane values.  I even received several requests for a PCB and/or kit based on the design, which got me thinking&#8230;</p>
<p>Today I&#8217;m proud to introduce:</p>
<h3>The AVR HV Rescue Shield</h3>
<p>The AVR HV Rescue Shield is a high voltage parallel mode fuse programmer for Atmel AVR microcontrollers.</p>
<p>It currently supports the ATmega48/88/168/328 series and the ATtiny2313.  The Rescue Shield does everything my original AVR High Voltage Programmer does, and a lot more.  I think the new features make this a really useful tool for anyone working with AVR microcontrollers.</p>
<p>New features include:</p>
<ul>
<li><strong>Custom 2-layer PCB</strong> with silkscreen and soldermask.  No more hacking and modifying perfboards to fit Arduino&#8217;s <a href="http://mightyohm.com/blog/2008/09/arduino-fix-your-pin-spacing/">nonstandard pin spacing</a>!</li>
<li><strong>Onboard 12V DC-DC boost converter</strong> eliminates the need for an external 12V power supply</li>
<li>Support for <strong>two of the most common families of AVR microcontrollers</strong>, the <strong>ATmega48/88/168</strong> and <strong>ATtiny2313</strong></li>
<li>Support for programming the<strong> extended fuse (EFUSE)</strong> byte.</li>
<li>A new <strong>interactive mode, </strong>where desired fuses can be entered using the Arduino&#8217;s serial port.<strong> </strong><strong></strong></li>
<li>Separate <strong>Ready</strong> and <strong>Burn</strong> indicators</li>
<li><strong>Protection resistors </strong>on every single data, control, and supply line to the target AVR, meaning that your Arduino and AVR should survive <em>any</em> mishaps during programming, including inserting the AVR backwards or off by 1 pin.</li>
</ul>
<p>I spent considerable time testing each new feature and documenting the Arduino sketch.  I hope that you&#8217;ll find that the finished product was worth the wait!</p>
<h3>Ordering instructions:</h3>
<p>To purchase bare PCBs and kits, head over to the <a href="http://mightyohm.com/blog/products/avr-hv-rescue-shield/">AVR HV Rescue Shield product page</a>.</p>
<p><a href="http://mightyohm.com/blog/products/avr-hv-rescue-shield/"><img class="alignnone size-medium wp-image-1428" title="Rescue Shield LEDs - closeup" src="http://mightyohm.com/blog/wp-content/uploads/2009/03/rescue-burn-ready_scaled-500x375.jpg" alt="rescue-burn-ready_scaled" width="500" height="375" /></a></p>
<p><a href="http://mightyohm.com/blog/products/avr-hv-rescue-shield/"><img class="alignnone size-medium wp-image-1429" title="Rescue Shield mightyohm.com - closeup" src="http://mightyohm.com/blog/wp-content/uploads/2009/03/rescue-mightyohm_scaled-500x375.jpg" alt="rescue-mightyohm_scaled" width="500" height="375" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://mightyohm.com/blog/2009/03/introducing-the-avr-hv-rescue-shield/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Programming and Customizing PICmicro Microcontrollers, by Myke Predko</title>
		<link>http://mightyohm.com/blog/2008/12/programming-and-customizing-picmicro-microcontrollers-by-myke-predko/</link>
		<comments>http://mightyohm.com/blog/2008/12/programming-and-customizing-picmicro-microcontrollers-by-myke-predko/#comments</comments>
		<pubDate>Wed, 24 Dec 2008 15:26:26 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Books and Resources]]></category>
		<category><![CDATA[Microcontrollers]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[pic]]></category>

		<guid isPermaLink="false">http://mightyohm.com/blog/?p=723</guid>
		<description><![CDATA[Programming &#38; Customizing PICmicro Microcontrollers, by Myke Predko, is probably the best book out there for someone who is starting out with the PIC series of microcontrollers from Microchip.  I used Myke&#8217;s book as both a tutorial and reference when I created my PIC RGB Video Display.  Since then, I have referred back to this [...]]]></description>
			<content:encoded><![CDATA[<p><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=mightyohm-20&amp;l=as2&amp;o=1&amp;a=0071361723" border="0" alt="" width="1" height="1" /><a href="http://www.amazon.com/gp/product/0071361723?ie=UTF8&amp;tag=mightyohm-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0071361723"><img class="size-full wp-image-894 alignnone" title="Programming and Customizing PICmicro Microcontrollers" src="http://mightyohm.com/blog/wp-content/uploads/2008/12/mpbook.jpg" alt="Programming and Customizing PICmicro Microcontrollers" width="250" height="320" /></a></p>
<p><a href="http://www.amazon.com/gp/product/0071361723?ie=UTF8&amp;tag=mightyohm-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0071361723">Programming &amp; Customizing PICmicro Microcontrollers</a><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=mightyohm-20&amp;l=as2&amp;o=1&amp;a=0071361723" border="0" alt="" width="1" height="1" />, by <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2Fs%3Fie%3DUTF8%26tag%3Dmozilla-20%26index%3Dblended%26link%255Fcode%3Dqs%26field-keywords%3Dmyke%2520predko%26sourceid%3DMozilla-search&amp;tag=mightyohm-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=390957">Myke Predko</a><img style="border:none !important; margin:0px !important;" src="https://www.assoc-amazon.com/e/ir?t=mightyohm-20&amp;l=ur2&amp;o=1" border="0" alt="" width="1" height="1" />, is probably the best book out there for someone who is starting out with the <a href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;nodeId=74">PIC</a> series of microcontrollers from <a href="http://www.microchip.com">Microchip</a>.  I used Myke&#8217;s book as both a tutorial and reference when I created my <a href="http://mightyohm.com/blog/2008/09/generating-analog-rgb-video-with-a-pic-microcontroller/">PIC RGB Video Display</a>.  Since then, I have referred back to this book countless times even when working with other microcontrollers, like Atmel&#8217;s <a href="http://www.atmel.com/products/avr/overview.asp?family_id=607">AVR family</a>, because it contains so much useful architecture-independent technical information.  I have referred to this book for information about topics including LCD interfacing, debouncing switches, RS-232 serial interfaces, and multiplexed LED drivers.  As a technical reference it easily surpasses the majority of AVR books that are out there.</p>
<p>The book is starting to show it&#8217;s age by not including some of the latest PIC micros in the examples (like the PIC16F628), but the code is easily ported to newer/faster/better microcontrollers, a good learning excercise in itself.</p>
]]></content:encoded>
			<wfw:commentRss>http://mightyohm.com/blog/2008/12/programming-and-customizing-picmicro-microcontrollers-by-myke-predko/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Arduino Duemilanove</title>
		<link>http://mightyohm.com/blog/2008/10/arduino-duemilanove/</link>
		<comments>http://mightyohm.com/blog/2008/10/arduino-duemilanove/#comments</comments>
		<pubDate>Mon, 20 Oct 2008 18:51:33 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Microcontrollers]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[ATmega]]></category>
		<category><![CDATA[AVR]]></category>

		<guid isPermaLink="false">http://mightyohm.com/blog/?p=436</guid>
		<description><![CDATA[The Arduino team has released a new version of the awesome Arduino platform called Arduino Duemilanove.  Improvements include automatic selection of USB vs. external power, header pins for RESET and 3.3V supply, and an easy to cut automatic-RESET-disable trace. The wiki page includes a very helpful audio sample to demonstrate proper pronunciation of the new [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://arduino.cc/en/uploads/Main/ArduinoDuemilanove.jpg"><img class="alignnone" title="Arduino Duemilanove" src="http://arduino.cc/en/uploads/Main/ArduinoDuemilanove.jpg" alt="Arduino Duemilanove" width="400" height="288" /></a></p>
<p>The <a href="http://arduino.cc">Arduino</a> team has released a new version of the awesome <a href="http://arduino.cc/en/Main/Hardware">Arduino platform</a> called <a href="http://arduino.cc/en/Main/ArduinoBoardDuemilanove">Arduino Duemilanove</a>.  Improvements include automatic selection of USB vs. external power, header pins for RESET and 3.3V supply, and an easy to cut automatic-RESET-disable trace.</p>
<p>The wiki page includes a very helpful <a href="http://arduino.cc/en/uploads/Main/Arduino_Duemilanove.wav">audio sample</a> to demonstrate proper pronunciation of the new name.</p>
]]></content:encoded>
			<wfw:commentRss>http://mightyohm.com/blog/2008/10/arduino-duemilanove/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://arduino.cc/en/uploads/Main/Arduino_Duemilanove.wav" length="770092" type="audio/x-wav" />
		</item>
		<item>
		<title>Arduino-based AVR High Voltage Programmer</title>
		<link>http://mightyohm.com/blog/2008/09/arduino-based-avr-high-voltage-programmer/</link>
		<comments>http://mightyohm.com/blog/2008/09/arduino-based-avr-high-voltage-programmer/#comments</comments>
		<pubDate>Thu, 25 Sep 2008 01:08:30 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Microcontrollers]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[AVR]]></category>

		<guid isPermaLink="false">http://mightyohm.com/blog/?p=294</guid>
		<description><![CDATA[Update 01/02/09: A PCB version of this circuit is in the design stages &#8211; some preliminary information is here. Update 03/11/09: Kits based on this design are now for sale! Update 12/14/10: The original AVR HV Rescue Shield kit has been replaced by the new and improved HV Rescue Shield 2.  Visit the HV Rescue Shield [...]]]></description>
			<content:encoded><![CDATA[<p><a class="tt-flickr tt-flickr-Medium" href="http://www.flickr.com/photos/mightyohm/2885607891/"><img class="alignnone" src="http://farm4.static.flickr.com/3062/2885607891_01e915c419.jpg?v=1222380712" alt="Arduino-based AVR High Voltage Programmer" width="500" height="375" /></a></p>
<p><strong>Update 01/02/09: </strong>A PCB version of this circuit is in the design stages &#8211; <a href="http://mightyohm.com/blog/2009/01/avr-hv-programmer-shield-in-the-works/">some preliminary information is here</a>.</p>
<p><strong>Update 03/11/09:</strong> Kits based on this design are <a href="http://mightyohm.com/blog/products/avr-hv-rescue-shield/">now for sale</a>!</p>
<p><strong>Update 12/14/10:</strong> The original AVR HV Rescue Shield kit has been replaced by the new and improved HV Rescue Shield 2.  Visit the <a href="http://mightyohm.com/hvrescue2">HV Rescue Shield 2 product page</a> for information about the new kit!</p>
<p><a href="http://mightyohm.com/blog/2008/09/i-programmed-the-rstdisbl-fuse/">As I mentioned earlier this week</a>, I recently &#8220;lost&#8221; an <a href="http://www.atmel.com/dyn/products/Product_card.asp?part_id=3303">ATmega168</a> due to flashing the configuration fuses to disable the RESET pin, without realizing that this makes the device <a href="http://support.atmel.no/bin/customer?=&amp;action=viewKbEntry&amp;id=13">impossible to reflash with SPI</a>.  This is particularly frustrating because the device is still 100% functional, just completely deaf to ordinary serial programmers.  The only way to recover the device is using what Atmel calls &#8220;High Voltage Parallel Programming Mode&#8221; which very few programmers support, most importantly, not the <a href="http://ladyada.net/make/usbtinyisp/">USBtinyISP</a> I otherwise love.</p>
<p>Fortunately, my trusty <a href="http://www.arduino.cc">Arduino</a> came to the rescue &#8211; I created an Arduino-based AVR programmer that uses the high voltage programming mode and can fix pesky fuses like RSTDISBL.</p>
<p>The Arduino has just enough IO to implement the entire HV protocol plus a &#8220;go&#8221; button.  So far I have only implemented setting LFUSE and HFUSE in software, but there is no reason why the code couldn&#8217;t be extended to support chip erase and programming the entire flash as well.</p>
<p><strong>Overview:</strong></p>
<p>The fuse programming process is simple:</p>
<ul>
<li>Upload the HVFuse sketch to the Arduino, available for download here: <a href="http://mightyohm.com/blog/wp-content/uploads/2008/09/hvfuse.pde">HVFuse.pde</a></li>
<li>Install the shield and apply +12VDC to the terminals on the left</li>
<li>Wait for the red LED to turn on (if it isn&#8217;t already)</li>
<li>Install the ATmega to be repaired</li>
<li>Push the button</li>
<li>As soon as the LED turns back on, the AVR is fixed and ready to be put back into service!</li>
</ul>
<p><strong>Schematic:</strong></p>
<p>Here is an Eagle schematic of the HV Programming shield (click to enlarge):</p>
<p><strong>Update 12/17/08</strong>:  An observant reader pointed out that there were three errors in the way GND/AGND, AREF and VCC/AVCC were connected on the target AVR in the original schematic.  The errors have been fixed and the updated schematic is below.  Apologies for any confusion this caused.</p>
<p><a href="http://mightyohm.com/blog/wp-content/uploads/2008/09/hvfuse_fixed.png"><img class="alignnone size-medium wp-image-860" title="hvfuse_fixed.sch" src="http://mightyohm.com/blog/wp-content/uploads/2008/09/hvfuse_fixed.png" alt="hvfuse_fixed.sch" width="500" height="366" /></a></p>
<p><strong>Parts list:</strong></p>
<ul>
<li>An Arduino NG, <a href="http://arduino.cc/en/Main/ArduinoBoardDiecimila">Diecimila</a>, or compatible</li>
<li>A piece of perfboard cut to size</li>
<li>Header pins for the Arduino interface (note I had to drill some of the holes to get the headers to fit the <a href="http://mightyohm.com/blog/2008/09/arduino-fix-your-pin-spacing/">nonstandard pin spacing</a> for digital lines 8-13.</li>
<li>An LED which indicates when it is ok to insert/remove the AVR</li>
<li>A 2N3903 or similar NPN transistor (2N2222, etc.)</li>
<li>(20) 1k resistors &#8211; these protect the Arduino from short circuits in case something goes wrong</li>
<li>A pushbutton switch &#8211; this is the &#8216;go&#8217; button</li>
<li>A 28 pin socket for the target AVR</li>
</ul>
<h4><strong>Kits!</strong></h4>
<p><strong></strong> A kit version of this project is available.  Visit the <a href="http://mightyohm.com/hvrescue2">HV Rescue Shield 2 product page</a> for more information.</p>
]]></content:encoded>
			<wfw:commentRss>http://mightyohm.com/blog/2008/09/arduino-based-avr-high-voltage-programmer/feed/</wfw:commentRss>
		<slash:comments>105</slash:comments>
		</item>
		<item>
		<title>I programmed the RSTDISBL fuse.</title>
		<link>http://mightyohm.com/blog/2008/09/i-programmed-the-rstdisbl-fuse/</link>
		<comments>http://mightyohm.com/blog/2008/09/i-programmed-the-rstdisbl-fuse/#comments</comments>
		<pubDate>Tue, 23 Sep 2008 08:24:02 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Microcontrollers]]></category>
		<category><![CDATA[annoying]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[AVR]]></category>

		<guid isPermaLink="false">http://mightyohm.com/blog/?p=287</guid>
		<description><![CDATA[AVR microcontrollers use &#8220;fuse bits&#8221; to set various operational parameters of the device, such as the speed of the internal oscillator or the watchdog timer settings. Most fuse bits can be set or reset without worry, that is, they can be flashed into one state and then flashed back again using an SPI programmer like [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.atmel.com/products/AVR/">AVR microcontrollers</a> use &#8220;<a href="http://www.engbedded.com/cgi-bin/fc.cgi">fuse bits</a>&#8221; to set various operational parameters of the device, such as the speed of the internal oscillator or the watchdog timer settings.</p>
<p>Most fuse bits can be set or reset without worry, that is, they can be flashed into one state and then flashed back again using an <a href="http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus">SPI</a> programmer like the <a href="http://ladyada.net/make/usbtinyisp/">USBTinyISP</a>.</p>
<p>However, some fuse bits are irreversable or at least awkward to change, similar to the code protection bits on a <a href="http://www.microchip.com">PIC</a> microcontroller.</p>
<p>One example is the RSTDISBL fuse.  This fuse allows bit 6 of PORTC to be used as a general purpose I/O pin instead of the RESET pin.  Well, it turns out that SPI programmers <strong>need</strong> the RESET pin to flash the device.  (RESET is set as part of the routine to enter serial programming mode.)  Once the RSTDISBL fuse is set, no more SPI flashing is possible.  The only way to recover is with a high voltage programmer like the <a href="http://www.atmel.com/dyn/Products/tools_card.asp?tool_id=2735">STK500</a>, which I don&#8217;t have.<a href="http://www.atmel.com/dyn/Products/tools_card.asp?tool_id=2735"><br />
</a></p>
<p>Too bad I didn&#8217;t realize that beforehand.</p>
<p>At least I&#8217;m not the only person who has done this before: <a href="http://support.atmel.no/bin/customer?=&amp;action=viewKbEntry&amp;id=13">http://support.atmel.no/bin/customer?=&amp;action=viewKbEntry&amp;id=13</a></p>
<p><strong>Update:</strong> It&#8217;s alive!!!  I made a high voltage parallel programmer out of an <a href="http://www.arduino.cc">Arduino</a>, flashed the fuses back again, and the AVR came back to life.  The parallel programming protocol is well documented in the datasheet for the part and pretty straightforward.  I think I&#8217;ll transfer the circuit onto a perfboard just in case I ever need to do this again!</p>
]]></content:encoded>
			<wfw:commentRss>http://mightyohm.com/blog/2008/09/i-programmed-the-rstdisbl-fuse/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PIC RGB Video &#8211; Technical Details</title>
		<link>http://mightyohm.com/blog/2008/09/pic-rgb-video-technical-details/</link>
		<comments>http://mightyohm.com/blog/2008/09/pic-rgb-video-technical-details/#comments</comments>
		<pubDate>Mon, 15 Sep 2008 20:41:27 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Microcontrollers]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[lcd]]></category>
		<category><![CDATA[NTSC]]></category>
		<category><![CDATA[pic]]></category>
		<category><![CDATA[rgb]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://mightyohm.com/blog/?p=235</guid>
		<description><![CDATA[This page summarizes the technical details behind my PIC LCD video project.  This is a basic tutorial on how to generate analog RGB video using a PIC16F628 microcontroller. Previous posts on this project: PIC Microcontroller RGB Video &#8211; Animations! Space Invaders! Generating Analog RGB Video with a PIC Microcontroller Materials needed: An LCD screen like [...]]]></description>
			<content:encoded><![CDATA[<p>This page summarizes the technical details behind my <a href="http://mightyohm.com/blog/2008/09/pic-microcontroller-rgb-video-animations/">PIC LCD video project</a>.  This is a basic tutorial on how to generate analog RGB video using a PIC16F628 microcontroller.</p>
<p><strong>Previous posts on this project:</strong></p>
<ul>
<li><a title="Permanent Link to PIC Microcontroller RGB Video - Animations!" href="../2008/09/pic-microcontroller-rgb-video-animations/?phpMyAdmin=pfRTB12SN5iI6CmsWzU3sxfiZw0" rel="bookmark">PIC Microcontroller RGB Video &#8211; Animations!</a></li>
<li><a title="Permanent Link to Space Invaders!" href="http://mightyohm.com/blog/2008/09/space-invaders/" rel="bookmark">Space Invaders!</a></li>
<li><a title="Permanent Link to Generating Analog RGB Video with a PIC Microcontroller" href="../2008/09/generating-analog-rgb-video-with-a-pic-microcontroller/?phpMyAdmin=pfRTB12SN5iI6CmsWzU3sxfiZw0" rel="bookmark">Generating Analog RGB Video with a PIC Microcontroller</a></li>
</ul>
<p><strong>Materials needed:</strong></p>
<ul>
<li>An LCD screen like the <a href="http://store.earthlcd.com/Sharp-4LU4EB-4-B-W-Video-LCD">Sharp 4L-U4EB</a> that accepts a noninterlaced NTSC analog RGB video signal (red/green/blue and composite sync all as separate signals).  <a href="http://mightyohm.com/blog/wp-content/uploads/2008/09/sharp_bw_lcd_manual.pdf">Poor quality datasheet here.</a></li>
<li>(1) <a href="http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en010209">PIC16F628</a> (the <a href="http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en010210">PIC16F628A</a> should be a drop-in replacement.  Sorry, I have old PICs lying around.)</li>
<li>A PIC programmer &#8211; I am using a <a href="http://kitsrus.com/pic.html">K128</a>, but support for it has been discontinued.  <a href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;nodeId=1406&amp;dDocName=en023805">Microchip&#8217;s PICkit2 </a>is probably your best bet, but I haven&#8217;t used one (yet).</li>
<li><a href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;nodeId=1406&amp;dDocName=en019469&amp;part=SW007002">MPLAB </a>- the free Microchip IDE, or a compatible PIC assembler</li>
<li>(1) 20MHz crystal (HC-18 or whatever fits your breadboard)</li>
<li>(2) 22pF ceramic capacitors</li>
<li>(3) 470 Ohm 1/8W resistors</li>
<li>(5) 10K 1/8W resistors</li>
<li>A 1K potentiometer for brightness control (if needed, my LCD needs one to display anything)</li>
<li>A regulated 5V supply for the PIC, and my LCD needed an 8V supply of its own</li>
<li>Anything else specific to your LCD &#8211; hopefully not much.</li>
</ul>
<p><strong>Firmware:</strong></p>
<ul>
<li>Source code (for use with <a href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;nodeId=1406&amp;dDocName=en019469&amp;part=SW007002">MPLAB</a>) &#8211; <a href="http://mightyohm.com/blog/wp-content/uploads/2008/09/lcd_video7.asm">lcd_video7.asm</a></li>
<li>Hex file &#8211; <a href="http://mightyohm.com/blog/wp-content/uploads/2008/09/lcd_video7.hex">lcd_video7.hex</a></li>
<li>Listing file (<a href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;nodeId=1406&amp;dDocName=en019469&amp;part=SW007002">MPLAB</a> output) &#8211; <a href="http://mightyohm.com/blog/wp-content/uploads/2008/09/lcd_video7.lst">lcd_video7.lst</a></li>
</ul>
<p><strong>Schematic:</strong><em></em></p>
<p><em>(click to enlarge)</em></p>
<p><a href="http://mightyohm.com/blog/wp-content/uploads/2008/09/lcd_video.png"><img class="size-medium wp-image-253 alignnone" title="lcd_video schematic" src="http://mightyohm.com/blog/wp-content/uploads/2008/09/lcd_video-300x244.png" alt="Schematic" width="300" height="244" /></a></p>
<p><strong>Theory of Operation:</strong></p>
<p>The LCD I chose for this project needs four main electrical signals to display video.  Three of them carry color information &#8211; red, green, and blue.  These three signals can vary from 0V (black) to 0.7V (full brightness).  To achieve this, I placed 470 ohm resistors in series with each, as shown in the schematic.  The LCD terminates each color signal with a 75 ohm resistor, so the 470 ohm series resistors serve to convert the 5V output of the PIC to a 0.7V max signal for the LCD (using a resistive divider).</p>
<p>The other signal the LCD needs is CSYNC &#8211; an inverse TTL composite sync signal.  This signal provides both the horizontal and vertical sync for the LCD.  Without these sync signals the image rolls across the display because the LCD doesn&#8217;t know where the image starts or ends.  Composite sync seems to be a little bit unusual &#8211; most RGB video signals have separate horizontal and vertical sync signals on separate wires.</p>
<p>A horizontal line of NTSC video is roughly 64μs long. (μs = microseconds)  At the beginning of each line, CSYNC is held low for 4us, then set high again.  The RGB lines are held low during sync and stay low for 8μs after sync, then set to the desired levels display the desired image on that line.  2μs before the end of the line, RGB are set low again to signal the end of the visible image.  At 64μs, the program loops back to start another line.</p>
<p>You can generate video like this but there would be no vertical hold &#8211; the image would be stable in the horizontal direction because we are generating a horizontal sync but not in the vertical direction.</p>
<p>To create a stable image with vertical sync, you have to create a valid &#8220;<a href="http://en.wikipedia.org/wiki/Video_field">field</a>&#8221; of video.  We&#8217;re creating non-interlaced video, so every field is the same (in contrast with <a href="http://en.wikipedia.org/wiki/Ntsc">ordinary interlaced video used in television</a>.)  A field is composed of 262 horizontal lines.  The first line is blank, with CSYNC set low for the entire line.  This is the vertical sync.  The next 17 lines are called the &#8220;<a href="http://en.wikipedia.org/wiki/Vertical_blanking_interval">blanking interval</a>&#8221; and occur above the visible image, during these lines horizontal sync is applied but no RGB signals.  The next line is the first visible line and consists of both a horizontal sync and RGB signals as discussed earlier.  243 lines later, we write one blank line, then loop back and repeat the process all over again.  Now we have a valid non-interlaced analog RGB video signal.</p>
<p>The blank lines are mostly due to compatibility with old television sets that needed time to reset the electron gun for the next field.  The nice thing is that they give us time to do housekeeping before displaying the next field.  For example, during the blanking interval I load the image to display into memory so it can be easily read back later.</p>
<p>The critical thing with regards to timing is that the PIC needs to execute the same number of instructions each time it loops, such that the sync signals always occur at the right time.  This is why there are a lot of &#8216;nop&#8217; instructions in my code &#8211; to pad the program execution in the right spots and maintain sync.  I started by counting instructions to figure out where to put the &#8216;nop&#8217;s, but by the end of writing the program I was using <a href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;nodeId=1406&amp;dDocName=en019469&amp;part=SW007002">MPLAB&#8217;s builtin &#8220;Stopwatch&#8221; feature</a> instead.</p>
<p>That&#8217;s it for now!  If you have any questions, make use of these routines in your own projects, or just find this interesting, please leave a comment!</p>
]]></content:encoded>
			<wfw:commentRss>http://mightyohm.com/blog/2008/09/pic-rgb-video-technical-details/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Blogs, blogs, blogs</title>
		<link>http://mightyohm.com/blog/2008/09/blogs-blogs-blogs/</link>
		<comments>http://mightyohm.com/blog/2008/09/blogs-blogs-blogs/#comments</comments>
		<pubDate>Fri, 12 Sep 2008 18:36:15 +0000</pubDate>
		<dc:creator>Jeff</dc:creator>
				<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Microcontrollers]]></category>
		<category><![CDATA[blogs]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[make]]></category>

		<guid isPermaLink="false">http://mightyohm.com/blog/?p=232</guid>
		<description><![CDATA[Some interesting electronics/microcontroller/hacker themed blogs I&#8217;m reading these days: My favorites: NYC Resistor &#8211; Definitely the most interesting hackerspace in the US right now.  Updates almost daily.  I stand in awe of how prolific these guys/girls are, it seems like they are pushing the envelope of DIY every week.  This blog alone makes me want [...]]]></description>
			<content:encoded><![CDATA[<p>Some interesting electronics/microcontroller/hacker themed blogs I&#8217;m reading these days:</p>
<p><strong>My favorites:</strong></p>
<ul>
<li><a href="http://www.nycresistor.com/">NYC Resistor</a> &#8211; Definitely the most interesting <a href="http://hackerspaces.org/wiki/Hacker_Spaces">hackerspace</a> in the US right now.  Updates almost daily.  I stand in awe of how prolific these guys/girls are, it seems like they are pushing the envelope of DIY every week.  This blog alone makes me want to move to <a href="http://maps.google.com/maps?q=new+york,+new+york&amp;ie=UTF8&amp;oe=utf-8&amp;client=firefox-a&amp;z=10&amp;iwloc=addr">NYC</a> sometimes.  (Well, them and <a href="http://itp.nyu.edu/itp/">ITP</a>.)</li>
<li><a href="http://www.evilmadscientist.com/">Evil Mad Scientist Laboratories</a> &#8211; Evil mad scientist duo <a href="http://www.evilmadscientist.com/staticpages/index.php/AboutEMSL">Windell and Lenore</a> showed the world what an electronics blog could be &#8211; <a href="http://www.evilmadscientist.com/article.php?story=lampshade&amp;query=light%2Btent">100% high quality photography</a>, <a href="http://www.evilmadscientist.com/article.php?story=peggy2&amp;query=open%2Bsource">open source everything</a>, and <a href="http://www.evilmadscientist.com/article.php?story=bristlebot&amp;query=bristlebot">unique and captivating projects</a> time and time again.  Along with <a href="http://www.adafruit.com">Lada Ada</a> they made the <a href="http://www.evilmadscientist.com/article.php/avrtargetboards">Atmel AVR</a> the standard for beginning microcontrollers.  <a href="http://evilmadscience.com/">They sell stuff too.</a></li>
<li><a href="http://blog.makezine.com/">The Make: Blog</a> &#8211; You could pretty much read this one alone and still stay on top of what&#8217;s hot in DIY right now.  They usually follow EMSL and NYC Resistor anyway.</li>
</ul>
<p><strong>And some new (to me) blogs:</strong></p>
<ul>
<li><a href="http://www.dadhacker.com/blog/">DadHacker</a> &#8211; This guy wrote <a href="http://www.dadhacker.com/blog/?p=987">Donkey Kong for the Atari</a>.  This blog has been around for years, lots 8-bit assembly coding stuff which is fascinating.</li>
<li><a href="http://brepettis.com/blog/">Bre Pettis&#8217; Blog</a> &#8211; Bre is on a mission and is stirring up a lot of interest in DIY.  He has a <a href="http://brepettis.com/blog/2008/09/08/new-time-history-hacker/">TV show starting up in a couple weeks</a>.  <a href="http://www.tilzy.tv/bre-pettis-leaves-weekend-projects-to-make-things-for-etsy.htm">His departure from Make</a> is still being mourned (by me at least).  <a href="http://blog.makezine.com/archive/weekend_projects/">Weekend Projects</a> will never be the same (sorry, <a href="http://kipkay.com/">Kip</a>).</li>
</ul>
<p>That&#8217;s it for now.  If I missed any good ones, I&#8217;d love to hear about them, leave a comment or <a href="http://mightyohm.com/blog/contact/">contact me</a>.  You can access all of the blogs I mentioned (and a couple more) from the blogroll to the right.</p>
]]></content:encoded>
			<wfw:commentRss>http://mightyohm.com/blog/2008/09/blogs-blogs-blogs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

