That sounds like a very long time.
indeed.
Now, I tried to investigate your suggestions and if I didn't go into depth with some of the topic that's not because of ignorance but of the lack of knowledge, so I apologize upfront.
* If you're powering on any voltage regulators (linear, DCDC) in the process of waking stuff up, check the specified time for those supplies to become valid.
Currently I'm powering from my lab power supply which is on all the time, only the microcontroller goes to sleep.
* If you're starting any crystal or other oscillators or clocks when you wake up, check the time required for the oscillators to start & stabilize, as well as for the PLL to be initialized and become stable / ready.
Also very good point! I had the ADC tied to the main oscillator which indeed goes to sleep. Instead of trying to find out the values on that, I simply tied the ADC to the internal ultra low power 32kHz crystal which is powered on all the time, even during the deepest of sleep modes. Unfortunately, that didn't resolve the issue. I was really hoping for that.
* Maybe the ADC is paired with a voltage reference, amplifier, multiplexor, or not but ensure you're enabling the clocks, regulators, operation enables for all the relevant circuits are enabled, see how long that takes.
The ADC is connected to the internal 1V bandgap reference, I wasn't able to find any figures on how long it takes to stabilize after powerup or wakeup...
* The ADC may require some amount of time or even time + samples to elapse before it is ready, maybe absolute time, maybe as a function of the clock rates associated with the ADC conversions. So make sure the clocks are running at the correct frequencies to result in the performance you want and account for the delays.
I think I've ruled out any clock issue now with the always-on OSCULP32K and I even discard the first measurement anyway, which is usually enough, if not going to sleep. For wakeup delay after sleep, I wasn't able to find any numbers in the datasheet.
* Speaking of performance maybe there's some kind of performance mode or speed category you can put the ADC et. al. device in to balance energy / speed, check that.
* And make sure you're not accidentally using a lot of oversampling or reading bursts of N-sequenced channels unexpectedly.
The only thing controlling the speed of the ADC is AFAIK 1) the clock and 2) the sample time, which I have adjusted to be long enough for the 1M source resistance. There is a continuous mode and a single shot mode too, but I'm using single-shot, obviously.
I've tried to do mutliple readings and oversampling as well as doing only a single reading but the result remained the same. No matter what I do, if 100ms pass (by sampling or waiting doesn't matter) the readings get useful.