Like the people in and surrounding Raspberry Pi, clever souls in and clustered around Arduino have done all sorts of things, including worked out ways for one Arduino to programme another Arduino – these days simply dropping a library file called Arduino as ISP into the Arduino IDE working window and downloading this into an Arduino Uno – the basic Arduino.
Because I have an Arduino Micro (smaller, but almost electrically the same as an Arduino Leonardo), which is built around a different AVR, there are some changes to make.
Also, I am trying to programme a single AVR ATtiny85, not a whole Arduino, so there are changes to make there as well.
Mostly, everything is provided by this excellent blog on ‘and thus goes by another day’.
It refers to an early blog, which provides a handy bunch of settings, which I cut-n-pasted into the programmers.txt file, which I found here: C:Program Files (x86)Arduninohardwareavr on my computer. Extra spaces in the pasted file seemed to make no difference. This action makes an extra programmer option (‘Arduino as ISP (Micro/Leonardo) appear in the ‘Tools’ ‘Programmer’ menu and provides settings for that option. I have no idea if it would have worked without this step.
Prior to this, I downloaded one of the sets of data to enable the Arduino IDE (v1.8.3 in my case) to work with ATtiny85 by following these instructions on the MIT HighLowTech blog.- which involves dropping this URL into the ‘Tools’ ‘Preferences’ dropdown ‘Additional Boards Manager URLs’ box.
This GitHub entry provides similar options, and I am not sure which is ‘the best’ of the two.
I am happy with default 1MHz operation (8MHz internal clock, divided by 8) as predicted power consumption is <600μA – nice and low.
The ‘and thus goes by another day’ blog suggested making up a little adaptor board to make programming 8pin ATtinys easier. My version has all the components on one side and a decoupling capacitor, and can be seen in operation in the photo running the classic Arduino Blink programme, set to flash the led that is soldered to Arduino pin 4 (actual ATtiny pin 3).
The croc clip lead goes from the reset pin on the ATtiny (package pin 1) to Arduino Micro pin D10 when the Micro is programming the ATtiny.