Programming ATtiny85 from Arduino Nano - The Design
In the previous blog post, we did the research on all the prerequistes and requirements for uploading sketches via the programmer Arduino Nano to the target ATtiny85. Now it is time to apply the findings and turn them into a breadboard design.
Note that my electronics knowledge is limited. Please post any doubts, concerns or remarks on our social media page.
DISCLAIMER
THIS BLOG POST IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THIS HOWTO OR SOFTWARE OR THE USE OR OTHER DEALINGS IN THIS BLOG POST.
Design
All the research led to this design for the programmer.
This design features the use of the ICSP header and LED indicators as described in ArduinoISP.ino.
// Put an LED (with resistor) on the following pins: // 9: Heartbeat - shows the programmer is running // 8: Error - Lights up if something goes wrong (use red if that makes sense) // 7: Programming - In communication with the target
Schema
Test boards
The design leaves little room for blink test leds on the programmer breadboard. And we are trying to implement the separation of concerns principles and want to keep the programmer and the test setup separate.
To be able to verify the correct upload of Blink.ino onto the ATtiny85, one of these test boards must be prepared, according to this design.
In the next blog post in this series, we will turn the design into a prototype.
Sidenote
You might argue, why not also use the RST of the ICSP header? At least, I did. Then all connections towards the ATtiny85 would be on the ICSP header.
This is most likely by design and set in ArduinoISP.ino, where it states: "Pin 10 is used to reset the target microcontroller." It is clearly the intention that this should be used. The pin number for RESET is specifically set:#define RESET 10 // Use pin 10 to reset the target rather than SS
I actually tried to use the RST on the ICSP header, but then burning the bootloader fails with these messages:
avrdude: Device signature = 0x000000 avrdude: Yikes! Invalid device signature. Double check connections and try again, or use -F to override this check. Failed chip erase: uploading error: exit status 1
Cleary not the way to go. This is probably also what you see when any of the other connections are not setup properly.
I'm assuming the RST on the ICSP header is connected through with the other RST pins. At least that is what Fritzing shows me when I click and hold the RST pin on the ICSP header. All RST pins turn yellow, indicating that they are somehow connected. I'm guessing these can't be used, because there is a capacitor over RST and GND, to allow the Nano to act as the programmer.
With pin 10 of Nano connected to pin 1 (RESET) on ATtiny85, the bootloader burn ends with this success message:
avrdude: verifying ... avrdude: 2 bytes of flash verified avrdude done. Thank you.
More on the bootloader and upload process later in this series.