efm32pg12_pac/acmp0/
extifctrl.rs

1#[doc = "Reader of register EXTIFCTRL"]
2pub type R = crate::R<u32, super::EXTIFCTRL>;
3#[doc = "Writer for register EXTIFCTRL"]
4pub type W = crate::W<u32, super::EXTIFCTRL>;
5#[doc = "Register EXTIFCTRL `reset()`'s with value 0"]
6impl crate::ResetValue for super::EXTIFCTRL {
7    type Type = u32;
8    #[inline(always)]
9    fn reset_value() -> Self::Type {
10        0
11    }
12}
13#[doc = "Reader of field `EN`"]
14pub type EN_R = crate::R<bool, bool>;
15#[doc = "Write proxy for field `EN`"]
16pub struct EN_W<'a> {
17    w: &'a mut W,
18}
19impl<'a> EN_W<'a> {
20    #[doc = r"Sets the field bit"]
21    #[inline(always)]
22    pub fn set_bit(self) -> &'a mut W {
23        self.bit(true)
24    }
25    #[doc = r"Clears the field bit"]
26    #[inline(always)]
27    pub fn clear_bit(self) -> &'a mut W {
28        self.bit(false)
29    }
30    #[doc = r"Writes raw bits to the field"]
31    #[inline(always)]
32    pub fn bit(self, value: bool) -> &'a mut W {
33        self.w.bits = (self.w.bits & !0x01) | ((value as u32) & 0x01);
34        self.w
35    }
36}
37#[doc = "APORT Selection for External Interface\n\nValue on reset: 0"]
38#[derive(Clone, Copy, Debug, PartialEq)]
39#[repr(u8)]
40pub enum APORTSEL_A {
41    #[doc = "0: APORT0X used. EXT_BASE = ACMP_INPUTSEL_POSSEL_APORT0XCH0."]
42    APORT0X = 0,
43    #[doc = "1: APORT0Y used. EXT_BASE = ACMP_INPUTSEL_POSSEL_APORT0YCH0."]
44    APORT0Y = 1,
45    #[doc = "2: APORT1X used. EXT_BASE = ACMP_INPUTSEL_POSSEL_APORT1XCH0."]
46    APORT1X = 2,
47    #[doc = "3: APORT1Y used. EXT_BASE = ACMP_INPUTSEL_POSSEL_APORT1XCH0."]
48    APORT1Y = 3,
49    #[doc = "4: APORT1X/Y used. EXT_BASE = ACMP_INPUTSEL_POSSEL_APORT1XCH0."]
50    APORT1XY = 4,
51    #[doc = "5: APORT2X used. EXT_BASE = ACMP_INPUTSEL_POSSEL_APORT2YCH0."]
52    APORT2X = 5,
53    #[doc = "6: APORT2Y used. EXT_BASE = ACMP_INPUTSEL_POSSEL_APORT2YCH0."]
54    APORT2Y = 6,
55    #[doc = "7: APORT2Y/X used. EXT_BASE = ACMP_INPUTSEL_POSSEL_APORT2YCH0."]
56    APORT2YX = 7,
57    #[doc = "8: APORT3X used. EXT_BASE = ACMP_INPUTSEL_POSSEL_APORT3XCH0."]
58    APORT3X = 8,
59    #[doc = "9: APORT3Y used. EXT_BASE = ACMP_INPUTSEL_POSSEL_APORT3XCH0."]
60    APORT3Y = 9,
61    #[doc = "10: APORT3X/Y used. EXT_BASE = ACMP_INPUTSEL_POSSEL_APORT3XCH0."]
62    APORT3XY = 10,
63    #[doc = "11: APORT4X used. EXT_BASE = ACMP_INPUTSEL_POSSEL_APORT4YCH0."]
64    APORT4X = 11,
65    #[doc = "12: APORT4Y used. EXT_BASE = ACMP_INPUTSEL_POSSEL_APORT4YCH0."]
66    APORT4Y = 12,
67    #[doc = "13: APORT4Y/X used. EXT_BASE = ACMP_INPUTSEL_POSSEL_APORT4YCH0."]
68    APORT4YX = 13,
69}
70impl From<APORTSEL_A> for u8 {
71    #[inline(always)]
72    fn from(variant: APORTSEL_A) -> Self {
73        variant as _
74    }
75}
76#[doc = "Reader of field `APORTSEL`"]
77pub type APORTSEL_R = crate::R<u8, APORTSEL_A>;
78impl APORTSEL_R {
79    #[doc = r"Get enumerated values variant"]
80    #[inline(always)]
81    pub fn variant(&self) -> crate::Variant<u8, APORTSEL_A> {
82        use crate::Variant::*;
83        match self.bits {
84            0 => Val(APORTSEL_A::APORT0X),
85            1 => Val(APORTSEL_A::APORT0Y),
86            2 => Val(APORTSEL_A::APORT1X),
87            3 => Val(APORTSEL_A::APORT1Y),
88            4 => Val(APORTSEL_A::APORT1XY),
89            5 => Val(APORTSEL_A::APORT2X),
90            6 => Val(APORTSEL_A::APORT2Y),
91            7 => Val(APORTSEL_A::APORT2YX),
92            8 => Val(APORTSEL_A::APORT3X),
93            9 => Val(APORTSEL_A::APORT3Y),
94            10 => Val(APORTSEL_A::APORT3XY),
95            11 => Val(APORTSEL_A::APORT4X),
96            12 => Val(APORTSEL_A::APORT4Y),
97            13 => Val(APORTSEL_A::APORT4YX),
98            i => Res(i),
99        }
100    }
101    #[doc = "Checks if the value of the field is `APORT0X`"]
102    #[inline(always)]
103    pub fn is_aport0x(&self) -> bool {
104        *self == APORTSEL_A::APORT0X
105    }
106    #[doc = "Checks if the value of the field is `APORT0Y`"]
107    #[inline(always)]
108    pub fn is_aport0y(&self) -> bool {
109        *self == APORTSEL_A::APORT0Y
110    }
111    #[doc = "Checks if the value of the field is `APORT1X`"]
112    #[inline(always)]
113    pub fn is_aport1x(&self) -> bool {
114        *self == APORTSEL_A::APORT1X
115    }
116    #[doc = "Checks if the value of the field is `APORT1Y`"]
117    #[inline(always)]
118    pub fn is_aport1y(&self) -> bool {
119        *self == APORTSEL_A::APORT1Y
120    }
121    #[doc = "Checks if the value of the field is `APORT1XY`"]
122    #[inline(always)]
123    pub fn is_aport1xy(&self) -> bool {
124        *self == APORTSEL_A::APORT1XY
125    }
126    #[doc = "Checks if the value of the field is `APORT2X`"]
127    #[inline(always)]
128    pub fn is_aport2x(&self) -> bool {
129        *self == APORTSEL_A::APORT2X
130    }
131    #[doc = "Checks if the value of the field is `APORT2Y`"]
132    #[inline(always)]
133    pub fn is_aport2y(&self) -> bool {
134        *self == APORTSEL_A::APORT2Y
135    }
136    #[doc = "Checks if the value of the field is `APORT2YX`"]
137    #[inline(always)]
138    pub fn is_aport2yx(&self) -> bool {
139        *self == APORTSEL_A::APORT2YX
140    }
141    #[doc = "Checks if the value of the field is `APORT3X`"]
142    #[inline(always)]
143    pub fn is_aport3x(&self) -> bool {
144        *self == APORTSEL_A::APORT3X
145    }
146    #[doc = "Checks if the value of the field is `APORT3Y`"]
147    #[inline(always)]
148    pub fn is_aport3y(&self) -> bool {
149        *self == APORTSEL_A::APORT3Y
150    }
151    #[doc = "Checks if the value of the field is `APORT3XY`"]
152    #[inline(always)]
153    pub fn is_aport3xy(&self) -> bool {
154        *self == APORTSEL_A::APORT3XY
155    }
156    #[doc = "Checks if the value of the field is `APORT4X`"]
157    #[inline(always)]
158    pub fn is_aport4x(&self) -> bool {
159        *self == APORTSEL_A::APORT4X
160    }
161    #[doc = "Checks if the value of the field is `APORT4Y`"]
162    #[inline(always)]
163    pub fn is_aport4y(&self) -> bool {
164        *self == APORTSEL_A::APORT4Y
165    }
166    #[doc = "Checks if the value of the field is `APORT4YX`"]
167    #[inline(always)]
168    pub fn is_aport4yx(&self) -> bool {
169        *self == APORTSEL_A::APORT4YX
170    }
171}
172#[doc = "Write proxy for field `APORTSEL`"]
173pub struct APORTSEL_W<'a> {
174    w: &'a mut W,
175}
176impl<'a> APORTSEL_W<'a> {
177    #[doc = r"Writes `variant` to the field"]
178    #[inline(always)]
179    pub fn variant(self, variant: APORTSEL_A) -> &'a mut W {
180        unsafe { self.bits(variant.into()) }
181    }
182    #[doc = "APORT0X used. EXT_BASE = ACMP_INPUTSEL_POSSEL_APORT0XCH0."]
183    #[inline(always)]
184    pub fn aport0x(self) -> &'a mut W {
185        self.variant(APORTSEL_A::APORT0X)
186    }
187    #[doc = "APORT0Y used. EXT_BASE = ACMP_INPUTSEL_POSSEL_APORT0YCH0."]
188    #[inline(always)]
189    pub fn aport0y(self) -> &'a mut W {
190        self.variant(APORTSEL_A::APORT0Y)
191    }
192    #[doc = "APORT1X used. EXT_BASE = ACMP_INPUTSEL_POSSEL_APORT1XCH0."]
193    #[inline(always)]
194    pub fn aport1x(self) -> &'a mut W {
195        self.variant(APORTSEL_A::APORT1X)
196    }
197    #[doc = "APORT1Y used. EXT_BASE = ACMP_INPUTSEL_POSSEL_APORT1XCH0."]
198    #[inline(always)]
199    pub fn aport1y(self) -> &'a mut W {
200        self.variant(APORTSEL_A::APORT1Y)
201    }
202    #[doc = "APORT1X/Y used. EXT_BASE = ACMP_INPUTSEL_POSSEL_APORT1XCH0."]
203    #[inline(always)]
204    pub fn aport1xy(self) -> &'a mut W {
205        self.variant(APORTSEL_A::APORT1XY)
206    }
207    #[doc = "APORT2X used. EXT_BASE = ACMP_INPUTSEL_POSSEL_APORT2YCH0."]
208    #[inline(always)]
209    pub fn aport2x(self) -> &'a mut W {
210        self.variant(APORTSEL_A::APORT2X)
211    }
212    #[doc = "APORT2Y used. EXT_BASE = ACMP_INPUTSEL_POSSEL_APORT2YCH0."]
213    #[inline(always)]
214    pub fn aport2y(self) -> &'a mut W {
215        self.variant(APORTSEL_A::APORT2Y)
216    }
217    #[doc = "APORT2Y/X used. EXT_BASE = ACMP_INPUTSEL_POSSEL_APORT2YCH0."]
218    #[inline(always)]
219    pub fn aport2yx(self) -> &'a mut W {
220        self.variant(APORTSEL_A::APORT2YX)
221    }
222    #[doc = "APORT3X used. EXT_BASE = ACMP_INPUTSEL_POSSEL_APORT3XCH0."]
223    #[inline(always)]
224    pub fn aport3x(self) -> &'a mut W {
225        self.variant(APORTSEL_A::APORT3X)
226    }
227    #[doc = "APORT3Y used. EXT_BASE = ACMP_INPUTSEL_POSSEL_APORT3XCH0."]
228    #[inline(always)]
229    pub fn aport3y(self) -> &'a mut W {
230        self.variant(APORTSEL_A::APORT3Y)
231    }
232    #[doc = "APORT3X/Y used. EXT_BASE = ACMP_INPUTSEL_POSSEL_APORT3XCH0."]
233    #[inline(always)]
234    pub fn aport3xy(self) -> &'a mut W {
235        self.variant(APORTSEL_A::APORT3XY)
236    }
237    #[doc = "APORT4X used. EXT_BASE = ACMP_INPUTSEL_POSSEL_APORT4YCH0."]
238    #[inline(always)]
239    pub fn aport4x(self) -> &'a mut W {
240        self.variant(APORTSEL_A::APORT4X)
241    }
242    #[doc = "APORT4Y used. EXT_BASE = ACMP_INPUTSEL_POSSEL_APORT4YCH0."]
243    #[inline(always)]
244    pub fn aport4y(self) -> &'a mut W {
245        self.variant(APORTSEL_A::APORT4Y)
246    }
247    #[doc = "APORT4Y/X used. EXT_BASE = ACMP_INPUTSEL_POSSEL_APORT4YCH0."]
248    #[inline(always)]
249    pub fn aport4yx(self) -> &'a mut W {
250        self.variant(APORTSEL_A::APORT4YX)
251    }
252    #[doc = r"Writes raw bits to the field"]
253    #[inline(always)]
254    pub unsafe fn bits(self, value: u8) -> &'a mut W {
255        self.w.bits = (self.w.bits & !(0x0f << 4)) | (((value as u32) & 0x0f) << 4);
256        self.w
257    }
258}
259impl R {
260    #[doc = "Bit 0 - Enable External Interface"]
261    #[inline(always)]
262    pub fn en(&self) -> EN_R {
263        EN_R::new((self.bits & 0x01) != 0)
264    }
265    #[doc = "Bits 4:7 - APORT Selection for External Interface"]
266    #[inline(always)]
267    pub fn aportsel(&self) -> APORTSEL_R {
268        APORTSEL_R::new(((self.bits >> 4) & 0x0f) as u8)
269    }
270}
271impl W {
272    #[doc = "Bit 0 - Enable External Interface"]
273    #[inline(always)]
274    pub fn en(&mut self) -> EN_W {
275        EN_W { w: self }
276    }
277    #[doc = "Bits 4:7 - APORT Selection for External Interface"]
278    #[inline(always)]
279    pub fn aportsel(&mut self) -> APORTSEL_W {
280        APORTSEL_W { w: self }
281    }
282}