Banner with yellow background

Like to use your arduino as an in-system programmer (ISP)?

Check out mega-isp on

... Link

Why I converted my Arduino to an AVR910 programmer

I have a handful of AVR chips that I'm using in various projects (including WOSP). You use the SPI interface to upload the software to the chip's flash memory. I wrote a custom program on the Arduino that would read in Intel S-records and push the program onto the chip. I hoped to simply send the programs a file at a time to the chip. Didn't work. There was no hardware handshaking between the USB Arduino and the computer, so it would fill the buffer and then hang. No fun. I tried adding xon-xoff control but couldn't get that working either. I could put the programs in using Hyperterminal, one line at a time. That got old before it was even new. I decided to clone the AVR910.

It wasn't hard to do, I just read through the published source from Atmel and converted it to C for the Arduino. Once I had it sending and receiving characters I got AVRDUDE and started debugging. I had some initial problems because I tried to tell avrdude I had an AVRISP. I didn't, I had AVR910. It took a few night's hacking but I got to where I could read and right EEPROM and Flash on the target chips. The last problem I fixed was a byte order thing with sending an address. Seems that avrdude sends the programs one byte at a time, preceeded by the address. So each time I would get the address but in the wrong byte order. I swapped it around and suddenly it worked.

My targets are ATtiny13, 15, and 2313. The tiny13 isn't officially supported by avr910, so I just assigned it an ID of 1 and it works. I haven't tried the tiny15 chip yet, but the programmer works for tiny13 and tiny2313.

So look for more AVR projects from me in the near future!

... Link

Programming Tiny15 via Arduino

When I plugged my Olimex 8pin AVR dev board into my Arduino I could read the device signatures just fine (after fixing one timing bug). But when I tried to write a program to the Tiny15 chip things got strange fast. Especially when I got the byte order wrong (started writing MSB into LSB - another bug). After that no matter how much I wrote the first few bytes of the program were always zero. No fun!

So I added a 'chip reset' to my programming software. This flips all the bits in the flash ON, after that it would take my program. Guess you can only turn the bits off when you program the flash.

For the Tiny15 program I wrote the code in Astudio4, then manually assembled it with -l tiny.lst. Then I openened tiny.lst and copied the machine codes into my programmer C code. The code would use the array to send individual bytes to the Tiny15 using SPI. OK, this is not a great way to do it, but it let me learn how the Tiny15 unit works.

I was disappointed that you could only set the bits OFF unless you reset the whole chip. That makes iterative development more difficult. I'm working on a 'way old school' programmer, which will allow you to enter the program 8 bits at a time (using 8 switches). The plan now is to capture the whole software image (or at least 256 words of it) in memory on the Arduino's ATMega8 chip, then erase and write it to the Tiny15 etc. I will also be able to read the Tiny15 program into the Mega8, edit it there, then push it back out to the Tiny15. More about the WOS programmer in my next post...

... Link

Creative Commons License (by-nd)

Creative Commons License

Blog entries licensed under a Creative Commons License.

7476 days of detection
mod: 12/3/08, 5:42 AM

days of detection

... PMOG
... ideas
... brain hurts
... weblo



Randall Bohn lives in Orem, Utah, USA. He works as a Software Quality Engineer. He is a big fan of the AVR line of microcontrollers. He has been in the computer industry since 1989. Randall is married and has three children.

rsbohn can be reached via

Youre not logged in ... Login DVD Shop
... home
... topics
... galleries

... home


January 2023
recent updates
Arduino Starter Kit
MAKE Blog How-to Tuesday posted a challenge: Optimize the sketch code for a pressure sensor bar graph. Here is my second attempt: int gate[] = {10, 20, 50, 100, 200, 32767}; void setup() {DDRB = 0b00111110;} void loop() { int dval = 0; int rval = analogRead(2); for (int x = 0; rval...
12/3/08, 5:42 AM
Measuring Supply Voltage
I'm running my latest handheld computer on solar power. It starts up when the sun rises and runs all day. I started wondering how I could measure the voltage coming in from the solar panel. I came up with a way to use a diode and a resistor and the...
7/29/08, 9:53 AM
Ten Pin ISP adapter
I've already built a six pin ISP adapter, but my Olmex cards use the ten pin ISP. I put a header on a scrap of perf board, added an LED for the heartbeat, and then connected the ten pin cable. Actually it is a fifteen pin cable, off a joystick...
7/16/08, 10:00 PM
Hello 5x7 Style
Wrote a new firmware for the 5x7 display. Now it scrolls out 'hello' over and over again. I'm running it on a solar panel, so it wakes up with the sun and runs all day long. When I built the LED matrix I put resistors on the five columns. I'm starting...
6/17/08, 12:48 PM
Provo, Utah
With a walkable downtown and access to two Universities, Provo Utah is a great location. I live next door in Orem. Kipplinger: Provo: Pristine Tech Mecca (Video) (Text)
6/2/08, 10:07 AM
Another release of AVRISP sketch
There is a new release of the AVRISP emulation sketch for Arduino: This one should work with Mega8 and Mega168. mega-isp
5/28/08, 4:48 PM
Sorting Out Page Sizes
There is a new release of AVRISP Emulation for Arduino. This is an Arduino firmware that allows you to program other AVR microcontrollers. The new zip file ( should compile on the current Arduino IDE, and I changed the comments that put the wrong labels on the SPI pins. Go ahead...
5/27/08, 11:31 AM
Flash Problems
I'm building a project using the AVR ATMega8 microcontroller. Once I got the thing wired up to where I could write firmware to it I found that it was always failing. I made a .hex file full of 0x10 values (256 bytes worth) and tried uploading that to the chip....
5/16/08, 2:56 PM
William's Arduino Board
I'm building an Arduino-compatible board for William. I'm building it on the Evil Mad Scientist MegaXX8 business card. It will have four built-in LEDs and a USB interface. It will also have connectors so he can use it with a breadboard. Perhaps we can connect it to some of his...
5/15/08, 7:26 AM
Cybord Signal Detector
Some digital radio signals use Frequency Shift Keying (FSK). This often has one frequency for a Mark and one for a Space. I plan to build a cybord or other chip that will decode an FSK signal, producing three different values: NO_SIGNAL, MARK, and SPACE. The signals would then go...
5/15/08, 7:20 AM


Listen to IT Conversations

Made with Antville

Quantum Touch

RSS Feed