<?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>Ayarafun &#187; bootloader</title>
	<atom:link href="http://www.ayarafun.com/tag/bootloader/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ayarafun.com</link>
	<description>Make , Creative and Let &#039;s fun</description>
	<lastBuildDate>Sun, 05 Feb 2012 07:30:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>เบิร์น Bootloader ให้ Arduino ตัวใหม่ด้วย FTDI-Bitbang [ตอนที่ 2]</title>
		<link>http://www.ayarafun.com/2010/07/burn-bootloader-with-ftdi-bit-bang-writer/</link>
		<comments>http://www.ayarafun.com/2010/07/burn-bootloader-with-ftdi-bit-bang-writer/#comments</comments>
		<pubDate>Sun, 25 Jul 2010 15:48:21 +0000</pubDate>
		<dc:creator>chang</dc:creator>
				<category><![CDATA[Arduino-Hacking]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[bootloader]]></category>
		<category><![CDATA[FT232RL]]></category>
		<category><![CDATA[FTDI Bitbang]]></category>

		<guid isPermaLink="false">http://www.ayarafun.com/?p=1853</guid>
		<description><![CDATA[จากตอนที่แล้ว เราก้อได้แปลงกายเจ้า UCON-UART [FT232RL] เป็นเครื่องเบิร์นได้แล้ว ในบทความตอนนี้ เราจะเอาเครื่องเบิร์น FTDI ฺBitbang กับ avrdude-gui ใช้งาน burn bootloader กันดีกว่าครับ ความจริงเราสามารถปรับแต่งให้ Arduino IDE เบิร์น bootloader ได้ ซึ่งสนใจก้อเข้าไปอ่านตามลิงค์นี้ &#8220;How to run this &#8220;FTDI Bitbang method&#8221; with the Arduino-IDE&#8221; ที่ผมทดลองมายังไม่สะดวกมากนักครับ เพราะว่าอย่างหนึ่ง คือ ตัวโปรแกรม avrdude จะต้องปรับแต่ง เพื่อให้ใช้กับ bitbang ได้ ซึ่งมันยังไม่ compatible กับ arduino-0018 ครับ ลักษณะโปรเจค open-source ก้ออย่างงี้ล่ะครับ ถ้ามันยังไม่นิยมมาก ก้อไม่ค่อยเป็นมาตราฐาน และบ่อยครั้งมันก้อปิดตัวเองไปช้าๆ ครับ ตอนนี้เราก้อใช้กับมันแล้วทำความเข้าใจกันไปครับ การเบิร์น


No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">จากตอนที่แล้ว เราก้อได้แปลงกายเจ้า UCON-UART [FT232RL] เป็นเครื่องเบิร์นได้แล้ว ในบทความตอนนี้ เราจะเอาเครื่องเบิร์น FTDI ฺBitbang กับ avrdude-gui ใช้งาน burn bootloader กันดีกว่าครับ ความจริงเราสามารถปรับแต่งให้ Arduino IDE เบิร์น bootloader ได้ ซึ่งสนใจก้อเข้าไปอ่านตามลิงค์นี้ <a href="http://www.geocities.jp/arduino_diecimila/bootloader/bitbang_w_ide_en.html">&#8220;How to run this &#8220;FTDI Bitbang method&#8221; with the Arduino-IDE&#8221;</a> ที่ผมทดลองมายังไม่สะดวกมากนักครับ เพราะว่าอย่างหนึ่ง คือ ตัวโปรแกรม avrdude จะต้องปรับแต่ง เพื่อให้ใช้กับ bitbang ได้ ซึ่งมันยังไม่ compatible กับ arduino-0018 ครับ ลักษณะโปรเจค open-source ก้ออย่างงี้ล่ะครับ ถ้ามันยังไม่นิยมมาก ก้อไม่ค่อยเป็นมาตราฐาน และบ่อยครั้งมันก้อปิดตัวเองไปช้าๆ ครับ ตอนนี้เราก้อใช้กับมันแล้วทำความเข้าใจกันไปครับ</p>
<p style="text-align: justify;">การเบิร์น bootloader ถ้าเราใช้ Arduino IDE ขั้นตอนจะไม่ยุ่งยากมากครับ กด [Burn Bootloader] จากเมนูอย่างเดียว ก้อจบ แต่พอเราใส่เครื่องเบิร์นไปใน IDE ไม่ได้ เลยลำบากเลย วิธีนี้ก้อเผื่อไว้ครับ ส่วนมากเครื่องเบิร์นหรือเครื่องโปรแกรมที่ขายในไทย มันอาจจะไม่ใช้ไม่ได้กับ arduino IDE เราก้อ manual เองเลย [<a href="http://www.geocities.jp/arduino_diecimila/bootloader/bitbang_w_ide_en.html">ใครอยากใช้ FTDI แบบไม่ manual? เข้าไปดูตามลิงค์นี้ครับ</a>]</p>
<p style="text-align: justify;">สำหรับในบทความนี้จะขอยึดกับ การเบิร์น Bootloader ของ ไอซี ATmega328 เป็นหลักครับ สำหรับไอซีตัวอื่น ทางท่านผู้อ่าน ต้องลองเองครับ</p>
<p style="text-align: justify;"><a href="http://www.ayarafun.com/wp-content/uploads/2010/07/P10303771.jpg"><img class="aligncenter size-full wp-image-1850" title="P1030377" src="http://www.ayarafun.com/wp-content/uploads/2010/07/P10303771.jpg" alt="" width="399" height="249" /></a><strong><span id="more-1853"></span></strong><span style="color: #33cccc;"><strong>ขั้นตอนการเบิร์น bootloader มีสี่ขั้นตอนสั้นๆดังนี้ครับ</strong></span></p>
<ol>
<li><span style="color: #000000;"><strong>Unlock</strong></span></li>
<li><span style="color: #000000;"><strong>Write Fusebit</strong></span></li>
<li><span style="color: #000000;"><strong>Burn Bootloader</strong></span></li>
<li><span style="color: #000000;"><strong>Lock</strong></span></li>
</ol>
<h2><strong><span style="color: #ff6600;">วิธีการเบิร์น bootloader</span><br />
</strong></h2>
<p style="text-align: justify;">[ 0 - Zero] เตรียมความพร้อมก่อน ให้ตั้ง clock mode เป็นแบบช้า ให้ใส่ &#8220;-B 4800&#8243; เข้าไปก่อน? <strong><br />
** chip ใหม่ ยังไม่สามารถใช้ความเร็วสูงได้ (fast  clock mode)<br />
</strong></p>
<p style="text-align: justify;">&nbsp;</p>
<p style="text-align: justify;">1. unlock Fuse-Bit</p>
<p style="text-align: justify; padding-left: 30px;">[1] กด [Chip Erase] ลบให้หมด.<br />
[2] จากนั้นกดปุ่ม [Read] บริเวณกรอก Lockbit , ตรวจสอบว่าค่า Lockbit = 0x3F หรือป่าว</p>
<p style="padding-left: 30px;"><img class="size-full wp-image-1895 alignnone" title="fusebit2" src="http://www.ayarafun.com/wp-content/uploads/2010/07/fusebit21.png" alt="" width="512" height="128" /></p>
<p style="padding-left: 30px;">&nbsp;</p>
<p style="text-align: justify;">2. Write Fuse-bits</p>
<p style="text-align: justify; padding-left: 30px;">(1) เซ็ท Fusebit ตามค่าข้างล่าง (สำหรับ ATmega328)</p>
<ul style="padding-left: 30px;">
<li>hfuse = DA</li>
<li>lFuse = FF</li>
<li>eFuse = 05</li>
</ul>
<p style="text-align: justify; padding-left: 30px;">(2) คลิก [Write] เพื่อเขียน fusebit</p>
<p style="text-align: justify; padding-left: 30px;"><a href="http://www.ayarafun.com/wp-content/uploads/2010/07/fusebit3.png"><img class="alignnone size-full wp-image-1864" title="fusebit3" src="http://www.ayarafun.com/wp-content/uploads/2010/07/fusebit3.png" alt="" width="581" height="124" /></a></p>
<p style="text-align: justify; padding-left: 30px;"><strong>สลับโหมดเป็น Fast Clock</strong><br />
ลบพารามิเตอร์? &#8221; -B 4800&#8243; ในช่อง command line แล้วกด read fuse-bits<br />
ถ้าอ่านค่า fuse bits ผิคให้กลับสลับเป็นค่า slow clock อีกรอบ แล้วทำการเขียน Fuse-Bits  ใหม่</p>
<p style="text-align: justify;">&nbsp;</p>
<p style="text-align: justify;">3. เบิร์นไฟล์ Bootloader</p>
<p style="padding-left: 30px;">[1] กดปุ่ม [...] -&gt; เลือกไฟล์?  &#8220;G:\arduino\arduino-0018\hardware\bootloaders\atmega\ATmegaBOOT_168_atmega328.hex&#8221;<br />
[2] กดปุ่ม [Erase-Write-Verify] ที่บริเวณ Flash Area</p>
<p style="padding-left: 30px;"><a href="http://www.ayarafun.com/wp-content/uploads/2010/07/fusebit4.png"><img class="alignnone size-full wp-image-1865" title="fusebit4" src="http://www.ayarafun.com/wp-content/uploads/2010/07/fusebit4.png" alt="" width="596" height="122" /></a></p>
<p style="padding-left: 30px;">&nbsp;</p>
<p>4. เซ็ท lock bit? ล๊อคไม่ให้มีการเขียนทับบริเวณ bootloader</p>
<p style="padding-left: 30px;">[1] เซ็ทค่า Lock = 0F<br />
[2] กดปุ่ม [Write] เพื่อบันทึกค่า</p>
<p style="padding-left: 30px;"><a href="http://www.ayarafun.com/wp-content/uploads/2010/07/fusebit5.png"><img class="alignnone size-full wp-image-1862" title="fusebit5" src="http://www.ayarafun.com/wp-content/uploads/2010/07/fusebit5.png" alt="" width="594" height="91" /></a></p>
<p style="padding-left: 30px;">&nbsp;</p>
<p>ที่กล่าวไปสำหรับ atmega328 แต่ถ้าใครใช้ AVR ตัวอื่น อย่าง ATmega8 และ ATmega168 ใช้ขั้นตอนแบบเดิม แต่ Fuse-bit ไม่เหมือนกันครับ ใช้ค่าดังตัวเลขข้างล่าง</p>
<p style="text-align: justify; padding-left: 60px;"><strong>สำหรับ ATmega168</strong></p>
<ul style="padding-left: 60px;">
<li>hfuse = DD</li>
<li>lfuse = FF</li>
<li>efuse = 00</li>
<li>unlock = 3F</li>
<li>lock = 0F</li>
<li>bootloader file<br />
arduino-0018\hardware\bootloaders\atmega\ATmegaBOOT_168_diecimila.hex</li>
</ul>
<p style="padding-left: 60px;"><strong>สำหรับ ATmega8</strong></p>
<ul style="padding-left: 60px;">
<li>hfuse  = CA</li>
<li>lfuse = DF</li>
<li>unlock = 3F</li>
<li>lock = 0F</li>
<li>bootloader file<br />
arduino-0018\arduino-0018\hardware\arduino\bootloaders\atmega8\ATmegaBOOT.hex</li>
</ul>
<p>หลังจากนั้น ถอดสาย ICSP จากนั้นจ่ายไฟเข้าไปยังบอร์ด arduino จะได้เห็น LED13 กระพริบๆ? ตอนนี้ตัวไอซี ATmega ตัวใหม่เราได้บรรจุ Bootloader พร้อมจะนำไปใช้กับ Arduino IDE แล้วครับ</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.ayarafun.com/2010/07/burn-bootloader-with-ftdi-bit-bang-writer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>เบิร์น AVR ด้วย FTDI-Bitbang [ตอนที่ 1]</title>
		<link>http://www.ayarafun.com/2010/07/atmel-programming-with-ftdi-bitbang/</link>
		<comments>http://www.ayarafun.com/2010/07/atmel-programming-with-ftdi-bitbang/#comments</comments>
		<pubDate>Sun, 25 Jul 2010 12:14:24 +0000</pubDate>
		<dc:creator>chang</dc:creator>
				<category><![CDATA[Arduino-Hacking]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[bootloader]]></category>
		<category><![CDATA[FT232RL]]></category>
		<category><![CDATA[FTDI Bitbang]]></category>

		<guid isPermaLink="false">http://www.ayarafun.com/?p=1820</guid>
		<description><![CDATA[รอบนี้ยังนำเสนอเครื่องเบิร์นกันอีกสักวิธีครับ? ที่ผมมาแนะนำบ่อยๆ เพราะว่าช่วงนี้เห็นว่าหลายคนเหลือเอาไปใช้งานกัน บอร์ดเดียวคงจะไม่พอใช้งาน แต่จะซื้อมาใช้หลายๆบอร์ด มันก้อคงไม่ประหยัดมากนักครับ ผมจึงพยายามหาเครื่องไม้เครื่องมือมาช่วยทำ สร้างสรรค์โปรเจคกันได้เต็มที่ สำหรับเครื่องเบิร์นนี้จริง จุดประสงค์เพื่อ จะเอามาช่วย เบิร์น bootloader สำหรับการสร้างบอร์ด arduino เอง? เพราะว่าจริงแล้วไอซี ATmega328 หรือ ATmega168 ที่เพิ่งซื้อมาใหม่จากโรงงาน จะไม่บรรจุโปรแกรมอะไรไว้เลยครับ ต้องเบิร์น boot loader เข้าไปก่อนครับ ถึงจะใช้งานกับ IDE ของ Arduino Notes: 2 jQuery(function() { knsprImageNote.initializeNoteDisplay('.wp-image-1819', [{"x1":635,"y1":48,"width":281,"height":215,"imageId":"1819","note":"UCON-UART","url":"http://www.inex.co.th/electronic/computerinterface.html"},{"x1":109,"y1":23,"width":378,"height":265,"imageId":"1819","note":"Freeduino V1.16","url":"http://www.ayarafun.com/shop/arduino/freeduino-usb/"}], 1819, false, false, 1024, 377); }); This image contains notes, please open the website directly แต่สำหรับรอบนี้ ขอพูดแบบกลางๆ ก่อน


No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">รอบนี้ยังนำเสนอเครื่องเบิร์นกันอีกสักวิธีครับ? ที่ผมมาแนะนำบ่อยๆ เพราะว่าช่วงนี้เห็นว่าหลายคนเหลือเอาไปใช้งานกัน บอร์ดเดียวคงจะไม่พอใช้งาน แต่จะซื้อมาใช้หลายๆบอร์ด มันก้อคงไม่ประหยัดมากนักครับ ผมจึงพยายามหาเครื่องไม้เครื่องมือมาช่วยทำ สร้างสรรค์โปรเจคกันได้เต็มที่</p>
<p style="text-align: justify;">สำหรับเครื่องเบิร์นนี้จริง จุดประสงค์เพื่อ จะเอามาช่วย เบิร์น bootloader สำหรับการสร้างบอร์ด arduino เอง? เพราะว่าจริงแล้วไอซี ATmega328 หรือ ATmega168 ที่เพิ่งซื้อมาใหม่จากโรงงาน จะไม่บรรจุโปรแกรมอะไรไว้เลยครับ ต้องเบิร์น boot loader เข้าไปก่อนครับ ถึงจะใช้งานกับ IDE ของ Arduino</p>
<p style="text-align: center;"><img class="size-full wp-image-1819  aligncenter" src="http://www.ayarafun.com/wp-content/uploads/2010/07/P1030334.jpg" alt="" width="669" height="246" />	<p class="numberOfNotes">Notes: 2</p>        <script type="text/javascript">
jQuery(function() {
    knsprImageNote.initializeNoteDisplay('.wp-image-1819', [{"x1":635,"y1":48,"width":281,"height":215,"imageId":"1819","note":"UCON-UART","url":"http://www.inex.co.th/electronic/computerinterface.html"},{"x1":109,"y1":23,"width":378,"height":265,"imageId":"1819","note":"Freeduino V1.16","url":"http://www.ayarafun.com/shop/arduino/freeduino-usb/"}], 1819, false, false, 1024, 377);
});
</script><p>This image contains notes, please open the website directly</p></p>
<p style="text-align: justify;">แต่สำหรับรอบนี้ ขอพูดแบบกลางๆ ก่อน คือทำเครื่องเบิร์นสำหรับใช้งานการเบิร์น AVR ทั่วไปครับ สำหรับเครื่องเบิร์นที่จะมาแนะนำบทความนี้ เรียกว่า FTDI Bitbang ครับ เป็นโปรเจคที่พัฒนาโดย <a href="http://translate.google.com/translate?prev=_t&amp;hl=ja&amp;ie=UTF-8&amp;u=http%3A%2F%2Fsuz-avr.sblo.jp%2Farchives%2F20070621-1.html&amp;sl=ja&amp;tl=en&amp;history_state0=">Mr.Suz</a> ซึ่งทางเขาได้ทำให้ Bitbang ของ FT232RL เป็นเครื่องโปรแกรมไอซีได้ โดยโปรแกรมที่จะใช้งานกัน วันนี้จะมาแนะนำวิธีการใช้งาน กับ setup กันครับ<span id="more-1820"></span></p>
<p>บทความนี้ นำมาจาก <a href="http://www.geocities.jp/arduino_diecimila/bootloader/index_en.html">Burning the Bootloader without  external AVR-Writer</a> ของ? Kimio Kosaka แต่เอามาแก้ไข นิดหน่อยให้ใช้งานกับของที่มีในไทยได้ครับ สำหรับสิ่งที่น่าสนใจอย่างหนึ่ง เหมือนนำ FT232RL มาใช้เป็นเครื่องเบิร์นคือ มันสามารถ รันได้ทุก platform ตัวไอซี มี driver ที่รันได้ทั้ง mac os และ linux? ถ้าท่านใช้ OS อื่น ก้อลงเข้าไปอ่านดูึครับ ลิงค์ต้นฉบับ</p>
<h3>Download ซอฟร์แวร์ที่จำเป็น จากเวปไซค์ต้นฉบับ</h3>
<ol type="i">
<li>&#8220;avrdude-serjtag&#8221; FTDI BitBang AVR-Writer<br />
<a href="http://www.geocities.jp/arduino_diecimila/bootloader/files/serjtag-0.3.zip">serjtag-0.3.zip</a> mirror site<br />
<a href="http://www.geocities.jp/arduino_diecimila/bootloader/files/serjtag-0.3.tar.gz">serjtag-0.3.tar.gz</a> mirror site</li>
<li><a href="http://www.nmj.sakura.ne.jp/suz-avr/serjtag/serjtag-0.3.zip">serjtag-0.3.zip</a> original site (<a href="http://suz-avr.sblo.jp/archives/20070621-1.html">http://suz-avr.sblo.jp/archives/20070621-1.html</a>)<br />
<a href="http://www.nmj.sakura.ne.jp/suz-avr/serjtag/serjtag-0.3.tar.gz">serjtag-0.3.tar.gz</a> original site (<a href="http://suz-avr.sblo.jp/archives/20070621-1.html">http://suz-avr.sblo.jp/archives/20070621-1.html</a>)</li>
<li>ไฟล์ configure-file สำหรับ avrdude-serjtag<br />
<a href="http://www.geocities.jp/arduino_diecimila/bootloader/files/avrdude.conf">avrdude.conf</a> (<strong>Update:</strong> เพื่อให้ใช้  ATmega328P,168P and 88P ได้ครับ)</li>
<li>โปรแกรมกราฟฟิกสำหรับ AVRDude &#8211; &#8220;avrdude-GUI (yuki-lab.jp Version)&#8221;<br />
<a href="http://www.geocities.jp/arduino_diecimila/bootloader/files/avrdude-GUI-1.0.5.zip">avrdude-GUI-1.0.5.zip</a> mirror site<br />
<a href="http://yuki-lab.jp/hw/avrdude-GUI/avrdude-GUI-1.0.5.zip">avrdude-GUI-1.0.5.zip</a> original site (<a href="http://yuki-lab.jp/hw/avrdude-GUI/index.html">http://yuki-lab.jp/hw/avrdude-GUI/index.html)</a></li>
<li>avrdude-GUI (yuki-lab.jp Version) require  Microsoft .NET Framework 2.0. ถ้าสามารถเปิดโปรแกรม avrdude-gui ได้ไม่ต้องติดตั้งใหม่ครับ<br />
แต่ถ้ามีปัญหา ระบบต้องการ ก้อเข้าไปโหลดได้ที่นี้ครับ?             <a href="http://www.microsoft.com/Downloads/details.aspx?familyid=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&amp;displaylang=us"> here (Microsoft .NET Framework 2.0 download page)</a></li>
</ol>
<h3>วิธีการติดตั้ง</h3>
<p>ไฟล์ที่ให้โหลด ส่วนมากไม่ได้มีระบบ install ไฟล์ เราต้องติดตั้งเองครับ ซึ่งความจริงเราจะติดตั้งไว้ที่ไหนก้อได้คับ เอาที่เราสะดวกครับ เพราะเวลามันรัน ไม่ได้อ้างอิงตำแหน่งไดเร็กทรอรี่อยู่แล้วครับ</p>
<ul>
<li>สำหรับไฟล์<strong> serjtag-0.3</strong> หลังจากแตกไฟล์ มาเราจะใช้แค่โฟลเดอร์ &#8220;serjtag-0.3/binary&#8221; ซึ่งภายในโฟลเดอร์จะมีโปรแกรม avrdude.exe ที่ทำการแก้ไขแล้ว เพื่อสามารถใช้เครื่องโปรแกรมจาก FTDI Bitbang ได้ครับ สำหรับโฟลเดอร์อื่นจะไม่เอามาก้อได้ครับ ในที่นี้ผมเอาไปใส่รวมกับ arduino และเปลี่ยนชื่อ เป็น <strong>&#8220;G:/arduino/avrdude-serjtag&#8221;</strong></li>
<li><strong>avrdude.conf</strong> เป็นไฟล์ configure สำหรับเพื่อใช้กับ avrdude ให้แตกไฟล์ แล้วไปรวมใน ไดเร็กทรอรี่ <strong>&#8220;g:/arduino/avrdude-serjtag/binary</strong>&#8221; ก้อได้ครับ</li>
<li>สำหรับโปรแกรม สุดท้าย คือ <strong>avrdude-gui </strong>เป็นโปรแกรม wrapper? จะมีอยู่ไฟล์เดียว ไว้ที่ไหนก้อได้ที่เรา ที่เราสะดวก ผมเอารวมไว้ที่ <strong>&#8220;g:/arduino/&#8221;</strong></li>
</ul>
<p>* สำหรับไดเร็กทรอรี่ จะจัดไว้ที่ไหนก้อได้แล้วแต่สะดวกครับ</p>
<h3>แปลงกาย UCON-UART เป็นเครื่องเบิร์นไอซี</h3>
<p>สำหรับตอนนี้ส่วนของ software คงจะเริ่มแล้วมาดู Hardware กันบ้าง ความจริงโปรเจคนี้เขาดัดแปลงบอร์ด Arduino Diecimila มาใช้งานเบิร์นบอร์ดตัวเอง แต่ทาง freeduino ของเราไม่ได้เตรียมไว้ให้ครับ เดี่ยวจะเพิ่มเติมในโอกาสหน้าครับ <img src='http://www.ayarafun.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' />  หรือใครใจร้อนจะทำ hardwire บนบอร์ดแบบท่านเบียร เพื่อนสมาชิกแห่ง electoday ก้อได้ครับ <a href="http://www.electoday.com/bbs/viewthread.php?tid=4427&amp;extra=page%3D3&amp;page=1">ชมได้ที่นี้</a></p>
<p>สำหรับบอร์ดที่ผมเลือกมา เป็น <a href="http://www.inex.co.th/electronic/computerinterface.html">UCON-UART</a> ของบริษัท <a href="http://www.inex.co.th/">INEX</a> เป็นบอร์ด usb2serial ที่มีขาสัญญาณ RS232c ออกมาครบ มีระดับไฟอยู่ +5/+3.3v? ซึ่งมันเลยเหมาะกับการใช้งานกับไมโคร ต่อตรงไม่ต้องผ่าน buffer อีกที่ และยังเอามาทำตัวเบิร์นแบบ ftdi bitbang ได้อีกครับ ผมว่ามันก้อเหมือน 2 in 1 คุ้มดี สำหรับผู้ที่สนใจก้อสามารถสั่งซื้อทาง บริษัทเขาเลยครับ ราคาตอนนี้ 290 บาทครับ</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-1832" title="P1030329" src="http://www.ayarafun.com/wp-content/uploads/2010/07/P1030329.jpg" alt="" width="599" height="336" /></p>
<p>คุณสมบัติคร่าวๆดังนี้ครับ</p>
<ul>
<li>ใช้ไอซี FT232R ในการแปลงสัญญาณ</li>
<li>มี LED แสดงสภาวะการทำงาน</li>
<li>มีจุดต่อสัญญาณครบทุก สัญญาณทั้ง DCD,RxD,TxD,DTR,DSR,RTS และCTS</li>
<li>เลือกใช้ไฟเลี้ยงได้ทั้ง  +3.3V และ +5V หรือใช้จากพอร์ต USB ก็ได้</li>
</ul>
<p>มาดูเรื่องการ setup กันต่อ สำหรับบอร์ด Freeduino เวลาเราจะเบิร์น bootloader จะเบิร์นผ่าน ISP ครับ โดยคอนเน็กเตอร์ ICSP หรือ ISP แบบ 6 PIN ครับ ดังรูปครับ</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-1818" title="P1030332" src="http://www.ayarafun.com/wp-content/uploads/2010/07/P1030332.jpg" alt="" width="596" height="298" /></p>
<p>ให้เราต่อสาย ICSP กับบอร์ด UCON-UART ดังแผนภาพข้างหลังนี้ครับ</p>
<p><a href="http://www.ayarafun.com/wp-content/uploads/2010/07/ft232.png"><img class="aligncenter size-full wp-image-1816" title="ft232" src="http://www.ayarafun.com/wp-content/uploads/2010/07/ft232.png" alt="" width="580" height="279" /></a></p>
<p>ภาพสุดท้ายที่เพิ่มใช้งานแล้ว ใช้สายนิดเดียวครับ ที่เห็นที่คอนเน็กเตอร์ ICSP ผมเอาเข็มขัดรัดสายไฟ มันมัดให้มันรวมกันไว้ครับ? ตอนนี้เราก้อได้เครื่องเบิร์น AVR ที่ถูกที่สุดในโลกแล้ว ถูกกว่านี้ต้องทำเองครับ <img src='http://www.ayarafun.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>
<h3><a href="http://www.ayarafun.com/wp-content/uploads/2010/07/P1030377.jpg"></a><a href="http://www.ayarafun.com/wp-content/uploads/2010/07/P10303771.jpg"><img class="aligncenter size-full wp-image-1850" title="P1030377" src="http://www.ayarafun.com/wp-content/uploads/2010/07/P10303771.jpg" alt="" width="564" height="352" /></a><br />
การใช้งาน avrdude-gui ครับ</h3>
<p>บอร์ดพร้อมติดตั้งโปรแกรมแล้ว มาถึงการใช้งานโปรแกรม avrdude ครับ</p>
<p>รันชื่อโปรแกรม avrdude-gui.exe ที่เราได้ติดตั้งไป จะได้หน้าต่างดังภาพข้างหลังนี้ครับ</p>
<p style="text-align: center;"><img class="aligncenter" src="http://www.geocities.jp/arduino_diecimila/bootloader/files/avrdude-gui.png" alt="" /></p>
<p>จากนั้น Setting โปรแกรมดังภาพครับ</p>
<p style="text-align: center;"><a href="http://www.ayarafun.com/wp-content/uploads/2010/07/setting_p1.png"><img class="aligncenter size-full wp-image-1833" title="setting_p1" src="http://www.ayarafun.com/wp-content/uploads/2010/07/setting_p1.png" alt="" width="596" height="223" /></a></p>
<ol type="i">
<li>ตำแหน่งของโปรแกรม avrdude.exe
<ul>
<li>เปิดโฟลเดอร์ &#8220;G:\arduino\avrdude-serjtag\binary&#8221;.</li>
<li>เลือก &#8220;avrdude.exe&#8221;, แล้วคลิก [Open(O)] .</li>
</ul>
</li>
<li>เลือกเครื่องโปรแกรมมิ่ง (Programmer area)
<ul>
<li>เลือก &#8220;FT232R Synchronous BitBang (diecimila)&#8221; ให้สังเกตุ diecimila ที่ตัวท้ายครับ เผื่อจะมีหลายตัวให้เลือก</li>
</ul>
</li>
<li>เลือก Device เบอร์ ไอซี สำหรับ arduino จะมี ATmega168 ,ATmega328 แต่ถ้าอยากเอาไปใช้งานกับเครื่องเบิร์น AVR ตัวอื่นก้อได้เช่นกันครับ (ยังไม่ได้ลองนะครับ)</li>
<li>เพิ่มเติม Command line Option area
<ul>
<li>ให้ใส่ ที่ Textbox<br />
-P ft0 -B 4800<br />
&#8220;-P ft0&#8243; กำหนด port ของ Bitbang,? &#8220;-B 4800&#8243; ใช้ความเร็วต่ำ ในการเบิร์น</li>
</ul>
<p>**<strong> ข้อควรระวัง</strong> ในช่อง Port ปล่อยวางไว้ครับ<br />
** &#8211; B 4800 เปลี่ยนได้นะครับ ที่ใส่ไว้ เพื่อให้ชัวส์ว่าใช่งาน แต่ใช้งานจริงเอาออกได้</li>
</ol>
<h3>ทดสอบเบื้องต้น</h3>
<ol type="i">
<li>เสียบสาย ICSP กับบอร์ดแล้ว เสียบ UCON-UART ติดตั้ง driver usb2serial  ปกติ ก้อพร้อมใช้งานครับ</li>
<li>รันโปรแกรม avrdude-GUI.</li>
<li>การทดสอบง่ายๆที่สุดก้อ กด Read Fuse-bits</li>
</ol>
<p><a href="http://www.ayarafun.com/wp-content/uploads/2010/07/setting_p2.png"><img class="aligncenter size-full wp-image-1842" title="setting_p2" src="http://www.ayarafun.com/wp-content/uploads/2010/07/setting_p2.png" alt="" width="596" height="121" /></a></p>
<p><a href="http://www.ayarafun.com/wp-content/uploads/2010/07/setting_p2.png"></a>ถ้ากดอ่าน Fuse-bit แล้วไม่มีอะไร error ออกมา แสดงว่า เราติดตั้งโปรแกรม สำเร็จแล้วครับ<br />
แต่ถ้าไม่ work ตรวจสอบสาย กับ config ในโปรแกรม avrdude-GUI อีกรอบครับ อาจจะเลือกไอซีผิค เครื่องโปรแกรมผิด</p>
<p>มาถึงตอนนี้เครื่องเบิร์นแบบ USB ที่ถูกสุดในจักรวาลก้อพร้อมใช้งานแล้วครับ ตอนนี้เราแค่เลือกไฟล์ flash ก้อใช้งานได้แล้วครับ เจอกันในต่อสอง เกี่ยวกับ ใช้เครื่องเบิร์น FTDI Bitbang สำหรับเบิร์น bootloader ให้ arduino ครับ</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.ayarafun.com/2010/07/atmel-programming-with-ftdi-bitbang/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>รู้จัก In System Programming (ISP) เบิร์นไอชีได้อย่างไง</title>
		<link>http://www.ayarafun.com/2009/09/basic-isp-programming-for-av/</link>
		<comments>http://www.ayarafun.com/2009/09/basic-isp-programming-for-av/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 13:30:42 +0000</pubDate>
		<dc:creator>chang</dc:creator>
				<category><![CDATA[Embeded System]]></category>
		<category><![CDATA[avr]]></category>
		<category><![CDATA[bootloader]]></category>
		<category><![CDATA[isp]]></category>

		<guid isPermaLink="false">http://www.ayarafun.com/?p=1150</guid>
		<description><![CDATA[กลับมาแล้วครับ รอบนี้ผมก้อมีบทความ ละเอียดอีกแล้ว บทความนี้เป็นของพี่ samira ผมยืมมาช่วยเผยแพร่ทางเวปนี้อีกช่องทางครับ หวังว่าคนเพิ่งมาจะได้ประโยชน์นะครับ (ท่าน CEO ไอยาราฟันส์ขี้เกียจขึ้นเรื่อยๆ) ส่วนมากคนที่เพิ่งเข้ามาจับ จะเจอคำศัพท์ใหม่ๆเยอะเลย ซึ่งมันต้องใช้เวลานะครับ วันนี้ผมมาแนะนำเรื่องพื้นฐานก่อน เรื่อนการเบิร์นครับ กว่าจะเป็น เบิร์นโปรแกรมได้แบบ ทุกวันนี้ เมื่อก่อน เวลาเราพัฒนาคอนโทรลเลอร์ การเขียนข้อมูล ( data หรือ program ) ลงใน EEPROM (erasable rom) นั้น เขาจะต้องถอดเอา chip ไปล้างข้อมูลด้วยแสง ultraviolet ถึงจะเขียนโปรแกรมเข้าไปในใหม่ได้ ( ไม่รู้ว่าเกิดกันทัน ผมมาก้อไม่เห็นแล้วนะครับ ) และอายุการใช้งานจำกัด ดังนั้นจะเห็นว่า เวลาจะพัฒนาโปรแกรมอะไรใหม่ จะมีกระบวนการที่วุ่นวายมากๆเลย PROM ตัวแรกๆ ของโลก รูปจาก http://en.wikipedia.org/wiki/Read-only_memory ต่อมาความก้าวหน้าทาง Technology ทาง flash memory พัฒนามากขึ้น


No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">กลับมาแล้วครับ รอบนี้ผมก้อมีบทความ ละเอียดอีกแล้ว บทความนี้เป็นของพี่ samira ผมยืมมาช่วยเผยแพร่ทางเวปนี้อีกช่องทางครับ หวังว่าคนเพิ่งมาจะได้ประโยชน์นะครับ (ท่าน CEO ไอยาราฟันส์ขี้เกียจขึ้นเรื่อยๆ) ส่วนมากคนที่เพิ่งเข้ามาจับ จะเจอคำศัพท์ใหม่ๆเยอะเลย ซึ่งมันต้องใช้เวลานะครับ วันนี้ผมมาแนะนำเรื่องพื้นฐานก่อน เรื่อนการเบิร์นครับ</p>
<p style="text-align: left;"><strong> </strong><strong>กว่าจะเป็น เบิร์นโปรแกรมได้แบบ ทุกวันนี้</strong><br />
เมื่อก่อน เวลาเราพัฒนาคอนโทรลเลอร์ การเขียนข้อมูล ( data หรือ  program ) ลงใน EEPROM (erasable rom) นั้น เขาจะต้องถอดเอา chip  ไปล้างข้อมูลด้วยแสง ultraviolet ถึงจะเขียนโปรแกรมเข้าไปในใหม่ได้ (  ไม่รู้ว่าเกิดกันทัน ผมมาก้อไม่เห็นแล้วนะครับ ) และอายุการใช้งานจำกัด  ดังนั้นจะเห็นว่า เวลาจะพัฒนาโปรแกรมอะไรใหม่ จะมีกระบวนการที่วุ่นวายมากๆเลย</p>
<p style="text-align: left;"><img class="aligncenter" src="http://upload.wikimedia.org/wikipedia/commons/thumb/1/16/Eprom.jpg/300px-Eprom.jpg" alt="" width="300" height="156" /></p>
<p style="text-align: left;">PROM ตัวแรกๆ ของโลก รูปจาก <a href="http://en.wikipedia.org/wiki/Read-only_memory" target="_blank">http://en.wikipedia.org/wiki/Read-only_memory</a></p>
<p style="text-align: left;">ต่อมาความก้าวหน้าทาง Technology ทาง flash memory พัฒนามากขึ้น  ได้บรรจุ flash memory ลงไปใน chip ด้วยทำให้การทำงานลบล้างข้อมูลบน chip ง่ายขึ้น  อาจจะไม่ต้องใช้แสง ultraviolet เพื่อลบข้อมูล ใช้ไฟ ปกติก้อสามารถ อ่านเขียน ลบ  โปรแกรมได้ แตก้อ่ยังต้องมีเครื่องมือ หรือ  วงจรที่ต้องออกแบบมาเพื่อใช้งานนี้อยู่ดี</p>
<p style="text-align: right;"><strong>(อ่านต่อ click เลย)</strong><span id="more-1150"></span></p>
<h3 style="text-align: left;"><strong>เครื่องเบิร์นโปรแกรม  (flash programmers)</strong></h3>
<p style="text-align: left;">การอัดโปรแกรมเข้าไปในชิป  หรือเรียกภาษาเราบ่อยๆว่า &#8220;เบิร์นโปรแกรม&#8221; จะต้องใช้ไฟสูง หรือ  สัญญาณระดับไฟมากกว่า 12 โวลต์ เข้าไป tick ขาสัญญาณ เพื่อให้<span onclick="tagshow(event)">ไมโคร</span>ฯ  รับรู้ว่าจะมีการเขียนโปรแกรม ซึ่งในอดีตต้องมีการถอดเข้า ถอดออก ชิปบ่อยๆ  เพื่อย้ายชิปจากบอร์ดที่เราใช้ ไปยังเครื่องโปรแกรม ซึ่งจะมีวงจรที่ทำไฟสูง  แต่ด้วยความต้องการปัจจุบัน ทางบริษัทผลิต chip ได้บรรจุวงจร เพิ่มแรงดันเข้าไปใน  chip ด้วยจึงทำให้สามาร flash โปรแกรม เข้าไปใน chip ได้ด้วย เรียกว่า??In Circuit  System Programming ( ICSP or ISP) พูดตามภาษาชาวบ้านก็คือ การเขียน การเบิร์น  (burn) อุปกรณ์วงจรต่าง จึงลดลงไป</p>
<p>ส่วนการเบิร์นโปรแกรม (flash  programmers) (ISP) จะสามารถเบิร์นโปรแกรมได้สองวิธี เรียกว่า แบบ Parallel  Programming Mode (Parallel Mode) และแบบ <span onclick="tagshow(event)">Serial</span> Downloading Mode (ISP  mode)<br />
ถ้าเป็นแบบ pararell คือการต่อตรงเข้าไป mcu  ไม่ได้ผ่านชุดคำสั่งพิเศษ แต่ถ้าเป็น spi จะใช้ชุดคำสั่งใช้ในการ flash โปรแกรม  เข้าไป ที่นี้ขอกล่าวเฉพาะเขียนโปรแกรมแบบ serial<em><strong> ผ่านโมดุลสื่อสาร  SPI</strong></em></p>
<h2 style="text-align: left;"><strong>การทำงานของ In System Programming (ISP) </strong></h2>
<p style="text-align: left;">อย่างที่บอกไว้ตอนแรก flash memory สามารถเขียนได้ต้องใช้ไฟสูง  ในการขับขา gate จึงได้มีการพัฒนาเพิ่มทวีแรงดัน เพื่อสร้างไฟสูงภายในวงจร  การเบิร์นจึงทำได้ง่ายขึ้น</p>
<p>ในโมดุล ISP จะประกอบด้วยส่้วนการเขียนโปรแกรม  ลบโปรแกรม โดยมีรูปแบบ การส่ง command และ data ตาม datasheet หน้า 299<br />
<a href="http://www.atmel.com/dyn/resources/prod_documents/doc2545.pdf" target="_blank">http://www.atmel.com/dyn/resources/prod_documents/doc2545.pdf</a></p>
<p>บทความนี้ไม่ได้  มาชวนเขียนวิธีการเขียนโปรแกรมเพื่อลง flash  เพียงต้องการให้เข้าใจพื้นฐาน</p>
<p><strong> </strong></p>
<h3 style="text-align: left;"><strong>ขา <span onclick="tagshow(event)">MCU</span> ที่ใช้ใน In System  Programming</strong></h3>
<p style="text-align: left;"><img class="aligncenter" src="http://docs.google.com/File?id=dk2qpvk_960cn58rndd_b" alt="" width="500" height="370" />(ภาพ : ด้วยความเอื้อเฟื้อ จากเว็ปท่าน elmchan.org )</p>
<p style="text-align: left;">หากเข้าไปดูใน Atmel Chip จะเห็นว่า ขาของ chip เหล่านั้น  มีคำอธิบายไว้แทบทุกขาว่ามันทำอะไรบ้าง แต่เราจะสนใจแต่ ขาที่ใช้สำหรับ ISP<br />
<a href="http://www.atmel.com/dyn/resources/prod_documents/doc2545.pdf" target="_blank">http://www.atmel.com/dyn/resources/prod_documents/doc2545.pdf</a><br />
หน้า  2 ของเอกสารนี้ ท่านจะเห็น pin out ของ chip Atmega 44/88/168</p>
<p><strong>MOSI </strong>==  Master Out Slave In: data input<br />
<strong>MISO </strong>== Master In Slave out : data  output<br />
<strong>SCK</strong> == Serial ClocK : clock input<br />
<strong>RST</strong> == RESET: used to activate  the serial Programming</p>
<p>จากข้างบนจะเห็นว่า ขาที่บ่งว่า MOSI นั้น  จะเป็นขาส่งข้อมูลออก( Output ) ของตัวแม่ ( master )<br />
MISO นั้น  เป็นขาที่รับข้อมูล (input ) ที่ส่งมาจากลูก ( slave )<br />
SCK นั้น  เป็นตัวนาฬิกาคอยให้จังหวะการส่งข้อมูล<br />
ขาสุดท้ายก็คือ RST นั้น  คือตัวที่เริ่มให้มีการเขียนโปรแกรมลง chip</p>
<h3 style="text-align: left;"><strong>ขั้นตอนการทำงาน In  System Programming ผ่าน SPI ( จาก datasheet ของ Atmel )</strong></h3>
<p style="text-align: left;">ขั้นตอนการเขียนโปรแกรม ( code ) ลงบน chip นั้นจะส่งข้อมูลเป็นแบบ serial หรือ  ISP จะเริ่มต้นทำงานด้วยขณะที่ขา RST ถูกปรับให้มีค่า Logic high ( ระดับสัญญาณ  เท่ากับ Vcc )</p>
<p>สำหรับขา RST นั้น ปกติ ใช้สำหรับ reset โปรแกรม  กล่าวคือสัญญาณ Reset จะหยุดโปรแกรมและเริ่มต้นการทำงานใหม่ โดยเราทำให้ขา RST  มีระดับสัญญาณต่ำ ( logic ต่ำ )<br />
เมื่อขา RST ถูกตั้งให้เป็น High  คำสั่งพิเศษที่เรียกว่า Programming Enable instruction จะทำงานก่อน</p>
<p>สำหรับการรับส่งข้อมูลแบบ Serial คือการส่งข้อมูลจาก  ด้วยช่องสัญญาณเพียงช่องเดียว หรืือ ขาสัญญาณขาเดียว ในที่นี้คือขาสัญญาณ MISO และ  MOSI<br />
โดยข้อมูลจะส่งผ่าน MOSI ทีละ bit โดยแต่ละ bit สัญญาณจาก SCK  จะเป็นตัวควบคุมจังหวะของการรับส่ง และทางขา MISO  ใช้สำหรับรับข้อมูลจากลูกส่งกลับไปยังต้วแม่</p>
<p>โดยเริ่มจากข้อมูลใน chip  จะถูกลบหมด (chip erase) การลบข้อมูลใน flash memory และจะตามด้วยการเขียนค่า &#8220;FF&#8221;  (hexadecimal number) ลงไปในแต่ละตำแหน่งใน flash or ram memory ของ chip</p>
<p>ความเร็วของสัญญาณนาฬิกา ของ ISP จะถูกกำหนดโดยสัญญาณนาฬิกาอ้างอิงจาก  external clock ทีต่อที่ขา Xtal1 หรือ crystal ที่ต่อกับขา Xtal1&amp;Xtal2  โดยมีข้อกำหนดว่า ความเร็วของขา SCK นั้นจะเร็วไม่เกิน 1/16 ของ ความเร็วของ  crystal ไม่ได้</p>
<p>ฉะนั้น หากระบบของเรา ใช้ Crystal 16 MHz ความเร็วสูงสุดของ  SCK ก็จะได้แค่ 1 MHz แค่นั้น</p>
<h3 style="text-align: left;"><strong>โปรแกรมเบิร์นทำงานได้อย่างไง</strong></h3>
<p style="text-align: left;">โปรแกรมเบิร์น (Software  programmer) สำหรับ <span onclick="tagshow(event)">AVR</span> ที่นิยม ได้แก่ BASCOM ( basic ), avrstudio,  ponyprog , AVR Prog ซึ่ง โปรแกรมบางตัวสื่อสารตรง กับ mcu เลย อย่างเช่น ponyprog  ใช้สาย pararell สื่อสารแบบ SPI ตรงเข้า mcu เลย หรือบางตัวต้องผ่าน usb ติดต่อกับ  บอร์ดของเรา ซึ่ง hardware เหล่านี้จะสื่อสารข้อมูลโดยอาศัย protocol แบบ spi  ติดต่อกับ mcu อยู่ดี</p>
<p>ฉะนั้นโปรแกรมเบิร์นจึงเป็นการเขียนข้อมูล firmware  (hex code) เข้าไปในตัวชิปบนบอร์ดเรา<br />
software เช่น AVR studio, averdude หรือ  BASCOM ที่เราจะใช้เขียนโปรแกรมลง chip นั้น โปรแกรมเหล่านี้ จะมี Option  ให้เราเลือกใช้สายต่อ( hardware programmer ) ระหว่าง PC กับ  บอร์ดที่เราพัฒนา</p>
<p>สาเหตุที่เราต้องเลือกว่าจะใช้ programmer ตัวไหนนั้น  เพราะผู้สร้าง programmer แต่ละอัน ใช้ขาที่ใช้ทางฝั่ง PC สำหรับติดต่อกับ ขา MOSI,  MISO, SCK และ RST นั้น ไม่เหมือนกัน</p>
<p>ตัว hardware programmer  ซึ่งมีหลายรูปแบบ ไม่ว่าจะเป็น แบบต่อผ่าน สาย<strong> parallel สาย serial หรือ สาย <span onclick="tagshow(event)">USB</span></strong> ให้เราเลือกใช้ เช่น จาก <a href="http://www.captain.at/electronics/atmel-programmer/" target="_blank">http://www.captain.at/electronics/atmel-programmer/</a><br />
<img class="aligncenter" src="http://www.captain.at/electronics/atmel-programmer/th_atmega16-programmer.png" alt="" width="529" height="476" /></p>
<p>ต้วอย่าง<strong> serial programmer</strong> จาก <a href="http://www.serasidis.gr/circuits/avr_isp/avr_isp.htm" target="_blank">http://www.serasidis.gr/circuits/avr_isp/avr_isp.htm</a></p>
<p style="text-align: center;"><img style="cursor: pointer;" src="http://www.serasidis.gr/circuits/avr_isp/images/avr_isp_sch.jpg" alt="" width="600" height="306" /></p>
<p style="text-align: left;">จากข้างบน จะเห็นว่าสายต่อไปยัง MOSI ของparallel programmer  สองแบบนี้ มาจากคนละแหล่ง ของ parallel pin</p>
<p>อย่างไรก็ดี  ไม่ว่าสายที่ออกมาจาก ขาใหนก็ตามของ parallel or serial  port??ตัวรับที่อยู่บนบอร์ดของเรา จะมีมาตรฐานเดียวกันหมด กล่าวคือ??10 pin ICSP  header จะมีมาตรฐานเดียวกัน</p>
<p><a href="http://www.olimex.com/dev/pdf/avr-pg2b.pdf" target="_blank">http://www.olimex.com/dev/pdf/avr-pg2b.pdf</a><br />
<strong><br />
ขา 1 ==  MOSI<br />
ขา 2??== Vcc<br />
ขา 1??== LED หรือ เว้นว่าง<br />
ขา 4??== GND<br />
ขา 5??==  RST<br />
ขา 6??== GND<br />
ขา 7??== SCK<br />
ขา 8??== GND<br />
ขา 9??== MISO<br />
ขา  10??==GND</strong></p>
<p style="text-align: left;">เอาล่ะครับ จบสักที่นะครับ อาจจะเข้าใจยากสักนิดนะครับ บทความนี้ เป็นบทความเขียนร่วมกัน ผู้เขียนทั้งสอง คุณพี่ @samira จาก? St. Louis,  MO กับผม <a href="http://www.twitter.com/ayarafun">@ayarafun</a> ช่วยแต่งเติม? หวังว่าบทความคงจะมีประโยชน์บ้าง</p>
<p>บทความเขียนเรียบเรียงโดย samira ,St. Louis,  MO<br />
แนะนำ ตรวจ เพิ่มเติม แก้ใข โดย ChANg,??BKK, Thailand</p>
<h3>เอกสารอ้างอิง</h3>
<p style="text-align: left;"><a href="http://www.ikalogic.com/isp.php" target="_blank">http://www.ikalogic.com/isp.php</a><br />
<a href="http://www.olimex.com/dev/pdf/avr-pg2b.pdf" target="_blank">http://www.olimex.com/dev/pdf/avr-pg2b.pdf</a><br />
<a href="http://www.captain.at/electronics/atmel-programmer/" target="_blank">http://www.captain.at/electronics/atmel-programmer/</a></p>
<p style="text-align: left;"><strong>ข้อมูลเพิ่มเติมเกี่ยวกับ  Memory </strong><br />
<a href="http://en.wikipedia.org/wiki/Read-only_memory" target="_blank">http://en.wikipedia.org/wiki/Read-only_memory</a><br />
<a href="http://en.wikipedia.org/wiki/Flash_memory" target="_blank">http://en.wikipedia.org/wiki/Flash_memory</a></p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.ayarafun.com/2009/09/basic-isp-programming-for-av/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arduino Hacking ตอน Burn Bootloader ง่ายนิดเดียว</title>
		<link>http://www.ayarafun.com/2009/09/hacking-arduino-add-new-programming/</link>
		<comments>http://www.ayarafun.com/2009/09/hacking-arduino-add-new-programming/#comments</comments>
		<pubDate>Sun, 06 Sep 2009 16:46:18 +0000</pubDate>
		<dc:creator>chang</dc:creator>
				<category><![CDATA[Arduino-Hacking]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[bootloader]]></category>

		<guid isPermaLink="false">http://www.ayarafun.com/?p=1092</guid>
		<description><![CDATA[ตอนนี้ คนเริ่มใช้ Arduino กันเยอะมากขึ้นแล้ว หลังจากที่สำรวจ ตอนนี้ก้อมี บอร์ดที่เรียกว่า Arduino(clone) /Freeduino /m168 board อยู่หลายเจ้าเลย เดี่ยวคงจะมีปัญหา ตัว bootloader พังบ้างล่ะ ตอนผมลองเล่นแรกๆ ส่วนมากจะชอบสร้างบอร์ดเองกัน แต่จะติดปัญหา ส่วนของเครื่องโปรแกรม คือเครื่องโปรแกรมที่อยู่ในโปรแกรม Arduino มันหาไม่ได้ คือจะเพิ่มเครื่องโปรแกรมที่เรามีอยู่ได้หรือป่าว ทางเราเลยจะบอกวิธีการ hack สุดแสนจะง่าย ให้ Arduino ใช้เครื่องโปรแกรมเราได้ ขอเล่าย้อนไปก่อน การจะ Hack จะต้องเข้าใจโครงสร้างของ Arduino ก่อน Arduino เป็นโปรเจค open-source ที่รวมกับ โปรเจค open-source หลายๆตัวเข้ามาใช้ (อันนี้ต้องขอบคุณ คนพัฒนาในอดีตครับ ทำเอาไว้เยอะมาก) อย่างเช่น ตัวโปรแกรม base จะเป็น java ทำให้มันทำงานได้หลายๆ platform ตัวคอมไพล์เลอร์ของ Arduino


No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">ตอนนี้ คนเริ่มใช้ Arduino กันเยอะมากขึ้นแล้ว หลังจากที่สำรวจ ตอนนี้ก้อมี บอร์ดที่เรียกว่า<strong> Arduino(clone) /Freeduino /m168 board </strong>อยู่หลายเจ้าเลย</p>
<p style="text-align: justify;">เดี่ยวคงจะมีปัญหา ตัว bootloader พังบ้างล่ะ ตอนผมลองเล่นแรกๆ ส่วนมากจะชอบสร้างบอร์ดเองกัน แต่จะติดปัญหา ส่วนของเครื่องโปรแกรม คือเครื่องโปรแกรมที่อยู่ในโปรแกรม Arduino มันหาไม่ได้ คือจะเพิ่มเครื่องโปรแกรมที่เรามีอยู่ได้หรือป่าว ทางเราเลยจะบอกวิธีการ hack สุดแสนจะง่าย ให้ Arduino ใช้เครื่องโปรแกรมเราได้</p>
<p style="text-align: justify;">ขอเล่าย้อนไปก่อน การจะ Hack จะต้องเข้าใจโครงสร้างของ Arduino ก่อน</p>
<blockquote>
<p style="text-align: justify;"><em>Arduino เป็นโปรเจค open-source ที่รวมกับ โปรเจค open-source หลายๆตัวเข้ามาใช้ (อันนี้ต้องขอบคุณ คนพัฒนาในอดีตครับ ทำเอาไว้เยอะมาก) อย่างเช่น ตัวโปรแกรม base จะเป็น java ทำให้มันทำงานได้หลายๆ platform ตัวคอมไพล์เลอร์ของ Arduino จะใช้ avr-gcc และตัวสุดท้าย ตัวโปรแกรม ใช้ avrdude ในการ burn โปรแกรม</em></p>
</blockquote>
<p style="text-align: justify;">ถ้าเข้าใจโครงสร้างมันแล้วจะใส่อะไร เพิ่มอะไรก้อพอจะหาทางไปต่อได้ถูกครับ (ใช้พี่ google ดำไปได้ต่อ)</p>
<p style="text-align: justify;">กลับมาที่ bootloader อีกรอบ การเบิร์น boot-loader นั้นไม่ยากยุ่ง เพราะว่าในโปรแกรม Arduino จะมีส่วนของ burn bootloader อยู่แล้ว ถ้าท่านมีเครื่องโปรแกรมตามรายชื่อในรูปก้อใช้งานได้เลยครับ แต่ปัญหามีอยู่ว่า <span style="color: #ff0000;"><span style="text-decoration: underline;">เครื่องโปรแกรมที่มีรายชื่อ เป็นเครื่องที่ไม่มีขายในไทย จะเอามาใช้งานได้บ้างไหม</span></span></p>
<p><img class="aligncenter" src="http://lh3.ggpht.com/_Yf5JCo_hjfM/SqPjHrdBngI/AAAAAAAACOk/sMw-RkGMx-w/s400/list_programmers.jpg" alt="" width="333" height="400" /></p>
<p style="text-align: justify;">โดยปกติจะใช้<strong> burn bootloader </strong>ตอนไหนบ้าง ผมจะใช้ตอนแรก ในการสร้างบอร์ดครับ หลังจากที่ได้ไอชีมาใหม่ ยังไม่ได้ใส่ firmware กับอีกรอบที่ bootloader เสีย (อันนี้โอกาสเกิดได้น้อย แต่มันก้อยังเสียได้) อาการเสียของ bootloader ดูง่ายๆ ถ้า LED13 บนบอร์ดไม่กระพริบ แสดงว่า boot-loader มันจะเสียแล้ว ?วิธีการเบิร์น bootloader ก้อแค่ กดที่เมนู Burn Bootloader ตอนโปรแกรมมันจะเบิร์น firmware และ set fusebit ให้</p>
<blockquote><p><strong>::กรอบแทรก</strong> :: เดี่ยวคนมาใหม่จะงง ขออธิบายให้รู้จัก bootloader กันสักนิด</p>
<p>? bootloader คือ firmware ส่วนหนึ่งที่ทำหน้าที่ เป็นที่ช่วยในการ upload โปรแกรม หรือ sketch ที่เราเขียนเข้าไปใน flash rom ผ่านทางสาย serial หรือ usb ซึ่งแล้วแต่คนออกแบบครับ โดยไม่จำเป็นต้องมีเครื่องโปรแกรมไอชี</p></blockquote>
<p style="text-align: justify;">สำหรับวิธีการ Hacking ให้ Arduino มีเครื่องโปรแกรมนั้นง่ายๆครับ ก้อแค่ edit file ไฟล์ programmers.txt ซึ่งจะอยู่ที่? &gt;&gt;<span style="text-decoration: underline;"><strong> [drive:]\arduino\hardware\programmers.txt </strong></span>ดังรูป</p>
<p><img class="aligncenter" src="http://lh5.ggpht.com/_Yf5JCo_hjfM/SqPi8TPo-eI/AAAAAAAACOg/CTh_cB0stq0/s400/find_programmers_txt.jpg" alt="" width="350" height="400" /></p>
<p style="text-align: justify;">วิธีการเพิ่มแค่ใส่ CODE เข้าไปเพิ่ม แล้ว restart โปรแกรมใหม่เท่านั้นเอง ตัวแปร config ต่างๆมันจะเก็บไว้ในรูปแบบ object ของ java เอาที่สำคัญๆ ได้แก่</p>
<p style="padding-left: 60px; text-align: justify;"><em><strong>.communtication</strong></em> กำหนดว่าใช้ usb หรือ serial</p>
<p style="padding-left: 60px; text-align: justify;"><em><strong>.protocol </strong></em>เครื่องโปรแกรมใช้รูปแบบการรับส่งข้อมูลแบบไหน อันนี้ท่านต้องรู้จักโปรแกรม avrdude แล้วท่านจะรู้จัก protocol ต่างๆครับ</p>
<p style="text-align: justify;"><strong>เครื่องโปรแกรมที่มีในไทยนะครับ ที่ผมเคยทดลองใช้อยู่ จะมีรุ่นดังต่อไปนี้นะครับ</strong></p>
<ol>
<li>AVR-ISP (LPT)</li>
<li>AVR-ISP (USB)</li>
<li>USBASP (รุ่นทำกันเอง)</li>
</ol>
<p><span id="more-1092"></span></p>
<h2><strong><span style="color: #0000ff;">AVR-ISP-LPT</span></strong></h2>
<p><strong><img class="aligncenter" src="http://lh3.ggpht.com/_Yf5JCo_hjfM/SnMtIutBhoI/AAAAAAAACBk/Mp_9xBbVrAg/s400/P1220561.JPG" alt="" width="400" height="300" /></strong></p>
<p style="text-align: justify;"><a href="http://www.etteam.com/product/03A09.html">ET -AVR ISP </a> ตัวแรกนี้ ก้อมันถูกดี พอใช้งานได้ แต่มันเป็น LPT เดี่ยวนี้เลยไม่นิยมกัน? แต่ก้อแนะนำเลยสำหรับคนที่ นานๆๆ จะเอามาใช้สักที่</p>
<p style="text-align: justify;">วิธีติดตั้งก้อ copy code เข้าไปใส่ใน programming.txt</p>
<pre class="brush : java">ettparallel.name=ETT ISP Parallel Programmer
ettparallel.protocol=pony-stk200
ettparallel.force=true
#ettparallel.delay=200</pre>
<p>ก้อใส่ที่บรรทัดล่างสุดครับ</p>
<p><img class="aligncenter" src="http://lh4.ggpht.com/_Yf5JCo_hjfM/SqPibB9YLpI/AAAAAAAACOY/wlplryzp8YY/s400/edit_programmers.jpg" alt="" width="400" height="294" /></p>
<p style="text-align: justify;">หลังจากนั้นเปิดโปรแกรม Arduino แล้วเปิดใหม่ จะเห็น ett isp ที่เพิ่มเข้าไป ตอนนี้ก้อสามารถเบิร์นด้วย ETT ISP ได้แล้ว และ เราใช้วิธีนี้ เพิ่ม ตัว programmer ?ตัวอื่นด้วยครับ</p>
<p><img class="aligncenter" src="http://lh4.ggpht.com/_Yf5JCo_hjfM/SqPilPLQLsI/AAAAAAAACOc/l34koHagnmE/s400/ettisp_add.jpg" alt="" width="288" height="173" /></p>
<p style="text-align: justify;">** วิธีการใช้งาน ก้อแค่ กด เลือก ETT ISP เครื่องโปรแกรมนี้มีปัญหานิดหน่อยครับ ถ้าบนบอร์ดมี LED13 ที่ต่อกับ SPI บัสอยู่ควรจะเอาออกด้วย มันจะทำให้ burn ไม่ได้ครับ</p>
<h2><span style="color: #0000ff;">DIY USBASP</span></h2>
<p><img class="aligncenter" src="http://lh5.ggpht.com/_Yf5JCo_hjfM/SnMtIE2VZCI/AAAAAAAACBg/Wy0wTRyTFhQ/s400/P1220559.JPG" alt="" width="400" height="300" /></p>
<p style="text-align: justify;">ตัวนี้เป็นรุ่นยอดนิยมอีกเช่นกัน สำหรับมือเก๋า ที่ชอบทำเอง ?และ งงเองบ่อยๆๆ ผมก้อกว่าจะใช้งานได้ ก้องง ไปนานเหมือนกัน ใครสนใจก้อไปหาวงจรและทดลองทำได้ครับ USBASP(link หน่อย)</p>
<pre class="brush : java">usbasp.name=Usbasp
usbasp.communication=usb
usbasp.protocol=usbasp</pre>
<p style="text-align: justify;">รุ่นนี้ผมใช้แล้วมันงอแงง บ่อย เลยเลิกใช้ไปครับ เครื่องเบิร์น น่าจะใช้อะไรที่ไว้ใจได้ครับ หลังๆๆ ที่ไอยาราฟันส์ เบิร์น IC เป็น เข่งๆๆ เลยไอชีเสีย เครื่องเบิร์น ใช้งานได้บ้างไม่ได้บ้าง? มันเสียเวลาครับ</p>
<h2><span style="color: #0000ff;">AVR-ISP-USB</span></h2>
<p style="text-align: center;"><img class="aligncenter" src="http://lh5.ggpht.com/_Yf5JCo_hjfM/SnMtHBzpnsI/AAAAAAAACBY/ZKDj8Hw3Gvk/s400/P1220555.JPG" alt="" width="400" height="300" /></p>
<p style="text-align: justify;">ตัวนี้เป็นของ <a href="http://www.sureelectronics.net/goods.php?id=18">sure electronic</a> สำหรับสีเขียวฟ้า เป็นของทำเลียนแบบ ของแท้ครับ แต่ถ้าเป็นของไทยๆ ก้อจะมี? <a href="http://www.etteam.com/product/avr/et-avr-isp-usb-v1.html">ETT </a>จะกล่องสีดำครับ หลังจากผมใช้ LPT แล้วมันมีปัญหาบ้าง USBASP ก้อยังไม่พอใจอีก ผมลองของ ett ข้างห้องมันก้อไม่ถูกใจ ก้อมันโหลนิ ใครๆก้อมี ฮ่าๆ ผมเลยอยากลองของแพงๆบ้าง เลยซื้อกล่องเขียวๆมาจาก เวปจีนราคาประมาณ 1200 บาทครับ (CEO รวยจิงๆ)</p>
<pre class="brush : java">serialavrisp.name=SerialAVRISP
serialavrisp.communication=serial
serialavrisp.protocol=stk500v2</pre>
<p>หลังจากใส่ code ครบจะเป็นดังภาพ</p>
<p style="text-align: left;"><img class="aligncenter" src="http://lh4.ggpht.com/_Yf5JCo_hjfM/SqPiNBfElkI/AAAAAAAACOU/--IOlomtCzI/s400/add_all_programmer.jpg" alt="" width="288" height="184" /></p>
<p style="text-align: justify;">ตอนนี้ ท่านก้อสามารถเอาเครื่องโปรแกรมในไทย มาใช้งานได้แล้ว สำหรับเครื่องของยี่ห้ออื่น เดี่ยวเอาไว้ผมหายืมมาได้จะมาบอกวิธีใช้อีกที่ครับ</p>
<p style="text-align: justify;">ประสบการณ์เสริมที่ได้จาก Arduino นะครับ เมื่อก่อนที่ใช้ avr เวลาโปรแกรมจะผ่าน เครื่องโปรแกรมไอชี พวก isp programming ผมจะเจอปัญหาเครื่องโปรแกรมไม่ดี เบิร์นไอชีเสียบ่อยๆมาก ถ้าเป็นไอชี mega8 ตัวล่ะ 50 บาท ไม่เท่าไร บ้างที่ smt ตัวแพงๆ เบิร์นเสียมันเจ็บใจ แต่หลังจากที่ upload ผ่าน bootloader ก้อมีข้อดีอย่างหนึ่ง คือโอกาสที่จะเบิร์นให้ไอชีเสียมันก้อน้อยลงครับ (เพราะว่าไม่ค่อยได้ใช้เครื่องเบิร์น ไม่มีคุณภาพมั่ง)</p>
<p style="text-align: justify;">สำหรับ bootloader ถ้าท่านประยุกต์ใช้กับ โปรเจค AVR อื่นๆ ได้นะครับ ซึ่งหาได้จากในไอยาราฟันส์ จะมีอยู่ จับ ettstamp ใส่ bootloader ,bootloader แบบ usbasp</p>
<p><em>Justfun</em></p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.ayarafun.com/2009/09/hacking-arduino-add-new-programming/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ไอยาราฟันส์ เผยต้นแบบ bootloader เวอร์่ชั่น USB สำหรับ arduino</title>
		<link>http://www.ayarafun.com/2009/04/usbasp-with-arduino-boot-loader/</link>
		<comments>http://www.ayarafun.com/2009/04/usbasp-with-arduino-boot-loader/#comments</comments>
		<pubDate>Fri, 10 Apr 2009 19:49:02 +0000</pubDate>
		<dc:creator>chang</dc:creator>
				<category><![CDATA[Arduino-Hacking]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[bootloader]]></category>
		<category><![CDATA[usb]]></category>
		<category><![CDATA[usbasp]]></category>

		<guid isPermaLink="false">http://www.ayarafun.com/?p=256</guid>
		<description><![CDATA[ยุคนี้เป็นคอมพิวเตอร์รุ่นที่สาม หรือ รุ่นที่สี่ ไม่แน่ใจ ตอนนี้เราสามารถพกพาคอมพิวเตอร์ความเร็วสูงไปไหนก้อได้ ยุคต่อไป เราคงใส่กระเป๋าตังได้แล้ว ด้วยกระแส ยุคที่เครื่อง?โน๊ตบุ๊ต ครองเมือง ทุกอย่างเล็กลง เพื่อให้เหมาะกับการพกพา?เลยทำให้ตัด?พอร์ตที่ไม่ได้ใช้งานออกไปเรื่อย?พอร์ตสือสาร?อย่าง?serial กับ pararell เลยโดนตัดไป แรกๆ เนื่องจากการเข้ามาของ USBถ้าตอนนี้ ใครมีต้องรีบเก็บไว้เลยนะครับ Retro ดี เผื่อจะได้แต่งบ้านได้ ตอนนี้เวลาจะ upload ไฟล์ หรือ การเบิร์นโปรแกรม ด้วยไมโครฯ อาจจะยุ่งยากขึ้นไปอีก การเขียนโปรแกรม พัฒนาโปรแกรมบนบอร์ดไมโครคอนโทรลเลอร์มักจะใช้ พอร์ทสื่อสาร อย่าง serial port? เนื่องจากความง่าย เข้าถึงคอมพิวเตอร์ได้เลย อย่าง arduino จะ upload โปรแกรม จะผ่าน port serial หรือจะให้ดูดี จะใส่ไอชี usb 2 serial ไว้บนบอร์ด แต่จริงก้อยังเป็น serial ไม่ได้เป็น usb


No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">ยุคนี้เป็นคอมพิวเตอร์รุ่นที่สาม หรือ รุ่นที่สี่ ไม่แน่ใจ ตอนนี้เราสามารถพกพาคอมพิวเตอร์ความเร็วสูงไปไหนก้อได้ ยุคต่อไป เราคงใส่กระเป๋าตังได้แล้ว ด้วยกระแส ยุคที่เครื่อง?โน๊ตบุ๊ต ครองเมือง ทุกอย่างเล็กลง เพื่อให้เหมาะกับการพกพา?เลยทำให้ตัด?พอร์ตที่ไม่ได้ใช้งานออกไปเรื่อย?พอร์ตสือสาร?อย่าง?serial กับ pararell เลยโดนตัดไป แรกๆ เนื่องจากการเข้ามาของ USBถ้าตอนนี้ ใครมีต้องรีบเก็บไว้เลยนะครับ Retro ดี เผื่อจะได้แต่งบ้านได้ <img src='http://www.ayarafun.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>ตอนนี้เวลาจะ upload ไฟล์ หรือ การเบิร์นโปรแกรม ด้วยไมโครฯ อาจจะยุ่งยากขึ้นไปอีก</p>
<p style="text-align: justify;">การเขียนโปรแกรม พัฒนาโปรแกรมบนบอร์ดไมโครคอนโทรลเลอร์มักจะใช้ พอร์ทสื่อสาร อย่าง serial port? เนื่องจากความง่าย เข้าถึงคอมพิวเตอร์ได้เลย อย่าง arduino จะ upload โปรแกรม จะผ่าน port serial หรือจะให้ดูดี จะใส่ไอชี usb 2 serial ไว้บนบอร์ด แต่จริงก้อยังเป็น serial ไม่ได้เป็น usb จริงๆครับ? ก้อเลยเป็นที่มาของโครงการใหม่ เพื่อให้ arduino สามารถ upload โปรแกรมผ่าน usb ได้</p>
<p style="text-align: center; "><img class="highslide-image aligncenter" title="Click to close image, click and drag to move. Use arrow keys for next and previous." src="http://lh3.ggpht.com/_Yf5JCo_hjfM/SZb8RjJKG6I/AAAAAAAABBE/SOgB6elY9sc/s800/P1210185.JPG%22%20onclick=%22javascript:pageTracker._trackPageview(" alt="" width="384" height="288" /><strong>รูปบอร์ด arduinoS3v3 แบบ upgrade แล้ว</strong></p>
<p style="text-align: left; "><span id="more-256"></span></p>
<p><strong>ประโยชน์ที่คิดว่าน่าจะได้รับ</strong></p>
<p style="text-align: justify;">การใช้ usb จะได้ประโยชน์หลายทาง อย่างแรกๆ เราจะได้ไฟเลี้ยง 5? โวลต์นำไปใช้งานต่อได้เลย ไม่ซื้อ adaptor (จะงกกันไปถึงไหน) และอีกอย่าง ลดความยุ่งยาก เรื่อง ?serial to usb มาใช้กับเครื่องคอมเราอีก ก้อออกแนวงก อยู่ดี และ ก้อความเร็วในการสือสารข้อมูล ความเร็วสูงมาก ไมโครฯ ได้ต่อ ยูเอสบี จะเข้าขั้นเทพแน่นอน</p>
<p style="text-align: justify;">แล้วเราจะใช้?usb บนไมโครฯ ได้อย่างไงล่ะ?ดูเหมือนอะไรก้อดูดี แต่มีข่าวร้ายครับ AVR?Mega รุ่นที่มีขาย ตัว hardware หรือ ตัว chip ไม่ได้ มีโมดุล USB มาด้วย อยากได้ต้องสั่งเข้ามา แต่ว่ายังมีทางนะครับ เมื่อ hardware ไม่?support?ก้อเขียน software มาใช้งาน USB ขึ้นมาเองเลย ซึ่งเป็นอีกโปเจค open source อีกโด่งดัง ชื่อว่า<a href="http://www.obdev.at/products/avrusb/index.html"> LIB-AvrUSB</a></p>
<p style="text-align: justify;"><a href="http://www.obdev.at/products/avrusb/index.html">LIB-AvrUSB</a> เป็น Software-USB? ที่มีคนสนใจนำประยุกต์ใช้หลากหลาย ก้อทำให้ชิปตัวล่ะ 50 บาท ใช้งาน usb ได้ ใครจะไม่สนล่ะ ตัว software &#8211; usb อาจจะไม่ได้รวดเร็วเหมือน usb จริง ความเร็วที่มันทำได้แค่ 1.0 MHz เทียบกับความเร็วของพอร์ต USB v1.0 ตัวเก่า ยังได้ 12.0? MHz</p>
<p style="text-align: justify;">โดยเครื่องโปรแกรมแบบยูเอสบีแบบราคาถูกๆ?ที่ใช้โปรแกรม Lib-AVRUSB คือ??<a href="http://www.fischl.de/usbasp/">USBasp</a> ใครอยากได้เครื่องโปรแกรมถูกๆ ลองเข้าไปดู ส่วน?bootloader ก้อพัฒนามาจาก Usbasp ดังนั้น เหมือนเข้าโหมด loader ก้อจะใช้งานเหมือนเครื่องโปรแกรม usbasp เลย ดังตัวอย่างในโปรเจค ?<a href="http://metalab.at/wiki/Metaboard">metaboard</a></p>
<p><img class="aligncenter" src="http://metalab.at/wiki/images/thumb/5/58/Metaboard-circuit.gif/700px-Metaboard-circuit.gif" alt="" width="700" height="385" /></p>
<p style="text-align: center; ">รูปจาก?<a href="http://metalab.at/wiki/Metaboard">http://metalab.at/wiki/Metaboard</a></p>
<p><span style="color: #0000ff;"><strong>เริ่มลุยกันเลยดีกว่า</strong></span></p>
<p>มาดูส่วนของ software ของเครื่องโปรแกรม Usbasp กันก่อนครับ จะเป็นเครื่องโปรแกรม หรือ ตัว bootloader ส่วนนี้จะเหมือนกัน ซึ่งประกอบไปด้วย</p>
<p>- ?ส่วนไดร์เวอร์ ยูเอสบีคอมพิวเตอร์ ชื่อ??<a href="http://libusb-win32.sourceforge.net/">LibUSB</a></p>
<p>- ?ส่วน firmware บนบอร์ด?<a href="http://www.obdev.at/products/avrusb/usbasploader.html">USBasp-Loader</a> หรือ?<a href="http://metalab.at/wiki/Metaboard">http://metalab.at/wiki/Metaboard</a></p>
<div>มาในการทดลองนี้ จะลองอะไรง่ายๆ ก่อนทำบอร์ดทดลองง่าย เพื่อจะลอง?bootloader แบบใหม่?เพื่อเอามาใช้กับ arduino</div>
<p><strong>ขั้นตอนการเตรียมอุปกรณ์</strong></p>
<p>เตรียมส่วน hardware บอร์ด ผมทำบอร์ดเพิ่มเติม มาใช้กับบอร์ด arduino ชุดเดิม โดยดูจากวงจรข้างบน จะมีส่วนของ USB เพิ่ม</p>
<p style="text-align: justify;">ส่วนบอร์ดที่ใส่เพิ่มไป ก้อ usb shield แบบบ้านๆ ครับ ตัวบอร์ดได้มาจาก ett ครับ คงจะหามาทำกันไม่ยาก ดูจากด้านบน ชัดๆ อุปกรณ์จริงๆไม่มีอะไรมากครับ zener กับ R รวมกันไม่ถึง 20 บาท</p>
<div style="text-align: justify;">ผมหา R 68ohm ไม่มี เลยเอา R 75 ohm คงเอาไว้ limit กระแส ควรจะมีไว้ครับ และ ziner didode 3.6v ไม่มี เอา 3.3v ใส่แทน ก้อยังทำงานได้</div>
<p><img class="highslide-image alignnone" title="Click to close image, click and drag to move. Use arrow keys for next and previous." src="http://lh3.ggpht.com/_Yf5JCo_hjfM/SZb8bbUThTI/AAAAAAAABBU/erUB7bzFxwk/s800/P1210189.JPG" alt="" width="230" height="173" /></p>
<p>ส่วนด้านล่าง ใช้เทคโนโลยี R แปะๆ</p>
<p><img class="highslide-image alignnone" title="Click to close image, click and drag to move. Use arrow keys for next and previous." src="http://lh6.ggpht.com/_Yf5JCo_hjfM/SZb8gVGu2FI/AAAAAAAABBc/6JI-mmkeezA/s800/P1210191.JPG" alt="" width="230" height="173" /></p>
<p>มาส่วนของ firmware bootloader บ้างนะครับ?เข้าไปที่นี้ครับ <a href="http://www.obdev.at/products/avrusb/usbasploader.html">http://www.obdev.at/products/avrusb/usbasploader.html</a> จะมี source ของ bootloader ซึ่งทางผม ก้อเอามาใช้งานเลย</p>
<p><strong>ส่วนของโปรแกรม Arduino IDE</strong></p>
<p>โดย arduino นี้ผมลองกับ mega8 นะครับ จึงไฟล์ mega8_16mhz.hex ไปใส่ไว้ที่ /bootloader/usbasp/</p>
<p>จากนั้นมา modify arduino ต่อครับ เอา quote นี้ใส่ไปใน board.txt</p>
<pre class="brush: java">ArduinoSoftUSB.name=ArduinoSoftUSB
ArduinoSoftUSB.upload.protocol=usbasp
ArduinoSoftUSB.upload.maximum_size=7168
ArduinoSoftUSB.upload.speed=19200
ArduinoSoftUSB.bootloader.low_fuses=0x9f
ArduinoSoftUSB.bootloader.high_fuses=0xc0
ArduinoSoftUSB.bootloader.path=usbasp
ArduinoSoftUSB.bootloader.file=mega8_16mhz.hex
ArduinoSoftUSB.bootloader.unlock_bits=0x3F
ArduinoSoftUSB.bootloader.lock_bits=0x2F
ArduinoSoftUSB.build.mcu=atmega8
ArduinoSoftUSB.build.f_cpu=16000000L
ArduinoSoftUSB.build.core=arduino</pre>
<p>จากนั้น เข้าโปรแกรม เสียบสาย ISP update bootloader ตัวใหม่ ตอนนี้ arduino ท่านจะใช้ burn ผ่าน usb ได้แล้ว</p>
<p><strong><span style="color: #0000ff;">วิธีการใช้งานนะครับ</span></strong></p>
<p style="text-align: justify;">จะเข้าโหมด bootloader ต้อง jump PB7 หรือ arduino pin7 ลง gnd แล้วกด reset ถ้าลง driver แล้ว จะปรากฏ อุปกรณ์ usbasp ใน device manager เลยครับ จากนั้น ท่านก้อสามารถใช้ avrdude burn โปรแกรมเข้าไปใหม่ได้ หรือใช้ arduino ก้อ upload sketch ได้เลยครับ เมื่อเสร็จ จะออกจาก bootloader เข้าสู่การทำงานปกติต่อไปครับ</p>
<p style="text-align: justify;"><strong>การทดสอบผมว่ามัน upload เร็วดีกว่า bootloader ที่เป็น Serial เยอะมากครับในการทดสอบกับ arduino usb จะเจอปัญหา เล็กน้อย ในตอน upload sketch ถ้าต่อสาย serial อยู่ เนื่องจากบอร์ด arduino สามารถ auto-reset จาก serial ได้ ตอน upload มันจะเข้าไป reset ผ่านสาย serial ด้วย ถ้าท่านต่อสาย serial ด้วย ให้ disable โหมดนี้ออกด้วยครับ เดี่ยวมันจะตีกัน </strong></p>
<p>ขอให้สนุกครับ</p>
<p><span style="color: #0000ff;"><strong>เสริมอีกนิดหน่อย</strong></span></p>
<p>ตอนนี้ ถ้าใครอยากจะเอา arduino ไปลองกับ usb ?ตอนนี้มี port ตัว AvrUSB ไปใช้กับ arduino แล้ว</p>
<p>ต่อไป เราจะได้ใช้ USB กันง่ายๆ ถ้าใครว่างๆ ลองเอาไปทำดูครับ เดี่ยวผมจัดการงานเสร็จจะทดลองดูตามโน่นบ้าง</p>
<p><img src="http://arduino.nl/wp/wp-content/boarduinousb2s-150x150.jpg" border="0" alt="" /> <img src="http://arduino.nl/wp/wp-content/boarduinousb1s-150x150.jpg" border="0" alt="" /></p>
<p>รูปจากเวป?<a href="http://code.rancidbacon.com/ProjectLogArduinoUSB" target="_blank">http://code.rancidbacon.com/ProjectLogArduinoUSB</a></p>
<p><strong>Project Log : Arduino USB</strong></p>
<p><a href="http://code.rancidbacon.com/ProjectLogArduinoUSB" target="_blank">http://code.rancidbacon.com/ProjectLogArduinoUSB</a></p>
<p><a href="http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1204833437" target="_blank">http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1204833437</a></p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.ayarafun.com/2009/04/usbasp-with-arduino-boot-loader/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>ทดลอง AVRDUDE อัพโหลตโปรแกรมเข้า Arduino</title>
		<link>http://www.ayarafun.com/2009/04/upload-arduino-with-avrdude-gui/</link>
		<comments>http://www.ayarafun.com/2009/04/upload-arduino-with-avrdude-gui/#comments</comments>
		<pubDate>Fri, 03 Apr 2009 05:35:10 +0000</pubDate>
		<dc:creator>chang</dc:creator>
				<category><![CDATA[Arduino-Hacking]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[avrdude]]></category>
		<category><![CDATA[bootloader]]></category>
		<category><![CDATA[gui]]></category>

		<guid isPermaLink="false">http://www.ayarafun.com/?p=321</guid>
		<description><![CDATA[สวัสดีครับ พ่อแม่ พี่น้อง ของ Electonic ช่วงนี้ปิดเทอม อากาศร้อน ไม่น่าอยู่บ้านไปอย่างยิ่งๆ หาอะไรทำหาลืมความร้อนกันบ้าง (ไม่เห็นมันจะเกี่ยวกันเลย) เรามาต่ออะไรกันง่ายๆครับ มีคนถามผมบ่อยว่า arduino เอาไป burn หรือ upload แบบไม่ผ่าน arduino ide ได้หรือป่าว อยากจะเขียนบน avr-studio หรืออย่างอื่นจะ upload ได้ไหม &#160; &#160; ก้อต้องบอกได้ว่า arduino สามารถใช้โปรแกรมอื่น upload hex ได้นะครับ เข้าใจ bootloader ส่วนของ bootloader ที่ใส่ใน mcu เป็นตัวส่วนช่วย upload ไฟล์ครับ ซึ่งเขาทำไว้ compatible กับอุปกรณ์ เบิร์นมาตราฐานอยู่แล้วครับ อย่างใน arduino เขาจะใส่ stk500-v1 ไว้ ฉะนั้นการทำงานของ arduino ?ในตอนเข้าโหมด


No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">สวัสดีครับ พ่อแม่ พี่น้อง ของ Electonic ช่วงนี้ปิดเทอม อากาศร้อน ไม่น่าอยู่บ้านไปอย่างยิ่งๆ หาอะไรทำหาลืมความร้อนกันบ้าง (ไม่เห็นมันจะเกี่ยวกันเลย)</p>
<p style="text-align: justify;">เรามาต่ออะไรกันง่ายๆครับ มีคนถามผมบ่อยว่า arduino เอาไป burn หรือ upload แบบไม่ผ่าน arduino ide ได้หรือป่าว อยากจะเขียนบน avr-studio หรืออย่างอื่นจะ upload ได้ไหม</p>
<p style="text-align: justify;">&nbsp;</p>
<p style="text-align: justify;">&nbsp;</p>
<p style="text-align: center;"><strong><span style="color: #ff0000;">ก้อต้องบอกได้ว่า arduino สามารถใช้โปรแกรมอื่น upload hex ได้นะครับ</span></strong></p>
<p style="text-align: center;"><strong><span style="color: #ff0000;"><br />
</span></strong></p>
<h3><strong>เข้าใจ bootloader</strong></h3>
<p style="text-align: justify;">ส่วนของ bootloader ที่ใส่ใน mcu เป็นตัวส่วนช่วย upload ไฟล์ครับ ซึ่งเขาทำไว้ compatible กับอุปกรณ์ เบิร์นมาตราฐานอยู่แล้วครับ อย่างใน arduino เขาจะใส่ stk500-v1 ไว้ ฉะนั้นการทำงานของ arduino ?ในตอนเข้าโหมด loader นั้น มันจะจำลองตัวเองเป็น stk500-v1 เป็นเครื่องเบิร์น แต่มันเบิร์นเข้าตัวเองล่ะครับ (ต่อไปเครื่องเบิร์นจะขายได้ไหมนิ) ซึ่งตอนนี้จะเอาโปรแกรมเบิร์น ที่รู้จัก stk500 มาก้อ upload ได้แล้ว อย่างเช่น avrdude สำหรับ avrstudio จะรู้จัก stk500-v2 นะครับ เอาไปใช้งาน อาจไม่ได้</p>
<p style="text-align: justify;">&nbsp;</p>
<h3><strong>GUI สำหรับ windows</strong></h3>
<p>เอาล่ะครับ วันนี้มารู้จักอยู่โปรแกรมชื่อ Avrdude กันบ้าง</p>
<p><strong>avrdude </strong>เป็นโปรแกรมเบิร์น อย่างเดียวเลยเท่านั้น ซึ่งเป็นโปรเจค opensource อีกอันหนึ่งที่นิยมมาก ทั้งที่โปรแกรมนี้ ไม่มีหน้าตาหล่อๆ เหมือนโปรแกรมอื่นเลย แถมทำงานทำงานบน command line ?ด้วยซ้ำ แต่โปรแกรมดี อย่างไง ก้อเป็นข้อดี และได้พัฒนา ส่วนเพิ่มเติมมาเรื่อยๆ เลยมีส่วน gui ทำงานใน windows เพิ่มขึ้น มีอยู่หลายตัวครับ อย่าง<a href="http://www.brischalle.de/avr8_burn-o-mat_avrdude_gui/avr8_burn_o_mat_avrdude_gui_en.html"><strong> avr8-burn-o-mat</strong></a> ,<a href="http://sourceforge.net/projects/avrdude-gui/"><strong> avrdude-gui</strong></a> วันนี้เอา avrdue-gui ก่อนแล้วกันครับ พอดีมันดีที่ ไฟล์เดียวก้อทำงานได้ แค่นั้นล่ะ อีกตัว ต้องมี java แต่สวยดี</p>
<p><span id="more-321"></span></p>
<h3><strong><span style="color: #ff0000;">วิธีการ set นะครับ</span></strong></h3>
<p>อันแรก เราต้อง config เครื่องโปรแกรมกัน set ตามรูปกันไปเลยนะครับ<br />
<img class="aligncenter" src="http://lh6.ggpht.com/_Yf5JCo_hjfM/Sc3MvzvlZuI/AAAAAAAABKY/wXYJlS9GYOM/s400/avrdude.jpg" alt="" width="400" height="208" /></p>
<p>จากนั้น ก้อไป set paramater นะครับที่ สำคัญ คือ -v กับ -F นะครับ<br />
<img class="aligncenter" src="http://lh4.ggpht.com/_Yf5JCo_hjfM/Sc3MzhRs3dI/AAAAAAAABKg/gKw8cR6X5Mg/s400/avrdude-gui-setting.jpg" alt="" width="400" height="210" /></p>
<p>จากนั้นมาอีกเลือก tab ไฟล์ hex ที่ต้องการ<br />
<img class="aligncenter" src="http://lh3.ggpht.com/_Yf5JCo_hjfM/Sc3MsYro2EI/AAAAAAAABKQ/qHDStvE08IY/s400/avrdude-file-tab.jpg" alt="" width="400" height="208" /></p>
<p>เอาล่ะครับตอนนี้ก้อพร้อมใช้งานแล้ว</p>
<p>กด [execute] นะครับ ขึ้นข้อความ ก้อเปิด reset ที่บอร์ด arduino ครับ</p>
<p><img class="aligncenter" src="http://lh4.ggpht.com/_Yf5JCo_hjfM/Sc3Mo1Rnn_I/AAAAAAAABKI/FWtH4FMRE88/s400/step1.jpg" alt="" width="400" height="378" /></p>
<p>บอร์ดจะเริ่มสือสาร กันและกระบวนการ upload จะทำงานครับ</p>
<p style="text-align: center;"><img class="aligncenter" src="http://lh5.ggpht.com/_Yf5JCo_hjfM/Sc3NYB5Po_I/AAAAAAAABKo/Dq6owqG_JlM/s400/step2-avdude.jpg" alt="" width="400" height="378" /></p>
<p style="text-align: justify;">สำหรับโปรแกรม Avrdude-gui จะมีอยู่หลาย เวอร์ชั่นมากครับ ซึ่งตัวที่ผมใช้ ได้มาจากบริษัท ETT เดี่ยวเอาไว้รอบหน้าจะลองใช้ เวอร์ชั่นอื่นแล้วจะมาบอกเล่ากันใหม่</p>
<p style="text-align: justify;">&nbsp;</p>
<p>จบล่ะ ใครทดลองแล้วมีปัญหาอะไรก้อบอกกันได้ <img src='http://www.ayarafun.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  <img src='http://www.ayarafun.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.ayarafun.com/2009/04/upload-arduino-with-avrdude-gui/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>เล่น AVR-ETT-Stamp ไม่ต้องง้อเครื่อง burn กันดีกว่า</title>
		<link>http://www.ayarafun.com/2008/10/making-boot-loader-in-ett-stamp/</link>
		<comments>http://www.ayarafun.com/2008/10/making-boot-loader-in-ett-stamp/#comments</comments>
		<pubDate>Fri, 10 Oct 2008 13:10:22 +0000</pubDate>
		<dc:creator>chang</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[MyProject]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[avr]]></category>
		<category><![CDATA[bootloader]]></category>

		<guid isPermaLink="false">http://www.ayarafun.com/?p=9</guid>
		<description><![CDATA[ไมโครคอนโทรลเลอร์ เป็นอุปกรณ์ควบคุม ที่นิยมใช้กันมากๆ ซึ่งนับวันจะเล็กลงไปทุกวัน แต่การเรียนรู้ที่จะใช้ มักจะต้องลงทุน พอสมควร ถึงแม้ตอนนี้จะถูกลงกว่าแต่ก่อนแล้วก้อเถอะ ในตอนนี้ ผมจะมาแนะนำเทคนิคที่น่าสนใจอีกอัน วิธีติดตั้ง boot-loader ซึ่งถ้าท่านใช้ AVR Studio ท่านจะได้ไม่ต้องเปลี่ยนโปรแกรมเลย และยังประหยัด ไม่ต้องใช้ เครื่องโปรแกรม อีกแล้ว เหมาะมากกับ class หรือ workshop จะได้ไม่ต้องมีเยอะ ประหยัดเงิน ไว้ทำซื้ออย่างอื่นดีกว่า ช่วยชาติครับ Boot loader เป็น firmware ส่วนมากจะทำหน้าที่ ช่วย upload data เข้าไปใน flash หรือ eeprom หรือเรียกให้ง่าย ทำให้ mirco-controller burn ตัวมันเองได้ (เผาตัวเองได้) bootloader มีกันหลายแบบ มีทั้ง upload ผ่าน mmc card ได้ upload


No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>ไมโครคอนโทรลเลอร์ เป็นอุปกรณ์ควบคุม ที่นิยมใช้กันมากๆ ซึ่งนับวันจะเล็กลงไปทุกวัน แต่การเรียนรู้ที่จะใช้ มักจะต้องลงทุน พอสมควร ถึงแม้ตอนนี้จะถูกลงกว่าแต่ก่อนแล้วก้อเถอะ</p>
<p>ในตอนนี้ ผมจะมาแนะนำเทคนิคที่น่าสนใจอีกอัน วิธีติดตั้ง boot-loader ซึ่งถ้าท่านใช้ <strong><span style="color: #ff0000;">AVR Studio</span></strong> ท่านจะได้ไม่ต้องเปลี่ยนโปรแกรมเลย และยังประหยัด ไม่ต้องใช้ เครื่องโปรแกรม อีกแล้ว เหมาะมากกับ class หรือ  workshop  จะได้ไม่ต้องมีเยอะ ประหยัดเงิน ไว้ทำซื้ออย่างอื่นดีกว่า ช่วยชาติครับ</p>
<p><img class="aligncenter" title="burn ett-stmap without programming tools" src="http://lh3.ggpht.com/_Yf5JCo_hjfM/SSRH02ZPESI/AAAAAAAAAGw/4gjMBJ-uekM/s720/P1200137.JPG" alt="" width="366" height="274" /></p>
<p><span id="more-9"></span>Boot loader เป็น firmware ส่วนมากจะทำหน้าที่ ช่วย upload data เข้าไปใน flash หรือ eeprom หรือเรียกให้ง่าย ทำให้ mirco-controller  burn ตัวมันเองได้ (เผาตัวเองได้)</p>
<p>bootloader มีกันหลายแบบ มีทั้ง upload ผ่าน mmc  card ได้ upload ผ่าน lan อย่างพวก Embeded linux ส่วนอันที่ผมจะมาแนะนำ upload ผ่านสาย serial ครับ หรือจะใช้ usb2serial ก้อได้ notebook เหมาะมาก</p>
<p>วิธีทำก้อไม่ยากครับ  แต่ขอแนะนำว่า ผู้ใช้คุ้นเคยกับ AVR มาพอสมควรนะครับ ไม่เหมาะกับมือใหม่มากๆๆ</p>
<p><span style="color: #0000ff;"><strong>ส่วน bootloader ผมได้มาจากที่เขาพัฒนา bootloader ไว้แล้วอีกที่ อันนี้ที่ผม เอามาใช้ มาจาก <a href="http://www.avride.com/article/wiring/" target="_blank">http://www.avride.com/article/wiring/</a> ของคุณ Worapoht Kornkaewwattanakul พัฒนาเพิ่มเติมไว้</strong></span></p>
<p>ซึ่งใน wiring ก้อเป็นอีกอันคุ้นๆ กัน<br />
<a href="http://wiring.uniandes.edu.co/source/trunk/wiring/bootloader/" target="_blank">http://wiring.uniandes.edu.co/source/trunk/wiring/bootloader/</a></p>
<p>ผมขออุณญาตินำมาใช้ และ ขออนุญาติ เอามาเผยแพร่ความรู้ ให้สมาชิกในเวปด้วยนะครับ ส่วนของ bootloader ส่วนนี้จะทำให้ ATmega มี Protocol สื่อสาร แบบเดียวกับ เครื่องโปรแกรม STK-500v2 ของ ATmel ซึ่งทำให้ ท่าน burn เข้า mcu โดยไม่ต้องมีเครื่องโปรแกรมได้</p>
<p>ซึ่งจาก source code เขาไว้ใช้งานกับ <strong>ATmega128</strong> ในส่วนใน src เขาได้ทดสอบกับ  ATmega8, ATmega16 ,ATmega32 ,ATmega8515 ,ATmega8535, ATmega162, ATmega128 ซึ่งยังไม่มี ATmega64 ผมเลยพยายามเพิ่มเติมส่วนที่จำเป็น</p>
<p>ผมมีบอร์ด <strong>ETT-ATmega64</strong> อยู่นานแล้ว ยังไม่ผ่านจ่ายไฟ เข้า VCC  ซึ่งถ้าท่านใช้ ATmega ตัวอื่นๆ ลองทำต่อวิธีผม น่าจะทำให้นำไปใช้งานได้เลย</p>
<p style="text-align: center;"><img class="aligncenter" src="http://images.ayarafun.multiply.com/image/1/photos/upload/300x300/SPy-XgoKCGUAAFQUYAY1/board-ett.jpg?et=QMHvB8y3VbfHARjfTGDdGA&amp;nmid=0" border="0" alt="" /></p>
<p>วิธีการแก้ไขให้ src  ใช้ ATmega64 ได้นะครับ ต้องแก้ไข file ส่วนของ Makefile กับ stk500boot.c</p>
<p>ใน Makefile</p>
<p>เลือก MCU ใหม่</p>
<blockquote>
<div class="editbg" style="overflow: auto;">เปลี่ยน<br />
MCU = atmega128เป็น<br />
MCU = atmega64</div>
</blockquote>
<p>ในส่วน Bootloader Address ครับ ตำแหน่ง start ของ bootloader (ขอบคุณท่าน DEV-Zone ที่วันนั้นแนะนำในเวปบอร์ด)</p>
<pre lang="cpp"># Bootloader
# Please adjust if using a different AVR
# 0x0e00*2=0x1C00 for ATmega8  512 words Boot Size
# 0xFC00*2=0x1F800 for ATmega128  1024 words Boot Size
# 0x7C00*2=0x0F800 for ATmega64  1024 words Boot Size
#BOOTLOADER_ADDRESS = 1F800
BOOTLOADER_ADDRESS = 0F800</pre>
<p>ผมได้เปลี่ยนจาก</p>
<pre lang="cpp">BOOTLOADER_ADDRESS = 1F800</pre>
<p>เป็น<br />
<strong>BOOTLOADER_ADDRESS = 0F800</strong></p>
<p>ตัวเลขได้มาจากใน datasheet Atmel64 ส่วนของ bootloader support<br />
หัวข้อ ตาราง Boot Size Configuration ขึ้นอยู่กันขนาด bootloader ที่ทำขึ้นมา ซึ่ง firmware นี้ขนาดไม่เกิน 1024 words</p>
<p><strong>boot reset address</strong> อยู่ที่ 0x7C00 ซึ่งเปลี่ยน word ทำกันคูณสอง ได้ 0xF800</p>
<div>
<table id="n7gy" style="height: 168px;" border="1" cellspacing="0" cellpadding="3" width="649" bgcolor="#ead1dc" bordercolor="#000000">
<tbody>
<tr bgcolor="#444444">
<td style="text-align: center; color: #ffffff;" width="14%"><strong>BOOTSZ1</strong></td>
<td style="text-align: center; color: #ffffff;" width="14%"><strong>BOOTSZ0</strong></td>
<td style="text-align: center; color: #ffffff;" width="14%"><strong>Boot Size</strong></td>
<td style="text-align: center; color: #ffffff;" width="14%"><strong>Application</strong><strong><br />
Flash Section</strong></td>
<td style="text-align: center; color: #ffffff;" width="14%"><strong>BootLoader</strong><strong><br />
Flash Section</strong></td>
<td style="text-align: center; color: #ffffff;" width="14%"><strong> </strong><strong>EndApp<br />
</strong><strong>Section Address</strong></td>
<td style="text-align: center; color: #ffffff;" width="14%"><strong>BootReset<br />
</strong><strong>Address</strong></td>
</tr>
<tr>
<td style="text-align: center;" width="14%">1</td>
<td style="text-align: center;" width="14%">1</td>
<td style="text-align: center;" width="14%">512</td>
<td style="text-align: center;" width="14%">0?0000-0?7DFF</td>
<td style="text-align: center;" width="14%">0?7E00-0?7FFF</td>
<td style="text-align: center;" width="14%">0?7DFF</td>
<td style="text-align: center;" width="14%">0?7E00</td>
</tr>
<tr>
<td style="text-align: center;" width="14%">1</td>
<td style="text-align: center;" width="14%">0</td>
<td style="text-align: center;" width="14%">1024</td>
<td style="text-align: center;" width="14%">0?0000-0?7BFF</td>
<td style="text-align: center;" width="14%">0?7C00-0?7FFF</td>
<td style="text-align: center;" width="14%">0?7BFF</td>
<td style="text-align: center;" width="14%">0?7C00</td>
</tr>
<tr>
<td style="text-align: center;" width="14%">0</td>
<td style="text-align: center;" width="14%">1</td>
<td style="text-align: center;" width="14%">2048</td>
<td style="text-align: center;" width="14%">0?0000-0?77FF</td>
<td style="text-align: center;" width="14%">0?7800-0?7FFF</td>
<td style="text-align: center;" width="14%">0?77FF</td>
<td style="text-align: center;" width="14%">0?7800</td>
</tr>
<tr>
<td style="text-align: center;" width="14%">0</td>
<td style="text-align: center;" width="14%">0</td>
<td style="text-align: center;" width="14%">4096</td>
<td style="text-align: center;" width="14%">0?0000-0?6FFF</td>
<td style="text-align: center;" width="14%">0?7000-0?7FFF</td>
<td style="text-align: center;" width="14%">0?6FFF</td>
<td style="text-align: center;" width="14%">0?7000</td>
</tr>
</tbody>
</table>
</div>
<div style="text-align: right;">(คัดลอกจาก datasheet ของ ATmega64)</div>
<p>และในส่วนของ source code stk500boot.c</p>
<blockquote><p>เพิ่ม <strong>Signature Bytes</strong> ของ Atmega64 เข้าไป<br />
<strong>#define SIGNATURE_BYTES 0x1E9602</strong></p></blockquote>
<p>ซึ่งดูได้จากใน datasheet อีกเช่นกันครับ</p>
<p>นอกนั้นไม่จำเป็นต้องแก้ไขอะไรครับ ในขั้นนี้ ท่านจะสามารถ compile source ได้แล้ว<br />
compile โดยพิมพ์ make ที่ ไดเร็กทรอรีนั้น  ซึ่งไม่มี error เกิดขึ้นก้อใช้งานได้ครับ</p>
<p>ส่วนใน รายละเอียด bootloader จาก src ทำอะไรบ้างให้ท่านศึกษาด้วยตัวเองนะครับ มันละเอียดมาก</p>
<p>โดยสรุปหลักๆ bootloader จะมี LED แสดงผลเมื่อเข้าทำงานในส่วน และการใช้งานbootloader มีสองแบบ</p>
<p><strong>- แบบแรก</strong> start bootloader ตั้งแต่แรก ที่ จ่ายไฟ ให้ mcu แล้วกลับไปทำงานปกติ ถ้าไม่มีการใช้ภายเวลาที่กำหนด<br />
<strong>- แบบที่สอง</strong> start bootloader เมื่อ pin ที่กำหนด active low</p>
<p>ซึ่งในบางส่วน ท่านอาจจะต้องเพิ่ม hardware LED เพื่อแสดงสถานนะของ mcu หรือ เพื่อ Switch เพื่อ เข้า bootloader</p>
<p>โดย default bootloader นี้ จะใช้ switch กับ LED ผมทดสอบต่อแบบ defalut ก่อนครับ</p>
<p>ท่านอยากแก้ไขอะไร ผมจะตัวอย่างให้ เช่น อยากให้มี LED แสดง ท่านไป comment</p>
<pre lang="cpp">//#define REMOVE_BOOTLOADER_LED            // no LED to show active bootloader</pre>
<p>แล้วกำหนด led อยู่ pin ไหน ท่านแก้ไขได้ที่ ส่วนนี้ของไฟล์</p>
<pre lang="cpp">/*
* LED on pin "PROGLED_PIN" on port "PROGLED_PORT"
* indicates that bootloader is active
* PG2 -&amp;gt; LED on Wiring board
*/

#define PROGLED_PORT PORTG
#define PROGLED_DDR  DDRG
#define PROGLED_PIN  PING2</pre>
<p>อันนี้กำหนดว่า LED อยู่ port G,pin2 ครับ</p>
<p>นี้เป็นการยกตัวอย่างให้ดูนะครับ จริงๆ เอาละเอียด มันจะเยอะมาก ก้อให้ท่านไปศึกษา ดูกันต่อเอง</p>
<p>ตัวอย่างที่ต่อบน บอร์ดผม <strong>Atmega64</strong> เพิ่ม Switch ที่ช่อง E2 กับเพิ่ม LED ที่ช่อง G2 ตามวงจรของ WiringIO ครับ</p>
<p><strong>หลังจากนั้น compile ได้แล้ว ท่านก้อ flash เข้าไปครับ</strong><br />
และกำหนด <strong>fusebit </strong>ดังนี้ครับ<br />
- กำหนดขนาด firmware อันนี้กำหนด 1kWords  (program BOOTSZ01)<br />
- เลือกให้เข้า BOOT Reset Vector (program BOOTRST)<br />
- Lock Mode 3 ป้องกันเขียนในโปรแกรมส่วน bootloader  (program BootLock 11 and BootLock 12)</p>
<p>เข้าไปดูที่ <a href="http://www.avride.com/article/wiring/" target="_blank">http://www.avride.com/article/wiring/</a></p>
<p style="text-align: center;">ถ้าท่านใช้ pony-prog จะ fusebit ดังรูปครับ<br />
<img class="aligncenter" src="http://images.ayarafun.multiply.com/image/2/photos/10/300x300/9/wiringIO.jpg?et=Xm,myzIw9hmc9axl36xG2Q&amp;nmid=121042026" border="0" alt="" /></p>
<p style="text-align: center;">หรือใช้ avr-dude ใช้ fuse-bit แบบนี้นะครับ<br />
<img class="aligncenter" src="http://images.ayarafun.multiply.com/image/3/photos/10/300x300/6/avrdude.jpg?et=dMPw0nMyWOM,Smg0ivE,Vw&amp;nmid=121042026" border="0" alt="" /><br />
(โปรแกรม คำนวณ fuse-bit ส่วนตัว)</p>
<blockquote><p><strong>Atmega64</strong><br />
High-Byte=0x2c<br />
Low-Byte=0ef<br />
Ext-Byte ใส่ตอนหลังได้</p></blockquote>
<p><strong><span style="font-size: 12px;">- ทดสอบการใช้งาน</span></strong><br />
ท่าน ต้องทดสอบก่อน compile มาแล้วใช้ได้หรือ ป่าว บาง avr-gcc มันมีปัญหาแปลก อย่าง คอมไฟล์เลอร์ คนล่ะเวอร์ชั่น คอมไฟล์ไฟล์เดียวกันทำงานไม่ได้ ถ้าไม่ได้ อันนี้ ผมเสียใจด้วยนะครับ ผมคงอธิบายทั้งหมดไม่ได้ทั้งหมด มันจะเยอะมาก ต้องพยายามแก้ๆ ไปครับ</p>
<p>ทดสอบแรก ถ้าท่านต่อวงจร ถูกต้อง ให้ท่านกด switch prog กับ reset ถ้าไฟ led ติด ก้อ bootloader ทำงานแล้ว<br />
หรือ ท่านใช้แบบ ไม่มีสวิตซ์ ไฟจะกระพริบ สองที่ แสดงว่า bootloader ทำงานแล้วเช่นกัน ดังรูปครับ ไฟ led ติด (สีแดงเล็กๆ) แผ่นวงจรผม อาจจะดูยุ่งๆหน่อยครับ พื้นที่มีจำกัด</p>
<p style="text-align: center;"><img class="aligncenter" src="http://images.ayarafun.multiply.com/image/1/photos/upload/300x300/SPzBuAoKCGUAABTLMGA1/bootloader-run.jpg?et=h46YE1p3ew11mxC9PKLyqg&amp;nmid=0" border="0" alt="" /></p>
<p><span style="font-size: 12px;"><strong>ทดสอบใช้งานกับ AVR-Studio</strong></span></p>
<p style="text-align: center;"><img class="aligncenter" src="http://images.ayarafun.multiply.com/image/2/photos/10/300x300/7/Capture-5.jpg?et=I71V0LV+wqkpWgklHaKx8Q&amp;nmid=121042026" border="0" alt="" /></p>
<p>อันแรกต้อง config comport ก่อนครับ เลือก AUTO ก้อได้ครับ<br />
จากนั้น เรียก AVRISP ขึ้นมา ถ้าเข้ามาถึงหน้าต่างนี้ ท่านประสบความสำเร็จแล้ว (ฮ่าๆ ยึดครองโลก)  <img title="Grin" src="http://www.electoday.com/yabbfiles/Templates/Forum/default/grin.gif" border="0" alt="Grin" /> <img title="Grin" src="http://www.electoday.com/yabbfiles/Templates/Forum/default/grin.gif" border="0" alt="Grin" /> <img title="Grin" src="http://www.electoday.com/yabbfiles/Templates/Forum/default/grin.gif" border="0" alt="Grin" /></p>
<p style="text-align: center;"><img class="aligncenter" src="http://images.ayarafun.multiply.com/image/1/photos/upload/300x300/SPy9NQoKCGUAACF7QCE1/Capture-7.jpg?et=DpAfIG0XPW5NMkog1XLfgw&amp;nmid=0" border="0" alt="" /></p>
<p>ตอน นี้ท่านก้อสามารถ flash โปรแกรม หรือ เปลี่ยน fuse-bit ก้อได้ครับ (เปลี่ยนได้บางตัวนะครับ) ส่วน erase chip ไม่ทำงานนะครับ แต่ทุกครั้งที่ flash ใหม่ ที่ตัว firmware  จะลบเองครับ</p>
<p>*** ทุกครั้งก่อนจะ connect ท่านต้องเข้า bootloader mode ก่อน ไม่งั้น โปรแกรม AVRISP หาไม่เจอ และต้องปิดหน้าต่าง AVRISP ถึงจะสามารถใช้ serial port ได้เหมือนเดิม</p>
<p>เขียนโปรแกรมง่าย ทดสอบกันไฟกระพริบเทพก่อน (ตอนนี้ผมสามารถทำไฟกระพริบได้กับทุก MCU แล้ว)</p>
<pre class="brush:cpp">#include &lt;avr/io.h&gt;
#include &lt;util/delay.h&gt;

void delay_ms(unsigned int time)
{
    while (time --&gt;0)
    {
      _delay_ms(1.0);
    }
}

int main(void)
{
   PORTB=0x00;                          // PB7..0 = 0
   DDRB=0x01;                             // PB0    = Output

   while (1)
   {
      PORTB = 0x00;
      delay_ms(200);
      PORTB = 0xFF;
      delay_ms(200);
   }

return 0;
}</pre>
<p style="text-align: left;">จากนั้นกด <strong>flash to current settings</strong> ที่เมนูของ avr-studio ได้ไฟกระพริบแล้ว (สวยงาม)</p>
<p style="text-align: center;"><strong>ไฟดับ</strong><br />
<img class="aligncenter" src="http://images.ayarafun.multiply.com/image/1/photos/upload/300x300/SPy@2goKCGUAAEXbqks1/blinking-test2.jpg?et=sPqCNCuPs3vqh%2BmOE2eG3Q&amp;nmid=0" border="0" alt="" /><br />
<strong><br />
ไฟติด</strong><br />
<img src="http://images.ayarafun.multiply.com/image/1/photos/upload/300x300/SPy@NAoKCGUAADuZ3sM1/blinking-test1.jpg?et=xoUQBjaR4Y4G6PurkfAjUQ&amp;nmid=0" border="0" alt="" /></p>
<p style="text-align: left;">เอาล่ะครับ ยาวมากๆ หวังว่าคงจะมีประโยชน์กับเพื่อน สมาชิกบ้างนะครับ เอาไว้เจอกันใหม่ในโปรแกรมหน้า สวัสดีครับ</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.ayarafun.com/2008/10/making-boot-loader-in-ett-stamp/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

