atsamd51p/gclk/
syncbusy.rs

1#[doc = "Register `SYNCBUSY` reader"]
2pub type R = crate::R<SyncbusySpec>;
3#[doc = "Field `SWRST` reader - Software Reset Synchroniation Busy bit"]
4pub type SwrstR = crate::BitReader;
5#[doc = "Generic Clock Generator Control n Synchronization Busy bits\n\nValue on reset: 0"]
6#[derive(Clone, Copy, Debug, PartialEq, Eq)]
7#[repr(u16)]
8pub enum Genctrlselect {
9    #[doc = "1: Generic clock generator 0"]
10    Gclk0 = 1,
11    #[doc = "2: Generic clock generator 1"]
12    Gclk1 = 2,
13    #[doc = "4: Generic clock generator 2"]
14    Gclk2 = 4,
15    #[doc = "8: Generic clock generator 3"]
16    Gclk3 = 8,
17    #[doc = "16: Generic clock generator 4"]
18    Gclk4 = 16,
19    #[doc = "32: Generic clock generator 5"]
20    Gclk5 = 32,
21    #[doc = "64: Generic clock generator 6"]
22    Gclk6 = 64,
23    #[doc = "128: Generic clock generator 7"]
24    Gclk7 = 128,
25    #[doc = "256: Generic clock generator 8"]
26    Gclk8 = 256,
27    #[doc = "512: Generic clock generator 9"]
28    Gclk9 = 512,
29    #[doc = "1024: Generic clock generator 10"]
30    Gclk10 = 1024,
31    #[doc = "2048: Generic clock generator 11"]
32    Gclk11 = 2048,
33}
34impl From<Genctrlselect> for u16 {
35    #[inline(always)]
36    fn from(variant: Genctrlselect) -> Self {
37        variant as _
38    }
39}
40impl crate::FieldSpec for Genctrlselect {
41    type Ux = u16;
42}
43impl crate::IsEnum for Genctrlselect {}
44#[doc = "Field `GENCTRL` reader - Generic Clock Generator Control n Synchronization Busy bits"]
45pub type GenctrlR = crate::FieldReader<Genctrlselect>;
46impl GenctrlR {
47    #[doc = "Get enumerated values variant"]
48    #[inline(always)]
49    pub const fn variant(&self) -> Option<Genctrlselect> {
50        match self.bits {
51            1 => Some(Genctrlselect::Gclk0),
52            2 => Some(Genctrlselect::Gclk1),
53            4 => Some(Genctrlselect::Gclk2),
54            8 => Some(Genctrlselect::Gclk3),
55            16 => Some(Genctrlselect::Gclk4),
56            32 => Some(Genctrlselect::Gclk5),
57            64 => Some(Genctrlselect::Gclk6),
58            128 => Some(Genctrlselect::Gclk7),
59            256 => Some(Genctrlselect::Gclk8),
60            512 => Some(Genctrlselect::Gclk9),
61            1024 => Some(Genctrlselect::Gclk10),
62            2048 => Some(Genctrlselect::Gclk11),
63            _ => None,
64        }
65    }
66    #[doc = "Generic clock generator 0"]
67    #[inline(always)]
68    pub fn is_gclk0(&self) -> bool {
69        *self == Genctrlselect::Gclk0
70    }
71    #[doc = "Generic clock generator 1"]
72    #[inline(always)]
73    pub fn is_gclk1(&self) -> bool {
74        *self == Genctrlselect::Gclk1
75    }
76    #[doc = "Generic clock generator 2"]
77    #[inline(always)]
78    pub fn is_gclk2(&self) -> bool {
79        *self == Genctrlselect::Gclk2
80    }
81    #[doc = "Generic clock generator 3"]
82    #[inline(always)]
83    pub fn is_gclk3(&self) -> bool {
84        *self == Genctrlselect::Gclk3
85    }
86    #[doc = "Generic clock generator 4"]
87    #[inline(always)]
88    pub fn is_gclk4(&self) -> bool {
89        *self == Genctrlselect::Gclk4
90    }
91    #[doc = "Generic clock generator 5"]
92    #[inline(always)]
93    pub fn is_gclk5(&self) -> bool {
94        *self == Genctrlselect::Gclk5
95    }
96    #[doc = "Generic clock generator 6"]
97    #[inline(always)]
98    pub fn is_gclk6(&self) -> bool {
99        *self == Genctrlselect::Gclk6
100    }
101    #[doc = "Generic clock generator 7"]
102    #[inline(always)]
103    pub fn is_gclk7(&self) -> bool {
104        *self == Genctrlselect::Gclk7
105    }
106    #[doc = "Generic clock generator 8"]
107    #[inline(always)]
108    pub fn is_gclk8(&self) -> bool {
109        *self == Genctrlselect::Gclk8
110    }
111    #[doc = "Generic clock generator 9"]
112    #[inline(always)]
113    pub fn is_gclk9(&self) -> bool {
114        *self == Genctrlselect::Gclk9
115    }
116    #[doc = "Generic clock generator 10"]
117    #[inline(always)]
118    pub fn is_gclk10(&self) -> bool {
119        *self == Genctrlselect::Gclk10
120    }
121    #[doc = "Generic clock generator 11"]
122    #[inline(always)]
123    pub fn is_gclk11(&self) -> bool {
124        *self == Genctrlselect::Gclk11
125    }
126}
127impl R {
128    #[doc = "Bit 0 - Software Reset Synchroniation Busy bit"]
129    #[inline(always)]
130    pub fn swrst(&self) -> SwrstR {
131        SwrstR::new((self.bits & 1) != 0)
132    }
133    #[doc = "Bits 2:13 - Generic Clock Generator Control n Synchronization Busy bits"]
134    #[inline(always)]
135    pub fn genctrl(&self) -> GenctrlR {
136        GenctrlR::new(((self.bits >> 2) & 0x0fff) as u16)
137    }
138}
139#[doc = "Synchronization Busy\n\nYou can [`read`](crate::Reg::read) this register and get [`syncbusy::R`](R). See [API](https://docs.rs/svd2rust/#read--modify--write-api)."]
140pub struct SyncbusySpec;
141impl crate::RegisterSpec for SyncbusySpec {
142    type Ux = u32;
143}
144#[doc = "`read()` method returns [`syncbusy::R`](R) reader structure"]
145impl crate::Readable for SyncbusySpec {}
146#[doc = "`reset()` method sets SYNCBUSY to value 0"]
147impl crate::Resettable for SyncbusySpec {
148    const RESET_VALUE: u32 = 0;
149}