tag:blogger.com,1999:blog-13500900391093269252024-03-22T00:33:37.321+05:30Puran's BlogElectronic Projects, Embedded Projects, Tutorials, Tips & Tricks.Puran Ranahttp://www.blogger.com/profile/03651006121475692437noreply@blogger.comBlogger7125tag:blogger.com,1999:blog-1350090039109326925.post-49497157957347974182011-06-14T14:15:00.000+05:302011-06-14T14:15:08.041+05:30AVR Programming using ISP and PonyProg<div dir="ltr" style="text-align: left;" trbidi="on"><div align="justify"><b>PonyProg</b> is a free serial device programmer software with a user friendly GUI framework available for Windows and Linux. You can download PonyProg <a href="http://www.lancos.com/ppwin95.html">here</a> and install. Its purpose is reading and writing every serial device using either the serial or parallel port on a PC. At the moment following devices are currently supported with PonyProg software.</div><br />
AVR Microcontroller <select name="s" size="1"><option>AT90S1200</option><option>AT90S2313</option><option>AT90S2323</option><option>AT90S2333</option><option>AT90S2343</option><option>AT90S4414</option><option>AT90S4433</option><option>AT90S4434</option><option>AT90S8515</option><option>AT90S8534</option><option>AT90S8535</option><option>AT90can32</option><option>AT90can64</option><option>AT90can128 (untested)</option><option>ATtiny12</option><option>ATtiny13</option><option>ATtiny15</option><option>ATtiny25</option><option>ATtiny26</option><option>ATtiny45</option><option>ATtiny85</option><option>ATtiny261</option><option>ATtiny461</option><option>ATtiny861</option><option>ATtiny2313</option><option>ATmega103</option><option>ATmega128</option><option>ATmega1280</option><option>ATmega1281</option><option>ATmega16</option><option>ATmega161</option><option>ATmega162</option><option>ATmega163</option><option>ATmega164</option><option>ATmega168</option><option>ATmega169</option><option>ATmega2560</option><option>ATmega2561</option><option>ATmega32</option><option>ATmega323</option><option>ATmega324</option><option>ATmega44</option><option>ATmega64</option><option>ATmega640</option><option>ATmega644</option><option>ATmega88</option><option>AT89S8252</option><option>AT89S53</option></select><br />
PIC Microcontroller <select name="s" size="1"><option>12C508</option><option>12C509</option><option>12C671</option><option>12C672</option><option>16F627</option><option>16F628</option><option>16C84</option><option>16F84</option><option>16F84A</option><option>16F873</option><option>16F873A</option><option>16F874</option><option>16F874A</option><option>16F876</option><option>16F876A</option><option>16F877</option><option>16F877A</option></select><br />
I²C Bus EEPROM <select name="s" size="1"><option>24C01</option><option>24C02</option><option>24C04</option><option>24C08</option><option>24C16</option><option>24C32</option><option>24C64</option><option>24C65</option><option>24C128</option><option>24C256</option><option>24C512</option><option>24C325</option><option>24C645</option><option>AT17C65</option><option>AT17C128</option><option>AT17C256</option><option>AT17C512</option><option>AT17C010</option></select><br />
SPI EEPROM <select name="s" size="1"><option>25010</option><option>25020</option><option>25040</option><option>25080</option><option>25160</option><option>25320</option><option>25640</option><option>25128</option><option>25256</option><option>25642</option><option>95640</option><option>NVM3060</option><option>MDA2061</option><option>MDA2062</option><option>X2444</option><option>X2445</option></select><br />
Siemens EEPROM <select name="s" size="1"><option>SDE2506</option><option>SDE2516</option><option>SDE2526</option><option>SDA2546</option><option>SDA2586</option><option>SDA3546</option><option>SDA3586</option></select><br />
Microwire EEPROM <select name="s" size="1"><option>93C06</option><option>93C46</option><option>93C56</option><option>93C57</option><option>93C66</option><option>93C76</option><option>93C86</option><option>93C13 (as a 93C06)</option><option>93C14 (as a 93C46)</option></select><br />
<br />
<b>Setting up the PonyProg environment</b><br />
When we first start PonyProg this is the screen we see, click OK to start.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBUYZAZgyDMAaAgUMo316ZWRCFpiV1Vi8q0rJzHNkhYdNe1edaIsoScSpfN-AU4iB4ZbZnjTEL8bysiEMnfpVzHDDQM5rQqhGiBx6K19lUOc7HWnI4FnZX34NaAD0outXd8lq8nSqds_ok/s1600/ponyprog_isp_splash.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="248" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBUYZAZgyDMAaAgUMo316ZWRCFpiV1Vi8q0rJzHNkhYdNe1edaIsoScSpfN-AU4iB4ZbZnjTEL8bysiEMnfpVzHDDQM5rQqhGiBx6K19lUOc7HWnI4FnZX34NaAD0outXd8lq8nSqds_ok/s320/ponyprog_isp_splash.PNG" width="320" /> </a></div><br />
After clicking OK button following message will display to inform us that bus timing calibration is not done for read write operations. Click OK to continue.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7snE6Bhf8eUydu14Yj_d9cJagKUFhZKSfteAWCHEwJF3rAsnQ3tSTj4gI9-tvumyGzdm2SkrNOSgiwK62N_OWbzvOIJnGrF316ZAqRAgaaXeBgq6Q1Ecp9feJ5NLUOGSjrnAXWqIcOAX3/s1600/ponyprog_isp_calibration1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="84" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7snE6Bhf8eUydu14Yj_d9cJagKUFhZKSfteAWCHEwJF3rAsnQ3tSTj4gI9-tvumyGzdm2SkrNOSgiwK62N_OWbzvOIJnGrF316ZAqRAgaaXeBgq6Q1Ecp9feJ5NLUOGSjrnAXWqIcOAX3/s320/ponyprog_isp_calibration1.PNG" width="320" /></a></div><br />
Bus timing calibration can be selected from <b><i>Setup->Calibration</i></b> menu.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdf2JTgsAf21y0nOvMe3IQpjudyAQZKCdb6mNkrcP0u0ykm1PRepUsXbD6484G92M_1cSsUBUIgwOf_cLzcnpX1mzIBtXMRcc-T-e0VRCiV6zorSYVrt-OraHhfIURZmE5Gtgblq4bomlb/s1600/ponyprog_isp_calibration_setup.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="131" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdf2JTgsAf21y0nOvMe3IQpjudyAQZKCdb6mNkrcP0u0ykm1PRepUsXbD6484G92M_1cSsUBUIgwOf_cLzcnpX1mzIBtXMRcc-T-e0VRCiV6zorSYVrt-OraHhfIURZmE5Gtgblq4bomlb/s320/ponyprog_isp_calibration_setup.PNG" width="320" /> </a></div><br />
Click Yes to calibrate the bus timing.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg96KE_LRJ9upOEVS4qXU24gJWb23rEX78p2BQljA2VX-M2HEmaP7Y2nOISGS84WxzMrptHECXhcDAGXP1ga-JRGXcrRvC3QPFzpabKwY3HcNZ_sia-IKWNqLwUK8l6DTcUZpzfZSyqsQ2m/s1600/ponyprog_isp_calibration_setup1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="93" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg96KE_LRJ9upOEVS4qXU24gJWb23rEX78p2BQljA2VX-M2HEmaP7Y2nOISGS84WxzMrptHECXhcDAGXP1ga-JRGXcrRvC3QPFzpabKwY3HcNZ_sia-IKWNqLwUK8l6DTcUZpzfZSyqsQ2m/s320/ponyprog_isp_calibration_setup1.PNG" width="320" /></a></div>Click OK to continue<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiay19Fi2w0pG15nM64VLXnfajACNN89OLmpcC1FfIfwMiM5pNLTUm6pyKJASXKMmybR5Il4AkniebmJHcDfnn0xByKnvv-JuQPR-peLoCtF9EnezUHXpgEYbPgaGQfgQn8_WKlvMq2YM2G/s1600/ponyprog_isp_calibration_setup2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiay19Fi2w0pG15nM64VLXnfajACNN89OLmpcC1FfIfwMiM5pNLTUm6pyKJASXKMmybR5Il4AkniebmJHcDfnn0xByKnvv-JuQPR-peLoCtF9EnezUHXpgEYbPgaGQfgQn8_WKlvMq2YM2G/s1600/ponyprog_isp_calibration_setup2.PNG" /></a></div><br />
<b>Setting up the Hardware</b><br />
Goto <b><i>Setup->Interface Setup</i></b> to setup the hardware.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyzE2zptnZHwQOb70uwc-AJ9GI5VVLBEqZo1Kh3Od_fy8O7X2DngRXoNGkAzNx8Li5nNhyCZ30eiBfU5YQHhk8RegRx-L9MkppgCYbCfQW6UXaRDa3usUILsX-SDCrUhR4PwpNBJOlLY6U/s1600/ponyprog_isp_interface_setup.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="146" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyzE2zptnZHwQOb70uwc-AJ9GI5VVLBEqZo1Kh3Od_fy8O7X2DngRXoNGkAzNx8Li5nNhyCZ30eiBfU5YQHhk8RegRx-L9MkppgCYbCfQW6UXaRDa3usUILsX-SDCrUhR4PwpNBJOlLY6U/s320/ponyprog_isp_interface_setup.PNG" width="320" /></a></div><br />
Set all the parameter as follows and click OK<br />
<br />
<div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjq783KA9SmQo0tIrrEZX9fNxdAL99hpp9kkWRNzB9Z9QFzZfwPLtzizrmEB9CBCis9s77yVtFc1-yUdye0bIOtcn7Kp3xCiDa6awJaKnquBBV4kiJX4ZX0n8Tq8u3FI8FJmjgqpAzLvQg4/s1600/ponyprog_isp_interface_settings.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjq783KA9SmQo0tIrrEZX9fNxdAL99hpp9kkWRNzB9Z9QFzZfwPLtzizrmEB9CBCis9s77yVtFc1-yUdye0bIOtcn7Kp3xCiDa6awJaKnquBBV4kiJX4ZX0n8Tq8u3FI8FJmjgqpAzLvQg4/s1600/ponyprog_isp_interface_settings.PNG" /></a></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"></td></tr>
<tr><td class="tr-caption" style="text-align: center;"></td></tr>
</tbody></table><b><span class="Apple-style-span" style="color: red;">Rest part of this post is</span></b> <br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglTd2as8I6GaWO3P_Xoa0rAWwXqdxK75D0CEMlKFFH-4k1T4-9HLCIpgZuLdB2UX7CzpKS8lYFBAAI4OoSqH18i3TNsCSoWXPcpaL8PtmFXD8Wf7b1rmdwxiUueHVt3w_JDUna8yb2yUk2/s1600/under_construction.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglTd2as8I6GaWO3P_Xoa0rAWwXqdxK75D0CEMlKFFH-4k1T4-9HLCIpgZuLdB2UX7CzpKS8lYFBAAI4OoSqH18i3TNsCSoWXPcpaL8PtmFXD8Wf7b1rmdwxiUueHVt3w_JDUna8yb2yUk2/s320/under_construction.jpg" width="294" /></a></div>Puran Ranahttp://www.blogger.com/profile/03651006121475692437noreply@blogger.comtag:blogger.com,1999:blog-1350090039109326925.post-46365893539346055312011-05-26T13:34:00.003+05:302011-06-14T14:18:19.847+05:30[DIY]+[AVR Programmer]+[PonyProg]<div dir="ltr" style="text-align: left;" trbidi="on"><div dir="ltr" style="text-align: left;" trbidi="on"><div align="justify"><b>Introduction</b><br />
There are many kinds of AVR programmers in market, most of these use the parallel port, a serial port (COM port), or the USB but they are very costly and hobbyist like me can not buy such a costly programmer so i decided to make a cheap AVR programmer. Being a electronics hobbyist I believe in DIY (do it yourself) so here I glad to tell you that my programmer can be built easily in very short amount of time and since there are only few parts, it is very cheap. This AVR programmer is called "AVR ISP (In System Programmer) programmer".<br />
On the AVR microcontroller side there are two possibilities to program the AVR microcontroller, socket and in-circuit. A socket programmer provides a way to connect just a bare AVR microcontroller to the programmer and ISP programmers however connect to the AVR microcontroller while it is connected to the target circuit. So ISP allows programming of a AVR microcontroller in circuit, avoiding the need to constantly take it in and out of the programmer and the subsequent bending of pins.<br />
<br />
<b>Advantage</b><br />
<ul><li>This simple AVR Programmer will allow you to painlessly transfer hex programs to most ATMEL AVR microcontrollers without sacrificing your budget and time</li>
<li> This AVR programmer is very cheap due to only few common parts are used. </li>
<li> It is in-system programmer so can be used to conveniently program AVR microcontrollers without removing them from the target circuit. </li>
<li>It can be built in very short amount of time.</li>
<li>This AVR programmer is compatible with a popular PonyProg software that shows you a status bar of the programming progress. </li>
</ul></div><b>How to build</b><br />
Here you can find schematic, board layout and component layout of the my " AVR ISP programmer".<br />
<b><i>Schematic </i></b><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpSmw_7xKPhFpCcYRK3VwkzcJ2YmhNC5Ru5l0OZmgOZ6Sy0tbd2rVDww75OfGLT8mHIi0iE4IureZFwFuEb1nAtjB41LfGl9RMNoSdLRBIcQ7gwKbrmSdEUfFVJH9SWUNK4NJhjKEEqdLb/s1600/Schematic.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="186" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpSmw_7xKPhFpCcYRK3VwkzcJ2YmhNC5Ru5l0OZmgOZ6Sy0tbd2rVDww75OfGLT8mHIi0iE4IureZFwFuEb1nAtjB41LfGl9RMNoSdLRBIcQ7gwKbrmSdEUfFVJH9SWUNK4NJhjKEEqdLb/s320/Schematic.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"></div><b><i> Board Layout</i></b><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIeQntPUQCLJdKifTeFRIDQGJqAw1hmQL7CBvbKsx_L50v9kP3JsiA1oonjkw39-uaV0ht2dTuCKHLh0DDZtYUgdQDhV1aK4Csih_Jm-cdN3kd2Sz6aRCxrlgjn7w4XwI7G-cxn17mzkwL/s1600/Board.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIeQntPUQCLJdKifTeFRIDQGJqAw1hmQL7CBvbKsx_L50v9kP3JsiA1oonjkw39-uaV0ht2dTuCKHLh0DDZtYUgdQDhV1aK4Csih_Jm-cdN3kd2Sz6aRCxrlgjn7w4XwI7G-cxn17mzkwL/s320/Board.png" width="175" /></a></div><div class="separator" style="clear: both; text-align: center;"></div><b><i> Component Layout</i></b><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5m-b9mOV8RDNRj0letjRv1TkdmvWLgDdmy-yjx-ccxtMUxbS333FefvekcbNiQH2jLxN4dYZTVYhIp1YIPZdQKUDjjRgXD6OSgrRV7zac6kfbEahjfPZX-RGlZ4LrbsHolCXOOLT5nTlp/s1600/Component.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5m-b9mOV8RDNRj0letjRv1TkdmvWLgDdmy-yjx-ccxtMUxbS333FefvekcbNiQH2jLxN4dYZTVYhIp1YIPZdQKUDjjRgXD6OSgrRV7zac6kfbEahjfPZX-RGlZ4LrbsHolCXOOLT5nTlp/s320/Component.png" width="175" /></a></div><div class="separator" style="clear: both; text-align: center;"></div><br />
</div><div align="justify"><b>Description of the in-system programmer</b><br />
The programmer is quite simple and it is based on the SI-Prog from the author of PonyProg software. The Zener diodes D1, D2 with the resistors R1, R2 reduce the voltage from the ouput pins DTR, RTS on the serial port to around 5V which is suitable for microcontroller (MOSI, SCK). MISO signal is connected directly to the input CTS pin. The diode D3 with the resistor R3,R4 drive the NPN transistor Q1, which controls RESET signal. The AVR microcontrollers are in reset when the signal has low level. The resistor R5 works as a pull-up for reset signal. The resistor R3 helps to close the transistor Q1. The programmer has standard 6 pins header.<br />
<br />
<b>Download</b><br />
You can find <b><i>eagle schematic and board files</i></b> in following image (see my another interesting post <a href="http://puranranablog.blogspot.com/2011/05/hide-files-inside-of-jpeggif-images.html">here</a> to see hidden files).<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZGjXqYAXovX6juTiEJlNs-1JWNl5nWcy6PVcnHG-jCCxE-cMgSIbIqUmBvmm1iBFrqcjhbAUX_shQXgpqMS5X9iCwUh6X9AqK3xT4Yq874qcwonGo2FPW4L4awR3Xc39wS1LuNxFwXxeS/s1600/hidden.gif" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZGjXqYAXovX6juTiEJlNs-1JWNl5nWcy6PVcnHG-jCCxE-cMgSIbIqUmBvmm1iBFrqcjhbAUX_shQXgpqMS5X9iCwUh6X9AqK3xT4Yq874qcwonGo2FPW4L4awR3Xc39wS1LuNxFwXxeS/s1600/hidden.gif" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">2 Hidden Files</td></tr>
</tbody></table><br />
<div class="separator" style="clear: both; text-align: center;"></div><b>How to program with PonyProg</b><br />
Check my another post <i><u><a href="http://puranranablog.blogspot.com/2011/06/avr-programming-using-isp-and-ponyprog.html">here</a></u></i> in continuation with this post.<br />
<b><span style="color: red;"></span></b> </div><div align="justify"><b><span style="color: red;"><br />
</span></b></div></div>Puran Ranahttp://www.blogger.com/profile/03651006121475692437noreply@blogger.com1tag:blogger.com,1999:blog-1350090039109326925.post-7484654714219619042011-05-23T11:49:00.016+05:302011-06-08T15:37:53.888+05:30PIC Programming using ICSP and ICPROG<div dir="ltr" style="text-align: left;" trbidi="on"><div align="justify"><b>IC-Prog</b> is a free windows program that you can use for PIC Programming. It interfaces using either the serial or parallel port on a PC. You can download IC-Prog <a href="http://www.ic-prog.com/download.html">here</a>. The following devices are currently supported IC-Prog software.</div><br />
Microchip PIC devices: <select name="s" size="1"><option>12C508</option><option>12C508A</option><option>12C509</option><option>12C509A</option><option>12CE518</option><option>12CE519</option><option>12C671</option><option>12C672</option><option>12CE673</option><option>12CE674</option><option>12F629</option><option>12F675</option><option>16C433</option><option>16C54</option><option>16C56</option><option>16C58</option><option>16C61</option><option>16C62A</option><option>16C62B</option><option>16C63</option><option>16C63A</option><option>16C64A</option><option>16C65A</option><option>16C65B</option><option>16C66</option><option>16C67</option><option>16C71</option><option>16C72</option><option>16C72A</option><option>16C73A</option><option>16C73B</option><option>16C74A</option><option>16C74B</option><option>16C76</option><option>16C77</option><option>16F73</option><option>16F74</option><option>16F76</option><option>16F77</option><option>16C84</option><option>16F83</option><option>16F84</option><option>16F84A</option><option>16F88</option><option>16C505</option><option>16C620</option><option>16C620A</option><option>16C621</option><option>16C621A</option><option>16C622</option><option>16C622A</option><option>16CE623</option><option>16CE624</option><option>16CE625</option><option>16F627</option><option>16F628 Pull PGM to GND!</option><option>16F628A</option><option>16F648A Pull PGM to GND!</option><option>16F630</option><option>16F676</option><option>16C710</option><option>16C711</option><option>16C712</option><option>16C715</option><option>16C716</option><option>16C717</option><option>16C745</option><option>16C765</option><option>16C770</option><option>16C771</option><option>16C773</option><option>16C774</option><option>16C781</option><option>16C782</option><option>16F818</option><option>16F819</option><option>16F870</option><option>16F871</option><option>16F872</option><option>16F873</option><option>16F874</option><option>16F876</option><option>16F877 Pull PGM to GND!</option><option>16F873A</option><option>16F874A</option><option>16F876A</option><option>16F877A Pull PGM to GND!</option><option>16C923</option><option>16C924</option><option>18F242</option><option>18F248</option><option>18F252</option><option>18F258</option><option>18F442</option><option>18F448</option><option>18F452</option><option>18F458 Pull PGM to GND!</option><option>18F1320</option><option>18F2330</option><option>18F4320</option><option>18F6620</option><option>18F6720</option><option>18F8620</option><option>18F8720 Pull PGM to GND!</option></select><br />
Spi Microcontrollers: <select name="s" size="1"><option>90S1200</option><option>90S2313</option><option>90S2323</option><option>90S2333</option><option>90S2343</option><option>90S4414</option><option>90S4433</option><option>90S4434</option><option>90S8515</option><option>90S8535</option><option>89S53</option><option>89S8252</option></select><br />
Flash Microcontrollers: <select name="s" size="1"><option>89C1051</option><option>89C2051</option><option>89C4051</option></select><br />
Philips Serial Microcontrollers: <select name="s" size="1"><option>P87LPC762</option><option>P87LPC764</option><option>P87LPC767</option><option>P87LPC768</option></select><br />
I2C eeproms: <select name="s" size="1"><option>24C01A</option><option>24C02</option><option>24C04</option><option>24C08</option><option>24C16</option><option>24C32</option><option>24C64</option><option>24C65</option><option>AT24C128</option><option>AT24C256</option><option>AT24C512 (Atmel)</option><option>M24C128</option><option>M24C256</option><option>24C515 (Microchip)</option><option>PCF8572 or 8572 = 24C01</option><option>PCF8582 or 8582 = 24C02</option><option>PCF8592 or 8592 = 24C04</option><option>SDA2506</option><option>SDA2516</option><option>SDA2526</option><option>SDA2546</option><option>SDA2586</option><option>SDA3506</option><option>SDA3516</option><option>SDA3526</option><option>4C016 == 24C01</option><option>GRS-003 == 24C02</option><option>GRN-004 == 24C04</option><option>GRN-008 == 24C04</option><option>GRX-006 == 24C04</option><option>GRX-007 == 24C04</option><option>KKZ06F == 24C01</option><option>BAW658049 == 24C02</option><option>BAW57452 == 24C02</option><option>M8571 == 24C02</option><option>X24C01</option><option>24LC21 = 24C01 ( Pin7 (VCLK) must be connected to VCC !!)</option></select><br />
4-Wire eeproms: <select name="s" size="1"><option>59C11</option><option>59C22</option><option>59C13</option></select><br />
Spi eeproms: <select name="s" size="1"><option>25010</option><option>25020</option><option>24040</option><option>25080</option><option>25160</option><option>25320</option><option>25640</option></select><br />
Microwire eeproms: <select name="s" size="1"><option>93C06</option><option>93C46</option><option>93C57</option><option>93C56</option><option>93C66</option><option>93C76</option><option>93C86</option><option>93C13 = 93C06</option><option>93C14 = 93C46</option><option>GRO-001 = 93C46</option><option>GRN-001 = 93C46</option><option>GRN-002 = 93C46</option><option>KKZ01 = 93C46</option><option>6005L = 93C06</option><option>B22AN = 93C06</option><option>P8911 = 93C06</option><option>CAT35C102 = 93C56</option><option>CAT35C104 = 93C66</option><option>CAT35C108 = 93C76</option></select><br />
Modern Serial eeproms: <select name="s" size="1"><option>AK6420</option><option>AK6440 </option><option>AK6480 Still experimental!</option><option>BR9010</option><option>BR9020</option><option>BR9040</option><option>BR9080</option><option>BR9016</option><option>BR9021</option><option>CXK1011</option><option>CXK1012</option><option>CXK1013</option><option>PDG011</option><option>TC89101</option><option>TC89102</option><option>NS7002</option><option>NS77007</option><option>M6M80011</option><option>M6M80021</option><option>M6M80041</option><option>ER1400 (Use special ER1400 Programmer!)</option><option>M58657 == ER1400</option></select><br />
IM-Bus eeproms: <select name="s" size="1"><option>NVM3060</option><option>MDA2061</option><option>MDA2062</option></select><br />
Scenix/Ubicom devices : <select name="s" size="1"><option>SX18</option><option>SX20</option><option>SX28</option><option>SX48</option><option>SX52</option></select><br />
<br />
<i></i><br />
<b>Setting up the IC-Prog environment</b><br />
When we first start IC-Prog this is the screen we see for selecting the hardware for the PIC programmer; I have selected JDM programmer - a serial port programmer, Windows API - interface and leave rest of the settings same.<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlZH8qW8Cl_CTiKz0ofUmL9X9DQ3jnTDn4rPLoYlKwzUb5ws3qY_7I576xKWSVY5ai29UM8GJdsOzNRM-9c6Q39B5A6o84fWYvP0rc_kRXExXxKxD3llnZ-gJi4TESby7L7cGrL0XJtFvU/s1600/hardware.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="273" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlZH8qW8Cl_CTiKz0ofUmL9X9DQ3jnTDn4rPLoYlKwzUb5ws3qY_7I576xKWSVY5ai29UM8GJdsOzNRM-9c6Q39B5A6o84fWYvP0rc_kRXExXxKxD3llnZ-gJi4TESby7L7cGrL0XJtFvU/s320/hardware.PNG" width="320" /></a></div><br />
Press OK to continue. After this the main program screen is displayed.<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgm0DiWulmcc96Cx22AFF5K22bixMvknuZkaH4PwNDv2BaFoh1BEO4BSJnQ14VGBMy_Wsb0DXYxyjdjk_jawdY2x8bYlZdsgYh4ajaR9ksC1N4ZqDteul_dmuTdXyn-u0CdsvVsLne4oJwG/s1600/icprog.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="255" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgm0DiWulmcc96Cx22AFF5K22bixMvknuZkaH4PwNDv2BaFoh1BEO4BSJnQ14VGBMy_Wsb0DXYxyjdjk_jawdY2x8bYlZdsgYh4ajaR9ksC1N4ZqDteul_dmuTdXyn-u0CdsvVsLne4oJwG/s320/icprog.PNG" width="320" /></a></div><br />
<b>How to select a device to program</b>:<br />
<div style="text-align: justify;">Device can be selected in two ways. Firstly, we can select our device (in my case it is 16f877a) from combobox located at top right side of the IC-Prog software window.</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp0RW2QBdYu9zY7x7IsM_wNiJ9i-IB6xCiYI1voIvO6g9668vHF3u5I9IcFftmcSPDr7IBtN-L1n1BjQTgD1UxLMy5_VY8ee5o9icVfuGU44894GaadJ3nTo4hzYSZuHkzQNBijwoB5mCH/s1600/device1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="103" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp0RW2QBdYu9zY7x7IsM_wNiJ9i-IB6xCiYI1voIvO6g9668vHF3u5I9IcFftmcSPDr7IBtN-L1n1BjQTgD1UxLMy5_VY8ee5o9icVfuGU44894GaadJ3nTo4hzYSZuHkzQNBijwoB5mCH/s320/device1.PNG" width="320" /></a></div><br />
Secondly, goto to software menu and select <b>Settings->Device->Microchip PIC->More->More->PIC 16f877a</b>.<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjR8Qx9xzFeo2ENdUmJtrp5F2zNGeGHvGUIcB7QEdqtFCR4hBiot60tulI8L5GgqVz3B3aStJt6ITgYMvLU4cFJ2kE_J-dF157p2XK-nWyL2fFfg99TapaXL8ZBbU8t8DWTenbSvn4vsoH5/s1600/device2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="163" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjR8Qx9xzFeo2ENdUmJtrp5F2zNGeGHvGUIcB7QEdqtFCR4hBiot60tulI8L5GgqVz3B3aStJt6ITgYMvLU4cFJ2kE_J-dF157p2XK-nWyL2fFfg99TapaXL8ZBbU8t8DWTenbSvn4vsoH5/s320/device2.PNG" width="320" /></a></div><br />
<div style="text-align: justify;">Now goto<b> File->Open</b> and select hex file to be uploaded (burned) in PIC 16f877a microcontroller. When opened file get loaded in IC-Prog buffer following action can be taken :</div><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5A4SXAX8joeH6Yu7l0dnCPwLvDo4xnmbMAspVAz-dkSsIl9DV5h8cGWLJFxViBJRVQfnhXQ2LllVYKaAzgwQ43Da_pfKtWxQzOFjJmrCsJh9n1lXLeVsLycSQptZBL0yKWFjInDYqm_qa/s1600/icprog_program_all.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5A4SXAX8joeH6Yu7l0dnCPwLvDo4xnmbMAspVAz-dkSsIl9DV5h8cGWLJFxViBJRVQfnhXQ2LllVYKaAzgwQ43Da_pfKtWxQzOFjJmrCsJh9n1lXLeVsLycSQptZBL0yKWFjInDYqm_qa/s1600/icprog_program_all.PNG" /></a></div><div style="text-align: left;"><b><i>Program Device</i></b></div><br />
<div style="text-align: justify;">The program device button does just that it programs the contents loaded from the hex file (in IC-Prog memory) into the program memory of the PIC micro. If there is any EEPROM in the chip then it programs this as well. Finally it programs the configuration word</div><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdiBGDAhTWeRI2gx38ccb4SEijJ6i2PAwiKLXvfBlHUDP6oPd2XPJNR0beSMBrxsnIUIPayANPapRCqCvxsv98mgMG9LBvObsG_Qh7AFZ6Q7D_qB2z0_3zHIM9ErQgESjTE6cIXgGyEwZN/s800/icprog_read_all.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdiBGDAhTWeRI2gx38ccb4SEijJ6i2PAwiKLXvfBlHUDP6oPd2XPJNR0beSMBrxsnIUIPayANPapRCqCvxsv98mgMG9LBvObsG_Qh7AFZ6Q7D_qB2z0_3zHIM9ErQgESjTE6cIXgGyEwZN/s800/icprog_read_all.PNG" /></a></div><div style="text-align: left;"><b><i>Read Device</i></b></div><div style="text-align: justify;">The read device button reads back the entire contents of the chip into the currently selected buffer (shown at the bottom of the ICPROG window). So you can save the hex file or compare it to the contents of another buffer.</div><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgokrg0qUC-BUljXi8pxnwESurzaXbeXyUekWL5FbTUS9GyrKqnx9CmAWQNjS4jpTjhlRMUW-LLak_AlQxdd-h-QqhxBEiIMn-REUF84ZhULb9KhX_ZD4tsapKEa2DNDelxxyYvv1K4Hmp/s800/icprog_verify.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgokrg0qUC-BUljXi8pxnwESurzaXbeXyUekWL5FbTUS9GyrKqnx9CmAWQNjS4jpTjhlRMUW-LLak_AlQxdd-h-QqhxBEiIMn-REUF84ZhULb9KhX_ZD4tsapKEa2DNDelxxyYvv1K4Hmp/s800/icprog_verify.PNG" /></a></div><div style="text-align: left;"><b><i>Verify Device</i></b></div><div style="text-align: justify;">The verify device button reads back the entire contents of the chip ensuring that it matches the hex file. Verification may automatically happen at the end.Once you get used to IC-Prog and your hardware works reliably you may only want to do a verify if something does not work otherwise it takes more time up.</div>Note: Depending on settings in menu (Settings->Options->Programming)<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc3k9hddI5a3gh0dFB5P5AHehKX7saAqqva2hL2e6ZFcYR_WM_N5nc2ZbuXY3HfWXC8EeERjvGb8rN9_FA65obKF4qHDBRR4c7lYqjRC8_i1XtybuOwduH0yw9h7AqhasUDmMjfhuIMSjp/s800/icprog_erase_all.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc3k9hddI5a3gh0dFB5P5AHehKX7saAqqva2hL2e6ZFcYR_WM_N5nc2ZbuXY3HfWXC8EeERjvGb8rN9_FA65obKF4qHDBRR4c7lYqjRC8_i1XtybuOwduH0yw9h7AqhasUDmMjfhuIMSjp/s800/icprog_erase_all.PNG" /></a></div><div style="text-align: left;"><b><i>Erase Device</i></b></div><br />
<div style="text-align: justify;">The next PIC programming action is to erase the device by hitting the erase device button. It sends a command to the PIC which erases the whole device including protection bits. So this command quickly erases the chip.</div><br />
<div style="text-align: justify;">Note: You don't have to use the erase button as the program button will overwrite the chip contents anyway. It is sometimes useful if you want to convince yourself that the program is actually programmed into the device correctly.<br />
<br />
</div><b>Which are ICSP pins of microcontroller</b><br />
As we know ICSP pins are used to upload hex file in microcontroller. Here are ICSP pins of some PIC microcontroller.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-qo1TUYSDcGQ/Te32nu9qeuI/AAAAAAAAAHE/MGDpOOjTFHA/s1600/icsp_16f84_c.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="197" src="http://1.bp.blogspot.com/-qo1TUYSDcGQ/Te32nu9qeuI/AAAAAAAAAHE/MGDpOOjTFHA/s320/icsp_16f84_c.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">16f84</td></tr>
</tbody></table><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-6Ud9me7KKhw/Te32nrXOBkI/AAAAAAAAAHI/nL_YcSjoq1E/s1600/icsp_16f877_c.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="261" src="http://2.bp.blogspot.com/-6Ud9me7KKhw/Te32nrXOBkI/AAAAAAAAAHI/nL_YcSjoq1E/s320/icsp_16f877_c.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">16f877</td></tr>
</tbody></table><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-nC4OHMEEfW4/Te32nu2-AiI/AAAAAAAAAHM/5kGLFWWqnhw/s1600/icsp_16f628_c.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="243" src="http://3.bp.blogspot.com/-nC4OHMEEfW4/Te32nu2-AiI/AAAAAAAAAHM/5kGLFWWqnhw/s320/icsp_16f628_c.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">16f628</td></tr>
</tbody></table><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-gc121ASx93Q/Te32oIjLu7I/AAAAAAAAAHQ/XWIWK1LuK5U/s1600/icsp_18f452_c.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="231" src="http://2.bp.blogspot.com/-gc121ASx93Q/Te32oIjLu7I/AAAAAAAAAHQ/XWIWK1LuK5U/s320/icsp_18f452_c.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">18f452</td></tr>
</tbody></table><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-UXJ_4lGhRPs/Te32oEXeMOI/AAAAAAAAAHU/EuNIWl1Oz-I/s1600/icsp_18f2550_c.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="242" src="http://3.bp.blogspot.com/-UXJ_4lGhRPs/Te32oEXeMOI/AAAAAAAAAHU/EuNIWl1Oz-I/s320/icsp_18f2550_c.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">18f2550</td></tr>
</tbody></table><br />
<b>Some Useful Videos</b><br />
<div style="text-align: justify;">Watch following videos to setting up the JDM Programmer hardware settings in IC-Prog software and uploading hex file in microcontroller (in my case it is 16f877a).</div><br />
<div align="center"><embed allowscriptaccess="always" height="274" play="true" pluginspage="http://www.macromedia.com/go/getflashplayer" quality="high" src="https://sites.google.com/site/puranranablog/icprog_settings.swf" type="application/x-shockwave-flash" width="321"></embed><br />
<b>IC-Prog Settings</b></div><br />
<div align="center"><embed allowscriptaccess="always" height="274" play="true" pluginspage="http://www.macromedia.com/go/getflashplayer" quality="high" src="https://sites.google.com/site/puranranablog/icprog_burn.swf" type="application/x-shockwave-flash" width="321"></embed><br />
<b>Uploading hex file</b></div></div>Puran Ranahttp://www.blogger.com/profile/03651006121475692437noreply@blogger.com3tag:blogger.com,1999:blog-1350090039109326925.post-21608491228920670212011-05-22T15:03:00.000+05:302011-05-22T16:53:59.453+05:30Hide files inside of JPEG/GIF images<div dir="ltr" style="text-align: left;" trbidi="on"><div align="justify">If you’re looking to hide files on your PC hard drive, you may have read about ways to encrypt folders or change the attributes on a file so that they cannot be accessed by prying eyes. However, a lot of times hiding files or folders in that way requires that you install some sort of software on your computer, which could then be spotted by someone else. The another reason to hide files is, if<br />
<ul style="text-align: left;"><li align="justify">You suspect someone's illegally distributing your copyrighted PDF's or images, so you add hidden copyright information in them.</li>
<li align="justify">You want to exchange information like passwords or sensitive images over an insecure transmission protocol, like email.</li>
<li align="justify">You want to embed secret files available only to a select few in a public forum.</li>
<li align="justify">You want to impress your friends and co-workers with your sneaky ways.</li>
</ul><br />
Here I’m going to show you a new way to hide files that is little bit tricky but safe. Using a simple trick in Windows. You can actually hide any type of file inside of an image file, including txt, exe, mp3, avi, or whatever else. Not only that, you can actually store many files inside of single JPG/GIF file and no one can imagine files are hidden inside picture file. This can come in very handy if you need to hide files and don’t want to bother with encryption and all that other technical stuff.<br />
<br />
<b>How to hide files inside of image file:</b><br />
<div class="separator" style="clear: both; text-align: center;"></div>In order to accomplish this task, you will need to have either WinZip or WinRAR installed on your computer. You can download either of these two off the Internet and use them without having to pay anything. Here are the steps for hiding files in image file:<br />
<ul><li>Create a folder on your hard drive, i.e. <b>C:\Test</b> and put in all of the files that you want to hide into that folder. Also, place the image that you will be using to hide the files in.</li>
</ul><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFza78StSNi1dc4DcOg_EYZZVKvbFwH1AFGEQ5uYF0TasbP8e5D_4XiR9tTM6_6HJrwGdno8CKw_j3s21zKKZMdzbK4F5KSpE91ebt8Bgw9L-FXKZxNGGgEot7qlPM_COAQKGTWQXssXwZ/s1600/files2hide.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="123" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFza78StSNi1dc4DcOg_EYZZVKvbFwH1AFGEQ5uYF0TasbP8e5D_4XiR9tTM6_6HJrwGdno8CKw_j3s21zKKZMdzbK4F5KSpE91ebt8Bgw9L-FXKZxNGGgEot7qlPM_COAQKGTWQXssXwZ/s320/files2hide.PNG" width="320" /></a></div><ul><li>Now select all of the files that you want to hide, right-click on them, and choose the option to add them to a compressed ZIP or RAR file. Only select the files you want to hide, not the picture. Name it whatever you want, i.e. “test.rar”. </li>
</ul><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-egugdYfKIuV5BBkxEcr0eZNkidc2pqT59C6dG5uWJqpedUQCzM03aZigIWdSRxMedcXsP3PrRnFCtxUq7h0lq5RB-NE88cAw1sxG55WeWX63hwNyPGA1tjLJpXaxcw0CDebOQ8MGeBDx/s1600/files2rar.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="188" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-egugdYfKIuV5BBkxEcr0eZNkidc2pqT59C6dG5uWJqpedUQCzM03aZigIWdSRxMedcXsP3PrRnFCtxUq7h0lq5RB-NE88cAw1sxG55WeWX63hwNyPGA1tjLJpXaxcw0CDebOQ8MGeBDx/s320/files2rar.PNG" width="320" /></a></div><ul><li>Now you should have a folder that looks something like this with files, a GIF image, and a compressed archive</li>
</ul><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfFewtWMw8w6wTVKlYE8XY6L4NofKfd6LRwWYVwBTNeJg3gekQW7wHzVsle3LQ7yp0wd7XhmljqsqXszTVuwwCOLLBuAwljCW3aXw8GG5_8IbCQBAIwJieR56PLE60zfG2_sHHqtgbD9G9/s1600/files.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="88" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfFewtWMw8w6wTVKlYE8XY6L4NofKfd6LRwWYVwBTNeJg3gekQW7wHzVsle3LQ7yp0wd7XhmljqsqXszTVuwwCOLLBuAwljCW3aXw8GG5_8IbCQBAIwJieR56PLE60zfG2_sHHqtgbD9G9/s320/files.PNG" width="320" /></a></div><ul><li>Now here’s the real part. Click on Start, and then click on Run. Type in "<b>CMD</b>" without the quotes and press Enter. You should now see the command prompt window open. Type in "<b>CD\</b>" to get to the root directory and then type CD and the directory name that you created, i.e. "<b>CD Test</b>".</li>
</ul><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZ2f7M9SdApHukl19AOb3yLnQAl7ROCsz69SLfINbjWf6yp6qUpn3hdq5NQvaUJTr33040imyZXbxA4eIh_JRXlKs7hosSqZBNuuv0ukgCk63-DQuXxuQ1i_ZgfTg25x4GNMvvYdHZCfEY/s1600/cmd1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="111" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZ2f7M9SdApHukl19AOb3yLnQAl7ROCsz69SLfINbjWf6yp6qUpn3hdq5NQvaUJTr33040imyZXbxA4eIh_JRXlKs7hosSqZBNuuv0ukgCk63-DQuXxuQ1i_ZgfTg25x4GNMvvYdHZCfEY/s320/cmd1.PNG" width="320" /></a></div><ul><li>Now type in the following command and press Enter:<br />
<b>copy /b fp.gif + test.rar hidden.gif</b><br />
You should get a response like below</li>
</ul><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgU0qoNuoIym3OotnNrA3ZI-NO35kH_FH0YeOA9mEzIWyyW3fn0ixqeNlT-eYdocSkSa0yZRJiFhqlf6zV_ID5I9EAJSZOuO7Roq5pd3m41rRYzb_AG6NXqhkhqkULHHfzz_dxJFWkZnB9Z/s1600/cmd2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="94" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgU0qoNuoIym3OotnNrA3ZI-NO35kH_FH0YeOA9mEzIWyyW3fn0ixqeNlT-eYdocSkSa0yZRJiFhqlf6zV_ID5I9EAJSZOuO7Roq5pd3m41rRYzb_AG6NXqhkhqkULHHfzz_dxJFWkZnB9Z/s320/cmd2.PNG" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifuTJQG9nhRlkKTCqv8NGJKRRzo7snrE4ffL2j4o0cwBxnqcsviJKe9jwzh76n844rdjH0l83ckS0_N5GfO4wLneC7XKvR1S6nzFCL4Dq-kWyHNJ9kNWjrwWimVXoET5zCj5qbOSdMKhnr/s1600/files2final.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="70" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifuTJQG9nhRlkKTCqv8NGJKRRzo7snrE4ffL2j4o0cwBxnqcsviJKe9jwzh76n844rdjH0l83ckS0_N5GfO4wLneC7XKvR1S6nzFCL4Dq-kWyHNJ9kNWjrwWimVXoET5zCj5qbOSdMKhnr/s320/files2final.PNG" width="320" /></a></div><br />
Just make sure that you check the file extension on the compressed file, whether it is .ZIP or .RAR as you have to type out the entire file name with extension in the command. I have heard that some people say that they have had problems doing this with a .ZIP extension, so if that doesn’t work, make sure to compress to a .RAR file.<br />
And that’s it! The picture file will have been updated with the compressed archive inside! You can actually check the file size of the picture and see that it has increased by the same amount as the size of the archive.<br />
<br />
<b>How to see files inside of image file</b><br />
You can access your hidden file in two ways. Firstly, you can just right-click on the GIF image and choose Open With and then scroll down to WinRAR. See following image for reference:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKKKbyGM21-DtcmHSw5fKQumiPtE9ovH0gpSrJqtiMb2TussHkUZ_3NjY1tsQKyjjKEeDx-V3wj6nh-hWahe3Zgikcz6L2vqzaBMgL2SS8rxUnKBZlrDL0H0deKK22xtDnaI4gaqmvjdkr/s1600/files2see.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="121" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKKKbyGM21-DtcmHSw5fKQumiPtE9ovH0gpSrJqtiMb2TussHkUZ_3NjY1tsQKyjjKEeDx-V3wj6nh-hWahe3Zgikcz6L2vqzaBMgL2SS8rxUnKBZlrDL0H0deKK22xtDnaI4gaqmvjdkr/s320/files2see.PNG" width="320" /></a></div><br />
Secondly, simply change the .GIF extension to .RAR using command "<b>rename hidden.gif hidden.rar</b>" without quotes and open the file using WinRAR.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSa4sTkJ2FWOZjZFXge-r3uVMGbMjZnxgA1fNO__uJmQatvoPGAQuYB8A8qvx_vA0V9bQnQ26uDUdCkXBc_stjIb2jhhyoRtq3PnccsqvjO5egt7SuFy0rSk-2VHqFnicI4H-XTnEZT65E/s1600/cmd3.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="86" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSa4sTkJ2FWOZjZFXge-r3uVMGbMjZnxgA1fNO__uJmQatvoPGAQuYB8A8qvx_vA0V9bQnQ26uDUdCkXBc_stjIb2jhhyoRtq3PnccsqvjO5egt7SuFy0rSk-2VHqFnicI4H-XTnEZT65E/s320/cmd3.PNG" width="320" /></a></div><br />
Either way, you’ll see your hidden files show up that you can then extract out.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXZuVF-R-7YK8s5FZ83YxTve6z9kYG2rrQ1182sTlDkupEKDTCrNjSdxb5C-Mf03R2C7EQaSvwqhiKER-qDLEBclJlMYGOdvSRHAhhBMA6nBpH_jLldGqcQOffE5LLrYnx7zVi47IvGyz7/s1600/files2extract.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="176" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXZuVF-R-7YK8s5FZ83YxTve6z9kYG2rrQ1182sTlDkupEKDTCrNjSdxb5C-Mf03R2C7EQaSvwqhiKER-qDLEBclJlMYGOdvSRHAhhBMA6nBpH_jLldGqcQOffE5LLrYnx7zVi47IvGyz7/s320/files2extract.PNG" width="320" /></a></div><br />
That’s it! That is all it takes to hide files inside JPG/GIF picture files! It’s a great way simply because not many people know it’s possible and no one even thinks about a picture as having to the ability to “hide” files.<br />
<br />
<b>Enjoy and Happy Hiding!</b><br />
<i><br />
</i><br />
<i>Note: All image file used in this post has hidden file, to check click on image then save image and follow to above steps.</i><br />
<br />
<br />
<i></i><br />
<i></i></div></div>Puran Ranahttp://www.blogger.com/profile/03651006121475692437noreply@blogger.com2tag:blogger.com,1999:blog-1350090039109326925.post-34284762020725638312011-05-20T15:56:00.000+05:302011-05-26T13:49:06.851+05:30[DIY]+[PIC Programmer]+[IC-Prog]<div dir="ltr" style="text-align: left;" trbidi="on"><div align="justify"><b>Introduction</b><br />
There are many kinds of PIC programmers in market, most of these use the parallel port, a serial port (COM port), or the USB but they are very costly and hobbyist like me can not buy such a costly programmer so i decided to make a cheap PIC programmer. Being a electronics hobbyist I believe in DIY (do it yourself) so here I glad to tell you that my programmer can be built easily. The programmer, which I built, does not need an external power supply it takes all necessary signals and power supply from RS232 serial port, and since there are only few parts, it is very cheap and easy to make. This PIC programmer is called "JDM programmer" and based on ICSP (In-Circuit Serial Programming) . This name comes from the name of <b>J</b>ens <b>D</b>yekjar <b>M</b>adsen who devised this first. His homepage is <a href="http://www.jdm.homepage.dk/">here</a>.<br />
<br />
<div align="justify"><br />
<b>Advantage</b><br />
<ul><li>This simple PIC Programmer will allow you to painlessly transfer hex programs to most Microchip PIC microcontrollers without sacrificing your budget and time</li>
<li> This PIC programmer is very cheap due to only few common parts are used. </li>
<li> It is in-circuit serial programmer so can be used to conveniently program PIC microcontrollers without removing them from the target circuit. </li>
<li>It can be built in very short amount of time.</li>
<li>This PIC programmer is compatible with a popular IC-Prog software that shows you a status bar of the programming progress. </li>
</ul></div><b>How to build</b></div><div align="justify">Before you build this "PIC programmer", I recommend checking to see if there is enough output voltage at the serial port your personal computer. If TXD, DTR, and RTS do not have more than +7.5V(or -7.5V), this programmer will not work well, especially, with the latest laptop computers that using low power RS232 interface ICs. See follwing image to find TXD, DTR and RTS pins.</div><div align="justify" class="separator" style="clear: both; text-align: center;"></div><div align="justify" class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtp5-BPT6McFLOfliGvcoTktYQg1t-fUuMleTGTC5IQ7cuvsePUyJxFu1bXt1_B7yFbIw20CWaGIgk29i2Me1MCFV8_3O4uPpFVNptIwBuPxVzndPQtuQ6q5uUgRCtQs2XNWMOXTAz-wMJ/s1600/pinouts_serial.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="303" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtp5-BPT6McFLOfliGvcoTktYQg1t-fUuMleTGTC5IQ7cuvsePUyJxFu1bXt1_B7yFbIw20CWaGIgk29i2Me1MCFV8_3O4uPpFVNptIwBuPxVzndPQtuQ6q5uUgRCtQs2XNWMOXTAz-wMJ/s320/pinouts_serial.gif" width="320" /></a></div><div align="justify">On the PIC side there are two possibilities to program the PIC microcontroller, socket and in-circuit. A socket programmer provides a way to connect just a bare PIC to the programmer and In-circuit programmers however connect to the PIC while it is connected to the target circuit. So ICSP allows programming of a PIC in circuit, avoiding the need to constantly take it in and out of the programmer and the subsequent bending of pins.</div><div align="justify"><br />
<br />
<span style="font-size: small;"><b>ICSP mode of programming </b></span></div><div align="justify">In ICSP mode of programming PICs are programmed using 5 signals. The data is transferred using a two wire synchronous serial scheme, with the clock always controlled by the programmer. The ICSP signals are: <b> </b></div><br />
<table border="1" frame="BOX" rules="NONE"><tbody>
<tr><td><b><i>GND</i></b>:</td><td>Negative power input to the PIC and the zero volts reference for the remaining signals. Voltages of the other signals are implicitly with respect to GND.</td></tr>
<tr><td><b><i>Vdd</i></b>:</td><td>This is the positive power input to the PIC. Some programmers require this to be provided by the circuit (circuit must be at least partially powered up), some programmers expect to drive this line themselves and require the circuit to be off, while others can be configured either way (like the Microchip ICD2). The Embed Inc programmers expect to drive the Vdd line themselves and require the target circuit to be off during programming.</td></tr>
<tr><td><b><i>Vpp</i></b>:</td><td>Programming mode voltage. This must be connected to the MCLR pin, or the Vpp pin of the optional ICSP port available on some large-pincount PICs. To put the PIC into programming mode, this line must be in a specified range that varies from PIC to PIC. For 5V PICs, this is always some amount above Vdd, and can be as high as 13.5V. The 3.3V only PICs like the 18FJ, 24H, and 33F series use a special signature to enter programming mode and Vpp is a digital signal that is either at ground or Vdd. There is no one Vpp voltage that is within the valid Vpp range of all PICs. In fact, the minimum required Vpp level for some PICs can damage other PICs.</td></tr>
<tr><td><b><i>PGC</i></b>:</td><td>Clock line of the serial data interface. This line swings from GND to Vdd and is always driven by the programmer. Data is transferred on the falling edge.</td></tr>
<tr><td><b><i>PGD</i></b>:</td><td>Serial data line. The serial interface is bi-directional, so this line can be driven by either the programmer or the PIC depending on the current operation. In either case this line swings from GND to Vdd. A bit is transferred on the falling edge of PGC. </td></tr>
</tbody></table><br />
Here you can find schematic, board layout and component layout of the my "JDM programmer" which is based on ICSP.<br />
<b><i>Schematic </i></b><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicDBRmpDYwIk_wT0w9k0u0UAxfLJnEppnNDAnxhy4Apl42xVyXVNvTFvx47tHvWm8L3zaX6WQXfskVqMkPiHYm-ka1QX-9ISca1U_0wUbJ8C4hI63OxwENivgE3SnXIbLE8FwnMyTby_Wj/s1600/schematic.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="218" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicDBRmpDYwIk_wT0w9k0u0UAxfLJnEppnNDAnxhy4Apl42xVyXVNvTFvx47tHvWm8L3zaX6WQXfskVqMkPiHYm-ka1QX-9ISca1U_0wUbJ8C4hI63OxwENivgE3SnXIbLE8FwnMyTby_Wj/s320/schematic.png" width="320" /></a></div><b><i> Board Layout</i></b><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzGDrPXZtCJu23OqIPf0YCpH7itdayRbvLqp3tbjgnK5as03OmjA_n73AiWQZ04-j4YZXxK-rjMPQOPkPrHDTrN2T5YUSGjT0jrmLXdpim7h_8QvPmzOsAcA56uucRItoLf0XVaMRedNa2/s1600/board.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzGDrPXZtCJu23OqIPf0YCpH7itdayRbvLqp3tbjgnK5as03OmjA_n73AiWQZ04-j4YZXxK-rjMPQOPkPrHDTrN2T5YUSGjT0jrmLXdpim7h_8QvPmzOsAcA56uucRItoLf0XVaMRedNa2/s320/board.png" width="185" /></a></div><b><i> Component Layout</i></b><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQJnor9uRGIkKgAdHTpHhfxOmpWCAgF_xIHSK4Rs8AODueD20V6mt0_J_7qPobkGAQBz9RNCVBeQkuRpKNAhZSnePdsQhffl5k-w0DA2fqSp0uWQtRfYvRf6srfYqzJhD0K_KO74g0nN7o/s1600/board1.png" imageanchor="1"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQJnor9uRGIkKgAdHTpHhfxOmpWCAgF_xIHSK4Rs8AODueD20V6mt0_J_7qPobkGAQBz9RNCVBeQkuRpKNAhZSnePdsQhffl5k-w0DA2fqSp0uWQtRfYvRf6srfYqzJhD0K_KO74g0nN7o/s320/board1.png" width="185" /></a></div><br />
<div align="justify"><b>Download</b><br />
You can find <b><i>eagle schematic and board files</i></b> in following image (see my another interesting post <a href="http://puranranablog.blogspot.com/2011/05/hide-files-inside-of-jpeggif-images.html">here</a> to see hidden files).<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOJcgScsONXsKRobDWf7XcCv-fEZGcbXIoRm3yoVFIENjG2MqLPaMoG_hFskZwtuGAK18e74umgvRms_L1rqFNXYMEZalwqxc634BMoTYOaN5Ev8aEOsGAYKiTzKMmwnbxJLGrUfSym-Qq/s1600/hidden.gif" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOJcgScsONXsKRobDWf7XcCv-fEZGcbXIoRm3yoVFIENjG2MqLPaMoG_hFskZwtuGAK18e74umgvRms_L1rqFNXYMEZalwqxc634BMoTYOaN5Ev8aEOsGAYKiTzKMmwnbxJLGrUfSym-Qq/s1600/hidden.gif" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">2 Hidden Files</td></tr>
</tbody></table><b>How to program with IC-Prog</b><br />
Check my another post <a href="http://puranranablog.blogspot.com/2011/05/pic-programming-using-icsp-and-icprog.html">here</a> in continuation with this post.<br />
<b><span style="color: red;"></span></b> </div><div align="justify"><b><span style="color: red;"><br />
</span></b></div></div>Puran Ranahttp://www.blogger.com/profile/03651006121475692437noreply@blogger.com3tag:blogger.com,1999:blog-1350090039109326925.post-48441045826618813962011-05-05T13:30:00.000+05:302011-05-25T14:04:40.221+05:30[Winavr]+[Eclipse IDE]<div dir="ltr" style="text-align: left;" trbidi="on"><div align="justify">Probably many of us (including me) are using Programmers Notepad or AVR Studio to set up AVR projects. Each of them has advantages and disadvantages. For instance WinAVR comes with Programmers Notepad GUI by default. It is very powerful editor, but there are lots of manual routines required to start compiling project – like setting up makefile, creating file dependencies, etc. AVR Studio is a great solution which generates makefiles automatically, and it has great simulator for immediate debugging. So why would we need another IDE? Actually Eclipse IDE is one of the best open source tools that is widely used by programmers. Eclipse has some nice features that makes it attractive like code writing with auto-complete functionality, optimized for managing projects, subversion integration, code completion in editor. So why not to give a try for it.<br />
<br />
<strong>Download and Installation</strong> </div><div align="justify">First of all make sure you have latest WinAVR tools installed. Latest WinAVR can be downloaded <a href="http://sourceforge.net/projects/winavr/files/">here</a> and need to be installed.</div><div align="justify" class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi89xg2B5aeoJ6axZ5InfOsVRKr8Y-kIeUa3iNFejV6rqpsSqwZLJR6JM5BXkhjuBIvVDTK78Ro2bLxISK8GoMptuoB_q4WKUhecAWlio-gMGsT1EhHgq2HG1w746eAJBnmrC0CcrZfZizY/s1600/winavr.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="162" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi89xg2B5aeoJ6axZ5InfOsVRKr8Y-kIeUa3iNFejV6rqpsSqwZLJR6JM5BXkhjuBIvVDTK78Ro2bLxISK8GoMptuoB_q4WKUhecAWlio-gMGsT1EhHgq2HG1w746eAJBnmrC0CcrZfZizY/s320/winavr.JPG" width="320" /></a></div><div align="justify"><br />
</div><div align="justify">Eclipse IDE is a Java based IDE, so we also need Java Runtime 5 (or higher). Java Runtime can be downloaded <a href="http://java.com/en/">here</a> and need to be installed. Then download <b>Eclipse IDE for C/C++</b> for Windows platform from <a href="http://www.eclipse.org/downloads/">here</a>. Eclipse is self contained (does not require installation) and only needs to be unpacked (e.g. c:\eclipse).</div><div align="justify" class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdoLWSyH4SclArC5UtzfimqT33Q-X-Zz-qoEG3dOMpARd0Ue8uWcygJT_Uyd_K3gvYYs7i8LGtzsG_VssW_tcufKpSm4GfzmLBqVylNHMnuTDrMU5SKNulM9eNdABjZOWeiGhEMD_nnd9F/s1600/eclipse.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="121" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdoLWSyH4SclArC5UtzfimqT33Q-X-Zz-qoEG3dOMpARd0Ue8uWcygJT_Uyd_K3gvYYs7i8LGtzsG_VssW_tcufKpSm4GfzmLBqVylNHMnuTDrMU5SKNulM9eNdABjZOWeiGhEMD_nnd9F/s320/eclipse.JPG" width="320" /></a></div><div align="justify"><br />
</div><div align="justify">Now you need to download AVR Eclipse plugin from <a href="http://sourceforge.net/projects/avr-eclipse/files/">here</a>. This plugin is self contained (does not require installation) and only needs to be unpacked in Plugin folder (e.g. c:\eclipse\plugin)</div><div align="justify" class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5XlSnwR9R9htT8gXnVVMK0-ANuklDF-KCYcUiffg_bF3o9Q_HMZgCvHEy0I2WYz8H2ZnngNXaGbw6R8eFmjbp80nw9Vmd0EJpfkifPfN0xiGl-Hy5bI2bWTlvofE8LS-JLOxpvps-hHO1/s1600/avrplugin.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="159" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5XlSnwR9R9htT8gXnVVMK0-ANuklDF-KCYcUiffg_bF3o9Q_HMZgCvHEy0I2WYz8H2ZnngNXaGbw6R8eFmjbp80nw9Vmd0EJpfkifPfN0xiGl-Hy5bI2bWTlvofE8LS-JLOxpvps-hHO1/s320/avrplugin.JPG" width="320" /></a></div><div align="justify"><br />
</div><div align="justify"><br />
<strong>How to run Eclipse IDE</strong><br />
Run Eclipse by double click.</div><div align="justify" class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbqHSs99pAk7RLtxXg1E6PfUzBA6nntK6X-GTgCjRu50Za3egDWrzQKCVIz4poKJu4RFr14qq3d12U99ELRnactGjqqKgB7_LmoSeMhifXm4ydwZzH50a2MfT0axopLC83efLgFwiAKYs5/s1600/eclipserun.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="239" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbqHSs99pAk7RLtxXg1E6PfUzBA6nntK6X-GTgCjRu50Za3egDWrzQKCVIz4poKJu4RFr14qq3d12U99ELRnactGjqqKgB7_LmoSeMhifXm4ydwZzH50a2MfT0axopLC83efLgFwiAKYs5/s320/eclipserun.JPG" width="320" /></a></div><div align="justify"><br />
</div><div align="justify">Following screens show that everything gone fine.</div><div align="justify"><br />
</div><div align="justify" class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhw-1P29aLZyhm3_ljRkitGdiiBaghnadG2G1L6wSl85sieukAVjkin8weRlWhETbI3zke4nTxhvlwZ5r-5pGYzj2n5nmY_slHkBirmDIInb2a4U_G6rwE7oY6XGGjkRrmp6yLHyZLTnyjB/s1600/splashscreen.GIF" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="208" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhw-1P29aLZyhm3_ljRkitGdiiBaghnadG2G1L6wSl85sieukAVjkin8weRlWhETbI3zke4nTxhvlwZ5r-5pGYzj2n5nmY_slHkBirmDIInb2a4U_G6rwE7oY6XGGjkRrmp6yLHyZLTnyjB/s320/splashscreen.GIF" width="320" /></a></div><div align="justify"><br />
</div><div align="justify" class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqUVyr7ZaYV7TGxuMt82aDLv0Pyd3E6tFwSvRYKZ5-cFSdZo639NZ2QTiyXGlHJ7GU6ghceFNBCaOJk2_QHSE5RfaERpumBPoBsGOeDT8xvfYb8EahrirjH2Oao0AAvgmS6NZ1oAOFyKQh/s1600/workspace.GIF" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="131" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqUVyr7ZaYV7TGxuMt82aDLv0Pyd3E6tFwSvRYKZ5-cFSdZo639NZ2QTiyXGlHJ7GU6ghceFNBCaOJk2_QHSE5RfaERpumBPoBsGOeDT8xvfYb8EahrirjH2Oao0AAvgmS6NZ1oAOFyKQh/s320/workspace.GIF" width="320" /></a></div><div align="justify"><br />
</div><div align="justify">This is default location of the workspace, press OK button. Following welcome page indicates that Eclipse IDE is working and we can start our winavr projects. </div><div align="justify" class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6rBvkZCaIvWBQlr9ma2jAF1nBJUkkGihsAJKe9cI2XELjPfYi9VMJxdOnPAGiwk3i2OgLE09WyLLIlUjLssi1YX45BvBjeG2VJyoPnV3duCYlfa-KnbWDPlCExSLAmXEs7tJrxYoRMdmA/s1600/welcome.GIF" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6rBvkZCaIvWBQlr9ma2jAF1nBJUkkGihsAJKe9cI2XELjPfYi9VMJxdOnPAGiwk3i2OgLE09WyLLIlUjLssi1YX45BvBjeG2VJyoPnV3duCYlfa-KnbWDPlCExSLAmXEs7tJrxYoRMdmA/s320/welcome.GIF" width="320" /></a></div><div align="justify"><br />
</div><div align="justify">Dismiss the welcome page by clicking the cross on the tab to reveal the actual work environment. Now we can start new project.<br />
<br />
<strong>First project with code</strong><br />
To start a new project go to <b>File->New->C Project or C++ Project</b>. Select Empty Project in AVR Cross Target Aplications and enter Project name which also serves as new project folder in desired location. In my case my project name is test.project01.</div><div align="justify"><br />
</div><div align="justify" class="separator" style="clear: both; text-align: center;"></div><div align="justify" class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglntqxDjgKalu2i08E_Xe6XAq186rtqqYeuXuecB54tYZl_H_gIUKufQh-vDa4ap0JUqD1jBY-JUj0VC2XfxId4N7zoODa7wj_vsMX252jPYR77mqSeBy-nNV3nxLfD-azT96_C96RqiRW/s1600/project.GIF" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="288" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglntqxDjgKalu2i08E_Xe6XAq186rtqqYeuXuecB54tYZl_H_gIUKufQh-vDa4ap0JUqD1jBY-JUj0VC2XfxId4N7zoODa7wj_vsMX252jPYR77mqSeBy-nNV3nxLfD-azT96_C96RqiRW/s320/project.GIF" width="320" /></a></div><div align="justify"><br />
</div><div align="justify">After pressing Next you will have to select configurations weather you want to debug or generate hex file. Lets leave both (debug and release) configurations selected.</div><div align="justify" class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDYaETG9JvzhG7AMyrLck8Hs9wxAzdASiGshtKGjN7jQrRww4BF34OjTW69WYL-Xeg0cQ7l4obElAkYGZENUjE9q96JQ-GDncccPyRiIFC4ucfdOmaORs_wsJ29XoYeykozUF-CIJN860K/s1600/debugrelease.GIF" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="291" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDYaETG9JvzhG7AMyrLck8Hs9wxAzdASiGshtKGjN7jQrRww4BF34OjTW69WYL-Xeg0cQ7l4obElAkYGZENUjE9q96JQ-GDncccPyRiIFC4ucfdOmaORs_wsJ29XoYeykozUF-CIJN860K/s320/debugrelease.GIF" width="320" /></a></div><div align="justify">Click Next..</div><div align="justify" class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7tsx3pJM0UIhDfifwnHjiEMny1WlRJYFcX2yWK533lVh-Cv-tiWXfEHvDFXbtHSAYxm0yKwGM-Rf1X66omZWt7zJvZ9KD0BvD0xLbj4VvsVj_Ib5AWWsGI5B2LL13QxJ8DDzA0SswbYIo/s1600/hardware.GIF" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="164" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7tsx3pJM0UIhDfifwnHjiEMny1WlRJYFcX2yWK533lVh-Cv-tiWXfEHvDFXbtHSAYxm0yKwGM-Rf1X66omZWt7zJvZ9KD0BvD0xLbj4VvsVj_Ib5AWWsGI5B2LL13QxJ8DDzA0SswbYIo/s320/hardware.GIF" width="320" /></a></div><div align="justify"><br />
</div><div align="justify">Here we must select AVR microcontroller and its clock frequency. After selections are done click Finish button to prepare new project. Now our project is set up we can start writing program for our AVR. To add files to project we can create new or add existing source files. Simply go to <b>File->New->Source</b> <b>File</b> to add blank C or C++ file. We can use drag and drop feature to add files to project tree. Files also are copied to project folder physically.<br />
<br />
<strong>How to compile</strong><br />
To compile the source code go to <b>Project->Build</b> <b>Project</b> or press following button in Eclipse IDE.</div><div align="justify" class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcP2X_u68IDPzjE6qulZyzxYZdkggkMmaZ-WCiKz1bbnnCEntHleJDq2AA1oIH0AZvjHy5IgZeCoCqNuWPmuwj8qet60AIG1mRaQsasXPqknXrPAkEJBzHE0QT5W-vAn3LiH0S-CeBWRPR/s1600/build.GIF" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcP2X_u68IDPzjE6qulZyzxYZdkggkMmaZ-WCiKz1bbnnCEntHleJDq2AA1oIH0AZvjHy5IgZeCoCqNuWPmuwj8qet60AIG1mRaQsasXPqknXrPAkEJBzHE0QT5W-vAn3LiH0S-CeBWRPR/s320/build.GIF" width="320" /></a></div><div align="justify"><br />
</div><div align="justify">After compiling the few lines of source code I noticed that it is 21.5% full,</div><div align="justify" class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2pGdgE2X6rqBkWTNMCL7rlYBsfzAeVUvChFSxp8xxY-Ys1jDArI8YHzFdDCwypU1EiTMX_imje-79K4NDnhLj_sAj3f0s6v5vp68VZXYnrI7IildfJFT0-tiV_AJTPQubI8zFc3hNBPOg/s1600/prog_size.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="134" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2pGdgE2X6rqBkWTNMCL7rlYBsfzAeVUvChFSxp8xxY-Ys1jDArI8YHzFdDCwypU1EiTMX_imje-79K4NDnhLj_sAj3f0s6v5vp68VZXYnrI7IildfJFT0-tiV_AJTPQubI8zFc3hNBPOg/s320/prog_size.JPG" width="320" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEis_Q8i5iupuZR2w2FGk1ctN30RV4NPhXFLKO85ak7b6Cvi4f2O4lxO-dHLE4XO8LewoaKp8yapJ_SiAJNY3tzkY1x7oNtJAO9TsGTau0PM2Yf2-xfKV3C3WEgO2WCO6iXzRxL0iETdB69R/s1600/prog_size1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br />
</a></div><div align="justify"><br />
</div><div align="justify">so we need to reduce the size of the compiled file with the help of following settlings in Eclipse IDE. These settings will reduce the compiled file size dramatically to 1%.</div><div align="justify" class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEis_Q8i5iupuZR2w2FGk1ctN30RV4NPhXFLKO85ak7b6Cvi4f2O4lxO-dHLE4XO8LewoaKp8yapJ_SiAJNY3tzkY1x7oNtJAO9TsGTau0PM2Yf2-xfKV3C3WEgO2WCO6iXzRxL0iETdB69R/s1600/prog_size1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="134" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEis_Q8i5iupuZR2w2FGk1ctN30RV4NPhXFLKO85ak7b6Cvi4f2O4lxO-dHLE4XO8LewoaKp8yapJ_SiAJNY3tzkY1x7oNtJAO9TsGTau0PM2Yf2-xfKV3C3WEgO2WCO6iXzRxL0iETdB69R/s320/prog_size1.JPG" width="320" /></a></div><div align="justify"><br />
<strong>Optimization to reduce code size</strong></div><div align="justify">For optimization we have to select Project->Properties. Then select C/C++ Build->Settings in the left pane. Select Additional Tools in Toolchain in the right pane. Check Generate HEX file for Flash memory. Check Print Size.</div><div align="justify" class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnglCgHj4JxfWVLj2fKNNV56MTZnlaEMSprJlH7PSKmBi8djHvSN3X2jv_ghmy2b6CgX18jjPzOjAD2m8NtA_9_K_9eQtApYLXXwFl5JTK0EGjccr2_NijL2ojF6IZhnfU_kBbBmrVe62b/s1600/settings1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="244" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnglCgHj4JxfWVLj2fKNNV56MTZnlaEMSprJlH7PSKmBi8djHvSN3X2jv_ghmy2b6CgX18jjPzOjAD2m8NtA_9_K_9eQtApYLXXwFl5JTK0EGjccr2_NijL2ojF6IZhnfU_kBbBmrVe62b/s320/settings1.JPG" width="320" /></a></div><div align="justify"><br />
</div><div align="justify">Select AVR Assembler and then Debugging. Set Generate Debugging Info to No debugging info</div><div align="justify"><br />
</div><div align="justify">Select AVR Compiler and then Debugging. Set Generate Debugging Info to No debugging info</div><div align="justify"><br />
</div><div align="justify">Select AVR Compiler and then Optimization. Set Optimization Level to Size Optimizations (-Os)</div><div align="justify"><br />
</div><div align="justify">Select AVR C++ Compiler and then Debugging. Set Generate Debugging Info to No debugging info </div><div align="justify"><br />
</div><div align="justify">Select AVR C++ Compiler and then Optimization. Set Optimization Level to Size Optimizations (-Os) </div><div align="justify"><br />
</div><div align="justify">Set Other Optimization Flags to following (this is to reduce hex file size):</div><div align="justify">-ffunction-sections -fdata-sections -Wl,--gc-sections </div><div align="justify"><br />
</div><div align="justify">Select AVR C/C++ Linker.In the linker menu, change command line pattern to the following: </div><div align="justify">${COMMAND} --cref -s -Os ${OUTPUT_FLAG}${OUTPUT_PREFIX}${OUTPUT} ${INPUTS} -lm ${FLAGS}</div><br />
<br />
</div>Puran Ranahttp://www.blogger.com/profile/03651006121475692437noreply@blogger.comIndia20.593684 78.9628800000000416.071455499999999 64.319952500000042 35.1159125 93.60580750000004tag:blogger.com,1999:blog-1350090039109326925.post-13434166315392476412011-05-04T15:35:00.001+05:302011-06-23T10:24:42.517+05:30[AVR]+[320x240 LCD]+[Resistive Touchscreen]+[USB]+[SD Card]<div dir="ltr" style="text-align: left;" trbidi="on"><div align="justify"><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCPlJdUKSy8N8HjGf98LWe0I-5e_MC7-Owvpot1o2HQPaH8aFzruEj3ivVZh9z-NM-bY1NXnj60WW0RaVRvGfHh1GT5k6QWjlVhJq7Dde-rQUTdm9yj8sg56JUdXlyVSfiJ63Qo3EDJaMl/s1600/board.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="210" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCPlJdUKSy8N8HjGf98LWe0I-5e_MC7-Owvpot1o2HQPaH8aFzruEj3ivVZh9z-NM-bY1NXnj60WW0RaVRvGfHh1GT5k6QWjlVhJq7Dde-rQUTdm9yj8sg56JUdXlyVSfiJ63Qo3EDJaMl/s320/board.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">AVR Board with 320x240 LCD, USB, SD-Card and Touchscreen</td></tr>
</tbody></table><b>Possibilities</b><br />
Can you make an iPhone out of an AVR?</div><div align="justify">No.</div><div align="justify">Can you get a surprising amount of functionality out of a humble 8 bit processor and a cheap touch LCD?</div><div align="justify">Yes.</div><div align="justify"><br />
<b>Functionality</b><br />
Some functionality of this project are Graphical Menu, 3D Geometry, Sliding Picture Frame, PacMan Game and Wikipedia. Here are some images :<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBZqt-Ndc5PDK3RU-ztOVsiZvM_nhDoYHsSouMLLXt1trDpOnJWSyvF8EpqW0whyphenhyphenXN-l5x5Pmxu3ewubPN3NPKEs3vzMN9KO_tjZYjR54GDXxZXcQJFhIyphpoDC6eP6epJ1p_axgedZsR/s1600/menu.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBZqt-Ndc5PDK3RU-ztOVsiZvM_nhDoYHsSouMLLXt1trDpOnJWSyvF8EpqW0whyphenhyphenXN-l5x5Pmxu3ewubPN3NPKEs3vzMN9KO_tjZYjR54GDXxZXcQJFhIyphpoDC6eP6epJ1p_axgedZsR/s320/menu.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Graphical Menu</td></tr>
</tbody></table><div class="separator" style="clear: both; text-align: center;"><br />
</div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXokpwZy5jIR1sBzjI2TahW2Mx1BteFbT_eWfGTm8NqHMuK1DP1HaRBZ8zsPV3U_ptCzsClkMGDt93iwZnoV8drbIBZQEpFliMxtS1rGu98e7qo7JvTGnCWecKoerY5SClOo9Zmfw95vFu/s1600/geo.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="210" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXokpwZy5jIR1sBzjI2TahW2Mx1BteFbT_eWfGTm8NqHMuK1DP1HaRBZ8zsPV3U_ptCzsClkMGDt93iwZnoV8drbIBZQEpFliMxtS1rGu98e7qo7JvTGnCWecKoerY5SClOo9Zmfw95vFu/s320/geo.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">3D Geometry</td></tr>
</tbody></table><div class="separator" style="clear: both; text-align: center;"><br />
</div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiX-MhHGKXrlpPrhZeSZtmq8kptLQLpKN4v2E7rU4_auGLa3Ed52xVhMVB-LAiKtum17UDniys8snHMVehrEi5vXgThK4ay2_k5jB9kGLAMMZJUfcTKJ2vIoNxb_EqZoAip3ORVD1FGrWMB/s1600/Pictureframe.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="211" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiX-MhHGKXrlpPrhZeSZtmq8kptLQLpKN4v2E7rU4_auGLa3Ed52xVhMVB-LAiKtum17UDniys8snHMVehrEi5vXgThK4ay2_k5jB9kGLAMMZJUfcTKJ2vIoNxb_EqZoAip3ORVD1FGrWMB/s320/Pictureframe.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Sliding Picture Frame</td></tr>
</tbody></table><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikezFwf4AGhx4MFfHWZ1UEhCTKwSF1vxvrXyjmxnqkF0nPzMTz-a9JUXLKZlCKkUWFNSYnfpTCLngDb25eGymvqT_Tv5jFb08TJb7Js6he3oCjO5Ls_7JQ0upzXJhTiDvi1yNdVoaLKUvs/s1600/pacman.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikezFwf4AGhx4MFfHWZ1UEhCTKwSF1vxvrXyjmxnqkF0nPzMTz-a9JUXLKZlCKkUWFNSYnfpTCLngDb25eGymvqT_Tv5jFb08TJb7Js6he3oCjO5Ls_7JQ0upzXJhTiDvi1yNdVoaLKUvs/s320/pacman.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">PacMan Game</td></tr>
</tbody></table> <br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjh9B-3d_PgKd0YiOp_oE3R1-84ZbwD_AdG2DYNp1MmwNaxKUjRGIqytKRdK0NUDch44DI325qgptUc9bRFBq-lRHG23F9sHd6ZG6fW5SlXmhXU26Aw2YaRz2cwzamNxSDkFvS8gDwgyXFx/s1600/wiki.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="211" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjh9B-3d_PgKd0YiOp_oE3R1-84ZbwD_AdG2DYNp1MmwNaxKUjRGIqytKRdK0NUDch44DI325qgptUc9bRFBq-lRHG23F9sHd6ZG6fW5SlXmhXU26Aw2YaRz2cwzamNxSDkFvS8gDwgyXFx/s320/wiki.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Wikipedia</td></tr>
</tbody></table><br />
</div><div align="justify">The iPhone runs more than 30 times faster (417Mhz ARM vs 12Mhz AVR) and has more than 30,000 times as much ram RAM (128M vs 4k) yet this frumpy little device can ape some of the iPhones neater tricks.</div><div align="justify"><br />
</div><div align="justify"><b>Watch video</b></div><div align="justify">Project in action</div><div align="justify"><br />
</div><div align="justify" class="separator" style="clear: both; text-align: center;"><object height="380" width="500"><param name="movie" value="http://www.youtube.com/v/EF3-U9Lb12k&hl=en_US&feature=player_embedded&version=3"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/EF3-U9Lb12k&hl=en_US&feature=player_embedded&version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="500" height="380"></embed></object></div><div align="justify"><br />
</div><div align="justify"><br />
</div><div align="justify"><b>Hardware</b></div><div align="justify">320x240 LCD with 4 wire resistive touch screen (ELT240320ATP - uses a ILI9325 controller).</div><div align="justify">12Mhz Atmega644 CPU with 64k Flash and 4k RAM - demo fits in 32k.</div><div align="justify">USB connector for PC communication and charging.</div><div align="justify">Lithium polymer battery with software controlled power.</div><div align="justify">Software controlled backlight.</div><div align="justify">SD Micro slot.</div><div align="justify"><br />
</div><div align="justify"><b>Software</b></div><div align="justify">LCD driver to support blitting image decompression and smooth scrolling.</div><div align="justify">Z-sorted span 3D engine with zero overdraw.</div><div align="justify">Basic UI framework for gadgets and poorly drawn pictures.</div><div align="justify">USB mouse or keyboard HID support.</div><div align="justify">Sampling profiler.</div><div align="justify">Movie playback.</div><div align="justify">Sprite engine.</div><div align="justify"><br />
</div><div align="justify"><b>Tricky Bits</b></div><div align="justify">4K of RAM might sound like a lot but it isn't. Getting a 3D renderer to fit comes down to the representation of the active triangle edges - this engine uses 16 bytes for a double sided edge so you can have lots of triangles on a horizontal scanline and still run the whole thing in 8k of Flash and 512 bytes of RAM.</div><div align="justify"><br />
</div><div align="justify">Pacman just fits in 8K flash and 512 bytes of RAM. It uses the sprite engine and runs at > 60fps.</div><div align="justify"><br />
</div><div align="justify">None of the images or animations ever linger in RAM, the go straight from the SD card to the screen. The SD card is a wonderful alternative to RAM. Reading a 512 byte block takes ~1ms; not snappy but plenty fast enough for human interation.</div><div align="justify"><br />
</div><div align="justify">At 3.3v, the Atmega644 is limited to about 12Mhz. Pretty pokey when you consider you can buy a 50Mhz ARM Cortex-M3 with the same flash and ram for about 1/3 as much as the 644. Don't get me wrong; I love the Atmel parts but a little more CPU would not go astray.</div><div align="justify"><br />
</div><div align="justify"><b>Source</b></div><div align="justify"><div style="text-align: justify;">Source code, demo files, Eagle PCB and schematics at <a href="https://sourceforge.net/projects/microtouch/">https://sourceforge.net/projects/microtouch/</a></div></div><div align="justify"><br />
</div><div align="justify"><b>Original Post</b></div><div align="justify"><a href="http://rossum.posterous.com/avr-homebrew-device-with-iphone-aspirations">http://rossum.posterous.com/avr-homebrew-device-with-iphone-aspirations</a></div><br />
</div>Puran Ranahttp://www.blogger.com/profile/03651006121475692437noreply@blogger.comIndia20.593684 78.9628800000000416.071455499999999 64.319952500000042 35.1159125 93.60580750000004