rp: disable adc hardware on Adc drop
the adc constantly pulls a small but significant amount of current while the hardware is enabled. this can have quite an effect on sleeping devices that also use the adc.
This commit is contained in:
parent
3382ca1a54
commit
a3d4ae85b0
@ -81,6 +81,16 @@ pub struct Adc<'d, M: Mode> {
|
|||||||
phantom: PhantomData<(&'d ADC, M)>,
|
phantom: PhantomData<(&'d ADC, M)>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<'d, M: Mode> Drop for Adc<'d, M> {
|
||||||
|
fn drop(&mut self) {
|
||||||
|
let r = Self::regs();
|
||||||
|
// disable ADC. leaving it enabled comes with a ~150µA static
|
||||||
|
// current draw. the temperature sensor has already been disabled
|
||||||
|
// by the temperature-reading methods, so we don't need to touch that.
|
||||||
|
r.cs().write(|w| w.set_en(false));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl<'d, M: Mode> Adc<'d, M> {
|
impl<'d, M: Mode> Adc<'d, M> {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn regs() -> pac::adc::Adc {
|
fn regs() -> pac::adc::Adc {
|
||||||
|
Loading…
Reference in New Issue
Block a user