Skip to content

Instantly share code, notes, and snippets.

@khairulhasanmd
Created December 30, 2015 03:49
Show Gist options
  • Save khairulhasanmd/ff69d5ed61715879bda5 to your computer and use it in GitHub Desktop.
Save khairulhasanmd/ff69d5ed61715879bda5 to your computer and use it in GitHub Desktop.
<?xml version="1.0" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>ISPnub - Stand-alone AVR In-System-Programmer Module - fischl.de</title>
<style type="text/css">
body {
font-family:Liberation Sans,Arial,Helvetica,sans-serif;
color: #484848;
font-size: 14px;
}
h1 {
font-size: 20px;
font-weight: normal;
margin: 30px 0 15px 0;
}
#header {
border-bottom: 1px solid #888;
margin: 0 auto;
width: 900px;
height: 50px;
}
#footer {
border-top:1px solid #888;
margin: 0 auto;
margin-top: 15px;
width: 900px;
color: #888;
padding-top: 5px;
text-align: right;
clear:both;
}
#content, #tagcontent, #maincontent {
margin: 0 auto;
width: 900px;
}
#maincontent, #tagcontent {
margin-top: 15px;
}
#welcomeintro {
width: 410px;
float: left;
font-size: 20px;
padding-left: 40px;
}
#intro {
margin: 0 auto;
padding: 30px 0;
width: 900px;
background-color: #edf0f6;
}
#projecttip {
position:relative;
left: 810px;
top: 5px;
color: #aaa;
margin-bottom: -25px;
font-size: 11px;
width: 450px;
}
#projecttip A, #projecttip A:hover, #projecttip A:visited {
color: #8ea1f2;
}
#projecttip img {
float: left;
margin-right: 10px;
}
#linktip {
position:relative;
left: 910px;
top: 5px;
color: #aaa;
margin-bottom: -25px;
font-size: 11px;
width: 450px;
}
#personal {
width: 450px;
float: left;
font-size: 12px;
color: #888;
}
#personal A, #personal A:hover, #personal A:visited {
color: #888;
text-decoration: none;
}
#logo {
font-size: 24px;
font-weight: bold;
padding-top: 20px;
}
#navigation {
padding-top: 30px;
float: right;
}
.twocolumns {
width: 450px;
float: left;
}
#content .project {
height: 75px;
width: 400px;
float: left;
margin-left: 40px;
padding-right: 10px;
margin-bottom: 10px;
}
#tagcontent .project {
width: 500px;
margin-bottom: 30px;
clear: left;
}
.project h3 {
font-size: 100%;
font-weight: bold;
margin: 0px;
}
.project img {
margin-right: 10px;
margin-bottom: 10px;
}
.tags, .tags a, .tags a:visited {
color: #888;
}
a {
color: #003CD7;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
a:visited {
color: #003CD7;
}
.tagbox {
margin-left: 40px;
}
#sidebar {
float: right;
width: 300px;
}
.sidebarbox {
padding: 15px 15px;
width: 270px;
background-color: #EDF0F6;
margin-bottom: 20px;
}
pre {
background-color: #EEEEEE;
border: 1px solid #DDDDDD;
font-size: 12px;
padding: 0.75em 1.5em;
}
#flink {
float: right;
}
#flink A, #flink A:hover, #flink A:visited {
color: #000000;
font-size: 8pt;
text-decoration: none;
}
#cats, .tagbox {
line-height: 1.5;
}
.partlist td {
padding-right: 20px;
}
.partlist th {
border-bottom:1px solid #ccc;
}
.startoptional td {
border-top:1px dashed #ccc;
}
img.center {
display: block;
margin-left: auto;
margin-right: auto;
}
.ordernow {
font-size: 15px;
font-weight: bold;
}
.ordertable td {
border-bottom: 2px solid #ccc;
border-top: 2px solid #ccc;
}
.ordertable {
border-collapse:collapse;
margin-top: 15px;
}
.delivery_green {
background-color: green; width: 10px; height: 10px; float: left; margin: 3px 3px 0 0;
}
.delivery_yellow {
background-color: #efae00; width: 10px; height: 10px; float: left; margin: 3px 3px 0 0;
}
</style>
<meta name="keywords" content="ISPnub, Stand-alone, programmer"/>
<meta name="description" content="Stand-alone programmer module for AVR microcontrollers."/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div id="header">
<div id="navigation">
<a href="/">Home</a> | <a href="/projects/">Projects</a> | <a href="/contact.html">Contact</a>
</div>
<div id="logo">
Thomas Fischl
</div>
</div>
<div id="content">
<h1>ISPnub - Stand-alone AVR In-System-Programmer Module</h1>
<img src="images/ispnub.jpg" alt="ISBnub" align="right"/>
<i>ISPnub is a simple to use stand alone programmer intended for flashing AVR controllers
in the field directly in the target system or during production. The module has only
one button and two leds as user interface.</i>
<h2>Features</h2>
<ul>
<li>No external power supply needed. Uses voltage provided by target (1.8V to 5.5V).</li>
<li>Programming counter. Limit possible programming cycles. After allowed cycles, no further programming is possible (module has to be erased/reprogrammed).</li>
<li>One-button-programming: connect - push button - wait for red led off.</li>
<li>Simple LED schema:
<ul>
<li>green on = ok</li>
<li>green blink = counter expired</li>
<li>red on = programming</li>
<li>red blink = error</li>
</ul>
</li>
<li>Define programming with simple script. Script converter generates HEX file for module.</li>
<li>Load module with any ISP programmer which supports ATmega1284p</li>
<li>120kB memory space for programming data</li>
</ul>
<h2>Usage</h2>
Before ISPnub can flash controllers, it has to be flashed itself with the programming instructions.
<h3>1. Preparing: Load programming instructions into ISPnub</h3>
A programming script defines with simple commands the steps for the programming process.
This method is very flexible and can be adopted for almost all AVR controllers.
See the <a href="programming_script/">ISPnub Programming Script Manual</a>.
The sequences for serial programming are described in the datasheet of the specific AVR microcontroller.
Here is a example of a simple programming process ("test.ispnub"):
<pre class="listing">
CONNECT 2000000 ; connect with SCK = 2 MHz
SPIVERIFY 0x30, 0x00, 0x00, 0x00, 0x1E ; check signature byte 0x00 (0x1E = manufactured by Atmel)
SPIVERIFY 0x30, 0x00, 0x01, 0x00, 0x93 ; check signature byte 0x01 (0x93 = 8KB Flash memory)
SPIVERIFY 0x30, 0x00, 0x02, 0x00, 0x07 ; check signature byte 0x02 (0x07 = ATmega8 device)
SPIWRITE 0xAC, 0x80, 0x00, 0x00 ; chip erase
WAIT 2 ; wait 20 ms
FLASH ../test/main.hex, 0, 64 ; flash given hex file starting at flash address 0 with pagesize 64
DISCONNECT ; disconnect SPI
DECCOUNTER 10 ; allow 10 programming cycles
END</pre>
Clock switching and EEPROM writes can also be realized with ISPnub. Here is an enhanced example
which uses such features: <a href="downloads/example.ispnub">example.ispnub</a>.<br/>
<br/>
The hex file for the ISPnub is generated with a Java tool (see download section):
<pre class="listing">java -jar ISPnubCreator.jar test.ispnub ispnub.hex</pre>
Now the "ispnub.hex" can be flashed with your favorite programmer (e.g. <a href="/usbasp/">USBasp</a>) into the ISPnub module. Set the jumper on the ISPnub while programming (and don't forget to remove the jumper after flashing!).
Here is an example which uses avrdude and USBasp:
<pre class="listing">avrdude -c usbasp -p atmega1284p -U hfuse:w:0xD9:m -U lfuse:w:0xE2:m -U flash:w:ispnub.hex -U lock:w:0x3C:m</pre>
... ISPnub is now ready for stand-alone flashing.<br/>
<iframe width="300" height="200" src="http://www.youtube-nocookie.com/embed/3lXy30CwcNY?rel=0" frameborder="0" allowfullscreen style="float:right"></iframe>
<h3>2. Flashing: Program target controllers</h3>
Using the prepared ISPnub is very easy. Just follow these steps:
<ul>
<li>Connect ISPnub to target (ISPnub is powered from target!)</li>
<li>Green LED is on, if ISPnub is ready</li>
<li>Press button -&gt; programming starts. While programming, green and red LEDs are on.</li>
<li>On success: green LED is on, red off.</li>
<li>On error: red LED blinks. Press button to start new programming cycle</li>
</ul>
<h2>Download</h2>
To use ISPnub, just one tool is needed: ISPnubCreator. It generates from programming instructions a hex file for the ISPnub.
The tool is written in Java and can be used on many different platforms (Windows, Linux, Mac, ..).<br/>
<br/>
<a href="downloads/ISPnubCreator_v1.3.jar">ISPnubCreator_v1.3.jar</a> (2014-09-01; 9,9 kB) Support for target controller with flash up to 256kBytes<br/>
<a href="downloads/ISPnubCreator_v1.2.jar">ISPnubCreator_v1.2.jar</a> (2014-04-10; 9,9 kB) Skip blocks with 0xff, added EEPROM command<br/>
<a href="downloads/ISPnubCreator_v1.1.jar">ISPnubCreator_v1.1.jar</a> (2014-04-03; 8,3 kB)<br/>
<a href="downloads/ISPnubCreator_v1.0.jar">ISPnubCreator_v1.0.jar</a> (2013-06-14; 14,7 kB)<br/>
<br/>
The source code is hosted on Github:
<a href="https://github.com/EmbedME/ISPnubCreator">ISPnubCreator</a> and <a href="https://github.com/EmbedME/ISPnub">ISPnub firmware</a>.
<h2>Hardware</h2>
<h3>Schematic</h3>
The main component of ISPnub is an ATmega1284P.
<img src="images/ispnub_circuit.png" alt="ISPnub schematic" /><br/>
<h3>Partlist</h3>
<div style="float:right; width:230px; background-color:#EDF0F6; padding: 10px;text-align: center">
<b>ISPnub PCB (3x)</b><br/>
<a href="../order/"><img src="images/ispnub_3xpcb.jpg" alt="ISPnub: 3xPCB" style="margin-top:10px;"/></a><br/>
<div style="margin-top: 10px;font-size:20px">&euro; 12,90</div>
<div style="font-size:10px">incl. 19% VAT excl. &euro; 2 shipping</div>
<br/>
<a href="../order/" class="ordernow">Order ISPnub-PCBs now!</a>
</div>
<table class="partlist">
<tr><th>Partnumber</th><th>Value</th><th><a href="http://www.reichelt.de">Reichelt</a></th><th><a href="http://www.mouser.com">Mouser</a></th></tr>
<tr><td>C1, C2</td><td>100n</td><td>X7R-5 100N</td><td>80-C0805C104K5R</td></tr>
<tr><td>IC1</td><td>ATmega1284P-AU</td><td>ATMEGA 1284P-AU</td><td>556-ATMEGA1284P-AU</td></tr>
<tr><td>JP1</td><td>2pol 2,54mm</td><td>MPE 087-1-002</td><td>571-826936-2</td></tr>
<tr><td>LED1</td><td>LED0805 red</td><td>SMD-LED 0805 RT</td><td>604-APT1608SURC</td></tr>
<tr><td>LED2</td><td>LED0805 green</td><td>SMD-LED 0805 GN</td><td>604-APT2012SGC</td></tr>
<tr><td>R1</td><td>10k</td><td>1/4W 10K</td><td>603-SR0805JR-0710KL</td></tr>
<tr><td>R2, R3</td><td>1k</td><td>1/4W 1,0K</td><td>71-CRCW0805-1.0K-E3</td></tr>
<tr><td>S1</td><td>Switch</td><td>TASTER 9314</td><td>693-1301.9314</td></tr>
<tr><td>X1</td><td>10pol</td><td>WSL 10W</td><td>517-N2510-5002RB</td></tr>
<tr class="startoptional"><td>M1</td><td>Jumper</td><td>JUMPER 2,54GL SW</td><td>517-9691020000DA</td></tr>
</table>
<h2>Links</h2>
Regarding ISPnub:<br/>
<a href="programming_script/">ISPnub Programming Script Manual</a><br/>
<a href="images/ispnub_top.png" alt="Top view of ISPnub">Top view of ISPnub pcb and parts</a><br/>
<img src="../pics/de.png" alt="de"/> <a href="link/reichelt_ispnub_warenkorb/">Reichelt Bauteil Warenkorb zu ISPnub v1.1</a> (part list for ISPnub)<br/>
<br/>
Other AVR programmers with stand-alone function:<br/>
<img src="../pics/en.png" alt="en"/> <a href="http://www.chinics.com/avrisp-sa2.html">AVRISP SA2 - Stand Alone 2 Series</a><br/>
<img src="../pics/de.png" alt="de"/> <a href="http://elmicro.com/de/avrisp500.html">AVR-ISP500-TINY</a><br/>
<img src="../pics/en.png" alt="en"/> <a href="http://www.adafruit.com/products/462">Arduino Stand-alone Programmer Kit</a><br/>
<br/>
Standalone programmer for other microcontrollers:<br/>
<img src="../pics/en.png" alt="en"/> <a href="http://microchip.wikidot.com/pickit3:programmer-to-go">PicKit Programmer-to-go</a> (for Microchip PICs)<br/>
</div>
<div id="footer"> &copy; 1998 - 2015 Thomas Fischl &middot; <a href="/privacy.html">Privacy Policy</a> &middot; <a href="/contact.html">Imprint/Impressum</a> </div>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment