А на счет первого преобразования - так какая разница будет ли оно первым после включения камня или первым после выхода из сна. Так и так аналоговые сигналы будут не такими, как при последующих преобразованиях.
Ну так когда просыпается МК, проходит еще пару сотен инструкций прежде чем будет АЦП использован, по этому всё уже будет в норме.
А вот если включать АЦП прям перед использованием, то придется делать паузу специально.
Вчитался по подробнее в datasheet и вычитал что если выставлен бит ADIE, то преобразование начнется сразу после перехода в сон.
Получается что бит ADSC игнорируется.
Тогда алгоритм получается такой:
1) настроили АЦП (со сброшенными битами ADSC и ADIE)
2) обработчик прерывания ADC_vect - пустой
3) проснулись по какому-либо своему событию (внешнее прерывание или таймер)
4) когда нужно замерять напряжение, то:
- сохранили MCUCR
- выставили в MCUCR биты для SLEEP_ENABLED + SLEEP_MODE_ADC
- выставили в ADCSRA бит ADIE
- ушли в сон
- как проснулись убрали в ADCSRA бит ADIE и обработали ADCH
5) далее уже программа работает по остальной логике и засыпает как нужно.
Тесты показали что после ухода в сон для замера напряжения мы просыпаемся через 0,19 мс.
Если же включать АЦП перед тестом и потом выключать его (бит ADEN), то время замера 0,36 мс