Calling system_sleep() from inside system_sleep() a few times works, but i see what you're saying about recursion.
I'll put the sleep_mode(); inside of a while loop:
void system_sleep() {
ADCSRA |= (0<<ADEN); // disable ADC
sleep_enable(); // enable sleeping
while (wdt < sleepTime){ // sleep for sleepTime * 8sec
sleep_mode(); // activate system sleep
// sleeping ...
}
sleep_disable(); // disable sleep
ADCSRA |= (1<<ADEN); // switch ADC on
wdt = 0; // reset wdt for next cycle
}
Works great for 75 cycles which gets me close enough to a 10 minute low power sleep.
Thanks for your help!