Okay, now it is clear - the USB stack itself prevents the CPU from sleep mode. Because USB stack requires the 48 MHz oscillator running etc. Unfortunately, for the USB application, you cannot get precise temperature sensor reading. You can however you Temperature Tag which is sufficiently distant from the MCU, or you can simply substract a temperature offset. The MCU power consumption and the generated heat is constant. Yep, no kidding - this is dirty, but fairly common practice for many temperature monitoring applications… Another option is going wireless / battery operated - this is where BigClown is the best and in such scenario, the MCU is in the sleep mode vast majority of the time, so it will not affect the reading.