atsamd11c/adc/
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: 1.0V voltage reference"]
10 Int1v = 0,
11 #[doc = "1: 1/1.48 VDDANA"]
12 Intvcc0 = 1,
13 #[doc = "2: 1/2 VDDANA (only for VDDANA > 2.0V)"]
14 Intvcc1 = 2,
15 #[doc = "3: External reference"]
16 Arefa = 3,
17 #[doc = "4: External reference"]
18 Arefb = 4,
19}
20impl From<Refselselect> for u8 {
21 #[inline(always)]
22 fn from(variant: Refselselect) -> Self {
23 variant as _
24 }
25}
26impl crate::FieldSpec for Refselselect {
27 type Ux = u8;
28}
29impl crate::IsEnum for Refselselect {}
30#[doc = "Field `REFSEL` reader - Reference Selection"]
31pub type RefselR = crate::FieldReader<Refselselect>;
32impl RefselR {
33 #[doc = "Get enumerated values variant"]
34 #[inline(always)]
35 pub const fn variant(&self) -> Option<Refselselect> {
36 match self.bits {
37 0 => Some(Refselselect::Int1v),
38 1 => Some(Refselselect::Intvcc0),
39 2 => Some(Refselselect::Intvcc1),
40 3 => Some(Refselselect::Arefa),
41 4 => Some(Refselselect::Arefb),
42 _ => None,
43 }
44 }
45 #[doc = "1.0V voltage reference"]
46 #[inline(always)]
47 pub fn is_int1v(&self) -> bool {
48 *self == Refselselect::Int1v
49 }
50 #[doc = "1/1.48 VDDANA"]
51 #[inline(always)]
52 pub fn is_intvcc0(&self) -> bool {
53 *self == Refselselect::Intvcc0
54 }
55 #[doc = "1/2 VDDANA (only for VDDANA > 2.0V)"]
56 #[inline(always)]
57 pub fn is_intvcc1(&self) -> bool {
58 *self == Refselselect::Intvcc1
59 }
60 #[doc = "External reference"]
61 #[inline(always)]
62 pub fn is_arefa(&self) -> bool {
63 *self == Refselselect::Arefa
64 }
65 #[doc = "External reference"]
66 #[inline(always)]
67 pub fn is_arefb(&self) -> bool {
68 *self == Refselselect::Arefb
69 }
70}
71#[doc = "Field `REFSEL` writer - Reference Selection"]
72pub type RefselW<'a, REG> = crate::FieldWriter<'a, REG, 4, Refselselect>;
73impl<'a, REG> RefselW<'a, REG>
74where
75 REG: crate::Writable + crate::RegisterSpec,
76 REG::Ux: From<u8>,
77{
78 #[doc = "1.0V voltage reference"]
79 #[inline(always)]
80 pub fn int1v(self) -> &'a mut crate::W<REG> {
81 self.variant(Refselselect::Int1v)
82 }
83 #[doc = "1/1.48 VDDANA"]
84 #[inline(always)]
85 pub fn intvcc0(self) -> &'a mut crate::W<REG> {
86 self.variant(Refselselect::Intvcc0)
87 }
88 #[doc = "1/2 VDDANA (only for VDDANA > 2.0V)"]
89 #[inline(always)]
90 pub fn intvcc1(self) -> &'a mut crate::W<REG> {
91 self.variant(Refselselect::Intvcc1)
92 }
93 #[doc = "External reference"]
94 #[inline(always)]
95 pub fn arefa(self) -> &'a mut crate::W<REG> {
96 self.variant(Refselselect::Arefa)
97 }
98 #[doc = "External reference"]
99 #[inline(always)]
100 pub fn arefb(self) -> &'a mut crate::W<REG> {
101 self.variant(Refselselect::Arefb)
102 }
103}
104#[doc = "Field `REFCOMP` reader - Reference Buffer Offset Compensation Enable"]
105pub type RefcompR = crate::BitReader;
106#[doc = "Field `REFCOMP` writer - Reference Buffer Offset Compensation Enable"]
107pub type RefcompW<'a, REG> = crate::BitWriter<'a, REG>;
108impl R {
109 #[doc = "Bits 0:3 - Reference Selection"]
110 #[inline(always)]
111 pub fn refsel(&self) -> RefselR {
112 RefselR::new(self.bits & 0x0f)
113 }
114 #[doc = "Bit 7 - Reference Buffer Offset Compensation Enable"]
115 #[inline(always)]
116 pub fn refcomp(&self) -> RefcompR {
117 RefcompR::new(((self.bits >> 7) & 1) != 0)
118 }
119}
120impl W {
121 #[doc = "Bits 0:3 - Reference Selection"]
122 #[inline(always)]
123 #[must_use]
124 pub fn refsel(&mut self) -> RefselW<RefctrlSpec> {
125 RefselW::new(self, 0)
126 }
127 #[doc = "Bit 7 - Reference Buffer Offset Compensation Enable"]
128 #[inline(always)]
129 #[must_use]
130 pub fn refcomp(&mut self) -> RefcompW<RefctrlSpec> {
131 RefcompW::new(self, 7)
132 }
133}
134#[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)."]
135pub struct RefctrlSpec;
136impl crate::RegisterSpec for RefctrlSpec {
137 type Ux = u8;
138}
139#[doc = "`read()` method returns [`refctrl::R`](R) reader structure"]
140impl crate::Readable for RefctrlSpec {}
141#[doc = "`write(|w| ..)` method takes [`refctrl::W`](W) writer structure"]
142impl crate::Writable for RefctrlSpec {
143 type Safety = crate::Unsafe;
144 const ZERO_TO_MODIFY_FIELDS_BITMAP: u8 = 0;
145 const ONE_TO_MODIFY_FIELDS_BITMAP: u8 = 0;
146}
147#[doc = "`reset()` method sets REFCTRL to value 0"]
148impl crate::Resettable for RefctrlSpec {
149 const RESET_VALUE: u8 = 0;
150}