Tic-Tac USBtinyISP Programmer

What's with mint boxes and electronics? Beats me, but they are somehow made for each other. I had built ladyada's USBtinyISP v1.0 circuit on a breadboard which I used every other day. It worked sporadically(and never at hour of need), used up half of my breadboard and looked ugly. So I decided to try my hand at home PCB fabrication and build it in, of course, a tiny tic-tac box. Since I was a beginner, the circuit is easy and single-sided and uses crystal instead of ceramic oscillator.

Frankly, I didn't even expect it to work so didn't take any photographs. I recently decided to make it again with a few improvements(notice the old orange one has the top backwards) and document it for Instructables. You have to make one of these if you:
  • want to use bare-bones super-cheap arduinos in your projects
  • want to burn bootloader to a blank AVR for your Arduino
  • love working with AVRs
  • are thinking of buying a programmer

Note: You need to break out of the chicken-n-egg problem and get the program onto the ATtiny2313 used in this project. Check out  Step 4 for detailed information and possible solutions.

Edit: Modified board so resonator can also be used for timing! If using crystal, middle pin for resonator can be ignored. If using resonator, no need to solder capacitors C1 and C2.
Remove these adsRemove these ads by Signing Up
principle5 months ago
Just finished mine works perfectly. I've had an old arduino uno in the draw for a while the usb on it dropped dead. TBO i though the entire unit was fried, I just brought it back to life with the Tic-Tac USBtinyISP Programmer. Usb on the uno is still not working but everything else is good, and now i can programme it again,

Thank you for the clear instructable, I'm new to making my own pcb's and i had a lot of fun making this one.

yours looks cool too
Antzy Carmasaic (author)  principle5 months ago
Woah! Can't believe someone tried out one of my crazy designs! And that looks awesome. Hard to believe you're new to PCB fabrication.

I also fried my Arduino long back. A change of IC brought it back, except for USB connection. Just like your case, Tic-Tac USBtinyISP came to the rescue. Later I tried DFU programming and managed to restore serial transmission from Arduino to PC, but could not fix PC to Arduino. That meant I still had to rely on USBtinyISP for programming but could now read serial data sent by Arduino.

You should give DFU a go. Here is the thread I started for it:;wap2
Hope it helps.

I'm really really really glad you made and shared it. :-)
Thanks for the tip i'll check it out :)

I actualy wanted to make your ArrDrownHo! which is what got me to this instructable, this one seemed easier so i decided to start with this. I'll be building the ArrDrownHo! this week i'll post the images as I go wish me luck with my first double sided board!

Thanks again
Antzy Carmasaic (author)  principle5 months ago
That's great. You'll love ArrDrownHo! Now I hardly ever use my Arduino as ArrDrownHo! does all that, and is also breadboard friendly. It's harder to solder than tic-tac USBtinyISP, and all the components are a bit crammed together but the end product will be worth it. Best of luck for the build.

Great job, I love any kind of box. Have you tried the alloyd boxes I know it is not all about the box, but a great box can mean the world to someone like you, I know because my friend is the same way. He uses things like this too.Check out my project Bird Cage Wall Art work and I would love it if you follow me. I am new here.

schel2 months ago

Hey! Great 'structable! Much Thanks for sharin' the info! Q: if I wanted to use a 328 instead of the ATiny and changed the crystal to a 16 mhz and, a 28 pin IC holder. would everything else be the same / work using a 328 to load 328s?

Antzy Carmasaic (author)  schel2 months ago

Using a 16MHz crystal is not possible since the USB protocol will require very accurate timing which will be off since the code is written according to a 12MHz crystal. The code is written in avr-c, so to use it on an ATmega328P, you might need to change the pins as well in code.
If you are talking about uploading this code onto an Arduino or one of its clone(ATmega328P and 16MHz sounds like an arduino), then I'd suggest to go with ArduinoISP.

Uh..Duh! I wondered about that 12 mhz thing...of course not knowing WHAT I dont know...I bought 2 USBasp s! Thanks, this is the first clear answer / direction I've gotten on this. On the flip, I'm looking at a UNO clone that has the 10 pin header for asp connection. Hey, so now I have 4 atmega chips and 3 different type boards to put 'em on! ...I'll keep buildin' until I can get a programmer to work on one! Much Thanks!

matstermind2 months ago

just finished mine, i uploaded the main.hex file and avrdude said it verified correctly, but windows won't recognize it, and it says the diver file is not compatible with my hardware. do you have any idea why it would be doing that? did i need to burn a different hex file?

Antzy Carmasaic (author)  matstermind2 months ago

