How to keep track of millis during sleep mode
The only way to keep millis() running is sleep mode is to sleep in
SLEEP_MODE_IDLE. Switching to Timer 2 would make no difference, as
all timers but the watchdog are stopped in other sleep modes. The
watchdog is horribly inaccurate, so you do not want to rely on it for
any kind of timekeeping.


  I don't see much advantage to sleeping for 1 ms.


Sleeping for 1&nbsp;ms saves a little bit of power. But if you do that
60&nbsp;times every 80&nbsp;ms you will save a lot of power. I suggest
you do just that: sleep when you are done with your calculations. When
you wake up, if you see that the waking up came from the external
interrupt, the you process it. Otherwise you just go back to sleep.

Note that if the 80&nbsp;ms period of the external interrupt is
consistent enough, you could use that as time source.