<?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>DIY DMCole &#187; Microchip</title>
	<atom:link href="http://www.dmcole.net/tag/microchip/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dmcole.net</link>
	<description>Circuits, microcontrollers, LEDs, do-it-yourself style</description>
	<lastBuildDate>Sun, 04 Sep 2011 17:25:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Taking the ATMega8for an introductory spin</title>
		<link>http://www.dmcole.net/taking-the-atmega8-for-an-introductory-spin/</link>
		<comments>http://www.dmcole.net/taking-the-atmega8-for-an-introductory-spin/#comments</comments>
		<pubDate>Sat, 07 Mar 2009 21:23:53 +0000</pubDate>
		<dc:creator>dmcole</dc:creator>
				<category><![CDATA[How-to]]></category>
		<category><![CDATA[ATMega8]]></category>
		<category><![CDATA[Atmel]]></category>
		<category><![CDATA[Macintosh]]></category>
		<category><![CDATA[Microchip]]></category>
		<category><![CDATA[PICAXE]]></category>
		<category><![CDATA[USBtinyISP]]></category>

		<guid isPermaLink="false">http://www.dmcole.net/?p=18</guid>
		<description><![CDATA[In 2007 I played around with the PICAXE, a microprocessor sold by a non-profit in the United Kingdom that comes loaded with a BASIC-like interpreter (you can read more about it here and here). I built some lighthouse beacons and a railroad crossing light using the device. It had one drawback: I had to write [...]]]></description>
			<content:encoded><![CDATA[<p>In 2007 I played around with the PICAXE, a microprocessor sold by a non-profit in the United Kingdom that comes loaded with a BASIC-like interpreter (you can read more about it <a href="http://www.rev-ed.co.uk/picaxe/" target="_blank">here</a> and <a href="http://www.phanderson.com/picaxe/picaxe.html" target="_blank">here</a>). I built some lighthouse beacons and a railroad crossing light using the device. It had one drawback: I had to write the code and program the chip using, sigh, Windows.<br />
<div id="attachment_48" class="wp-caption alignright" style="width: 310px"><a href="http://www.dmcole.net/wp-content/uploads/2009/03/atmega8-sample-schematic.pdf" target="_new"><img src="http://www.dmcole.net/wp-content/uploads/2009/03/atmega8-sample-schematic-300x193.jpg" alt="Sample schematic to connect ATMega8 to 6-pin ISP (click to download PDF)" title="atmega8-sample-schematic" width="300" height="193" class="size-medium wp-image-48"  border="0" /></a><p class="wp-caption-text">Sample schematic to connect ATMega8 to 6-pin ISP (click to download PDF)</p></div></p>
<p>In 2008 I learned a little about Microchipâ€™s PIC series of microprocessors because that was the favored chip by most of the developers in the DIY Christmas lighting world. Though I didn&#8217;t actually program PICs, I did learn how to burn HEX code into them using an ADM programmer. These too, had a drawback: you had to write the code and program the chip using, ugh, Windows.</p>
<p>Along the way, though, I heard about the AVR series of chips from <a href="http://www.atmel.com/" target="_blank">Atmel Corp.</a>, which had a distinct advantage over PICAXEn and PICs: there was a small community of people who used Macintoshes to make them go. There was a full tool-chain for programming in C (a language I had no experience in) and there were USB devices that allowed for burning the code. Well, hello, sweetheart.</p>
<p>So, somewhere along the line in 2008 I bought myself an <a href="http://www.adafruit.com/index.php?main_page=product_info&amp;products_id=46&amp;sessid=40d5826a4b87847bc855d0f28dcbee74" target="_blank">USBtinyISP</a> programmer from Adafruit Industries; today&#8217;s price in March 2009 is $22 but I think I paid a little less for it than that. I didn&#8217;t build it after I got it; the board and components sat unworking for a couple of months while I finished the Christmas lights.</p>
<p>But once the lights were up and running, I decided to get moving on learning to program an AVR in C (maybe someday I&#8217;ll tackle assembly code, but I&#8217;m really a path-of-least-resistance guy). My first step was to set up a breadboard and get a chip in a position to program.</p>
<p>And herein I ran into a small problem: I had bought a bunch of ATMega8s to learn on and lo and behold, I couldn&#8217;t find how to connect a USBtinyISP to a Mega8.</p>
<p>Through trial-and-error and posting questions on Adafruit&#8217;s <a href="http://www.ladyada.net/forums/" target="_new">forums</a>, I worked out a method to hook them together, but thought it would be worthwhile to post here not only the method, but draw up a schematic as well.</p>
<p>I should point out that for my initial set up I used a six-pin header that I soldered to six wires, which I then plugged into the breadboard; today I would advocate buying the header adapter sold by <a href="http://www.sparkfun.com/commerce/product_info.php?products_id=8508" target="_blank">Sparkfun Electronics</a>. Though initially designed to be an interface between 10-pin and six-pin headers, it has been adapted to allow you to put a row of header pins into one side that can plug directly into a breadboard. They&#8217;re only a buck, so I was forced to buy some other stuff to justify the postage <img src='http://www.dmcole.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  &#8230;</p>
<p>The code that I wrote for the ATMega8 is pretty rudimentary (it flashes a single LED) but I reproduce it here for full disclosure.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p18code2'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p182"><td class="code" id="p18code2"><pre class="c" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/* Name: main.c
 * Author: David M. Cole
 * License: 2008-2009 Creative Commons Attribution-Noncommercial-Share Alike 3.0 U.S.
 * Target: ATMega8
 * Compiler: AVR-GCC
 */</span>
&nbsp;
<span style="color: #339933;">#include &lt;avr/io.h&gt;									/* A file that defines inputs and outputs */</span>
&nbsp;
<span style="color: #993333;">void</span> delay_ms<span style="color: #009900;">&#40;</span>uint16_t x<span style="color: #009900;">&#41;</span>								<span style="color: #808080; font-style: italic;">/* Declare substitute delay function, bring in variable x */</span>
	<span style="color: #009900;">&#123;</span>
		uint8_t y<span style="color: #339933;">,</span> z<span style="color: #339933;">;</span>								<span style="color: #808080; font-style: italic;">/* Declare the variables y, z */</span>
		<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span> <span style="color: #339933;">;</span> x <span style="color: #339933;">&gt;</span> <span style="color: #0000dd;">0</span> <span style="color: #339933;">;</span> x<span style="color: #339933;">--</span><span style="color: #009900;">&#41;</span>							<span style="color: #808080; font-style: italic;">/* Loop while x is less than zero; decrement */</span>
			<span style="color: #009900;">&#123;</span>
				<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span> y <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span> <span style="color: #339933;">;</span> y <span style="color: #339933;">&lt;</span> <span style="color: #0000dd;">90</span> <span style="color: #339933;">;</span> y<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>				<span style="color: #808080; font-style: italic;">/* Loop while y is less than 90; increment */</span>
					<span style="color: #009900;">&#123;</span>
						<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span> z <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span> <span style="color: #339933;">;</span> z <span style="color: #339933;">&lt;</span> <span style="color: #0000dd;">6</span> <span style="color: #339933;">;</span> z<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>		<span style="color: #808080; font-style: italic;">/* Loop while z is less than six */</span>
							<span style="color: #009900;">&#123;</span>
								asm <span style="color: #993333;">volatile</span> <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;nop&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	<span style="color: #808080; font-style: italic;">/* Inline assembler code: no operation performed; i.e.: do nothing */</span>
							<span style="color: #009900;">&#125;</span>
					<span style="color: #009900;">&#125;</span>
			<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>										<span style="color: #808080; font-style: italic;">/* Main function; every program has a main */</span>
	<span style="color: #009900;">&#123;</span>
		DDRD <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">4</span><span style="color: #339933;">;</span>								<span style="color: #808080; font-style: italic;">/* make Pin 6 (PortD4) an output */</span>
			<span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">;;</span><span style="color: #009900;">&#41;</span>								<span style="color: #808080; font-style: italic;">/* Loop like forever */</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #993333;">char</span> i<span style="color: #339933;">;</span>						<span style="color: #808080; font-style: italic;">/* Define the variable i */</span>
					<span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span>i <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> <span style="color: #0000dd;">10</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>				<span style="color: #808080; font-style: italic;">/* Loop while i is less than 10 */</span>
						<span style="color: #009900;">&#123;</span>
							delay_ms<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">50</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>			<span style="color: #808080; font-style: italic;">/* Hang on for a moment */</span>
						<span style="color: #009900;">&#125;</span>
					PORTD <span style="color: #339933;">^=</span> <span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">4</span><span style="color: #339933;">;</span>				<span style="color: #808080; font-style: italic;">/* toggle the LED; if it's off, turn it on */</span>
				<span style="color: #009900;">&#125;</span>
		<span style="color: #b1b100;">return</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>								<span style="color: #808080; font-style: italic;">/* never reached */</span>
	<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.dmcole.net/taking-the-atmega8-for-an-introductory-spin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