Which windows are you using? If it's Windows 8 or 8.1, the procedure is slightly complicated. Instructions to install drivres on all Windows systems can be found here:

Give it a through read. If it still won't install the driver, send me a screenshot of the error, and I'll try my best to help you out.

P.S. If your project is finished, can you please post an image? I love to see people making my Instructable :)

parth_bhat4 months ago
what ur telling is right but if avrdude don't have atmega8L in his file then how it is reading the atmega8L chip when I connect it with usbasp?? I type " avrdude -c usbasp -p m8 " it gives me the proper answer. but when I change the programmer from usbasp to usbtiny den the errors comes. I'll try again troubleshooting as yesterday night I read the whole adafruit tutorial which u have described in ur tutorial also they have told the same error message which am getting. and they are telling if u get the error message den the programmer is not spking with atmega8L or there is wiring errors. but I've checked for wiring errors it's not there. pls u also once see that tutorial. so that u'll exactly understand what problem am facing. pls check under " stuff that can go wrong" thanks for ur quick replies. but slowly slowly am loosing my hopes on the programmer :-(
Antzy Carmasaic (author)  parth_bhat3 months ago
Did you have any breakthrough with your problem?
I recently bought an ATmega328 instead of ATmega328P. avrdude wouldn't accept it. I followed this instructable to fix the problem:
parth_bhat4 months ago
heyy, just now I tried to check weather the atmega8L is spking with usbtiny or not and its not spking it's giving me an error " initialization failed , rc=-1 double check connections or try again or use -f to override this check " and the same error is even been seen on arduino IDE when I burn bootloader on atmega8L or I upload any sketch. and this problem is only with atmega8L not with atmega328. and if I try to do same thing with usbasp then no problems. so can you pls tell me some solution. :-)
Antzy Carmasaic (author)  parth_bhat4 months ago
I checked my avrdude and there is no ATmega8L listed in its parts. It's possible there is significant difference between ATmega8 and ATmega8L. I checked the ones I programmed and they are without an L. If you have one, can you try with ATmega8? If this is the problem, you will have to change avrdude config file to include ATmega8L.
parth_bhat4 months ago
the programmer does works with atmega328 it burns the bootloader on atmega328 but not on atmega8L. the error is lyk " avrdude fail and not in sync" u can find these errors on internet if u look for arduino as isp. people have came across these types of errors. besides that the main aim to burn the bootloader on atmega8L is its of Rs. 70 only. whereas atmega328 is of 500 and above. I'll check weather the usbtiny is reading atmega8L or not. but everything works gr8 if I try with usbasp. pls any other alternative would be helpful
parth_bhat4 months ago
actually finally I finished the Project and I was eagerly waiting for ur rply. the programmer works but it's not burning the bootloader on atmega8L. and my main purpose was to program atmega8L. " Mehenat ka faal mitha nahi mila meko " :'( but. am able to program atmega8L with usbasp. pls can you give me some suggestions or can help me. I have even posted on ur site.
Antzy Carmasaic (author)  parth_bhat4 months ago
By your comment 'the programmer works', do you mean you are able to program other ICs? Or just that the computer recognizes it? What is the error you are receiving with ATmega8L? Are you selecting a board with ATmega8 in the Arduino IDE?

You can try checking through command line using avrdude if it can talk to the ATmaga8L. If using windows, open cmd and type: avrdude -c usbtiny -p atmgea8
Detailed tutorial here:
parth_bhat5 months ago
it's really very very very very very best instructable on this website. u have shared the most detailed things for making this project which people usually don't share easily. again thanks for the instruuctable. I have one question :-) in the video of ArrDrowHo. which avr u used? was it atmega8L ?
Antzy Carmasaic (author)  parth_bhat4 months ago
Thank you! I think I used ATmega328P in the video. I tried using Atmega8 earlier but the bootloader takes about 8 seconds to start code execution after power-up(which looked alarmingly long in video), while ATmega328P's bootloader takes 1 second or less usually. But the bootloader burning time is waaay longer for ATmega328P so I sped it up in the video.
nerd74735 months ago
Algaja6 months ago
First of all very nice instructable, but could you explain me something?
I dont understand the purpose of R2 and R3. Why are they necessary, to prodect the pins after the target has been programmed? Also C3 is for smoothing the power supply, but what is C6 used for? I saw a instructable that used ATtiny85-20 with only the zener diode part for the programmer, no resistors on MOSI SCK and no C6..

Thank you
Antzy Carmasaic (author)  Algaja6 months ago
A discussion thread on adafruit tells us that R2 and R3 are not strictly needed and are there just for safety, probably from some externally connected load to MOSI/SCK pins while being programmed.

