<?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>Technology of Robotics &#187; Programming</title>
	<atom:link href="http://robotechno.us/category/robotics-tutorial/programming/feed" rel="self" type="application/rss+xml" />
	<link>http://robotechno.us</link>
	<description>Robotics Technology &#124; Robotics News, Articles and Tutorial</description>
	<lastBuildDate>Mon, 30 Jan 2012 16:12:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Distance Measurement Using Ultrasonic and MSP430 Microcontroller</title>
		<link>http://robotechno.us/distance-measurement-ultrasonic-msp430-microcontroller.html</link>
		<comments>http://robotechno.us/distance-measurement-ultrasonic-msp430-microcontroller.html#comments</comments>
		<pubDate>Tue, 06 Dec 2011 05:53:59 +0000</pubDate>
		<dc:creator>Robot Technology</dc:creator>
				<category><![CDATA[Microcontroller]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Sensors]]></category>
		<category><![CDATA[Distance Measurement]]></category>
		<category><![CDATA[Distance Measurement with ultrasonic]]></category>
		<category><![CDATA[MSP430 Microcontroller circuit]]></category>
		<category><![CDATA[ultrasonic circuit diagram]]></category>
		<category><![CDATA[ultrasonic distance sensor]]></category>
		<category><![CDATA[ultrasonic sensor cirucit]]></category>

		<guid isPermaLink="false">http://robotechno.us/?p=1303</guid>
		<description><![CDATA[This is the application report from Texas Instruments about distance measurement using ultrasonic and MSP430 microcontroller. The report is provided in PDF file, you may download the application report at the end of this post. This application report describes a distance-measuring system determined by ultrasonic sound using the MSP430F413 ultralow-power microcontroller. The system transmits a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://robotechno.us/distance-measurement-ultrasonic-msp430-microcontroller.html/ultrasonic-distance-sensor-with-the-msp430" rel="attachment wp-att-1304"><img class="aligncenter size-medium wp-image-1304" title="Ultrasonic Distance Sensor With the MSP430" src="http://robotechno.us/wp-content/uploads/2011/12/Ultrasonic-Distance-Sensor-With-the-MSP430-269x300.png" alt="Ultrasonic Distance Sensor With the MSP430 269x300 Distance Measurement Using Ultrasonic and MSP430 Microcontroller" width="269" height="300" /></a></p>
<p>This is the application report from Texas Instruments about distance measurement using ultrasonic and MSP430 microcontroller. The report is provided in PDF file, you may download the application report at the end of this post.</p>
<p>This application report describes a distance-measuring system determined by ultrasonic sound using the MSP430F413 ultralow-power microcontroller. The system transmits a burst of ultrasonic sound waves towards the subject point and after that receives the corresponding echo.<br />
<span id="more-1303"></span><br />
This application is primarily based upon the reflection of sound waves. Sound waves are defined as longitudinal pressure waves in the medium in which they&#8217;re travelling. Subjects whose dimensions are greater than the wavelength of the impinging sound waves reflect them; the reflected waves are known as the echo. In the event the speed of sound in the medium is recognized and the time taken for the sound waves to travel the distance from the source towards the subject point and back to the source is measured, the distance from the source to the subject point will be computed accurately.</p>
<p>The devices applied to transmit and receive the ultrasonic sound waves within this application are 40-kHz ceramic ultrasonic transducers. The MSP430 drives the transmitter transducer using a 12-cycle burst of 40-kHz square-wave signal derived from the crystal oscillator, and therefore the receiver transducer receives the echo. The Timer_A in the MSP430 is configured to count the 40-kHz crystal frequency such that the time measurement resolution is 25 µs, that is more than enough for this application. The measurement time base is extremely stable because it is derived from a quartz-crystal oscillator. The echo received by the receiver transducer is boosted by an operational amplifier and the amplified output is fed towards the Comparator_A input. The Comparator_A senses the presence of the echo signal at its input and triggers a capture of Timer_A count value to capture compare register CCR1.</p>
<p>The capture is accomplished exactly at the immediate the echo arrives at the system. The captured count will be the measure of the time taken for the ultrasonic burst to travel the distance from the system to the subject point and back to the system. The distance in inches from the system towards the subject point is computed by the MSP430 implementing this measured time and displayed on a two-digit static LCD. Instantly right after updating the display screen, the MSP430 goes to LPM3 sleep mode to keep electrical power. The Basic Timer1 is programmed to interrupt the MSP430 every 205 milliseconds. The interrupt signal from the Basic Timer1 wakes up the MSP430 to repeat the measurement cycle and update the display screen.</p>
<p>Download the application report of distance measurement using ultrasonic and MSP430 microcontroller<br />
» <a target="_blank" title="Ultrasonic Distance Measurement With the MSP430" href="http://www.ti.com/lit/an/slaa136a/slaa136a.pdf" rel="external nofollow" target="_blank">Download Link 1</a> (direct download from Texas Instruments)<br />
» <a target="_blank" title="Distance Measurement Using Ultrasonic and MSP430 Microcontroller" href="http://myfilehost.us/dll/b53ejg" rel="external nofollow" target="_blank">Download Link 1</a> (mirror download)</p>
<div id="seo_alrp_related"><div class="seo_alrp_rl_content"><a href="http://robotechno.us/parallax-ping-28015-ultrasonic-distance-sensor-datasheet-and-application-sample.html" rel="bookmark">Parallax Ping 28015 Ultrasonic Distance Sensor Datasheet and Application Sample</a> <br />Download ping parallax ultrasonic distance sensor datasheet, schematic and program code sample: Â» Download Link</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/dc-motor-speed-regulation-with-a-pwm-feed-back-system.html" rel="bookmark">DC Motor Speed Regulation with A PWM Feed Back System</a> <br />This tutorial will helps you how the PWM works. You will learn what is PWM, the usage of PWM also how to program a DC Motor with PWM. Some Robots need to control the motor speed for its to work. Just use PWM system and you will get your motor's ...</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/processing-frequency-of-color-sensor-tcs230-with-microcontroller-at89s51.html" rel="bookmark">Processing Frequency of Color Sensor TCS230 with Microcontroller AT89S51</a> <br />The TCS230 programmable color light-to-frequency converter combines configurable silicon photodiodes and a current-to-frequency converter on single monolithic CMOS integrated circuit. The output is a square wave (50% duty cycle) with frequency directly proportional to light intensity (irradiance). The full-scale output frequency can be scaled by one of three preset values ...</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/robotic-voice-generator.html" rel="bookmark">Robotic voice generator</a> <br />Robotic voice generator does not need the variety of complex chips. You can assemble using only ISD2500 ChipCorder® family and few components.The family of chip-coders ISD2500 firm Winbond contains almost everything you need to record and play back voice messages. As chips have mic preamps with AGC, working with the ...</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/sound-activation-schematic-diagram.html" rel="bookmark">Sound Activation Schematic Diagram</a> <br />Sound activation also knows as tone detector is one of sensing system that usually used for robot start up activation. When some frequency have received by microphone in this circuit, then the robot will start to move. I’ve collected some schematic diagrams of sound activation as follow: Sound Activation schematic ...</div><br /></div>]]></content:encoded>
			<wfw:commentRss>http://robotechno.us/distance-measurement-ultrasonic-msp430-microcontroller.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arduino Tutorial: Use a Piezo Element to Detect Vibration</title>
		<link>http://robotechno.us/arduino-tutorial-piezo-element-detect-vibration.html</link>
		<comments>http://robotechno.us/arduino-tutorial-piezo-element-detect-vibration.html#comments</comments>
		<pubDate>Sat, 26 Nov 2011 09:21:47 +0000</pubDate>
		<dc:creator>Robot Technology</dc:creator>
				<category><![CDATA[Arduino Tutorials]]></category>
		<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Microcontroller]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Robotics Tutorial]]></category>
		<category><![CDATA[Sensors]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[arduino piezo element sensor]]></category>
		<category><![CDATA[Arduino Tutorial]]></category>
		<category><![CDATA[use a piezo element to detect vibration]]></category>
		<category><![CDATA[vibration detector arduino]]></category>

		<guid isPermaLink="false">http://robotechno.us/?p=1293</guid>
		<description><![CDATA[Arduino Tutorial: Use a Piezo Element to Detect Vibration. This tutorial shows you how to use a Piezo element to detect vibration, in this case, a knock on a door, table, or other solid surface. A piezo is an electronic device that generates a voltage when it&#8217;s physically deformed by a vibration, sound wave, or [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://robotechno.us/arduino-tutorial-piezo-element-detect-vibration.html/circuit-connection-piezo-element-to-detect-vibration" rel="attachment wp-att-1295"><img class="aligncenter size-medium wp-image-1295" title="circuit connection - Piezo element to detect vibration" src="http://robotechno.us/wp-content/uploads/2011/11/circuit-connection-Piezo-element-to-detect-vibration-279x300.jpg" alt="circuit connection Piezo element to detect vibration 279x300 Arduino Tutorial: Use a Piezo Element to Detect Vibration" width="279" height="300" /></a></p>
<p>Arduino Tutorial: Use a Piezo Element to Detect Vibration. This tutorial shows you how to use a Piezo element to detect vibration, in this case, a knock on a door, table, or other solid surface.</p>
<p>A piezo is an electronic device that generates a voltage when it&#8217;s physically deformed by a vibration, sound wave, or mechanical strain. Similarly, when you put a voltage across a piezo, it vibrates and creates a tone. Piezos can be used both to play tones and to detect tones.<br />
<span id="more-1293"></span><br />
The sketch reads the piezos output using the <code><strong>analogRead()</strong></code> command, encoding the voltage range from 0 to 5 volts to a numerical range from 0 to 1023 in a process referred to as analog-to-digital conversion, or ADC.</p>
<p>If the sensors output is stronger than a certain threshold, your Arduino will send the string &#8220;Knock!&#8221; to the computer over the serial port.</p>
<p>Open the serial monitor to see this text.</p>
<p><strong>Hardware Required</strong></p>
<ul>
<li>Arduino Board</li>
<li>(1) Piezo electric disc</li>
<li>(1) Megohm resistor</li>
<li>solid surface</li>
</ul>
<p>Piezos are polarized, meaning that voltage passes through them (or out of them) in a specific direction. Connect the black wire (the lower voltage) to ground and the red wire (the higher voltage) to analog pin 0. Additionally, connect a 1-megohm resistor in parallel to the Piezo element to limit the voltage and current produced by the piezo and to protect the analog input.</p>
<p>It is possible to acquire piezo elements without a plastic housing. These will look like a metallic disc, and are easier to use as input sensors. PIezo sensors work best when firmly pressed against, taped, or glued their sensing surface.</p>
<p>Schematic Diagram:</p>
<p><a href="http://robotechno.us/arduino-tutorial-piezo-element-detect-vibration.html/schematic-diagram-piezo-element-to-detect-vibration" rel="attachment wp-att-1294"><img class="aligncenter size-medium wp-image-1294" title="schematic diagram - Piezo element to detect vibration" src="http://robotechno.us/wp-content/uploads/2011/11/schematic-diagram-Piezo-element-to-detect-vibration-292x300.jpg" alt="schematic diagram Piezo element to detect vibration 292x300 Arduino Tutorial: Use a Piezo Element to Detect Vibration" width="292" height="300" /></a></p>
<p>A Piezo to attached to analog pin 0 with a 1-Megohm resistor</p>
<p><strong>Code</strong></p>
<p>In the code below, the incoming piezo data is compared to a threshold value set by the user. Try raising or lowering this value to increase your sensor&#8217;s overall sensitivity.</p>
<blockquote><p>/* Knock Sensor<br />
This sketch reads a piezo element to detect a knocking sound.<br />
It reads an analog pin and compares the result to a set threshold.<br />
If the result is greater than the threshold, it writes<br />
&#8220;knock&#8221; to the serial port, and toggles the LED on pin 13.<br />
The circuit:<br />
* + connection of the piezo attached to analog in 0<br />
* &#8211; connection of the piezo attached to ground<br />
* 1-megohm resistor attached from analog in 0 to ground</p>
<p>http://www.arduino.cc/en/Tutorial/Knock</p>
<p>created 25 Mar 2007<br />
by David Cuartielles<br />
modified 4 Sep 2010<br />
by Tom Igoe<br />
This example code is in the public domain.<br />
*/<br />
// these constants won&#8217;t change:<br />
const int ledPin = 13; // led connected to digital pin 13<br />
const int knockSensor = A0; // the piezo is connected to analog pin 0<br />
const int threshold = 100; // threshold value to decide when the detected sound is a knock<br />
or not<br />
// these variables will change:<br />
int sensorReading = 0; // variable to store the value read from the sensor pin<br />
int ledState = LOW; // variable used to store the last LED status, to toggle the light<br />
void setup() {<br />
pinMode(ledPin, OUTPUT); // declare the ledPin as as OUTPUT<br />
Serial.begin(9600); // use the serial port<br />
}<br />
void loop()<br />
// read the sensor and store it in the variable sensorReading:<br />
sensorReading = analogRead(knockSensor);<br />
// if the sensor reading is greater than the threshold:<br />
if (sensorReading &gt;= threshold) {<br />
// toggle the status of the ledPin:<br />
ledState = !ledState;<br />
// update the LED pin itself:<br />
digitalWrite(ledPin, ledState);<br />
// send the string &#8220;Knock!&#8221; back to the computer, followed by newline<br />
Serial.println(&#8220;Knock!&#8221;);<br />
}<br />
delay(100); // delay to avoid overloading the serial port buffer<br />
}</p></blockquote>
<p>Download the Arduino Tutorial: Use a Piezo Element to Detect Vibration in PDF document:<br />
» <strong><a target="_blank" title="Arduino Tutorial: Use a Piezo Element to Detect Vibration" href="http://myfilehost.us/dll/wqd1sx" target="_blank">Download Link</a></strong></p>
<div id="seo_alrp_related"><div class="seo_alrp_rl_content"><a href="http://robotechno.us/arduino-tutorial-collection-wiring-code.html" rel="bookmark">Arduino Tutorial: Controlling the LED&#8217;s Blinking Rates using Potensiometer</a> <br />This is a tutorial about controlling the LED's blinking rates using potensiometer. A potentiometer is really a simple knob that gives a adjustable resistance, which we are able to read into the Arduino board as an analog value. In this simple tutorial, you will see how the resistance value of ...</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/voltage-comparator.html" rel="bookmark">Voltage Comparator</a> <br />In electronics, a comparator is a device which compares two voltages or currents and switches its output to indicate which is larger. More generally, the term is also used to refer to a device that compares two items of data. Output voltage will "switch" whenever the input voltage (at the ...</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/avr-line-following-robot-tutorial.html" rel="bookmark">AVR Line Following Robot Tutorial</a> <br />Block Diagram The robot uses IR sensors to sense the line, an array of 8 IR LEDs&lt; (Tx) and sensors (Rx), facing the ground has been used in this setup. The output of the sensors is an analog signal which depends on the amount of light reflected back, this analog ...</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/arduino-hardware-part-2.html" rel="bookmark">Arduino Hardware (Part 2)</a> <br />This article is a continuation of Arduino hardware part 1 that talks about Arduino Board, COMMUNICATION CABLE (Serial / USB), Arduino power supply, PC / LAPTOP +-USB Serial Adapter.  In this section we will discuss more  about Arduino Hardware : With what Arduino elements can interact?, Arduino Prototyping, etc. The Arduino ...</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/arduino-uno-schematic-board-software-tutorial.html" rel="bookmark">Arduino UNO Schematic, Board, Software and Tutorial</a> <br />Here the Arduino UNO Schematic, Board, Software and Tutorial... Arduino is already widely used for robotics applications, so i think you need to learn about Arduino.. :) Arduino UNO Board: Arduino UNO Schematic: &nbsp; Adruino UNO Schematic and PCB Design Download: EAGLE files (rev2): arduino-uno-rev2-reference-design.zip Schematic (rev2): arduino-uno-rev2-schematic.pdf EAGLE files ...</div><br /></div>]]></content:encoded>
			<wfw:commentRss>http://robotechno.us/arduino-tutorial-piezo-element-detect-vibration.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AVR-GCC : CODE COMPLIANCE</title>
		<link>http://robotechno.us/avrgcc-code-compliance.html</link>
		<comments>http://robotechno.us/avrgcc-code-compliance.html#comments</comments>
		<pubDate>Wed, 27 Jul 2011 10:10:26 +0000</pubDate>
		<dc:creator>Robot Technology</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[AVR microcontrollers]]></category>
		<category><![CDATA[AVR-GCC]]></category>
		<category><![CDATA[programming AVR microcontrollers]]></category>
		<category><![CDATA[WinAVR patch]]></category>

		<guid isPermaLink="false">http://robotechno.us/?p=1027</guid>
		<description><![CDATA[On the Internet there are many examples of code for AVR-GCC , written using functions and macros that are no longer supported in newer versions of the compiler. To use these examples and understand them with the essence of the ports of the microcontroller, you need to rewrite code or use special macros. For starters, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://robotechno.us/avrgcc-code-compliance.html/avr-gcc" rel="attachment wp-att-1028"><img class="size-full wp-image-1028 aligncenter" title="AVR-GCC" src="http://robotechno.us/wp-content/uploads/2011/07/AVR-GCC.jpg" alt="AVR GCC AVR GCC : CODE COMPLIANCE" width="296" height="206" /></a></p>
<p>On the Internet there are many examples of code for AVR-GCC , written using functions and macros that are no longer supported in newer versions of the compiler. To use these examples and understand them with the essence of the ports of the microcontroller, you need to rewrite code or use special macros.</p>
<p><span id="more-1027"></span>For starters, learn programming AVR microcontrollers, this approach can be difficult. As a result, many go to other compilers and never use a cult which has become for many a development environment WinAVR. Although there is a simple way to solve all the problems and return again rejected by the developers of the functions in AVR-GCC. You can use a specially crafted <a target="_blank" href="http://myfilehost.us/dll/mtrion" rel="nofollow" target="_blank">AVR-GCC myROBOT PATCH for WinAVR</a> .</p>
<p>Before we proceed to the description of the patch, let&#8217;s see what kind of function it returns. The latest versions of libraries avr-libc, which is part of the compiler AVR-GCC, uses a WinAVR, more functions are not supported inp , outp , sbi and CBI . Made it to the best interpretation of the source code when it is compiled and determine how to handle the port &#8211; how to register or to memory. Support for these functions is not starting from WinAVR-20050214 version. This includes no support for such a popular and convenient for many of the former bit_is_set and bit_is_clear .</p>
<p>Of course, nobody calls using only the &#8220;old&#8221; functions return the patch is backward-compatible programs on the AVR -GCC. Using the patch, you will not lose the ability to work with the new notation, and only return the use of excluded functions. For example, checking the work of any one found on the Internet example, you can practice by rewriting it with the new syntax.<br />
In conclusion, let us consider some examples of possible replacements.</p>
<table width="100%" border="1" cellspacing="0" cellpadding="5">
<tbody>
<tr bgcolor="#ececf0">
<td align="center"><strong><span><span>&#8220;Old&#8221; notation</span></span></strong></td>
<td align="center"><strong><span><span>possible replacement</span></span></strong></td>
<td align="center"><strong><span><span>an action to perform</span></span></strong></td>
</tr>
<tr>
<td><kbd><span><span>outp (0xff, DDRB);</span></span></kbd></td>
<td><kbd><span><span>DDRB = 0xff;</span></span></kbd></td>
<td><kbd><span><span>all port pins configured as outputs B</span></span></kbd></td>
</tr>
<tr>
<td><kbd><span><span>outp (0xff, PORTB);</span></span></kbd></td>
<td><kbd><span><span>PORTB = 0xff;</span></span></kbd></td>
<td><kbd><span><span>all bits of Port B set to "1"</span></span></kbd></td>
</tr>
<tr>
<td><kbd><span><span>sbi (DDRB, DDB2);</span></span></kbd></td>
<td><kbd><span><span>DDRB | = 1 &lt;&lt;2;</span></span></kbd></td>
<td><kbd><span><span>configure the line 2 port B as output</span></span></kbd></td>
</tr>
<tr>
<td><kbd><span><span>cbi (DDRB, DDB2);</span></span></kbd></td>
<td><kbd><span><span>DDRB &amp; = ~ (1 &lt;&lt;2);</span></span></kbd></td>
<td><kbd><span><span>configure the line 2 port B as input</span></span></kbd></td>
</tr>
<tr>
<td><kbd><span><span>sbi (PORTB, PB2);</span></span></kbd></td>
<td><kbd><span><span>PORTB | = _BV (PB2); </span></span><br />
<span><span>or simply </span></span><br />
<span><span>PORTB | = 1 </span></span><kbd><span><span>&lt;&lt;</span></span></kbd><span><span> 2; </span></span><br />
<span><span>possible so </span></span><br />
<span><span>PORTB | = 1 </span></span><kbd><span><span>&lt;&lt;</span></span></kbd><span><span> PINB2;</span></span></kbd></td>
<td><kbd><span><span>set to "1" on line 2 </span></span><br />
<span><span>port B</span></span></kbd></td>
</tr>
<tr>
<td><kbd><span><span>cbi (PORTB, PB2);</span></span></kbd></td>
<td><kbd><span><span>PORTB &amp; = ~ _BV (PB2); </span></span><br />
<span><span>or simply </span></span><br />
<span><span>PORTB &amp; = ~ (1 &lt;&lt;2), </span></span><br />
<span><span>possibly because </span></span><br />
<span><span>PORTB &amp; = ~ 1 </span></span><kbd><span><span>&lt;&lt;</span></span></kbd><span><span> PINB2;</span></span></kbd></td>
<td><kbd><span><span>set to "0" on Line 2 </span></span><br />
<span><span>port B</span></span></kbd></td>
</tr>
<tr>
<td><kbd><span><span>if (bit_is_set (PIND, 3)) </span></span><br />
<span><span>{ </span></span><br />
<span><span>... </span></span><br />
<span><span>}</span></span></kbd></td>
<td><kbd><span><span>if (PIND &amp; (1 </span></span><kbd><span><span>&lt;&lt;</span></span></kbd><span><span> PIND3)) </span></span><br />
<span><span>{ </span></span><br />
<span><span>... </span></span><br />
<span><span>}</span></span></kbd></td>
<td><kbd><span><span>check "1" on line 3 of port D</span></span></kbd></td>
</tr>
<tr>
<td><kbd><span><span>if (bit_is_clear (PIND, 3)) </span></span><br />
<span><span>{ </span></span><br />
<span><span>... </span></span><br />
<span><span>}</span></span></kbd></td>
<td><kbd><span><span>if (! (PIND &amp; (1 </span></span><kbd><span><span>&lt;&lt;</span></span></kbd><span><span> PIND3))) </span></span><br />
<span><span>{ </span></span><br />
<span><span>... </span></span><br />
<span><span>}</span></span></kbd></td>
<td><kbd><span><span>check the "0" on line 3 of port D</span></span></kbd></td>
</tr>
</tbody>
</table>
<p>Please note that _BV () is preferable because in this case, the compiler performs a bitwise shift and inserts the result in the compiled code. This ensures that no time spent during direct execution of code in the microcontroller.<br />
As you can see, the possibilities of syntax in the AVR-GCC wide enough to consider him one of the most convenient and flexible means of programming microcontrollers Atmel AVR.</p>
<div id="seo_alrp_related"><div class="seo_alrp_rl_content"><a href="http://robotechno.us/avr-gcc-microcontrollers-port-management-2.html" rel="bookmark">AVR GCC : Microcontrollers Port Management (Part 1)</a> <br />Management of the ports in the AVR GCC. Registers and DDRx PORTx. FSE. Bitwise operations. The function of delay. Unconditional jump in the program. Ports of the microcontroller - this I / O devices, allowing the microcontroller to send or receive data. The default port of the AVR microcontroller has ...</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/avr-gcc-microcontrollers-port-management-part-2.html" rel="bookmark">AVR GCC : Microcontrollers Port Management (Part 2 end)</a> <br />A continuation of the article AVR GCC : Microcontrollers Port Management (Part 1). &gt;&gt;Once the data transfer direction for the port is configured, you can set the port value to be stored in the appropriate register PORTx. PORTx - register the port, where x is the port name. If the output is ...</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/the-atmel-avr-and-its-development-hardware-up-close.html" rel="bookmark">The Atmel AVR and its Development Hardware Up Close</a> <br />The AVR series consists of a fairly broad range of hybrid-bit-width microcontrollers (nominally 16-bit code word, 8-bit data bus and ALU) sharing a common instruction set and differing primarily in the on-chip peripherals and package options. These devices donÃ¢â‚¬â„¢t show a clear genealogical relationship to any other microcontroller core IÃ¢â‚¬â„¢m ...</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/book-c-programming-for-avr-microcontrollers.html" rel="bookmark">Book: C Programming for AVR Microcontrollers</a> <br />This can be used as reference book for  AVR microcontroller programming. As we know, AVR family is cheap, easy and the most used microcontroller in Robotics. By the time you complete the text and projects you will: • Have an intermediate understanding of the C programming language. • Have a ...</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/nanovm-java-wirtual-machine-atmel-avr-atmega8atmega832.html" rel="bookmark">NanoVM: Java Wirtual Machine for Atmel AVR ATmega8/ATmega832</a> <br />Java programming for microcontroller chips, With the NanoVM, the microcontroller can be programmed in the popular Java language using the standard Sun JDK. NanoVM is a open-source implementation of the Java virtual machine. The NanoVM was initially developed to run on the Atmel AVR ATmega8 utilized in the Asuro Robot. ...</div><br /></div>]]></content:encoded>
			<wfw:commentRss>http://robotechno.us/avrgcc-code-compliance.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NanoVM: Java Wirtual Machine for Atmel AVR ATmega8/ATmega832</title>
		<link>http://robotechno.us/nanovm-java-wirtual-machine-atmel-avr-atmega8atmega832.html</link>
		<comments>http://robotechno.us/nanovm-java-wirtual-machine-atmel-avr-atmega8atmega832.html#comments</comments>
		<pubDate>Tue, 14 Jun 2011 22:19:14 +0000</pubDate>
		<dc:creator>Robot Technology</dc:creator>
				<category><![CDATA[Microcontroller]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[atmel avr java programming]]></category>
		<category><![CDATA[java programming microcontroller]]></category>
		<category><![CDATA[NanoVM]]></category>
		<category><![CDATA[NanoVM java virtual machine]]></category>
		<category><![CDATA[NanoVM microcontroller]]></category>
		<category><![CDATA[program robot using java]]></category>

		<guid isPermaLink="false">http://robotechno.us/?p=910</guid>
		<description><![CDATA[Java programming for microcontroller chips, With the NanoVM, the microcontroller can be programmed in the popular Java language using the standard Sun JDK. NanoVM is a open-source implementation of the Java virtual machine. The NanoVM was initially developed to run on the Atmel AVR ATmega8 utilized in the Asuro Robot. It was ported to run [...]]]></description>
			<content:encoded><![CDATA[<p>Java programming for microcontroller chips, With the NanoVM, the microcontroller can be programmed in the popular Java language using the <a target="_blank" rel="external nofollow" href="http://java.sun.com/j2se/" target="_blank">standard Sun JDK</a>.<br />
<a rel="attachment wp-att-911" href="http://robotechno.us/nanovm-java-wirtual-machine-atmel-avr-atmega8atmega832.html/nanowm-atmel-microcontroller-java-virtual-machine"><img class="size-medium wp-image-911 aligncenter" title="NanoWM Atmel Microcontroller Java Virtual Machine" src="http://robotechno.us/wp-content/uploads/2011/06/NanoWM-Atmel-Microcontroller-Java-Virtual-Machine-300x140.jpg" alt="NanoWM Atmel Microcontroller Java Virtual Machine 300x140 NanoVM: Java Wirtual Machine for Atmel AVR ATmega8/ATmega832" width="300" height="140" /></a></p>
<p>NanoVM is a open-source implementation of the Java virtual machine. The NanoVM was initially developed to run on the Atmel AVR ATmega8 utilized in the Asuro Robot. It was ported to run on the C&#8217;t-Bot and the Nibo-robot and can easily be ported to other AVR-based systems.</p>
<p>The virtual machine uses almost 8 kilobytes of code memory (entire flash in case of ATmega8) and 256 bytes of RAM. Each and every user&#8217;s .class are processed by NanoVM&#8217;s Converter which transforms it into 1 bytecode file. Unique tools next send this file via serial line into device. For this operation is valuable NanoVM&#8217;s bootloader (alternatively you are able to use ISP programmer like: PonyProg) which store this content on-chip EEPROM.</p>
<p><span id="more-910"></span>NanoVM is not a full featured Java VM and it will never be.  It will constantly be limited to a tiny subset of the java language along with the regular java libraries plus a few application certain strategies. Furthermore, it really is not meant to replace C as the standard way of programming microcontrollers. It is much less flexible and has a lower performance than C or assembler programs.</p>
<p>The NanoVM is actually a method to present a limited but controllable programming interface to a microcontroller based device. With most of essentially the most hardware specific code being portion of the NanoVM itself, the user can focus on the application itself. If a user is given a device equipped using the NanoVM he is not needed to consider the hardware itself. Moreover, he does not need any target distinct compilers or the like. All he wants is a standard java compiler as well as the NanoVMTool which itself is written in java. Thus, the whole development chain works on any device that has a java compiler and can run java code. Using the hardware abstraction the NanoVM gives, the user doesn&#8217;t even have to care about the microcontroller type the target is based on. The very same java compiler as well as the identical NanoVMTool could be used with any NanoVM based program running on any sort of microontroller.</p>
<p>NanoWM documentation and download area: go to <a target="_blank" rel="external nofollow" href="http://www.harbaum.org/till/nanovm/index.shtml" target="_blank">this page</a></p>
<div id="seo_alrp_related"><div class="seo_alrp_rl_content"><a href="http://robotechno.us/bootloader-tutorial-atmel-atmega-microcontroller.html" rel="bookmark">Bootloader Tutorial for Atmel ATMega Microcontroller</a> <br />Tutorial regarding bootloader on Atmel microcontroller below are taken from societyofrobots.com This tutorial explains all things related to the Atmel bootloader, including source code, how to install, programming, modification and uploading bootloader. Tutorial document of Bootloader Tutorial for Atmel ATMega Microcontroller: Download Link Note: You must have the files required, ...</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/microcontroller-ebook-c-programming-for-microcontrollers.html" rel="bookmark">Microcontroller Ebook: C Programming for Microcontrollers</a> <br />C Programming for Microcontrollers - Featuring ATMEL's AVR Butterfly and the free WinAVR Compiler Introduction C Programming and microcontrollers are two big topics, practically continental in size, and like continents, are easy to get lost in. Combining the two is a little like traipsing from Alaska to Tierra del Fuego. ...</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/explanation-arduino.html" rel="bookmark">Few explanation about the Arduino</a> <br />What is Arduino? Arduino is a tool for making computers that can sense and control the physical world through your computer. It is a development platform open-source physical computing, based on a simple microcontroller board and a development environment for creating software (programs) for the board. Arduino can use to ...</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/msp430-microcontroller-tutorial.html" rel="bookmark">MSP430 Microcontroller Tutorial</a> <br />Do you want to build a robot using MSP430 microcontroller..? Then you should know the basic knowledge of MSP430 microcontroller. This MSP430 tutorial will show you how MSP430 works (included: MSP430 sample code). Microcontrollers are binary computers and so they operate on the basis of binary numbers. Binary numbers consist ...</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/the-atmel-avr-and-its-development-hardware-up-close.html" rel="bookmark">The Atmel AVR and its Development Hardware Up Close</a> <br />The AVR series consists of a fairly broad range of hybrid-bit-width microcontrollers (nominally 16-bit code word, 8-bit data bus and ALU) sharing a common instruction set and differing primarily in the on-chip peripherals and package options. These devices donÃ¢â‚¬â„¢t show a clear genealogical relationship to any other microcontroller core IÃ¢â‚¬â„¢m ...</div><br /></div>]]></content:encoded>
			<wfw:commentRss>http://robotechno.us/nanovm-java-wirtual-machine-atmel-avr-atmega8atmega832.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Make a Cellphone Controlled Mobile Robot</title>
		<link>http://robotechno.us/cellphone-controlled-mobile-robot.html</link>
		<comments>http://robotechno.us/cellphone-controlled-mobile-robot.html#comments</comments>
		<pubDate>Sat, 04 Jun 2011 09:05:58 +0000</pubDate>
		<dc:creator>Robot Technology</dc:creator>
				<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Microcontroller]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Robotics Tutorial]]></category>
		<category><![CDATA[ATMega16 robot]]></category>
		<category><![CDATA[Cellphone Controlled Mobile Robot]]></category>
		<category><![CDATA[Cellphone Controlled Robot tutorial]]></category>
		<category><![CDATA[CM8870]]></category>
		<category><![CDATA[L293D robot]]></category>
		<category><![CDATA[MT8870]]></category>

		<guid isPermaLink="false">http://robotechno.us/?p=870</guid>
		<description><![CDATA[This is the project report for cellphone controlled mobile robot by Gaurav A.Khadasane, Tejas  Jethwa, Suraj,  Akshay Sonawale. You may use this document for your robot building project reference. Detail module used for cellphone controlled mobile robot: DTMF Decoder: MT8870/CM8870 Microcontroller: ATMEGA16 Motor Driver: L293D Actuator: DC Motor 5-6V Download Cellphone Controlled Mobile Robot Tutorial: [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a rel="attachment wp-att-871" href="http://robotechno.us/cellphone-controlled-mobile-robot.html/cell-phone-controlled-mobile-robot"><img class="alignnone size-medium wp-image-871" title="cell phone controlled mobile robot" src="http://robotechno.us/wp-content/uploads/2011/06/cell-phone-controlled-mobile-robot-300x261.jpg" alt="cell phone controlled mobile robot 300x261 Make a Cellphone Controlled Mobile Robot" width="300" height="261" /></a></p>
<p>This is the project report for cellphone controlled mobile robot by Gaurav A.Khadasane, Tejas  Jethwa, Suraj,  Akshay Sonawale. You may use this document for your robot building project reference.</p>
<p>Detail module used for cellphone controlled mobile robot:</p>
<ul>
<li> DTMF Decoder: MT8870/CM8870</li>
<li> Microcontroller: ATMEGA16</li>
<li> Motor Driver: L293D</li>
<li> Actuator: DC Motor 5-6V</li>
</ul>
<p><span id="more-870"></span><a rel="attachment wp-att-872" href="http://robotechno.us/cellphone-controlled-mobile-robot.html/mobile-robot-schematics"><img class="size-medium wp-image-872 aligncenter" title="mobile robot schematics" src="http://robotechno.us/wp-content/uploads/2011/06/mobile-robot-schematics-300x134.jpg" alt="mobile robot schematics 300x134 Make a Cellphone Controlled Mobile Robot" width="300" height="134" /></a></p>
<p>Download Cellphone Controlled Mobile Robot Tutorial:<br />
<strong><a target="_blank" href="http://downloads.computerhowto.us/dll/q6hb3o">Download Link</a></strong><br />
Learn how to make mobile robot controlled<br />
by a cellphone</p>
<div id="seo_alrp_related"><div class="seo_alrp_rl_content"><a href="http://robotechno.us/mobile-robotics-introduction.html" rel="bookmark">Mobile Robotics Introduction</a> <br />The following document is about mobile robotics introduction from Centre for Autonomous Systems. Kungl Tekniska Hogskolan. Contents: Introduction History Design of Systems Kinematics Sensing Features Mapping and Localisation Planning and Navigation Lab System Summary Download Mobile Robotics Introduction from Centre for Autonomous Systems. Kungl Tekniska Hogskolan: Download Link</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/mobile-robot-2.html" rel="bookmark">The Mobile Robot</a> <br />In this globalization are, a kind of technology has developed well. Many developments have moved in some aspects of human life. Human has a particular motivation in developing this technology. They consider about a lot of aspects related to the aspects that they want to increase about and of course ...</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/bootloader-tutorial-atmel-atmega-microcontroller.html" rel="bookmark">Bootloader Tutorial for Atmel ATMega Microcontroller</a> <br />Tutorial regarding bootloader on Atmel microcontroller below are taken from societyofrobots.com This tutorial explains all things related to the Atmel bootloader, including source code, how to install, programming, modification and uploading bootloader. Tutorial document of Bootloader Tutorial for Atmel ATMega Microcontroller: Download Link Note: You must have the files required, ...</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/apple-ios-4-3-reportedly-available-at-10-am-pt-today.html" rel="bookmark">Apple iOS 4.3 reportedly available at 10 am PT today</a> <br />Apple iOS 4.3 reportedly available at 10 am PT today iOS 4.3 is launching on the iPad 2 on Friday, but it looks like compatible existing devices will see this update appear this morning. Read more on ZDNet Sprint and T-Mobile sitting in a tree, can they become more than ...</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/introduction-to-autonomous-mobile-robots-intelligent-robotics-and-autonomous-agents.html" rel="bookmark">Introduction to Autonomous Mobile Robots (Intelligent Robotics and Autonomous Agents)</a> <br />Here is the book related to robotics: Book title: Introduction to Autonomous Mobile Robots (Intelligent Robotics and Autonomous Agents) Introduction to Autonomous Mobile Robots (Intelligent Robotics and Autonomous Agents) Technical details/features and description: Mobile robots range from the teleoperated Sojourner on the Mars Pathfinder mission to cleaning robots in the ...</div><br /></div>]]></content:encoded>
			<wfw:commentRss>http://robotechno.us/cellphone-controlled-mobile-robot.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Make a Robot : A Step by Step Robot Tutorial</title>
		<link>http://robotechno.us/robot-step-step-robot-tutorial.html</link>
		<comments>http://robotechno.us/robot-step-step-robot-tutorial.html#comments</comments>
		<pubDate>Mon, 28 Mar 2011 22:54:17 +0000</pubDate>
		<dc:creator>Robot Technology</dc:creator>
				<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Mechanics]]></category>
		<category><![CDATA[Microcontroller]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Robotics Tutorial]]></category>
		<category><![CDATA[Sensors]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[build a robot]]></category>
		<category><![CDATA[make a robot]]></category>
		<category><![CDATA[robot design]]></category>
		<category><![CDATA[robot tutorial]]></category>
		<category><![CDATA[step by step robot tutorial]]></category>

		<guid isPermaLink="false">http://robotechno.us/?p=796</guid>
		<description><![CDATA[This tutorial will show you how to make a robot easily. It&#8217;s very simple tutorial and of course it will be a low cost robot. You will get the knowledge about basic and simple mechanic design, simple robot schematic diagram, line following sensor, programming and more&#8230; This is a very great explanation of the tutorial [...]]]></description>
			<content:encoded><![CDATA[<p>This tutorial will show you how to make a robot easily. It&#8217;s very simple tutorial and of course it will be a low cost robot. You will get the knowledge about basic and simple mechanic design, simple robot schematic diagram, line following sensor, programming and more&#8230; This is a very great explanation of the tutorial how to make a robot. <img src='http://robotechno.us/wp-includes/images/smilies/icon_smile.gif' alt="icon smile Make a Robot : A Step by Step Robot Tutorial" class='wp-smiley' title="Make a Robot : A Step by Step Robot Tutorial" /> </p>
<p style="text-align:center;"><a rel="attachment wp-att-797" href="http://robotechno.us/robot-step-step-robot-tutorial.html/make-a-robot"><img class="size-medium wp-image-797 aligncenter" title="make a robot" src="http://robotechno.us/wp-content/uploads/2011/03/make-a-robot-300x169.jpg" alt="make a robot 300x169 Make a Robot : A Step by Step Robot Tutorial" width="300" height="169" /></a></p>
<p>Download the document of step by step <strong>Make a Robot</strong> tutorial:<br />
<span id="more-796"></span><strong><a target="_blank" rel="external nofollow" href="http://downloads.computerhowto.us/dll/nv6izo">Download Link</a></strong></p>
<p>Go to online page of how to <strong>make a robot</strong>:<br />
<strong><a target="_blank" rel="external nofollow" href="http://www.societyofrobots.com/step_by_step_robot.shtml">Visit the page</a></strong></p>
<div id="seo_alrp_related"><div class="seo_alrp_rl_content"><a href="http://robotechno.us/pic16f877a-tutorial.html" rel="bookmark">PIC16F877A Tutorial</a> <br />This PIC16F877A tutorial document was written Lukas Hoffmann. This tutorial containing the explanation about microcontroller PIC16F877A and the sample code using C/C++ programming language. There are some simple interesting project in this tutorial such as how to make blinking LED, how to display message on computer screen, how to drive ...</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/msp430-microcontroller-tutorial.html" rel="bookmark">MSP430 Microcontroller Tutorial</a> <br />Do you want to build a robot using MSP430 microcontroller..? Then you should know the basic knowledge of MSP430 microcontroller. This MSP430 tutorial will show you how MSP430 works (included: MSP430 sample code). Microcontrollers are binary computers and so they operate on the basis of binary numbers. Binary numbers consist ...</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/lego-robotic-tutorial.html" rel="bookmark">Lego Robotic Tutorial</a> <br />This is the robot tutorial collection about how to control your Lego robot. Lego is often conduct robot competition, by studying this tutorial, you will more easily understand about your lego robot and you will be more confident to partisipate the lego competition. This tutorial contains the Lego robotic tutorial: ...</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/line-follower-tutorial-based-atmega16-l298-motor-driver.html" rel="bookmark">Line Follower Tutorial based on ATMega16 + L298 Motor Driver</a> <br />Here the another Line Follower robot tutorial... The diagram is quite simple and easy to build, easy to understand. The robot mechanical design not included, you may create the shape and the mechanical design of your line follower robot by your self. Just use motor gear box which have high ...</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/create-simple-beam-robot-tutorial.html" rel="bookmark">Create a simple BEAM robot tutorial</a> <br />As you know, we will Create a simple robot that will go toward the light and stop if there is no light. This BEAM robot is very simple even a someone without knowledge of the BEAM robots can make it. Scheme to make the robot is described in many sites, ...</div><br /></div>]]></content:encoded>
			<wfw:commentRss>http://robotechno.us/robot-step-step-robot-tutorial.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Line Follower Tutorial based on ATMega16 + L298 Motor Driver</title>
		<link>http://robotechno.us/line-follower-tutorial-based-atmega16-l298-motor-driver.html</link>
		<comments>http://robotechno.us/line-follower-tutorial-based-atmega16-l298-motor-driver.html#comments</comments>
		<pubDate>Sun, 21 Mar 2010 00:47:20 +0000</pubDate>
		<dc:creator>Robot Technology</dc:creator>
				<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Robotics Tutorial]]></category>
		<category><![CDATA[Sensors]]></category>
		<category><![CDATA[ATMega16 line follower robot]]></category>
		<category><![CDATA[ATMega16 robot]]></category>
		<category><![CDATA[atmega16 tutorial]]></category>
		<category><![CDATA[L298]]></category>
		<category><![CDATA[l298 atmega]]></category>
		<category><![CDATA[L298 Motor Driver]]></category>
		<category><![CDATA[line follower robot using atmega16]]></category>
		<category><![CDATA[line follower tutorial]]></category>
		<category><![CDATA[line follower using atmega16]]></category>
		<category><![CDATA[line tracker atmega16]]></category>
		<category><![CDATA[phototransistor proximity sensor]]></category>

		<guid isPermaLink="false">http://robotechno.us/?p=365</guid>
		<description><![CDATA[Here the another Line Follower robot tutorial&#8230; The diagram is quite simple and easy to build, easy to understand. The robot mechanical design not included, you may create the shape and the mechanical design of your line follower robot by your self. Just use motor gear box which have high torque&#8230; This line follower robot [...]]]></description>
			<content:encoded><![CDATA[<p>Here the another Line Follower robot tutorial&#8230; The diagram is quite simple and easy to build, easy to understand. The robot mechanical design not included, you may create the shape and the mechanical design of your line follower robot by your self. Just use motor gear box which have high torque&#8230; <img src='http://robotechno.us/wp-includes/images/smilies/icon_smile.gif' alt="icon smile Line Follower Tutorial based on ATMega16 + L298 Motor Driver" class='wp-smiley' title="Line Follower Tutorial based on ATMega16 + L298 Motor Driver" /> </p>
<p><a href="http://robotechno.us/line-follower-tutorial-based-atmega16-l298-motor-driver.html/line-follower-robot-diagram" rel="attachment wp-att-366"><img class="aligncenter size-medium wp-image-366" title="Line follower robot diagram" src="http://robotechno.us/wp-content/uploads/2010/03/line-follower-robot-diagram-300x193.jpg" alt="line follower robot diagram 300x193 Line Follower Tutorial based on ATMega16 + L298 Motor Driver" width="300" height="193" /></a></p>
<p>This line follower robot use the following module:</p>
<ul>
<li>Proximity sensor: 8 pcs of phototransistors</li>
<li>Microcontroller: ATMega16</li>
<li>Motor driver: L298 module</li>
<li>Programming language: C</li>
</ul>
<p><span id="more-365"></span>Download the document of this line follower robot tutorial <strong><a target="_blank" href="http://downloads.circuitdiagram.net/dll/52gxce">HERE</a></strong></p>
<p>This tutorial created by:<br />
Priyank Patil<br />
Department of Information Technology<br />
K. J. Somaiya College of Engineering<br />
Mumbai, India</p>
<div id="seo_alrp_related"><div class="seo_alrp_rl_content"><a href="http://robotechno.us/line-follower-robot-tutorial-atmega8535.html" rel="bookmark">Line Follower Robot Tutorial (ATMega8535)</a> <br />Build your own line follower / line tracker robotâ€¦! Microcontroller : Atmel ATMega8535 Sensor: 6 photodioda sensor Motor driver : L298 dual driver (up to 1A of electric current) Download the full tutorial include schematic diagram and program code ( C language ): Download link</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/line-follower-robot-without-microcontroller-2.html" rel="bookmark">Line Follower Robot without Microcontroller (with timer)</a> <br />Another Line Follower Robot without microcontroller project. This project built using IC timer 555 to generated PWM signal to make the motor running smoothly. This Line Follower Robot tutorial written by Jaseung Ku - 17 Dec 2005. May be this is "not professional" robot, but i think it so cool ...</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/line-follower-robot-without-microcontroller.html" rel="bookmark">Line Follower Robot Without Microcontroller</a> <br />This tutorial will show you how to build line follower robot without microcontroller. You just need light sensor and comparator chip LM399 for this project. But... You won't unable to programming the robot for advance controlling like when there is crossroads on line track. Download the tutorial here</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/2a-dc-motor-controller-l298n.html" rel="bookmark">2A DC Motor Controller with L298N</a> <br />I've once use L298N for my line follower robot. This is cheap and able to control motor which need quite electric current to run. I recommend this driver IC for your robot... :) Download the schematics an tutorial here</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/line-follower-robot-tutorial.html" rel="bookmark">Line Follower Robot Tutorial</a> <br />Line Follower ROBOT Plermjai Inchuay, plermjai@loxinfo.co.th Award winner from VingPeaw Competition 2543, the robot built with 2051, L293D, and four IR sensors. Simple circuit and platform, quick tracking and easy-understand program using C language. I designed my robot, which use two motors control rear wheels and the single front wheel ...</div><br /></div>]]></content:encoded>
			<wfw:commentRss>http://robotechno.us/line-follower-tutorial-based-atmega16-l298-motor-driver.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Book: C Programming for AVR Microcontrollers</title>
		<link>http://robotechno.us/book-c-programming-for-avr-microcontrollers.html</link>
		<comments>http://robotechno.us/book-c-programming-for-avr-microcontrollers.html#comments</comments>
		<pubDate>Mon, 06 Jul 2009 02:53:54 +0000</pubDate>
		<dc:creator>Robot Technology</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Robotics Ebooks]]></category>
		<category><![CDATA[Robotics Tutorial]]></category>
		<category><![CDATA[AVR Microcontroller]]></category>
		<category><![CDATA[avr programming]]></category>
		<category><![CDATA[c programming]]></category>
		<category><![CDATA[programming guide]]></category>
		<category><![CDATA[robotics ebook]]></category>

		<guid isPermaLink="false">http://robotechno.us/?p=215</guid>
		<description><![CDATA[This can be used as reference book for  AVR microcontroller programming. As we know, AVR family is cheap, easy and the most used microcontroller in Robotics. By the time you complete the text and projects you will: • Have an intermediate understanding of the C programming language. • Have a elementary understanding microcontroller architecture. • [...]]]></description>
			<content:encoded><![CDATA[<p><img title="C Programming for AVR Microcontrollers" src="http://ecx.images-amazon.com/images/I/513B78BMB7L._SL500_AA240_.jpg" alt="513B78BMB7L. SL500 AA240  Book: C Programming for AVR Microcontrollers" hspace="5" width="144" height="144" align="left" />This can be used as reference <a target="_blank" title="free downloadable ebooks" href="http://ebooks.penyet,net/">book</a> for  AVR microcontroller programming. As we know, AVR family is cheap, easy and the most used microcontroller in <a target="_blank" title="robotics technology" href="http://robotics.penyet.net/">Robotics</a>.</p>
<p>By the time you complete the text and projects you will:<br />
<span id="more-215"></span><br />
• Have an intermediate understanding of the C programming language.<br />
• Have a elementary understanding <a target="_blank" title="microcontroller tutorial" href="../category/robotics-tutorial/electronics/microcontroller">microcontroller</a> architecture.<br />
• Be able to use the WinAVR and AVR Studio tools to build programs.<br />
• Be able to use C to develop microcontroller functions such as:<br />
<span id="more-282"> </span></p>
<ul>- Port Inputs and Outputs<br />
- Read a joystick<br />
- Use timers<br />
- Program a Real Time Clock<br />
- Communicate with PC<br />
- Conduct analog to digital and digital to analog conversions<br />
- Measure temperature, light, and voltage<br />
- Control <a target="_blank" title="microcontroller tutorial" href="../dc-motors-for-your-robots.html">motors</a><br />
- Make music<br />
- Control the LCD<br />
- Flash LEDs like crazy</ul>
<p>Download ebook <strong><a target="_blank" title="C Programming for Microcontrollers" href="http://www.4shared.com/file/119377854/47c606fd/C_Programming_for_Microcontrol.html?s=1">C Programming for Microcontrollers</a></strong><br />
or<br />
Buy <a target="_blank" title="C Programming for Microcontrollers" href="http://www.amazon.com/gp/product/0976682206?ie=UTF8&amp;tag=digcamnewandr-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=0976682206"><strong>C Programming for Microcontrollers</strong> book from amazon.com</a> for US$ 49.95</p>
<div id="seo_alrp_related"><div class="seo_alrp_rl_content"><a href="http://robotechno.us/robotics-book-8051-microcontroller-architecture-programming-and-applications.html" rel="bookmark">Robotics Book: 8051 Microcontroller: Architecture, Programming and Applications</a> <br />Here is the book related to robotics: Book title: 8051 Microcontroller: Architecture, Programming and Applications 8051 Microcontroller: Architecture, Programming and Applications Technical details/features and description: Designed as a main or supplementary text for courses on microprocessors or microcontrollers. Packaged with a customized disk containing an 8051 assembler and 8051 simulator. ...</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/explanation-arduino.html" rel="bookmark">Few explanation about the Arduino</a> <br />What is Arduino? Arduino is a tool for making computers that can sense and control the physical world through your computer. It is a development platform open-source physical computing, based on a simple microcontroller board and a development environment for creating software (programs) for the board. Arduino can use to ...</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/robotics-book-programming-and-interfacing-the-8051-microcontroller.html" rel="bookmark">Robotics Book: Programming and Interfacing the 8051 Microcontroller</a> <br />Here is the book related to robotics: Book title: Programming and Interfacing the 8051 Microcontroller Programming and Interfacing the 8051 Microcontroller Technical details/features and description: Combining comprehensive introductory-level coverage of the entire 8051 microcontroller family with general information on Intel 8051 and the Siemens 80C515 microcontroller applications, architectures, and programming, ...</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/robotics-book-programming-and-customizing-the-multicore-propeller-microcontroller-the-official-guide.html" rel="bookmark">Robotics Book: Programming and Customizing the Multicore Propeller Microcontroller: The Official Guide</a> <br />Here is the book related to robotics: Book title: Programming and Customizing the Multicore Propeller Microcontroller: The Official Guide Programming and Customizing the Multicore Propeller Microcontroller: The Official Guide Technical details/features and description: The Only Official Guide to the Parallax Multicore Propeller Microcontroller Written by a team of Propeller experts, ...</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/the-atmel-avr-and-its-development-hardware-up-close.html" rel="bookmark">The Atmel AVR and its Development Hardware Up Close</a> <br />The AVR series consists of a fairly broad range of hybrid-bit-width microcontrollers (nominally 16-bit code word, 8-bit data bus and ALU) sharing a common instruction set and differing primarily in the on-chip peripherals and package options. These devices donÃ¢â‚¬â„¢t show a clear genealogical relationship to any other microcontroller core IÃ¢â‚¬â„¢m ...</div><br /></div>]]></content:encoded>
			<wfw:commentRss>http://robotechno.us/book-c-programming-for-avr-microcontrollers.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Super Tiny Line Follower Robot</title>
		<link>http://robotechno.us/super-tiny-line-follower-robot.html</link>
		<comments>http://robotechno.us/super-tiny-line-follower-robot.html#comments</comments>
		<pubDate>Thu, 02 Jul 2009 04:22:17 +0000</pubDate>
		<dc:creator>Robot Technology</dc:creator>
				<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Mechanics]]></category>
		<category><![CDATA[Microcontroller]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Robotics Tutorial]]></category>
		<category><![CDATA[Sensors]]></category>
		<category><![CDATA[analog line follower]]></category>
		<category><![CDATA[line follower]]></category>
		<category><![CDATA[line follower tutorial]]></category>
		<category><![CDATA[line tracker]]></category>
		<category><![CDATA[smal line follower]]></category>

		<guid isPermaLink="false">http://robotechno.us/?p=213</guid>
		<description><![CDATA[Original post, visit this site: elm-chan.org Before read the rest article/tutorial, please watch the video first.. . See the robot&#8217;s movement and i&#8217;t speed. This is very great&#8230;! You may see the video here. This line follower robot is very small and simple. This robot is running fast and follow the line very smoothly. Mechanics [...]]]></description>
			<content:encoded><![CDATA[<p>Original post, visit this site: <a target="_blank" rel="nofollow" href="http://elm-chan.org">elm-chan.org</a><br />
Before read the rest article/tutorial, please watch the video first.. <img src='http://robotechno.us/wp-includes/images/smilies/icon_smile.gif' alt="icon smile Super Tiny Line Follower Robot" class='wp-smiley' title="Super Tiny Line Follower Robot" /> . See the robot&#8217;s movement and i&#8217;t speed. This is very great&#8230;!</p>
<p align="center"><object type="application/x-shockwave-flash" style="width: 320px; height: 265px;" data="http://www.youtube.com/v/-WJpwh9k_p0"><param name="movie" value="http://www.youtube.com/v/-WJpwh9k_p0" /></object><br />
You may <a target="_blank" href="http://www.youtube.com/watch?v=-WJpwh9k_p0">see the video here</a>.</p>
<p>This line follower <a target="_blank" title="robotics" href="http://robotics.penyet.net/">robot</a> is very small and simple. This <a target="_blank" title="all about robotics" href="../">robot</a> is running fast and follow the line very smoothly.</p>
<p><strong>Mechanics</strong><br />
<span id="more-213"></span>
<p style="text-align: center;"><a target="_blank" title="free schematic diagram" href="http://schematics.circuitdiagram.net/viewer.php?id=bwy1244433045d.jpeg"><img title="Tiny Line Follower Robot" src="http://schematics.circuitdiagram.net/thumbs/bwy1244433045d.jpeg" border="0" alt=" Super Tiny Line Follower Robot"  /></a></p>
<p>All mechanical and <a target="_blank" title="electronics" href="http://electropart.info/">electrical</a> parts are mounted on a proto board, and it also constitutes the chasis.</p>
<p>The <a target="_blank" title="line follower robot" href="http://robotics.penyet.net/tag/line-follower">line following robot</a> is upheld in three points of two driving wheels and a free wheel. The driving wheels are made with a 7 mm dia ball bearing and a rubber tire. The free wheel is a 5 mm dia ball bearing attached loosely. To drive driving wheels, two tiny vibration motors that used for cellular <a target="_blank" title="cell phone reviews" href="http://phonecell.penyet.net/">phone</a>, pager or any mobile equipment are used. Its shaft is pressed onto the tire with a spring plate, the output torque is transferred to the wheels.</p>
<p>The steearing mechanism is realized in differential drive that steear the robot by difference in rotation speed between the left wheel and the right wheel. It does not require any additional actuator, only controling the wheel speed will do.</p>
<div>
<h4>Electronics</h4>
<table id="spec" border="0">
<tbody>
<tr>
<td>Controller</td>
<td>ATmega8 (Atmel)</td>
</tr>
<tr>
<td>Line sensor</td>
<td>Six photo-reflectors</td>
</tr>
<tr>
<td>Power supply</td>
<td>Two CR2032 lithium cells<br />
<small>(One is for controller, the other is for motors)</small></td>
</tr>
<tr>
<td>Motor</td>
<td>Two micromotors for left wheel and right wheel</td>
</tr>
<tr>
<td>Dimensions</td>
<td>45(L), 33(W), 12.5(H) [mm]</td>
</tr>
<tr>
<td>Weight</td>
<td>15 grams <small>(Body:8g, Cells:7g)</small></td>
</tr>
<tr>
<td>Performance</td>
<td>53 centimeter per second at oval course</td>
</tr>
</tbody>
</table>
<p>An Atmel ATmega8 is used for the controller and it is powered by a lithium coin cell. The other lithium coin cell is for only motors. Separating the <a target="_blank" title="power supply adapter" href="http://powersupplyadapter.blogspot.com/">power supply</a> into two cells is to avoid accidental reset of the microcontroller due to voltage dip by motor start current. Six photo-reflectors are mounted at front end of the chasis. They sense reflection rate of the floor under them. Motors are driven in PWM to control rotation speed lineary.</div>
<p><strong><br />
Line detector and Photo reflector</strong></p>
<p style="text-align: left;"><a target="_blank" title="free schematic diagram" href="http://schematics.circuitdiagram.net/viewer.php?id=cqs1244433127i.png"><img title="Tiny Line Follower Robot" src="http://schematics.circuitdiagram.net/thumbs/cqs1244433127i.png" border="0" alt="cqs1244433127i Super Tiny Line Follower Robot"  /></a><br />
To detect a line to be followed, most contestants are using two or more number of poto-reflectors. Its output current that proportional to reflection rate of the floor is converted to voltage with a resister and tested it if the line is detected or not. However the threshold voltage cannot be fixed to any level because optical current by ambent light is added to the output current like the image shown right.</p>
<p>Most photo-detecting modules for industrial use are using modurated light to avoid interference by the ambient light. The detected signal is filtered with a band pass filter and disused signals are filtered out. Therefore only the modurated signal from the light emitter can be detected. Of course the detector must not be saturated by ambient light, this is effective when the detector is working in linear region.</p>
<p>In this project, pulsed light is used to cancel ambient light. This is suitable for arraied sensors that scanned in sequence to avoid interference from next sensor. The microcontroller starts to scan the sensor status, sample an output voltage, turn on LED and sample again the output voltage. The difference between the two samples is the optical current by LED, output voltage by the ambient light is canceled. The other sensors are also scanned the same avobe in sequence.</p>
<p><strong>Line Detection Signal Processing</strong></p>
<p style="text-align: center;"><a target="_blank" title="free schematic diagram" href="http://schematics.circuitdiagram.net/viewer.php?id=arx1244433062s.png"><img title="Tiny Line Follower Robot" src="http://schematics.circuitdiagram.net/thumbs/arx1244433062s.png" border="0" alt="arx1244433062s Super Tiny Line Follower Robot"  /></a></p>
<p>Right image shows the actual line posisiton vs detected line position in center value of 640. The microcontroller scans six sensors and calcurates the line position by output ratio of two sensors near the line. Thus the line position can be detected lineary with only six sensors. All the sensor outputs are captured as analog value that proportioning to reflection ratio, and the sensitivity have variety between each one of them. In this system, to remove the variations from the outputs, calibration parameters for each sensor can be held into non-volatile memory. This can be done with online mode. The microcontroler enters the online mode when an ISP cable is attached, and it can be controlled with a terminal program in serial format of N81 38.4kbps. S1 command monitors sensor values, and S2 command calibrates variation of sensor gain on the reference surface (white paper). The ATmega8 must be set to 8MHz internal osc.</p>
<p><strong>Tracking Control</strong></p>
<p style="text-align: center;"><a target="_blank" title="free schematic diagram" href="http://schematics.circuitdiagram.net/viewer.php?id=arx1244433159i.png"><img title="Tiny Line Follower Robot" src="http://schematics.circuitdiagram.net/thumbs/arx1244433159i.png" border="0" alt="arx1244433159i Super Tiny Line Follower Robot"  /></a></p>
<p>The line position is compeared to the center value to be tracked, the position error is processed with Proportional/Integral/Diffence filters to generate steering command. The line folloing robot tracks the line in PID control that the most popular argolithm for servo control.</p>
<p>The proportional term is the commom process in the servo system. It is only a gain amplifire without time dependent process. The differencial term is applied in order to improve the responce to disturbance, and it also compensate phase lag at the controled object. The D term will be required in most case to stabilize tracking motion. The I term is not used in this project from following resons. The I term that boosts DC gain is applied in order to remove left offset error, however, it often decrease servo stability due to its phase lag. The line following operation can ignore such tracking offset so that the I term is not required.</p>
<p>When any line sensing error has occured for a time due to getting out of line or end of line, the motors are stopped and the microcontroller enters sleep state of zero power consumption.<br />
<strong>Notes:</strong><br />
<a target="_blank" title="free schematic diagram" href="http://schematics.circuitdiagram.net/viewer.php?id=arx1244433171t.jpeg"><img title="Tiny Line Follower Robot" src="http://schematics.circuitdiagram.net/thumbs/arx1244433171t.jpeg" border="0" alt=" Super Tiny Line Follower Robot" align="right" /></a></p>
<ul>
<li><a target="_blank" href="http://elm-chan.org/works/ltc/dev.html">Development diary [Ja]</a></li>
<li><a target="_blank" href="http://elm-chan.org/works/ltc/ltc.png">Circuit diagram</a></li>
<li><a target="_blank" href="http://elm-chan.org/works/ltc/ltcsrc.zip">Firmware</a> <small>May 23, 2004</small></li>
<li><a target="_blank" href="http://members.jcom.home.ne.jp/felm/ltc_p.mpg">Following motion with only P control</a><br />
This is a video file of line following motion with only P control. The servo system oscllated.</li>
<li><a target="_blank" href="http://members.jcom.home.ne.jp/felm/ltc_pd.mpg">Following motion with P and D controls</a><br />
Adding D control could improve the servo stability. The robot follows the line correctly. Therefore the servo parameter must be optimized for mechanical characterristics to improve the tracking stability.</li>
</ul>
<div id="seo_alrp_related"><div class="seo_alrp_rl_content"><a href="http://robotechno.us/line-follower-sensor.html" rel="bookmark">Line Follower Sensor</a> <br />The circuit diagram for the Line Follow Sensor board is shown below: The board is connected directly to the Light IO board via PL4. This circuit is very simple. +5V is applied via PL4 pin 4 to the circuit, and 0V is connected to pin 1 of PL4. When power ...</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/line-follower-robot-tutorial.html" rel="bookmark">Line Follower Robot Tutorial</a> <br />Line Follower ROBOT Plermjai Inchuay, plermjai@loxinfo.co.th Award winner from VingPeaw Competition 2543, the robot built with 2051, L293D, and four IR sensors. Simple circuit and platform, quick tracking and easy-understand program using C language. I designed my robot, which use two motors control rear wheels and the single front wheel ...</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/the-difference-between-stepper-motors-servos-and-rc-servos.html" rel="bookmark">The Difference Between Stepper Motors, Servos, and RC Servos</a> <br />Stepper motors: A stepper motor's shaft has permanet magnets attached to it. Around the body of the motor is a series of coils that create a magnetic field that interacts with the permanet magnets. When these coils are turned on and off the magnetic field causes the rotor to move. ...</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/line-follower-robot-without-microcontroller-2.html" rel="bookmark">Line Follower Robot without Microcontroller (with timer)</a> <br />Another Line Follower Robot without microcontroller project. This project built using IC timer 555 to generated PWM signal to make the motor running smoothly. This Line Follower Robot tutorial written by Jaseung Ku - 17 Dec 2005. May be this is "not professional" robot, but i think it so cool ...</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/avr-line-following-robot-tutorial.html" rel="bookmark">AVR Line Following Robot Tutorial</a> <br />Block Diagram The robot uses IR sensors to sense the line, an array of 8 IR LEDs&lt; (Tx) and sensors (Rx), facing the ground has been used in this setup. The output of the sensors is an analog signal which depends on the amount of light reflected back, this analog ...</div><br /></div>]]></content:encoded>
			<wfw:commentRss>http://robotechno.us/super-tiny-line-follower-robot.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
<enclosure url="http://members.jcom.home.ne.jp/felm/ltc_p.mpg" length="593924" type="video/mpeg" />
<enclosure url="http://members.jcom.home.ne.jp/felm/ltc_pd.mpg" length="653316" type="video/mpeg" />
		</item>
		<item>
		<title>Microcontroller Ebook: C Programming for Microcontrollers</title>
		<link>http://robotechno.us/microcontroller-ebook-c-programming-for-microcontrollers.html</link>
		<comments>http://robotechno.us/microcontroller-ebook-c-programming-for-microcontrollers.html#comments</comments>
		<pubDate>Wed, 24 Dec 2008 11:08:16 +0000</pubDate>
		<dc:creator>Robot Technology</dc:creator>
				<category><![CDATA[Microcontroller]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[arm microcontroller ebook]]></category>
		<category><![CDATA[arm microcontroller tutorial]]></category>
		<category><![CDATA[avr microcontroller programming]]></category>
		<category><![CDATA[C Programming for Microcontrollers]]></category>
		<category><![CDATA[C Programming for Microcontrollers ebook]]></category>
		<category><![CDATA[c programming for microcontrollers pdf]]></category>
		<category><![CDATA[ebooks]]></category>
		<category><![CDATA[microcontroller ebook]]></category>
		<category><![CDATA[programming microcontrollers in c]]></category>
		<category><![CDATA[robotics]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://robotechno.us/?p=174</guid>
		<description><![CDATA[C Programming for Microcontrollers &#8211; Featuring ATMEL&#8217;s AVR Butterfly and the free WinAVR Compiler Introduction C Programming and microcontrollers are two big topics, practically continental in size, and like continents, are easy to get lost in. Combining the two is a little like traipsing from Alaska to Tierra del Fuego. Chances are you&#8217;ll get totally [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://ecx.images-amazon.com/images/I/513B78BMB7L._SL500_AA240_.jpg" alt="513B78BMB7L. SL500 AA240  Microcontroller Ebook: C Programming for Microcontrollers" hspace="5" width="182" height="182" align="left" title="Microcontroller Ebook: C Programming for Microcontrollers" /><strong>C Programming for Microcontrollers &#8211; Featuring ATMEL&#8217;s AVR Butterfly and the free WinAVR Compiler</strong></p>
<p><strong>Introduction</strong></p>
<p>C <a href="http://robotechno.us/category/robotics-tutorial/programming" title="robot programming">Programming</a> and <a href="http://robotechno.us/category/robotics-tutorial/electronics/microcontroller" title="microcontroller tutorial"><strong>microcontrollers</strong></a> are two big topics, practically continental in size, and like continents, are easy to get lost in. Combining the two is a little like traipsing from Alaska to <strong>Tierra del Fuego</strong>. Chances are you&#8217;ll get totally lost and if the natives don&#8217;t eat you, your infected blisters will make you want to sit and pout. I&#8217;ve been down this road so much that I probably have my own personal rut etched in the metaphorical soil, and I can point to all the sharp rocks I&#8217;ve stepped on, all the branches that have whacked me in the face, and the bushes from which the predators leapt. If you get the image of a raggedy bum stumbling through the jungle, you&#8217;ve got me right. Consider this book a combination roadmap, guidebook, and emergency first aid kit for your journey into this fascinating, but sometimes dangerous world.</p>
<p>I highly recommend that you get the book, &#8216;<strong>The C Programming Language</strong> â€“ second edition&#8217; by Kernighan and Ritchie, here after referred to as K&amp;R. <strong>Dennis Ritchie</strong>, Figure 1, wrote C, and his book is the definitive source on all things C.</p>
<p><span id="more-174"></span></p>
<p style="text-align: center;"><a target="_blank" title="Dennis Ritchie and Ken Thompson" href="http://images.myfilehost.us/viewer.php?id=jdv1230116425r.jpg"><img src="http://images.myfilehost.us/images/jdv1230116425r.jpg" border="0" alt="jdv1230116425r Microcontroller Ebook: C Programming for Microcontrollers" width="369" height="216" title="Microcontroller Ebook: C Programming for Microcontrollers" /></a></p>
<p style="text-align: center;"><em>Figure 1: <strong>Dennis Ritchie</strong>, inventor of the <strong>C programming language</strong> stands next to <strong>Ken Thompson</strong>, original inventor of Unix, designing the original <strong>Unix operating system</strong> at <strong>Bell Labs</strong> on a PDP-11</em></p>
<p>I have chosen to follow that book&#8217;s organization in this book&#8217;s structure. The main difference is that their book is machine independent and gives lots of examples based on manipulating text, while this book is machine dependent, specifically based on the <strong>AVR microcontroller</strong>, and the examples are as microcontroller oriented as I can make them.</p>
<p><strong>Why C?</strong></p>
<p>Back in the dark ages of microprocessors, software development was done exclusively in the specific assembly language of the specific device. These assembly languages were character based &#8216;mnemonic&#8217; substitutions for the numerical machine language codes. Instead of writing something like: 0&#215;12 0&#215;07 0xA4 0x8F to get the device to load a value into a memory location, you could write something like: MOV 22 MYBUFFER+7. The assembler would translate that statement into the machine language for you. I&#8217;ve written code in machine language (as a learning experiment) and believe me when I tell you that assembly language is a major step up in productivity. But a device&#8217;s assembly language is tied to the device and the way the device works. They are hard to master, and become obsolete for you the moment you change microcontroller families. They are specific purpose languages that work only on specific microprocessors. C is a general-purpose programming language that can work on any microprocessor that has a C compiler written for it. C abstracts the concepts of what a <strong><a target="_blank" href="http://electropart.info/index.php/category/computer-introduction/" title="computer introduction">computer</a></strong> does and provides a text based logical and readable way to get computers to do what computers do. Once you learn C, you can move easily between microcontroller families, write software much faster, and create code that is much easier to understand and maintain.</p>
<p><strong>Why AVR?</strong></p>
<p>As microprocessors evolved, devices increased in complexity with new hardware and new instructions to accomplish new tasks. These microprocessors became known as<strong> CISC</strong> or <strong>Complex Instruction Set Computers</strong>. Complex is often an understatement; some of the CISCs that I&#8217;ve worked with have mind-numbingly complex instruction sets. Some of the devices have so many instructions that it becomes difficult to figure out the most efficient way to do anything that isn&#8217;t built into the hardware.</p>
<p>Then somebody figured that if they designed a very simple core processor that only did a few things but did them very fast and efficiently, they could make a much cheaper and easier to program computer. Thus was born the RISC, <strong>Reduced Instruction Set Computers</strong>. The downside was that you had to write additional assembly language software to do all the things that the CISC computer had built in. For instance, instead of calling a divide instruction in a CISC device, you would have to do a series of subtractions to accomplish a division using a RISC device. This &#8216;disadvantage&#8217; was offset by price and speed, and is completely irrelevant when you program with C since the complier generates the assembly code for you.</p>
<p>Although I&#8217;ll admit that &#8216;CISC versus RISC&#8217; and &#8216;C versus assembly language&#8217; arguments often seem more like religious warfare than logical discourse, I have come to believe that the AVR, a RISC device, programmed in C is the best way to microcontroller salvation (halleluiah brother).</p>
<p>The folks that designed the <strong>AVR</strong> as a RISC architecture and instruction set while keeping C programming language in mind. In fact they worked with C compiler designers from IAR to help them with the hardware design to help optimize it for C programming.</p>
<p>Since this is an introductory text I won&#8217;t go into all the detailed reasons I&#8217;ve chosen the AVR, I&#8217;ll just state that I have a lot of experience with other microcontrollers such as Intel&#8217;s 8051, Motorola&#8217;s 68xxxes, Zilog&#8217;s Z&#8217;s, and Microchip&#8217;s PIC&#8217;s and I&#8217;m done with them (unless adequately paid â€“ hey, I&#8217;m no zealot). These devices are all good, but they require expensive development boards, expensive programming boards, and expensive software development tools (don&#8217;t believe them about the &#8216;free&#8217; software, in most cases the &#8216;free&#8217; is for code size or time limited versions).</p>
<p>The AVR is fast, cheap, in-circuit programmable, and development software can be had for FREE (really free, not crippled or limited in any way). I&#8217;ve paid thousands of dollars for development boards, programming boards, and C compilers for the other devices, but never again &#8212; I like free. The hardware used in this text, the ATMEL Butterfly Evaluation Board can be modified with a few components to turn it into a decent development system and the Butterfly and needed components can be had for less than $40.00 (See Appendix 1 Project Kits). You can&#8217;t get a better development system for 10 times this price and you can pay 100 times this and not get as good.</p>
<p>Download ebook <strong><a target="_blank" title="C Programming for Microcontrollers" href="http://www.4shared.com/document/7wPgn0Vb/C_Programming_for_Microcontrol.htm">C Programming for Microcontrollers</a></strong></p>
<p>or</p>
<p>Buy <a target="_blank" title="C Programming for Microcontrollers" href="http://www.amazon.com/gp/product/0976682206?ie=UTF8&amp;tag=digcamnewandr-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=0976682206"><strong>C Programming for Microcontrollers</strong> book from amazon.com</a> for US$ 49.95</p>
<div id="seo_alrp_related"><div class="seo_alrp_rl_content"><a href="http://robotechno.us/explanation-arduino.html" rel="bookmark">Few explanation about the Arduino</a> <br />What is Arduino? Arduino is a tool for making computers that can sense and control the physical world through your computer. It is a development platform open-source physical computing, based on a simple microcontroller board and a development environment for creating software (programs) for the board. Arduino can use to ...</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/nanovm-java-wirtual-machine-atmel-avr-atmega8atmega832.html" rel="bookmark">NanoVM: Java Wirtual Machine for Atmel AVR ATmega8/ATmega832</a> <br />Java programming for microcontroller chips, With the NanoVM, the microcontroller can be programmed in the popular Java language using the standard Sun JDK. NanoVM is a open-source implementation of the Java virtual machine. The NanoVM was initially developed to run on the Atmel AVR ATmega8 utilized in the Asuro Robot. ...</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/robotics-book-8051-microcontroller-architecture-programming-and-applications.html" rel="bookmark">Robotics Book: 8051 Microcontroller: Architecture, Programming and Applications</a> <br />Here is the book related to robotics: Book title: 8051 Microcontroller: Architecture, Programming and Applications 8051 Microcontroller: Architecture, Programming and Applications Technical details/features and description: Designed as a main or supplementary text for courses on microprocessors or microcontrollers. Packaged with a customized disk containing an 8051 assembler and 8051 simulator. ...</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/book-c-programming-for-avr-microcontrollers.html" rel="bookmark">Book: C Programming for AVR Microcontrollers</a> <br />This can be used as reference book for  AVR microcontroller programming. As we know, AVR family is cheap, easy and the most used microcontroller in Robotics. By the time you complete the text and projects you will: • Have an intermediate understanding of the C programming language. • Have a ...</div><br /><div class="seo_alrp_rl_content"><a href="http://robotechno.us/msp430-microcontroller-tutorial.html" rel="bookmark">MSP430 Microcontroller Tutorial</a> <br />Do you want to build a robot using MSP430 microcontroller..? Then you should know the basic knowledge of MSP430 microcontroller. This MSP430 tutorial will show you how MSP430 works (included: MSP430 sample code). Microcontrollers are binary computers and so they operate on the basis of binary numbers. Binary numbers consist ...</div><br /></div>]]></content:encoded>
			<wfw:commentRss>http://robotechno.us/microcontroller-ebook-c-programming-for-microcontrollers.html/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

