I've had my UNO R3 for almost a year and have been using it almost exclusively for programming SMD Attiny chips. I wanted to know if this is the correct way to include an ISP header in my finished circuit boards so that I can reprogram the chip if it requires any additional tweaking.
The circuit in this photo is just something that I quickly put together with a mix of different components on the I/O pins of an Attiny 25/45/85.
Up until now I've been reflow soldering the chip onto a breakout board so that I can plug it into the UNO and prototype it on a breadboard. Once it's programmed, the breakout board goes back into the toaster oven to remove the chip. Then, (hopefully) the chip is reflow soldered its last time onto the finished circuit board.
So far, all the Attiny chips have survived the 3 different trips into the toaster oven. It's when I have to remove the chip a fourth time because the sketch needs tweaked a bit more that I run into problems. I've learned that these Attiny's can withstand about 4 reflow cycles in my toaster oven using low melt/lead free solder paste before they finally give up the ghost.
I guess what my question is, do you actually run the traces from the ISP header directly to the pins on the Attiny? The components that are on these same traces won't interfere with the programming, or is that something you have to be mindful of when laying out the circuit?
Mike_S:
I guess what my question is, do you actually run the traces from the ISP header directly to the pins on the Attiny?
Yes.
The components that are on these same traces won't interfere with the programming, or is that something you have to be mindful of when laying out the circuit?
You do have to be somewhat mindful, but in practice I've encountered very few problems. For pins with passive components connected, be sure that they do not present too large a load for the programmer. For pins with active components connected, be sure that they do not try to drive the MCU pin during programming. If this cannot be guaranteed, a resistor between the MCU pin and the other device typically solves the problem.
In your circuit, it would be good to know the resistor values and supply voltage. I would want to ensure that the pullup and pulldown resistors (Reset and MISO pins) are reasonably high values (e.g. 10K but I'd bet as little as 1K would be fine). The resistor on the base of the transistor is of less concern, but this would typically be at least 1K as well. The LED on MOSI is probably the most likely to cause a problem if the current limiting resistor is too small. I've had issues with these in 3V circuits where the programmer does not provide supply voltage, if the target's batteries are not fresh.
In this example, the programmer will drive the LED and the load connected to the transistor with the programming signals. Probably not a problem for the LED, but I'd be sure that whatever is connected to the transistor can tolerate it.
Mike_S:
I guess what my question is, do you actually run the traces from the ISP header directly to the pins on the Attiny?
Yes.
Mike_S:
The components that are on these same traces won't interfere with the programming, or is that something you have to be mindful of when laying out the circuit?
You have to make sure none of them are putting signals onto the lines when the board is powered up. You should be OK if the pins are usually set as outputs (ie. they connect to the inputs of other chips or whatever).