C3(0.1uF) and C6(100uF) are both decoupling capacitors, connected across the power supply to remove both high frequency and low frequency noise. This combination ensures a smooth power supply to ATtiny2313 over a wide range of power supply noise frequency.

I'll quote the following text from a decoupling tutorial:
For effective supply de-coupling that frequency has to cover as wide a range as possible and certainly the range of noise being generated by the circuits. So this is why we often see two different values of capacitor used in parallel. One large one to filter out the low frequency variations and a small on for the high frequency noise. Typical values are 47uF and 0.1uF or 0.01uF (10nF)

Glad you liked my Instuctable. :)
Thank you very much for your reply, it helped a lot.
DoxxRoxx7 months ago
In all actuality, it will hurt even more than, 'like hell',  for that chicken to lay an IC ... mainly because that's a picture of a rooster!  OUCH!  ;-)

Nice instructable!  I'm going to give one of these a go.
Antzy Carmasaic (author)  DoxxRoxx7 months ago
Hahahaha. Nice catch. Then instead of laying, it probably came out in the rooster's toilet pot in the morning ;P
Dylon1248 months ago
great project, but does it actually work and can I use a 3 pin 12 MHz resonator?
Antzy Carmasaic (author)  Dylon1247 months ago
I've uploaded a video of it in action as well. There is some problem with audio channels though.
Antzy Carmasaic (author)  Dylon1248 months ago
How dare you doubt the authenticity of my project!!! Just joking... :P
Yes, it does work. I've been using it extensively the past few months. I don't have any other programmer and trust me, I've been coding a lot of AVRs. So it has been holding up exceptionally well. I recorded a short video of it in action but was too lazy to edit it. Will try to finish it an put it up soon.

Your comment gave me an idea. I've modified the board design so it can be used with either crystal or resonator, whichever is easily available for you. You can look at the board design's comments to see how it can be used with a resonator(on the intro page).
rogeliotorlao7 months ago
hey can i use this ? usb to parallel port? it says "Ideal to connect parallel port interface equipment from your USB port "
Antzy Carmasaic (author)  rogeliotorlao7 months ago
It's better to invest in an AVR programmer if you are going to spend money anyways. I tried using a usb to serial port convertor once and it didn't work out. These convertors sometimes barely fulfill the protocol requirements and the parallel port programmers lie in the grey areas of protocol usage.

So I'd say if you are just starting out and don't have access to any of the devices to get out of chicken and egg problem, and you are ready to spend a bit of money, you should definitely buy an avr usb programmer.
rogeliotorlao7 months ago
hey guys im very sad today that my place is the hindrance for my dreams i always wanted to make that one but i dont know if a PREPROGRAMMED 2313 is available here in PH :( . . i dont have a parallel port in my laptop either :( can i use my USB PORT to preprogram these chips Plsss .. i need your help
Antzy Carmasaic (author)  rogeliotorlao7 months ago
You can read through step 1 to find out how to begin.

Do you know anyone who has a desktop with parallel port or owns an Arduino or some Arduino clone?
Dylon1248 months ago
for the diodes, can a 1n4148 diode work?
Antzy Carmasaic (author)  Dylon1248 months ago
1N4148 is a switching diode. We need 3v6 zener diodes for this. The purpose for these is to cap the maximum signal voltage to 3.6V. Since AVRs use 5V, this is a cheap and easy hack to make AVR's signals USB compatible.
If you don't have 3v6 zeners, you can use 2 other diodes in series to drop voltage like this guy did:
No guarantee if it will work or not... :)
Tanmay Das11 months ago
Hi can this be used as an arduino clone??
Antzy Carmasaic (author)  Tanmay Das11 months ago
Arduino's primary functions are just powering up your AVR(Arduino's brain) and providing a serial interface so a computer can talk to and program the AVR.
If you only connect Arduino to computer for uploading your program and then use it in isolation from the computer, then instead of using a whole Arduino, you can just power an AVR with 5V and use USBtinyISP to upload your code. That is a bare-bones Arduino with the only missing feature being the ability to talk to a computer(not required in most cases). This setup will cost you waaay less than an Arduino.

So, this cannot be used as an Arduino clone. But it can let you upload code onto your bare-bones Arduino clones.

Coolest bean I ever saw!!!!
Antzy Carmasaic (author)  cupcake lover1 year ago
Thank you!
Nice! Do you know if this works with attiny85 chip -8 pin? A lot of people go for that chip because of it's small size and cost.

Get More Out of Instructables

Already have an Account?


PDF Downloads
As a Pro member, you will gain access to download any Instructable in the PDF format. You also have the ability to customize your PDF download.

Upgrade to Pro today!