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}