1#[doc = "Register `DACCTRL[%s]` reader"]
2pub type R = crate::R<DacctrlSpec>;
3#[doc = "Register `DACCTRL[%s]` writer"]
4pub type W = crate::W<DacctrlSpec>;
5#[doc = "Field `LEFTADJ` reader - Left Adjusted Data"]
6pub type LeftadjR = crate::BitReader;
7#[doc = "Field `LEFTADJ` writer - Left Adjusted Data"]
8pub type LeftadjW<'a, REG> = crate::BitWriter<'a, REG>;
9#[doc = "Field `ENABLE` reader - Enable DAC0"]
10pub type EnableR = crate::BitReader;
11#[doc = "Field `ENABLE` writer - Enable DAC0"]
12pub type EnableW<'a, REG> = crate::BitWriter<'a, REG>;
13#[doc = "Current Control\n\nValue on reset: 0"]
14#[derive(Clone, Copy, Debug, PartialEq, Eq)]
15#[repr(u8)]
16pub enum Cctrlselect {
17 #[doc = "0: 100kSPS"]
18 Cc100k = 0,
19 #[doc = "1: 500kSPS"]
20 Cc1m = 1,
21 #[doc = "2: 1MSPS"]
22 Cc12m = 2,
23}
24impl From<Cctrlselect> for u8 {
25 #[inline(always)]
26 fn from(variant: Cctrlselect) -> Self {
27 variant as _
28 }
29}
30impl crate::FieldSpec for Cctrlselect {
31 type Ux = u8;
32}
33impl crate::IsEnum for Cctrlselect {}
34#[doc = "Field `CCTRL` reader - Current Control"]
35pub type CctrlR = crate::FieldReader<Cctrlselect>;
36impl CctrlR {
37 #[doc = "Get enumerated values variant"]
38 #[inline(always)]
39 pub const fn variant(&self) -> Option<Cctrlselect> {
40 match self.bits {
41 0 => Some(Cctrlselect::Cc100k),
42 1 => Some(Cctrlselect::Cc1m),
43 2 => Some(Cctrlselect::Cc12m),
44 _ => None,
45 }
46 }
47 #[doc = "100kSPS"]
48 #[inline(always)]
49 pub fn is_cc100k(&self) -> bool {
50 *self == Cctrlselect::Cc100k
51 }
52 #[doc = "500kSPS"]
53 #[inline(always)]
54 pub fn is_cc1m(&self) -> bool {
55 *self == Cctrlselect::Cc1m
56 }
57 #[doc = "1MSPS"]
58 #[inline(always)]
59 pub fn is_cc12m(&self) -> bool {
60 *self == Cctrlselect::Cc12m
61 }
62}
63#[doc = "Field `CCTRL` writer - Current Control"]
64pub type CctrlW<'a, REG> = crate::FieldWriter<'a, REG, 2, Cctrlselect>;
65impl<'a, REG> CctrlW<'a, REG>
66where
67 REG: crate::Writable + crate::RegisterSpec,
68 REG::Ux: From<u8>,
69{
70 #[doc = "100kSPS"]
71 #[inline(always)]
72 pub fn cc100k(self) -> &'a mut crate::W<REG> {
73 self.variant(Cctrlselect::Cc100k)
74 }
75 #[doc = "500kSPS"]
76 #[inline(always)]
77 pub fn cc1m(self) -> &'a mut crate::W<REG> {
78 self.variant(Cctrlselect::Cc1m)
79 }
80 #[doc = "1MSPS"]
81 #[inline(always)]
82 pub fn cc12m(self) -> &'a mut crate::W<REG> {
83 self.variant(Cctrlselect::Cc12m)
84 }
85}
86#[doc = "Field `FEXT` reader - Standalone Filter"]
87pub type FextR = crate::BitReader;
88#[doc = "Field `FEXT` writer - Standalone Filter"]
89pub type FextW<'a, REG> = crate::BitWriter<'a, REG>;
90#[doc = "Field `RUNSTDBY` reader - Run in Standby"]
91pub type RunstdbyR = crate::BitReader;
92#[doc = "Field `RUNSTDBY` writer - Run in Standby"]
93pub type RunstdbyW<'a, REG> = crate::BitWriter<'a, REG>;
94#[doc = "Field `DITHER` reader - Dithering Mode"]
95pub type DitherR = crate::BitReader;
96#[doc = "Field `DITHER` writer - Dithering Mode"]
97pub type DitherW<'a, REG> = crate::BitWriter<'a, REG>;
98#[doc = "Refresh period\n\nValue on reset: 0"]
99#[derive(Clone, Copy, Debug, PartialEq, Eq)]
100#[repr(u8)]
101pub enum Refreshselect {
102 #[doc = "0: Do not Refresh"]
103 Refresh0 = 0,
104 #[doc = "1: Refresh every 30 us"]
105 Refresh1 = 1,
106 #[doc = "2: Refresh every 60 us"]
107 Refresh2 = 2,
108 #[doc = "3: Refresh every 90 us"]
109 Refresh3 = 3,
110 #[doc = "4: Refresh every 120 us"]
111 Refresh4 = 4,
112 #[doc = "5: Refresh every 150 us"]
113 Refresh5 = 5,
114 #[doc = "6: Refresh every 180 us"]
115 Refresh6 = 6,
116 #[doc = "7: Refresh every 210 us"]
117 Refresh7 = 7,
118 #[doc = "8: Refresh every 240 us"]
119 Refresh8 = 8,
120 #[doc = "9: Refresh every 270 us"]
121 Refresh9 = 9,
122 #[doc = "10: Refresh every 300 us"]
123 Refresh10 = 10,
124 #[doc = "11: Refresh every 330 us"]
125 Refresh11 = 11,
126 #[doc = "12: Refresh every 360 us"]
127 Refresh12 = 12,
128 #[doc = "13: Refresh every 390 us"]
129 Refresh13 = 13,
130 #[doc = "14: Refresh every 420 us"]
131 Refresh14 = 14,
132 #[doc = "15: Refresh every 450 us"]
133 Refresh15 = 15,
134}
135impl From<Refreshselect> for u8 {
136 #[inline(always)]
137 fn from(variant: Refreshselect) -> Self {
138 variant as _
139 }
140}
141impl crate::FieldSpec for Refreshselect {
142 type Ux = u8;
143}
144impl crate::IsEnum for Refreshselect {}
145#[doc = "Field `REFRESH` reader - Refresh period"]
146pub type RefreshR = crate::FieldReader<Refreshselect>;
147impl RefreshR {
148 #[doc = "Get enumerated values variant"]
149 #[inline(always)]
150 pub const fn variant(&self) -> Refreshselect {
151 match self.bits {
152 0 => Refreshselect::Refresh0,
153 1 => Refreshselect::Refresh1,
154 2 => Refreshselect::Refresh2,
155 3 => Refreshselect::Refresh3,
156 4 => Refreshselect::Refresh4,
157 5 => Refreshselect::Refresh5,
158 6 => Refreshselect::Refresh6,
159 7 => Refreshselect::Refresh7,
160 8 => Refreshselect::Refresh8,
161 9 => Refreshselect::Refresh9,
162 10 => Refreshselect::Refresh10,
163 11 => Refreshselect::Refresh11,
164 12 => Refreshselect::Refresh12,
165 13 => Refreshselect::Refresh13,
166 14 => Refreshselect::Refresh14,
167 15 => Refreshselect::Refresh15,
168 _ => unreachable!(),
169 }
170 }
171 #[doc = "Do not Refresh"]
172 #[inline(always)]
173 pub fn is_refresh_0(&self) -> bool {
174 *self == Refreshselect::Refresh0
175 }
176 #[doc = "Refresh every 30 us"]
177 #[inline(always)]
178 pub fn is_refresh_1(&self) -> bool {
179 *self == Refreshselect::Refresh1
180 }
181 #[doc = "Refresh every 60 us"]
182 #[inline(always)]
183 pub fn is_refresh_2(&self) -> bool {
184 *self == Refreshselect::Refresh2
185 }
186 #[doc = "Refresh every 90 us"]
187 #[inline(always)]
188 pub fn is_refresh_3(&self) -> bool {
189 *self == Refreshselect::Refresh3
190 }
191 #[doc = "Refresh every 120 us"]
192 #[inline(always)]
193 pub fn is_refresh_4(&self) -> bool {
194 *self == Refreshselect::Refresh4
195 }
196 #[doc = "Refresh every 150 us"]
197 #[inline(always)]
198 pub fn is_refresh_5(&self) -> bool {
199 *self == Refreshselect::Refresh5
200 }
201 #[doc = "Refresh every 180 us"]
202 #[inline(always)]
203 pub fn is_refresh_6(&self) -> bool {
204 *self == Refreshselect::Refresh6
205 }
206 #[doc = "Refresh every 210 us"]
207 #[inline(always)]
208 pub fn is_refresh_7(&self) -> bool {
209 *self == Refreshselect::Refresh7
210 }
211 #[doc = "Refresh every 240 us"]
212 #[inline(always)]
213 pub fn is_refresh_8(&self) -> bool {
214 *self == Refreshselect::Refresh8
215 }
216 #[doc = "Refresh every 270 us"]
217 #[inline(always)]
218 pub fn is_refresh_9(&self) -> bool {
219 *self == Refreshselect::Refresh9
220 }
221 #[doc = "Refresh every 300 us"]
222 #[inline(always)]
223 pub fn is_refresh_10(&self) -> bool {
224 *self == Refreshselect::Refresh10
225 }
226 #[doc = "Refresh every 330 us"]
227 #[inline(always)]
228 pub fn is_refresh_11(&self) -> bool {
229 *self == Refreshselect::Refresh11
230 }
231 #[doc = "Refresh every 360 us"]
232 #[inline(always)]
233 pub fn is_refresh_12(&self) -> bool {
234 *self == Refreshselect::Refresh12
235 }
236 #[doc = "Refresh every 390 us"]
237 #[inline(always)]
238 pub fn is_refresh_13(&self) -> bool {
239 *self == Refreshselect::Refresh13
240 }
241 #[doc = "Refresh every 420 us"]
242 #[inline(always)]
243 pub fn is_refresh_14(&self) -> bool {
244 *self == Refreshselect::Refresh14
245 }
246 #[doc = "Refresh every 450 us"]
247 #[inline(always)]
248 pub fn is_refresh_15(&self) -> bool {
249 *self == Refreshselect::Refresh15
250 }
251}
252#[doc = "Field `REFRESH` writer - Refresh period"]
253pub type RefreshW<'a, REG> = crate::FieldWriter<'a, REG, 4, Refreshselect, crate::Safe>;
254impl<'a, REG> RefreshW<'a, REG>
255where
256 REG: crate::Writable + crate::RegisterSpec,
257 REG::Ux: From<u8>,
258{
259 #[doc = "Do not Refresh"]
260 #[inline(always)]
261 pub fn refresh_0(self) -> &'a mut crate::W<REG> {
262 self.variant(Refreshselect::Refresh0)
263 }
264 #[doc = "Refresh every 30 us"]
265 #[inline(always)]
266 pub fn refresh_1(self) -> &'a mut crate::W<REG> {
267 self.variant(Refreshselect::Refresh1)
268 }
269 #[doc = "Refresh every 60 us"]
270 #[inline(always)]
271 pub fn refresh_2(self) -> &'a mut crate::W<REG> {
272 self.variant(Refreshselect::Refresh2)
273 }
274 #[doc = "Refresh every 90 us"]
275 #[inline(always)]
276 pub fn refresh_3(self) -> &'a mut crate::W<REG> {
277 self.variant(Refreshselect::Refresh3)
278 }
279 #[doc = "Refresh every 120 us"]
280 #[inline(always)]
281 pub fn refresh_4(self) -> &'a mut crate::W<REG> {
282 self.variant(Refreshselect::Refresh4)
283 }
284 #[doc = "Refresh every 150 us"]
285 #[inline(always)]
286 pub fn refresh_5(self) -> &'a mut crate::W<REG> {
287 self.variant(Refreshselect::Refresh5)
288 }
289 #[doc = "Refresh every 180 us"]
290 #[inline(always)]
291 pub fn refresh_6(self) -> &'a mut crate::W<REG> {
292 self.variant(Refreshselect::Refresh6)
293 }
294 #[doc = "Refresh every 210 us"]
295 #[inline(always)]
296 pub fn refresh_7(self) -> &'a mut crate::W<REG> {
297 self.variant(Refreshselect::Refresh7)
298 }
299 #[doc = "Refresh every 240 us"]
300 #[inline(always)]
301 pub fn refresh_8(self) -> &'a mut crate::W<REG> {
302 self.variant(Refreshselect::Refresh8)
303 }
304 #[doc = "Refresh every 270 us"]
305 #[inline(always)]
306 pub fn refresh_9(self) -> &'a mut crate::W<REG> {
307 self.variant(Refreshselect::Refresh9)
308 }
309 #[doc = "Refresh every 300 us"]
310 #[inline(always)]
311 pub fn refresh_10(self) -> &'a mut crate::W<REG> {
312 self.variant(Refreshselect::Refresh10)
313 }
314 #[doc = "Refresh every 330 us"]
315 #[inline(always)]
316 pub fn refresh_11(self) -> &'a mut crate::W<REG> {
317 self.variant(Refreshselect::Refresh11)
318 }
319 #[doc = "Refresh every 360 us"]
320 #[inline(always)]
321 pub fn refresh_12(self) -> &'a mut crate::W<REG> {
322 self.variant(Refreshselect::Refresh12)
323 }
324 #[doc = "Refresh every 390 us"]
325 #[inline(always)]
326 pub fn refresh_13(self) -> &'a mut crate::W<REG> {
327 self.variant(Refreshselect::Refresh13)
328 }
329 #[doc = "Refresh every 420 us"]
330 #[inline(always)]
331 pub fn refresh_14(self) -> &'a mut crate::W<REG> {
332 self.variant(Refreshselect::Refresh14)
333 }
334 #[doc = "Refresh every 450 us"]
335 #[inline(always)]
336 pub fn refresh_15(self) -> &'a mut crate::W<REG> {
337 self.variant(Refreshselect::Refresh15)
338 }
339}
340#[doc = "Sampling Rate\n\nValue on reset: 0"]
341#[derive(Clone, Copy, Debug, PartialEq, Eq)]
342#[repr(u8)]
343pub enum Osrselect {
344 #[doc = "0: No Over Sampling"]
345 Osr1 = 0,
346 #[doc = "1: 2x Over Sampling Ratio"]
347 Osr2 = 1,
348 #[doc = "2: 4x Over Sampling Ratio"]
349 Osr4 = 2,
350 #[doc = "3: 8x Over Sampling Ratio"]
351 Osr8 = 3,
352 #[doc = "4: 16x Over Sampling Ratio"]
353 Osr16 = 4,
354 #[doc = "5: 32x Over Sampling Ratio"]
355 Osr32 = 5,
356}
357impl From<Osrselect> for u8 {
358 #[inline(always)]
359 fn from(variant: Osrselect) -> Self {
360 variant as _
361 }
362}
363impl crate::FieldSpec for Osrselect {
364 type Ux = u8;
365}
366impl crate::IsEnum for Osrselect {}
367#[doc = "Field `OSR` reader - Sampling Rate"]
368pub type OsrR = crate::FieldReader<Osrselect>;
369impl OsrR {
370 #[doc = "Get enumerated values variant"]
371 #[inline(always)]
372 pub const fn variant(&self) -> Option<Osrselect> {
373 match self.bits {
374 0 => Some(Osrselect::Osr1),
375 1 => Some(Osrselect::Osr2),
376 2 => Some(Osrselect::Osr4),
377 3 => Some(Osrselect::Osr8),
378 4 => Some(Osrselect::Osr16),
379 5 => Some(Osrselect::Osr32),
380 _ => None,
381 }
382 }
383 #[doc = "No Over Sampling"]
384 #[inline(always)]
385 pub fn is_osr_1(&self) -> bool {
386 *self == Osrselect::Osr1
387 }
388 #[doc = "2x Over Sampling Ratio"]
389 #[inline(always)]
390 pub fn is_osr_2(&self) -> bool {
391 *self == Osrselect::Osr2
392 }
393 #[doc = "4x Over Sampling Ratio"]
394 #[inline(always)]
395 pub fn is_osr_4(&self) -> bool {
396 *self == Osrselect::Osr4
397 }
398 #[doc = "8x Over Sampling Ratio"]
399 #[inline(always)]
400 pub fn is_osr_8(&self) -> bool {
401 *self == Osrselect::Osr8
402 }
403 #[doc = "16x Over Sampling Ratio"]
404 #[inline(always)]
405 pub fn is_osr_16(&self) -> bool {
406 *self == Osrselect::Osr16
407 }
408 #[doc = "32x Over Sampling Ratio"]
409 #[inline(always)]
410 pub fn is_osr_32(&self) -> bool {
411 *self == Osrselect::Osr32
412 }
413}
414#[doc = "Field `OSR` writer - Sampling Rate"]
415pub type OsrW<'a, REG> = crate::FieldWriter<'a, REG, 3, Osrselect>;
416impl<'a, REG> OsrW<'a, REG>
417where
418 REG: crate::Writable + crate::RegisterSpec,
419 REG::Ux: From<u8>,
420{
421 #[doc = "No Over Sampling"]
422 #[inline(always)]
423 pub fn osr_1(self) -> &'a mut crate::W<REG> {
424 self.variant(Osrselect::Osr1)
425 }
426 #[doc = "2x Over Sampling Ratio"]
427 #[inline(always)]
428 pub fn osr_2(self) -> &'a mut crate::W<REG> {
429 self.variant(Osrselect::Osr2)
430 }
431 #[doc = "4x Over Sampling Ratio"]
432 #[inline(always)]
433 pub fn osr_4(self) -> &'a mut crate::W<REG> {
434 self.variant(Osrselect::Osr4)
435 }
436 #[doc = "8x Over Sampling Ratio"]
437 #[inline(always)]
438 pub fn osr_8(self) -> &'a mut crate::W<REG> {
439 self.variant(Osrselect::Osr8)
440 }
441 #[doc = "16x Over Sampling Ratio"]
442 #[inline(always)]
443 pub fn osr_16(self) -> &'a mut crate::W<REG> {
444 self.variant(Osrselect::Osr16)
445 }
446 #[doc = "32x Over Sampling Ratio"]
447 #[inline(always)]
448 pub fn osr_32(self) -> &'a mut crate::W<REG> {
449 self.variant(Osrselect::Osr32)
450 }
451}
452impl R {
453 #[doc = "Bit 0 - Left Adjusted Data"]
454 #[inline(always)]
455 pub fn leftadj(&self) -> LeftadjR {
456 LeftadjR::new((self.bits & 1) != 0)
457 }
458 #[doc = "Bit 1 - Enable DAC0"]
459 #[inline(always)]
460 pub fn enable(&self) -> EnableR {
461 EnableR::new(((self.bits >> 1) & 1) != 0)
462 }
463 #[doc = "Bits 2:3 - Current Control"]
464 #[inline(always)]
465 pub fn cctrl(&self) -> CctrlR {
466 CctrlR::new(((self.bits >> 2) & 3) as u8)
467 }
468 #[doc = "Bit 5 - Standalone Filter"]
469 #[inline(always)]
470 pub fn fext(&self) -> FextR {
471 FextR::new(((self.bits >> 5) & 1) != 0)
472 }
473 #[doc = "Bit 6 - Run in Standby"]
474 #[inline(always)]
475 pub fn runstdby(&self) -> RunstdbyR {
476 RunstdbyR::new(((self.bits >> 6) & 1) != 0)
477 }
478 #[doc = "Bit 7 - Dithering Mode"]
479 #[inline(always)]
480 pub fn dither(&self) -> DitherR {
481 DitherR::new(((self.bits >> 7) & 1) != 0)
482 }
483 #[doc = "Bits 8:11 - Refresh period"]
484 #[inline(always)]
485 pub fn refresh(&self) -> RefreshR {
486 RefreshR::new(((self.bits >> 8) & 0x0f) as u8)
487 }
488 #[doc = "Bits 13:15 - Sampling Rate"]
489 #[inline(always)]
490 pub fn osr(&self) -> OsrR {
491 OsrR::new(((self.bits >> 13) & 7) as u8)
492 }
493}
494impl W {
495 #[doc = "Bit 0 - Left Adjusted Data"]
496 #[inline(always)]
497 #[must_use]
498 pub fn leftadj(&mut self) -> LeftadjW<DacctrlSpec> {
499 LeftadjW::new(self, 0)
500 }
501 #[doc = "Bit 1 - Enable DAC0"]
502 #[inline(always)]
503 #[must_use]
504 pub fn enable(&mut self) -> EnableW<DacctrlSpec> {
505 EnableW::new(self, 1)
506 }
507 #[doc = "Bits 2:3 - Current Control"]
508 #[inline(always)]
509 #[must_use]
510 pub fn cctrl(&mut self) -> CctrlW<DacctrlSpec> {
511 CctrlW::new(self, 2)
512 }
513 #[doc = "Bit 5 - Standalone Filter"]
514 #[inline(always)]
515 #[must_use]
516 pub fn fext(&mut self) -> FextW<DacctrlSpec> {
517 FextW::new(self, 5)
518 }
519 #[doc = "Bit 6 - Run in Standby"]
520 #[inline(always)]
521 #[must_use]
522 pub fn runstdby(&mut self) -> RunstdbyW<DacctrlSpec> {
523 RunstdbyW::new(self, 6)
524 }
525 #[doc = "Bit 7 - Dithering Mode"]
526 #[inline(always)]
527 #[must_use]
528 pub fn dither(&mut self) -> DitherW<DacctrlSpec> {
529 DitherW::new(self, 7)
530 }
531 #[doc = "Bits 8:11 - Refresh period"]
532 #[inline(always)]
533 #[must_use]
534 pub fn refresh(&mut self) -> RefreshW<DacctrlSpec> {
535 RefreshW::new(self, 8)
536 }
537 #[doc = "Bits 13:15 - Sampling Rate"]
538 #[inline(always)]
539 #[must_use]
540 pub fn osr(&mut self) -> OsrW<DacctrlSpec> {
541 OsrW::new(self, 13)
542 }
543}
544#[doc = "DAC n Control\n\nYou can [`read`](crate::Reg::read) this register and get [`dacctrl::R`](R). You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`dacctrl::W`](W). You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api)."]
545pub struct DacctrlSpec;
546impl crate::RegisterSpec for DacctrlSpec {
547 type Ux = u16;
548}
549#[doc = "`read()` method returns [`dacctrl::R`](R) reader structure"]
550impl crate::Readable for DacctrlSpec {}
551#[doc = "`write(|w| ..)` method takes [`dacctrl::W`](W) writer structure"]
552impl crate::Writable for DacctrlSpec {
553 type Safety = crate::Unsafe;
554 const ZERO_TO_MODIFY_FIELDS_BITMAP: u16 = 0;
555 const ONE_TO_MODIFY_FIELDS_BITMAP: u16 = 0;
556}
557#[doc = "`reset()` method sets DACCTRL[%s]
558to value 0"]
559impl crate::Resettable for DacctrlSpec {
560 const RESET_VALUE: u16 = 0;
561}