efm32gg11b310_pac/cmu/
adcctrl.rs

1#[doc = "Register `ADCCTRL` reader"]
2pub struct R(crate::R<ADCCTRL_SPEC>);
3impl core::ops::Deref for R {
4    type Target = crate::R<ADCCTRL_SPEC>;
5    #[inline(always)]
6    fn deref(&self) -> &Self::Target {
7        &self.0
8    }
9}
10impl From<crate::R<ADCCTRL_SPEC>> for R {
11    #[inline(always)]
12    fn from(reader: crate::R<ADCCTRL_SPEC>) -> Self {
13        R(reader)
14    }
15}
16#[doc = "Register `ADCCTRL` writer"]
17pub struct W(crate::W<ADCCTRL_SPEC>);
18impl core::ops::Deref for W {
19    type Target = crate::W<ADCCTRL_SPEC>;
20    #[inline(always)]
21    fn deref(&self) -> &Self::Target {
22        &self.0
23    }
24}
25impl core::ops::DerefMut for W {
26    #[inline(always)]
27    fn deref_mut(&mut self) -> &mut Self::Target {
28        &mut self.0
29    }
30}
31impl From<crate::W<ADCCTRL_SPEC>> for W {
32    #[inline(always)]
33    fn from(writer: crate::W<ADCCTRL_SPEC>) -> Self {
34        W(writer)
35    }
36}
37#[doc = "ADC0 Clock Prescaler\n\nValue on reset: 0"]
38#[derive(Clone, Copy, Debug, PartialEq)]
39#[repr(u8)]
40pub enum ADC0CLKDIV_A {
41    #[doc = "0: `0`"]
42    NODIVISION = 0,
43}
44impl From<ADC0CLKDIV_A> for u8 {
45    #[inline(always)]
46    fn from(variant: ADC0CLKDIV_A) -> Self {
47        variant as _
48    }
49}
50#[doc = "Field `ADC0CLKDIV` reader - ADC0 Clock Prescaler"]
51pub type ADC0CLKDIV_R = crate::FieldReader<u8, ADC0CLKDIV_A>;
52impl ADC0CLKDIV_R {
53    #[doc = "Get enumerated values variant"]
54    #[inline(always)]
55    pub fn variant(&self) -> Option<ADC0CLKDIV_A> {
56        match self.bits {
57            0 => Some(ADC0CLKDIV_A::NODIVISION),
58            _ => None,
59        }
60    }
61    #[doc = "Checks if the value of the field is `NODIVISION`"]
62    #[inline(always)]
63    pub fn is_nodivision(&self) -> bool {
64        *self == ADC0CLKDIV_A::NODIVISION
65    }
66}
67#[doc = "Field `ADC0CLKDIV` writer - ADC0 Clock Prescaler"]
68pub type ADC0CLKDIV_W<'a> = crate::FieldWriter<'a, u32, ADCCTRL_SPEC, u8, ADC0CLKDIV_A, 2, 0>;
69impl<'a> ADC0CLKDIV_W<'a> {
70    #[doc = "`0`"]
71    #[inline(always)]
72    pub fn nodivision(self) -> &'a mut W {
73        self.variant(ADC0CLKDIV_A::NODIVISION)
74    }
75}
76#[doc = "ADC0 Clock Select\n\nValue on reset: 0"]
77#[derive(Clone, Copy, Debug, PartialEq)]
78#[repr(u8)]
79pub enum ADC0CLKSEL_A {
80    #[doc = "0: ADC0 is not clocked"]
81    DISABLED = 0,
82    #[doc = "1: AUXHFRCO is clocking ADC0"]
83    AUXHFRCO = 1,
84    #[doc = "2: HFXO is clocking ADC0"]
85    HFXO = 2,
86    #[doc = "3: HFSRCCLK is clocking ADC0"]
87    HFSRCCLK = 3,
88}
89impl From<ADC0CLKSEL_A> for u8 {
90    #[inline(always)]
91    fn from(variant: ADC0CLKSEL_A) -> Self {
92        variant as _
93    }
94}
95#[doc = "Field `ADC0CLKSEL` reader - ADC0 Clock Select"]
96pub type ADC0CLKSEL_R = crate::FieldReader<u8, ADC0CLKSEL_A>;
97impl ADC0CLKSEL_R {
98    #[doc = "Get enumerated values variant"]
99    #[inline(always)]
100    pub fn variant(&self) -> ADC0CLKSEL_A {
101        match self.bits {
102            0 => ADC0CLKSEL_A::DISABLED,
103            1 => ADC0CLKSEL_A::AUXHFRCO,
104            2 => ADC0CLKSEL_A::HFXO,
105            3 => ADC0CLKSEL_A::HFSRCCLK,
106            _ => unreachable!(),
107        }
108    }
109    #[doc = "Checks if the value of the field is `DISABLED`"]
110    #[inline(always)]
111    pub fn is_disabled(&self) -> bool {
112        *self == ADC0CLKSEL_A::DISABLED
113    }
114    #[doc = "Checks if the value of the field is `AUXHFRCO`"]
115    #[inline(always)]
116    pub fn is_auxhfrco(&self) -> bool {
117        *self == ADC0CLKSEL_A::AUXHFRCO
118    }
119    #[doc = "Checks if the value of the field is `HFXO`"]
120    #[inline(always)]
121    pub fn is_hfxo(&self) -> bool {
122        *self == ADC0CLKSEL_A::HFXO
123    }
124    #[doc = "Checks if the value of the field is `HFSRCCLK`"]
125    #[inline(always)]
126    pub fn is_hfsrcclk(&self) -> bool {
127        *self == ADC0CLKSEL_A::HFSRCCLK
128    }
129}
130#[doc = "Field `ADC0CLKSEL` writer - ADC0 Clock Select"]
131pub type ADC0CLKSEL_W<'a> = crate::FieldWriterSafe<'a, u32, ADCCTRL_SPEC, u8, ADC0CLKSEL_A, 2, 4>;
132impl<'a> ADC0CLKSEL_W<'a> {
133    #[doc = "ADC0 is not clocked"]
134    #[inline(always)]
135    pub fn disabled(self) -> &'a mut W {
136        self.variant(ADC0CLKSEL_A::DISABLED)
137    }
138    #[doc = "AUXHFRCO is clocking ADC0"]
139    #[inline(always)]
140    pub fn auxhfrco(self) -> &'a mut W {
141        self.variant(ADC0CLKSEL_A::AUXHFRCO)
142    }
143    #[doc = "HFXO is clocking ADC0"]
144    #[inline(always)]
145    pub fn hfxo(self) -> &'a mut W {
146        self.variant(ADC0CLKSEL_A::HFXO)
147    }
148    #[doc = "HFSRCCLK is clocking ADC0"]
149    #[inline(always)]
150    pub fn hfsrcclk(self) -> &'a mut W {
151        self.variant(ADC0CLKSEL_A::HFSRCCLK)
152    }
153}
154#[doc = "Field `ADC0CLKINV` reader - Invert Clock Selected By ADC0CLKSEL"]
155pub type ADC0CLKINV_R = crate::BitReader<bool>;
156#[doc = "Field `ADC0CLKINV` writer - Invert Clock Selected By ADC0CLKSEL"]
157pub type ADC0CLKINV_W<'a> = crate::BitWriter<'a, u32, ADCCTRL_SPEC, bool, 8>;
158#[doc = "ADC1 Clock Prescaler\n\nValue on reset: 0"]
159#[derive(Clone, Copy, Debug, PartialEq)]
160#[repr(u8)]
161pub enum ADC1CLKDIV_A {
162    #[doc = "0: `0`"]
163    NODIVISION = 0,
164}
165impl From<ADC1CLKDIV_A> for u8 {
166    #[inline(always)]
167    fn from(variant: ADC1CLKDIV_A) -> Self {
168        variant as _
169    }
170}
171#[doc = "Field `ADC1CLKDIV` reader - ADC1 Clock Prescaler"]
172pub type ADC1CLKDIV_R = crate::FieldReader<u8, ADC1CLKDIV_A>;
173impl ADC1CLKDIV_R {
174    #[doc = "Get enumerated values variant"]
175    #[inline(always)]
176    pub fn variant(&self) -> Option<ADC1CLKDIV_A> {
177        match self.bits {
178            0 => Some(ADC1CLKDIV_A::NODIVISION),
179            _ => None,
180        }
181    }
182    #[doc = "Checks if the value of the field is `NODIVISION`"]
183    #[inline(always)]
184    pub fn is_nodivision(&self) -> bool {
185        *self == ADC1CLKDIV_A::NODIVISION
186    }
187}
188#[doc = "Field `ADC1CLKDIV` writer - ADC1 Clock Prescaler"]
189pub type ADC1CLKDIV_W<'a> = crate::FieldWriter<'a, u32, ADCCTRL_SPEC, u8, ADC1CLKDIV_A, 2, 16>;
190impl<'a> ADC1CLKDIV_W<'a> {
191    #[doc = "`0`"]
192    #[inline(always)]
193    pub fn nodivision(self) -> &'a mut W {
194        self.variant(ADC1CLKDIV_A::NODIVISION)
195    }
196}
197#[doc = "ADC1 Clock Select\n\nValue on reset: 0"]
198#[derive(Clone, Copy, Debug, PartialEq)]
199#[repr(u8)]
200pub enum ADC1CLKSEL_A {
201    #[doc = "0: ADC1 is not clocked"]
202    DISABLED = 0,
203    #[doc = "1: AUXHFRCO is clocking ADC1"]
204    AUXHFRCO = 1,
205    #[doc = "2: HFXO is clocking ADC1"]
206    HFXO = 2,
207    #[doc = "3: HFSRCCLK is clocking ADC1"]
208    HFSRCCLK = 3,
209}
210impl From<ADC1CLKSEL_A> for u8 {
211    #[inline(always)]
212    fn from(variant: ADC1CLKSEL_A) -> Self {
213        variant as _
214    }
215}
216#[doc = "Field `ADC1CLKSEL` reader - ADC1 Clock Select"]
217pub type ADC1CLKSEL_R = crate::FieldReader<u8, ADC1CLKSEL_A>;
218impl ADC1CLKSEL_R {
219    #[doc = "Get enumerated values variant"]
220    #[inline(always)]
221    pub fn variant(&self) -> ADC1CLKSEL_A {
222        match self.bits {
223            0 => ADC1CLKSEL_A::DISABLED,
224            1 => ADC1CLKSEL_A::AUXHFRCO,
225            2 => ADC1CLKSEL_A::HFXO,
226            3 => ADC1CLKSEL_A::HFSRCCLK,
227            _ => unreachable!(),
228        }
229    }
230    #[doc = "Checks if the value of the field is `DISABLED`"]
231    #[inline(always)]
232    pub fn is_disabled(&self) -> bool {
233        *self == ADC1CLKSEL_A::DISABLED
234    }
235    #[doc = "Checks if the value of the field is `AUXHFRCO`"]
236    #[inline(always)]
237    pub fn is_auxhfrco(&self) -> bool {
238        *self == ADC1CLKSEL_A::AUXHFRCO
239    }
240    #[doc = "Checks if the value of the field is `HFXO`"]
241    #[inline(always)]
242    pub fn is_hfxo(&self) -> bool {
243        *self == ADC1CLKSEL_A::HFXO
244    }
245    #[doc = "Checks if the value of the field is `HFSRCCLK`"]
246    #[inline(always)]
247    pub fn is_hfsrcclk(&self) -> bool {
248        *self == ADC1CLKSEL_A::HFSRCCLK
249    }
250}
251#[doc = "Field `ADC1CLKSEL` writer - ADC1 Clock Select"]
252pub type ADC1CLKSEL_W<'a> = crate::FieldWriterSafe<'a, u32, ADCCTRL_SPEC, u8, ADC1CLKSEL_A, 2, 20>;
253impl<'a> ADC1CLKSEL_W<'a> {
254    #[doc = "ADC1 is not clocked"]
255    #[inline(always)]
256    pub fn disabled(self) -> &'a mut W {
257        self.variant(ADC1CLKSEL_A::DISABLED)
258    }
259    #[doc = "AUXHFRCO is clocking ADC1"]
260    #[inline(always)]
261    pub fn auxhfrco(self) -> &'a mut W {
262        self.variant(ADC1CLKSEL_A::AUXHFRCO)
263    }
264    #[doc = "HFXO is clocking ADC1"]
265    #[inline(always)]
266    pub fn hfxo(self) -> &'a mut W {
267        self.variant(ADC1CLKSEL_A::HFXO)
268    }
269    #[doc = "HFSRCCLK is clocking ADC1"]
270    #[inline(always)]
271    pub fn hfsrcclk(self) -> &'a mut W {
272        self.variant(ADC1CLKSEL_A::HFSRCCLK)
273    }
274}
275#[doc = "Field `ADC1CLKINV` reader - Invert Clock Selected By ADC1CLKSEL"]
276pub type ADC1CLKINV_R = crate::BitReader<bool>;
277#[doc = "Field `ADC1CLKINV` writer - Invert Clock Selected By ADC1CLKSEL"]
278pub type ADC1CLKINV_W<'a> = crate::BitWriter<'a, u32, ADCCTRL_SPEC, bool, 24>;
279impl R {
280    #[doc = "Bits 0:1 - ADC0 Clock Prescaler"]
281    #[inline(always)]
282    pub fn adc0clkdiv(&self) -> ADC0CLKDIV_R {
283        ADC0CLKDIV_R::new((self.bits & 3) as u8)
284    }
285    #[doc = "Bits 4:5 - ADC0 Clock Select"]
286    #[inline(always)]
287    pub fn adc0clksel(&self) -> ADC0CLKSEL_R {
288        ADC0CLKSEL_R::new(((self.bits >> 4) & 3) as u8)
289    }
290    #[doc = "Bit 8 - Invert Clock Selected By ADC0CLKSEL"]
291    #[inline(always)]
292    pub fn adc0clkinv(&self) -> ADC0CLKINV_R {
293        ADC0CLKINV_R::new(((self.bits >> 8) & 1) != 0)
294    }
295    #[doc = "Bits 16:17 - ADC1 Clock Prescaler"]
296    #[inline(always)]
297    pub fn adc1clkdiv(&self) -> ADC1CLKDIV_R {
298        ADC1CLKDIV_R::new(((self.bits >> 16) & 3) as u8)
299    }
300    #[doc = "Bits 20:21 - ADC1 Clock Select"]
301    #[inline(always)]
302    pub fn adc1clksel(&self) -> ADC1CLKSEL_R {
303        ADC1CLKSEL_R::new(((self.bits >> 20) & 3) as u8)
304    }
305    #[doc = "Bit 24 - Invert Clock Selected By ADC1CLKSEL"]
306    #[inline(always)]
307    pub fn adc1clkinv(&self) -> ADC1CLKINV_R {
308        ADC1CLKINV_R::new(((self.bits >> 24) & 1) != 0)
309    }
310}
311impl W {
312    #[doc = "Bits 0:1 - ADC0 Clock Prescaler"]
313    #[inline(always)]
314    pub fn adc0clkdiv(&mut self) -> ADC0CLKDIV_W {
315        ADC0CLKDIV_W::new(self)
316    }
317    #[doc = "Bits 4:5 - ADC0 Clock Select"]
318    #[inline(always)]
319    pub fn adc0clksel(&mut self) -> ADC0CLKSEL_W {
320        ADC0CLKSEL_W::new(self)
321    }
322    #[doc = "Bit 8 - Invert Clock Selected By ADC0CLKSEL"]
323    #[inline(always)]
324    pub fn adc0clkinv(&mut self) -> ADC0CLKINV_W {
325        ADC0CLKINV_W::new(self)
326    }
327    #[doc = "Bits 16:17 - ADC1 Clock Prescaler"]
328    #[inline(always)]
329    pub fn adc1clkdiv(&mut self) -> ADC1CLKDIV_W {
330        ADC1CLKDIV_W::new(self)
331    }
332    #[doc = "Bits 20:21 - ADC1 Clock Select"]
333    #[inline(always)]
334    pub fn adc1clksel(&mut self) -> ADC1CLKSEL_W {
335        ADC1CLKSEL_W::new(self)
336    }
337    #[doc = "Bit 24 - Invert Clock Selected By ADC1CLKSEL"]
338    #[inline(always)]
339    pub fn adc1clkinv(&mut self) -> ADC1CLKINV_W {
340        ADC1CLKINV_W::new(self)
341    }
342    #[doc = "Writes raw bits to the register."]
343    #[inline(always)]
344    pub unsafe fn bits(&mut self, bits: u32) -> &mut Self {
345        self.0.bits(bits);
346        self
347    }
348}
349#[doc = "ADC Control Register\n\nThis register you can [`read`](crate::generic::Reg::read), [`write_with_zero`](crate::generic::Reg::write_with_zero), [`reset`](crate::generic::Reg::reset), [`write`](crate::generic::Reg::write), [`modify`](crate::generic::Reg::modify). See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [adcctrl](index.html) module"]
350pub struct ADCCTRL_SPEC;
351impl crate::RegisterSpec for ADCCTRL_SPEC {
352    type Ux = u32;
353}
354#[doc = "`read()` method returns [adcctrl::R](R) reader structure"]
355impl crate::Readable for ADCCTRL_SPEC {
356    type Reader = R;
357}
358#[doc = "`write(|w| ..)` method takes [adcctrl::W](W) writer structure"]
359impl crate::Writable for ADCCTRL_SPEC {
360    type Writer = W;
361}
362#[doc = "`reset()` method sets ADCCTRL to value 0"]
363impl crate::Resettable for ADCCTRL_SPEC {
364    #[inline(always)]
365    fn reset_value() -> Self::Ux {
366        0
367    }
368}