The hardware is as simple as it gets: A battery, a microcontroller, and an LED connected to two pins of the microcontroller.
I used cheap equipment for programming the microcontrollers. An Arduino for the ATTiny and the PicKit3 for the PIC. This gave the AVR project one disadvantage. I do still not manage to talk to ATTinys running slower than at 500kHz, so that was the frequency I had to stick with. As to the PIC, it runs on the internal low power oscillator at 31 kHz.
It's probably no surprise to anyone that this project is simple to implement on both microcontrollers. As to differences between the two platforms, I am more used to AVRs, so programming the ATTiny25 simply felt more familiar. The PIC had a lot going for it, though, in terms of programmer (I wish there was a good, cheap debugger for AVRs too), watchdog timer power consumption and the low power oscillator.
Power consumption comparison
Status | ATTiny25 | PIC12LF1822 |
Waiting for day or night | 4 uA | < 1 uA |
Candle burning (without LED) | 190 uA | 5 uA |
Candle burning (with LED) | 2.5 mA | 2.3mA |
The ATTiny seems to be at a disadvantage in terms of power consumption. For this project however, the microcontroller consumption is not really relevant. A typical CR2032 will last 30 days with the ATTiny and 33 days with the PIC. You could also just dim the LED on the ATTiny a bit more and noone would notice.
I must say that the PIC's ability to do some computation at 5uA is extremely nice. The ATTiny at 128kHz still uses something like 110uA.
Perhaps it's just as simple as connecting an led and resistor to PB1...?