efm32pg12_pac/adc0/
biasprog.rs

1#[doc = "Reader of register BIASPROG"]
2pub type R = crate::R<u32, super::BIASPROG>;
3#[doc = "Writer for register BIASPROG"]
4pub type W = crate::W<u32, super::BIASPROG>;
5#[doc = "Register BIASPROG `reset()`'s with value 0"]
6impl crate::ResetValue for super::BIASPROG {
7    type Type = u32;
8    #[inline(always)]
9    fn reset_value() -> Self::Type {
10        0
11    }
12}
13#[doc = "Bias Programming Value of Analog ADC Block\n\nValue on reset: 0"]
14#[derive(Clone, Copy, Debug, PartialEq)]
15#[repr(u8)]
16pub enum ADCBIASPROG_A {
17    #[doc = "0: Normal power (use for 1Msps operation)"]
18    NORMAL = 0,
19    #[doc = "4: Scaling bias to 1/2"]
20    SCALE2 = 4,
21    #[doc = "8: Scaling bias to 1/4"]
22    SCALE4 = 8,
23    #[doc = "12: Scaling bias to 1/8"]
24    SCALE8 = 12,
25    #[doc = "14: Scaling bias to 1/16"]
26    SCALE16 = 14,
27    #[doc = "15: Scaling bias to 1/32"]
28    SCALE32 = 15,
29}
30impl From<ADCBIASPROG_A> for u8 {
31    #[inline(always)]
32    fn from(variant: ADCBIASPROG_A) -> Self {
33        variant as _
34    }
35}
36#[doc = "Reader of field `ADCBIASPROG`"]
37pub type ADCBIASPROG_R = crate::R<u8, ADCBIASPROG_A>;
38impl ADCBIASPROG_R {
39    #[doc = r"Get enumerated values variant"]
40    #[inline(always)]
41    pub fn variant(&self) -> crate::Variant<u8, ADCBIASPROG_A> {
42        use crate::Variant::*;
43        match self.bits {
44            0 => Val(ADCBIASPROG_A::NORMAL),
45            4 => Val(ADCBIASPROG_A::SCALE2),
46            8 => Val(ADCBIASPROG_A::SCALE4),
47            12 => Val(ADCBIASPROG_A::SCALE8),
48            14 => Val(ADCBIASPROG_A::SCALE16),
49            15 => Val(ADCBIASPROG_A::SCALE32),
50            i => Res(i),
51        }
52    }
53    #[doc = "Checks if the value of the field is `NORMAL`"]
54    #[inline(always)]
55    pub fn is_normal(&self) -> bool {
56        *self == ADCBIASPROG_A::NORMAL
57    }
58    #[doc = "Checks if the value of the field is `SCALE2`"]
59    #[inline(always)]
60    pub fn is_scale2(&self) -> bool {
61        *self == ADCBIASPROG_A::SCALE2
62    }
63    #[doc = "Checks if the value of the field is `SCALE4`"]
64    #[inline(always)]
65    pub fn is_scale4(&self) -> bool {
66        *self == ADCBIASPROG_A::SCALE4
67    }
68    #[doc = "Checks if the value of the field is `SCALE8`"]
69    #[inline(always)]
70    pub fn is_scale8(&self) -> bool {
71        *self == ADCBIASPROG_A::SCALE8
72    }
73    #[doc = "Checks if the value of the field is `SCALE16`"]
74    #[inline(always)]
75    pub fn is_scale16(&self) -> bool {
76        *self == ADCBIASPROG_A::SCALE16
77    }
78    #[doc = "Checks if the value of the field is `SCALE32`"]
79    #[inline(always)]
80    pub fn is_scale32(&self) -> bool {
81        *self == ADCBIASPROG_A::SCALE32
82    }
83}
84#[doc = "Write proxy for field `ADCBIASPROG`"]
85pub struct ADCBIASPROG_W<'a> {
86    w: &'a mut W,
87}
88impl<'a> ADCBIASPROG_W<'a> {
89    #[doc = r"Writes `variant` to the field"]
90    #[inline(always)]
91    pub fn variant(self, variant: ADCBIASPROG_A) -> &'a mut W {
92        unsafe { self.bits(variant.into()) }
93    }
94    #[doc = "Normal power (use for 1Msps operation)"]
95    #[inline(always)]
96    pub fn normal(self) -> &'a mut W {
97        self.variant(ADCBIASPROG_A::NORMAL)
98    }
99    #[doc = "Scaling bias to 1/2"]
100    #[inline(always)]
101    pub fn scale2(self) -> &'a mut W {
102        self.variant(ADCBIASPROG_A::SCALE2)
103    }
104    #[doc = "Scaling bias to 1/4"]
105    #[inline(always)]
106    pub fn scale4(self) -> &'a mut W {
107        self.variant(ADCBIASPROG_A::SCALE4)
108    }
109    #[doc = "Scaling bias to 1/8"]
110    #[inline(always)]
111    pub fn scale8(self) -> &'a mut W {
112        self.variant(ADCBIASPROG_A::SCALE8)
113    }
114    #[doc = "Scaling bias to 1/16"]
115    #[inline(always)]
116    pub fn scale16(self) -> &'a mut W {
117        self.variant(ADCBIASPROG_A::SCALE16)
118    }
119    #[doc = "Scaling bias to 1/32"]
120    #[inline(always)]
121    pub fn scale32(self) -> &'a mut W {
122        self.variant(ADCBIASPROG_A::SCALE32)
123    }
124    #[doc = r"Writes raw bits to the field"]
125    #[inline(always)]
126    pub unsafe fn bits(self, value: u8) -> &'a mut W {
127        self.w.bits = (self.w.bits & !0x0f) | ((value as u32) & 0x0f);
128        self.w
129    }
130}
131#[doc = "Reader of field `VFAULTCLR`"]
132pub type VFAULTCLR_R = crate::R<bool, bool>;
133#[doc = "Write proxy for field `VFAULTCLR`"]
134pub struct VFAULTCLR_W<'a> {
135    w: &'a mut W,
136}
137impl<'a> VFAULTCLR_W<'a> {
138    #[doc = r"Sets the field bit"]
139    #[inline(always)]
140    pub fn set_bit(self) -> &'a mut W {
141        self.bit(true)
142    }
143    #[doc = r"Clears the field bit"]
144    #[inline(always)]
145    pub fn clear_bit(self) -> &'a mut W {
146        self.bit(false)
147    }
148    #[doc = r"Writes raw bits to the field"]
149    #[inline(always)]
150    pub fn bit(self, value: bool) -> &'a mut W {
151        self.w.bits = (self.w.bits & !(0x01 << 12)) | (((value as u32) & 0x01) << 12);
152        self.w
153    }
154}
155#[doc = "Reader of field `GPBIASACC`"]
156pub type GPBIASACC_R = crate::R<bool, bool>;
157#[doc = "Write proxy for field `GPBIASACC`"]
158pub struct GPBIASACC_W<'a> {
159    w: &'a mut W,
160}
161impl<'a> GPBIASACC_W<'a> {
162    #[doc = r"Sets the field bit"]
163    #[inline(always)]
164    pub fn set_bit(self) -> &'a mut W {
165        self.bit(true)
166    }
167    #[doc = r"Clears the field bit"]
168    #[inline(always)]
169    pub fn clear_bit(self) -> &'a mut W {
170        self.bit(false)
171    }
172    #[doc = r"Writes raw bits to the field"]
173    #[inline(always)]
174    pub fn bit(self, value: bool) -> &'a mut W {
175        self.w.bits = (self.w.bits & !(0x01 << 16)) | (((value as u32) & 0x01) << 16);
176        self.w
177    }
178}
179impl R {
180    #[doc = "Bits 0:3 - Bias Programming Value of Analog ADC Block"]
181    #[inline(always)]
182    pub fn adcbiasprog(&self) -> ADCBIASPROG_R {
183        ADCBIASPROG_R::new((self.bits & 0x0f) as u8)
184    }
185    #[doc = "Bit 12 - Clear VREFOF Flag"]
186    #[inline(always)]
187    pub fn vfaultclr(&self) -> VFAULTCLR_R {
188        VFAULTCLR_R::new(((self.bits >> 12) & 0x01) != 0)
189    }
190    #[doc = "Bit 16 - Accuracy Setting for the System Bias During ADC Operation"]
191    #[inline(always)]
192    pub fn gpbiasacc(&self) -> GPBIASACC_R {
193        GPBIASACC_R::new(((self.bits >> 16) & 0x01) != 0)
194    }
195}
196impl W {
197    #[doc = "Bits 0:3 - Bias Programming Value of Analog ADC Block"]
198    #[inline(always)]
199    pub fn adcbiasprog(&mut self) -> ADCBIASPROG_W {
200        ADCBIASPROG_W { w: self }
201    }
202    #[doc = "Bit 12 - Clear VREFOF Flag"]
203    #[inline(always)]
204    pub fn vfaultclr(&mut self) -> VFAULTCLR_W {
205        VFAULTCLR_W { w: self }
206    }
207    #[doc = "Bit 16 - Accuracy Setting for the System Bias During ADC Operation"]
208    #[inline(always)]
209    pub fn gpbiasacc(&mut self) -> GPBIASACC_W {
210        GPBIASACC_W { w: self }
211    }
212}