atsamd51p/adc0/
refctrl.rs

1#[doc = "Register `REFCTRL` reader"]
2pub type R = crate::R<RefctrlSpec>;
3#[doc = "Register `REFCTRL` writer"]
4pub type W = crate::W<RefctrlSpec>;
5#[doc = "Reference Selection\n\nValue on reset: 0"]
6#[derive(Clone, Copy, Debug, PartialEq, Eq)]
7#[repr(u8)]
8pub enum Refselselect {
9    #[doc = "0: Internal Bandgap Reference"]
10    Intref = 0,
11    #[doc = "2: 1/2 VDDANA"]
12    Intvcc0 = 2,
13    #[doc = "3: VDDANA"]
14    Intvcc1 = 3,
15    #[doc = "4: External Reference A"]
16    Arefa = 4,
17    #[doc = "5: External Reference B"]
18    Arefb = 5,
19    #[doc = "6: External Reference C (only on ADC1)"]
20    Arefc = 6,
21}
22impl From<Refselselect> for u8 {
23    #[inline(always)]
24    fn from(variant: Refselselect) -> Self {
25        variant as _
26    }
27}
28impl crate::FieldSpec for Refselselect {
29    type Ux = u8;
30}
31impl crate::IsEnum for Refselselect {}
32#[doc = "Field `REFSEL` reader - Reference Selection"]
33pub type RefselR = crate::FieldReader<Refselselect>;
34impl RefselR {
35    #[doc = "Get enumerated values variant"]
36    #[inline(always)]
37    pub const fn variant(&self) -> Option<Refselselect> {
38        match self.bits {
39            0 => Some(Refselselect::Intref),
40            2 => Some(Refselselect::Intvcc0),
41            3 => Some(Refselselect::Intvcc1),
42            4 => Some(Refselselect::Arefa),
43            5 => Some(Refselselect::Arefb),
44            6 => Some(Refselselect::Arefc),
45            _ => None,
46        }
47    }
48    #[doc = "Internal Bandgap Reference"]
49    #[inline(always)]
50    pub fn is_intref(&self) -> bool {
51        *self == Refselselect::Intref
52    }
53    #[doc = "1/2 VDDANA"]
54    #[inline(always)]
55    pub fn is_intvcc0(&self) -> bool {
56        *self == Refselselect::Intvcc0
57    }
58    #[doc = "VDDANA"]
59    #[inline(always)]
60    pub fn is_intvcc1(&self) -> bool {
61        *self == Refselselect::Intvcc1
62    }
63    #[doc = "External Reference A"]
64    #[inline(always)]
65    pub fn is_arefa(&self) -> bool {
66        *self == Refselselect::Arefa
67    }
68    #[doc = "External Reference B"]
69    #[inline(always)]
70    pub fn is_arefb(&self) -> bool {
71        *self == Refselselect::Arefb
72    }
73    #[doc = "External Reference C (only on ADC1)"]
74    #[inline(always)]
75    pub fn is_arefc(&self) -> bool {
76        *self == Refselselect::Arefc
77    }
78}
79#[doc = "Field `REFSEL` writer - Reference Selection"]
80pub type RefselW<'a, REG> = crate::FieldWriter<'a, REG, 4, Refselselect>;
81impl<'a, REG> RefselW<'a, REG>
82where
83    REG: crate::Writable + crate::RegisterSpec,
84    REG::Ux: From<u8>,
85{
86    #[doc = "Internal Bandgap Reference"]
87    #[inline(always)]
88    pub fn intref(self) -> &'a mut crate::W<REG> {
89        self.variant(Refselselect::Intref)
90    }
91    #[doc = "1/2 VDDANA"]
92    #[inline(always)]
93    pub fn intvcc0(self) -> &'a mut crate::W<REG> {
94        self.variant(Refselselect::Intvcc0)
95    }
96    #[doc = "VDDANA"]
97    #[inline(always)]
98    pub fn intvcc1(self) -> &'a mut crate::W<REG> {
99        self.variant(Refselselect::Intvcc1)
100    }
101    #[doc = "External Reference A"]
102    #[inline(always)]
103    pub fn arefa(self) -> &'a mut crate::W<REG> {
104        self.variant(Refselselect::Arefa)
105    }
106    #[doc = "External Reference B"]
107    #[inline(always)]
108    pub fn arefb(self) -> &'a mut crate::W<REG> {
109        self.variant(Refselselect::Arefb)
110    }
111    #[doc = "External Reference C (only on ADC1)"]
112    #[inline(always)]
113    pub fn arefc(self) -> &'a mut crate::W<REG> {
114        self.variant(Refselselect::Arefc)
115    }
116}
117#[doc = "Field `REFCOMP` reader - Reference Buffer Offset Compensation Enable"]
118pub type RefcompR = crate::BitReader;
119#[doc = "Field `REFCOMP` writer - Reference Buffer Offset Compensation Enable"]
120pub type RefcompW<'a, REG> = crate::BitWriter<'a, REG>;
121impl R {
122    #[doc = "Bits 0:3 - Reference Selection"]
123    #[inline(always)]
124    pub fn refsel(&self) -> RefselR {
125        RefselR::new(self.bits & 0x0f)
126    }
127    #[doc = "Bit 7 - Reference Buffer Offset Compensation Enable"]
128    #[inline(always)]
129    pub fn refcomp(&self) -> RefcompR {
130        RefcompR::new(((self.bits >> 7) & 1) != 0)
131    }
132}
133impl W {
134    #[doc = "Bits 0:3 - Reference Selection"]
135    #[inline(always)]
136    #[must_use]
137    pub fn refsel(&mut self) -> RefselW<RefctrlSpec> {
138        RefselW::new(self, 0)
139    }
140    #[doc = "Bit 7 - Reference Buffer Offset Compensation Enable"]
141    #[inline(always)]
142    #[must_use]
143    pub fn refcomp(&mut self) -> RefcompW<RefctrlSpec> {
144        RefcompW::new(self, 7)
145    }
146}
147#[doc = "Reference Control\n\nYou can [`read`](crate::Reg::read) this register and get [`refctrl::R`](R). You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`refctrl::W`](W). You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api)."]
148pub struct RefctrlSpec;
149impl crate::RegisterSpec for RefctrlSpec {
150    type Ux = u8;
151}
152#[doc = "`read()` method returns [`refctrl::R`](R) reader structure"]
153impl crate::Readable for RefctrlSpec {}
154#[doc = "`write(|w| ..)` method takes [`refctrl::W`](W) writer structure"]
155impl crate::Writable for RefctrlSpec {
156    type Safety = crate::Unsafe;
157    const ZERO_TO_MODIFY_FIELDS_BITMAP: u8 = 0;
158    const ONE_TO_MODIFY_FIELDS_BITMAP: u8 = 0;
159}
160#[doc = "`reset()` method sets REFCTRL to value 0"]
161impl crate::Resettable for RefctrlSpec {
162    const RESET_VALUE: u8 = 0;
163}