ATtiny and ATmega328 ISP shield for the Arduino Uno

Arduino ISP programmer I had already made an ISP programmer shield for the Arduino Uno to program ATtint processors. Unfortunately the design was a bit sloppy, it had to be pressed very precisely on the right pins and had a normal socket so that puttin en pulling the chip in and out was not really easy either. For ISP programming of the ATmega328 I was still using a breadboard solution and so it was time to buy or make a universal ISP programmer. First I bought a cheap Chinese version of the USBISP but it was impossible to get it to work, also because my laptop does not recognize it and correct drivers were never to be found or not that thrustful. After a few tries I gave up. There are quite a lot of designs from ISP programmers but all a bit unclear so I decided to experiment on a standard Arduino shield, with two ZIF (Zero Insertion Force) sockets to create a universal ISP programmer for both the ATtiny and ATmega328 processors. I have one control led set up, which can also be used for testing the board to see if the programming is successful, by programming a custom Blink scketch. The ATtiny does not have an external crystal because it usually has no external crystal to save two extra pins, the ATmega328 has the crystal in a socket so that it can be used with or without external crystal. The board works great for me, that's why I put it on my website for others who want the same thing. Sincerely,Hein Pragt


Arduino ISP programme schamtics

ATTiny and ATmega328 ISP programmer schield

If you want to program an ATtiny or an ATmega328 more often (for example to use a bootloader), a standard programming shield for the Arduino Uno is handy to have. To build this PCB I experimented with a standard Arduino Uno shield, it already has the connection pins for the Arduino Uno in the right place and enough empty double-sided islands with holes for the circuit we are going to make. This double-sided is also useful because you can make connections on both sides but also be able to place components on both sides. I took two ZIF sockets to easily place and remove the chips without damaging or bending pins. The schematics can be found at the bottom of the page at the downloads section, print it first. I have placed the ZIF sockets first in the middle of the experiment PCB, and I also have the pin rows for the connection to the Arduino Soldered. Then I made the connections between the pins of the Arduino with fine mounting wire in various colors soldered Uno and the pins of the ZIF sockets and the lines neatly spaced next to each other on the PCB. Then I mounted the led, the capacitor on the reset pin and the resistors and then checked all connections with a multimeter for good connection and no shorts. (Everything was good, but to measure is to know and to guess is to miss!). The board is now ready for the first test.

To use the Arduino Uno as an ISP programmer, you must first load the "ArduinoISP" sketch on a normal Uno, it can be found under examples in the standard Arduino IDE. Compile the sketch and upload it to the Arduino Uno, after this the Arduino Uno has changed into an ISP programmer and you can place the shield. Now first select the type of chip you want to program, for the ATmega328 can you just select the Arduino Uno. Leave the serial port on the original Uno and at Tools -> Programmer select the "Arduino as ISP" option. After this you can burn a bootloader or upload a sketch to your Arduino Uno with programmer shield, to program it into the chip in the ZIF socket. Below is a test Blink sketch for this programmer.


void setup() {                
  // initialize the digital pin as an output.
  pinMode(0, OUTPUT); //LED on Model B tiny
  pinMode(1, OUTPUT); //LED on Model A tiny
  pinMode(11, OUTPUT); //LED on Model 328p      
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(0, HIGH);   // turn the LED on
  digitalWrite(1, LOW);
  digitalWrite(11, LOW);
  delay(1000);             // wait for a second
  digitalWrite(0, LOW);    // turn the LED off 
  digitalWrite(1, HIGH); 
  digitalWrite(11, HIGH); 
  delay(1000);             // wait for a second
}

Adjust Arduino IDE for ATtiny

To be able to program the ATting85 we first have to upload the ISP sketch in the Arduino Uno. You can find this sketch in example files included with the Arduino IDE which can be found in file -> Examples and the sketch is called ArduinoISP. Connect the Arduino Uno without shield to the computer and upload this sketch to the Arduino Uno in the usual way. Now let's get the Arduino Change the IDE to support the Attiny. In the screen that you can find under File -> Preferences, search for the input field "Additional Board Management URL" and enter the following URL:

https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json

Arduino ATTiny ISP programmer Then press the OK button to save the setting and close the screen. Then go to Tools -> Board -> Board Manager and search all the way down to the block that says "attiny by Davis A. Mellis" and click install. A new board must be installed after installation added to the selection screen for the boards. Here you box the board, the processor and the choice for Arduino as ISP after which you place the shield on the Arduino. Now you can load the Blink sketch where you have to change the LED pin to 0 because we have the LED on this pin have put. When you connect the Arduino with the shield to the computer you should be able to upload this sketch via the normal upload button ATtiny, after which it will flash happily. This didn't work for me at all and the IDE gave an error about a device number 00000, after checking it turned out that a solder connection on the IC socket was not good. After this it works fine and I could use my ATtiny85 with the blink sketch.

Links and downloads

Link: The large format schematic file

Link: ATtiny board definition file

Link: ATtiny example

Last update: 14-05-2022


Disclaimer: All pages on this Web site are copyrighted by Hein Pragt, unless otherwise noted. I strive for accuracy but cannot be held responsible for any errors in the content. For questions about the content of this site or persmission to copy you can contact me at: (email: heinpragt@outlook.com). Heinpragt.com is registered under KvK number: 73839426.