atsamd51j/wdt/
config.rs

1#[doc = "Register `CONFIG` reader"]
2pub type R = crate::R<ConfigSpec>;
3#[doc = "Register `CONFIG` writer"]
4pub type W = crate::W<ConfigSpec>;
5#[doc = "Time-Out Period\n\nValue on reset: 11"]
6#[derive(Clone, Copy, Debug, PartialEq, Eq)]
7#[repr(u8)]
8pub enum Perselect {
9    #[doc = "0: 8 clock cycles"]
10    Cyc8 = 0,
11    #[doc = "1: 16 clock cycles"]
12    Cyc16 = 1,
13    #[doc = "2: 32 clock cycles"]
14    Cyc32 = 2,
15    #[doc = "3: 64 clock cycles"]
16    Cyc64 = 3,
17    #[doc = "4: 128 clock cycles"]
18    Cyc128 = 4,
19    #[doc = "5: 256 clock cycles"]
20    Cyc256 = 5,
21    #[doc = "6: 512 clock cycles"]
22    Cyc512 = 6,
23    #[doc = "7: 1024 clock cycles"]
24    Cyc1024 = 7,
25    #[doc = "8: 2048 clock cycles"]
26    Cyc2048 = 8,
27    #[doc = "9: 4096 clock cycles"]
28    Cyc4096 = 9,
29    #[doc = "10: 8192 clock cycles"]
30    Cyc8192 = 10,
31    #[doc = "11: 16384 clock cycles"]
32    Cyc16384 = 11,
33}
34impl From<Perselect> for u8 {
35    #[inline(always)]
36    fn from(variant: Perselect) -> Self {
37        variant as _
38    }
39}
40impl crate::FieldSpec for Perselect {
41    type Ux = u8;
42}
43impl crate::IsEnum for Perselect {}
44#[doc = "Field `PER` reader - Time-Out Period"]
45pub type PerR = crate::FieldReader<Perselect>;
46impl PerR {
47    #[doc = "Get enumerated values variant"]
48    #[inline(always)]
49    pub const fn variant(&self) -> Option<Perselect> {
50        match self.bits {
51            0 => Some(Perselect::Cyc8),
52            1 => Some(Perselect::Cyc16),
53            2 => Some(Perselect::Cyc32),
54            3 => Some(Perselect::Cyc64),
55            4 => Some(Perselect::Cyc128),
56            5 => Some(Perselect::Cyc256),
57            6 => Some(Perselect::Cyc512),
58            7 => Some(Perselect::Cyc1024),
59            8 => Some(Perselect::Cyc2048),
60            9 => Some(Perselect::Cyc4096),
61            10 => Some(Perselect::Cyc8192),
62            11 => Some(Perselect::Cyc16384),
63            _ => None,
64        }
65    }
66    #[doc = "8 clock cycles"]
67    #[inline(always)]
68    pub fn is_cyc8(&self) -> bool {
69        *self == Perselect::Cyc8
70    }
71    #[doc = "16 clock cycles"]
72    #[inline(always)]
73    pub fn is_cyc16(&self) -> bool {
74        *self == Perselect::Cyc16
75    }
76    #[doc = "32 clock cycles"]
77    #[inline(always)]
78    pub fn is_cyc32(&self) -> bool {
79        *self == Perselect::Cyc32
80    }
81    #[doc = "64 clock cycles"]
82    #[inline(always)]
83    pub fn is_cyc64(&self) -> bool {
84        *self == Perselect::Cyc64
85    }
86    #[doc = "128 clock cycles"]
87    #[inline(always)]
88    pub fn is_cyc128(&self) -> bool {
89        *self == Perselect::Cyc128
90    }
91    #[doc = "256 clock cycles"]
92    #[inline(always)]
93    pub fn is_cyc256(&self) -> bool {
94        *self == Perselect::Cyc256
95    }
96    #[doc = "512 clock cycles"]
97    #[inline(always)]
98    pub fn is_cyc512(&self) -> bool {
99        *self == Perselect::Cyc512
100    }
101    #[doc = "1024 clock cycles"]
102    #[inline(always)]
103    pub fn is_cyc1024(&self) -> bool {
104        *self == Perselect::Cyc1024
105    }
106    #[doc = "2048 clock cycles"]
107    #[inline(always)]
108    pub fn is_cyc2048(&self) -> bool {
109        *self == Perselect::Cyc2048
110    }
111    #[doc = "4096 clock cycles"]
112    #[inline(always)]
113    pub fn is_cyc4096(&self) -> bool {
114        *self == Perselect::Cyc4096
115    }
116    #[doc = "8192 clock cycles"]
117    #[inline(always)]
118    pub fn is_cyc8192(&self) -> bool {
119        *self == Perselect::Cyc8192
120    }
121    #[doc = "16384 clock cycles"]
122    #[inline(always)]
123    pub fn is_cyc16384(&self) -> bool {
124        *self == Perselect::Cyc16384
125    }
126}
127#[doc = "Field `PER` writer - Time-Out Period"]
128pub type PerW<'a, REG> = crate::FieldWriter<'a, REG, 4, Perselect>;
129impl<'a, REG> PerW<'a, REG>
130where
131    REG: crate::Writable + crate::RegisterSpec,
132    REG::Ux: From<u8>,
133{
134    #[doc = "8 clock cycles"]
135    #[inline(always)]
136    pub fn cyc8(self) -> &'a mut crate::W<REG> {
137        self.variant(Perselect::Cyc8)
138    }
139    #[doc = "16 clock cycles"]
140    #[inline(always)]
141    pub fn cyc16(self) -> &'a mut crate::W<REG> {
142        self.variant(Perselect::Cyc16)
143    }
144    #[doc = "32 clock cycles"]
145    #[inline(always)]
146    pub fn cyc32(self) -> &'a mut crate::W<REG> {
147        self.variant(Perselect::Cyc32)
148    }
149    #[doc = "64 clock cycles"]
150    #[inline(always)]
151    pub fn cyc64(self) -> &'a mut crate::W<REG> {
152        self.variant(Perselect::Cyc64)
153    }
154    #[doc = "128 clock cycles"]
155    #[inline(always)]
156    pub fn cyc128(self) -> &'a mut crate::W<REG> {
157        self.variant(Perselect::Cyc128)
158    }
159    #[doc = "256 clock cycles"]
160    #[inline(always)]
161    pub fn cyc256(self) -> &'a mut crate::W<REG> {
162        self.variant(Perselect::Cyc256)
163    }
164    #[doc = "512 clock cycles"]
165    #[inline(always)]
166    pub fn cyc512(self) -> &'a mut crate::W<REG> {
167        self.variant(Perselect::Cyc512)
168    }
169    #[doc = "1024 clock cycles"]
170    #[inline(always)]
171    pub fn cyc1024(self) -> &'a mut crate::W<REG> {
172        self.variant(Perselect::Cyc1024)
173    }
174    #[doc = "2048 clock cycles"]
175    #[inline(always)]
176    pub fn cyc2048(self) -> &'a mut crate::W<REG> {
177        self.variant(Perselect::Cyc2048)
178    }
179    #[doc = "4096 clock cycles"]
180    #[inline(always)]
181    pub fn cyc4096(self) -> &'a mut crate::W<REG> {
182        self.variant(Perselect::Cyc4096)
183    }
184    #[doc = "8192 clock cycles"]
185    #[inline(always)]
186    pub fn cyc8192(self) -> &'a mut crate::W<REG> {
187        self.variant(Perselect::Cyc8192)
188    }
189    #[doc = "16384 clock cycles"]
190    #[inline(always)]
191    pub fn cyc16384(self) -> &'a mut crate::W<REG> {
192        self.variant(Perselect::Cyc16384)
193    }
194}
195#[doc = "Window Mode Time-Out Period\n\nValue on reset: 11"]
196#[derive(Clone, Copy, Debug, PartialEq, Eq)]
197#[repr(u8)]
198pub enum Windowselect {
199    #[doc = "0: 8 clock cycles"]
200    Cyc8 = 0,
201    #[doc = "1: 16 clock cycles"]
202    Cyc16 = 1,
203    #[doc = "2: 32 clock cycles"]
204    Cyc32 = 2,
205    #[doc = "3: 64 clock cycles"]
206    Cyc64 = 3,
207    #[doc = "4: 128 clock cycles"]
208    Cyc128 = 4,
209    #[doc = "5: 256 clock cycles"]
210    Cyc256 = 5,
211    #[doc = "6: 512 clock cycles"]
212    Cyc512 = 6,
213    #[doc = "7: 1024 clock cycles"]
214    Cyc1024 = 7,
215    #[doc = "8: 2048 clock cycles"]
216    Cyc2048 = 8,
217    #[doc = "9: 4096 clock cycles"]
218    Cyc4096 = 9,
219    #[doc = "10: 8192 clock cycles"]
220    Cyc8192 = 10,
221    #[doc = "11: 16384 clock cycles"]
222    Cyc16384 = 11,
223}
224impl From<Windowselect> for u8 {
225    #[inline(always)]
226    fn from(variant: Windowselect) -> Self {
227        variant as _
228    }
229}
230impl crate::FieldSpec for Windowselect {
231    type Ux = u8;
232}
233impl crate::IsEnum for Windowselect {}
234#[doc = "Field `WINDOW` reader - Window Mode Time-Out Period"]
235pub type WindowR = crate::FieldReader<Windowselect>;
236impl WindowR {
237    #[doc = "Get enumerated values variant"]
238    #[inline(always)]
239    pub const fn variant(&self) -> Option<Windowselect> {
240        match self.bits {
241            0 => Some(Windowselect::Cyc8),
242            1 => Some(Windowselect::Cyc16),
243            2 => Some(Windowselect::Cyc32),
244            3 => Some(Windowselect::Cyc64),
245            4 => Some(Windowselect::Cyc128),
246            5 => Some(Windowselect::Cyc256),
247            6 => Some(Windowselect::Cyc512),
248            7 => Some(Windowselect::Cyc1024),
249            8 => Some(Windowselect::Cyc2048),
250            9 => Some(Windowselect::Cyc4096),
251            10 => Some(Windowselect::Cyc8192),
252            11 => Some(Windowselect::Cyc16384),
253            _ => None,
254        }
255    }
256    #[doc = "8 clock cycles"]
257    #[inline(always)]
258    pub fn is_cyc8(&self) -> bool {
259        *self == Windowselect::Cyc8
260    }
261    #[doc = "16 clock cycles"]
262    #[inline(always)]
263    pub fn is_cyc16(&self) -> bool {
264        *self == Windowselect::Cyc16
265    }
266    #[doc = "32 clock cycles"]
267    #[inline(always)]
268    pub fn is_cyc32(&self) -> bool {
269        *self == Windowselect::Cyc32
270    }
271    #[doc = "64 clock cycles"]
272    #[inline(always)]
273    pub fn is_cyc64(&self) -> bool {
274        *self == Windowselect::Cyc64
275    }
276    #[doc = "128 clock cycles"]
277    #[inline(always)]
278    pub fn is_cyc128(&self) -> bool {
279        *self == Windowselect::Cyc128
280    }
281    #[doc = "256 clock cycles"]
282    #[inline(always)]
283    pub fn is_cyc256(&self) -> bool {
284        *self == Windowselect::Cyc256
285    }
286    #[doc = "512 clock cycles"]
287    #[inline(always)]
288    pub fn is_cyc512(&self) -> bool {
289        *self == Windowselect::Cyc512
290    }
291    #[doc = "1024 clock cycles"]
292    #[inline(always)]
293    pub fn is_cyc1024(&self) -> bool {
294        *self == Windowselect::Cyc1024
295    }
296    #[doc = "2048 clock cycles"]
297    #[inline(always)]
298    pub fn is_cyc2048(&self) -> bool {
299        *self == Windowselect::Cyc2048
300    }
301    #[doc = "4096 clock cycles"]
302    #[inline(always)]
303    pub fn is_cyc4096(&self) -> bool {
304        *self == Windowselect::Cyc4096
305    }
306    #[doc = "8192 clock cycles"]
307    #[inline(always)]
308    pub fn is_cyc8192(&self) -> bool {
309        *self == Windowselect::Cyc8192
310    }
311    #[doc = "16384 clock cycles"]
312    #[inline(always)]
313    pub fn is_cyc16384(&self) -> bool {
314        *self == Windowselect::Cyc16384
315    }
316}
317#[doc = "Field `WINDOW` writer - Window Mode Time-Out Period"]
318pub type WindowW<'a, REG> = crate::FieldWriter<'a, REG, 4, Windowselect>;
319impl<'a, REG> WindowW<'a, REG>
320where
321    REG: crate::Writable + crate::RegisterSpec,
322    REG::Ux: From<u8>,
323{
324    #[doc = "8 clock cycles"]
325    #[inline(always)]
326    pub fn cyc8(self) -> &'a mut crate::W<REG> {
327        self.variant(Windowselect::Cyc8)
328    }
329    #[doc = "16 clock cycles"]
330    #[inline(always)]
331    pub fn cyc16(self) -> &'a mut crate::W<REG> {
332        self.variant(Windowselect::Cyc16)
333    }
334    #[doc = "32 clock cycles"]
335    #[inline(always)]
336    pub fn cyc32(self) -> &'a mut crate::W<REG> {
337        self.variant(Windowselect::Cyc32)
338    }
339    #[doc = "64 clock cycles"]
340    #[inline(always)]
341    pub fn cyc64(self) -> &'a mut crate::W<REG> {
342        self.variant(Windowselect::Cyc64)
343    }
344    #[doc = "128 clock cycles"]
345    #[inline(always)]
346    pub fn cyc128(self) -> &'a mut crate::W<REG> {
347        self.variant(Windowselect::Cyc128)
348    }
349    #[doc = "256 clock cycles"]
350    #[inline(always)]
351    pub fn cyc256(self) -> &'a mut crate::W<REG> {
352        self.variant(Windowselect::Cyc256)
353    }
354    #[doc = "512 clock cycles"]
355    #[inline(always)]
356    pub fn cyc512(self) -> &'a mut crate::W<REG> {
357        self.variant(Windowselect::Cyc512)
358    }
359    #[doc = "1024 clock cycles"]
360    #[inline(always)]
361    pub fn cyc1024(self) -> &'a mut crate::W<REG> {
362        self.variant(Windowselect::Cyc1024)
363    }
364    #[doc = "2048 clock cycles"]
365    #[inline(always)]
366    pub fn cyc2048(self) -> &'a mut crate::W<REG> {
367        self.variant(Windowselect::Cyc2048)
368    }
369    #[doc = "4096 clock cycles"]
370    #[inline(always)]
371    pub fn cyc4096(self) -> &'a mut crate::W<REG> {
372        self.variant(Windowselect::Cyc4096)
373    }
374    #[doc = "8192 clock cycles"]
375    #[inline(always)]
376    pub fn cyc8192(self) -> &'a mut crate::W<REG> {
377        self.variant(Windowselect::Cyc8192)
378    }
379    #[doc = "16384 clock cycles"]
380    #[inline(always)]
381    pub fn cyc16384(self) -> &'a mut crate::W<REG> {
382        self.variant(Windowselect::Cyc16384)
383    }
384}
385impl R {
386    #[doc = "Bits 0:3 - Time-Out Period"]
387    #[inline(always)]
388    pub fn per(&self) -> PerR {
389        PerR::new(self.bits & 0x0f)
390    }
391    #[doc = "Bits 4:7 - Window Mode Time-Out Period"]
392    #[inline(always)]
393    pub fn window(&self) -> WindowR {
394        WindowR::new((self.bits >> 4) & 0x0f)
395    }
396}
397impl W {
398    #[doc = "Bits 0:3 - Time-Out Period"]
399    #[inline(always)]
400    #[must_use]
401    pub fn per(&mut self) -> PerW<ConfigSpec> {
402        PerW::new(self, 0)
403    }
404    #[doc = "Bits 4:7 - Window Mode Time-Out Period"]
405    #[inline(always)]
406    #[must_use]
407    pub fn window(&mut self) -> WindowW<ConfigSpec> {
408        WindowW::new(self, 4)
409    }
410}
411#[doc = "Configuration\n\nYou can [`read`](crate::Reg::read) this register and get [`config::R`](R). You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`config::W`](W). You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api)."]
412pub struct ConfigSpec;
413impl crate::RegisterSpec for ConfigSpec {
414    type Ux = u8;
415}
416#[doc = "`read()` method returns [`config::R`](R) reader structure"]
417impl crate::Readable for ConfigSpec {}
418#[doc = "`write(|w| ..)` method takes [`config::W`](W) writer structure"]
419impl crate::Writable for ConfigSpec {
420    type Safety = crate::Unsafe;
421    const ZERO_TO_MODIFY_FIELDS_BITMAP: u8 = 0;
422    const ONE_TO_MODIFY_FIELDS_BITMAP: u8 = 0;
423}
424#[doc = "`reset()` method sets CONFIG to value 0xbb"]
425impl crate::Resettable for ConfigSpec {
426    const RESET_VALUE: u8 = 0xbb;
427}