atsamd51g/nvmctrl/
eccerr.rs

1#[doc = "Register `ECCERR` reader"]
2pub type R = crate::R<EccerrSpec>;
3#[doc = "Field `ADDR` reader - Error Address"]
4pub type AddrR = crate::FieldReader<u32>;
5#[doc = "Low Double-Word Error Type\n\nValue on reset: 0"]
6#[derive(Clone, Copy, Debug, PartialEq, Eq)]
7#[repr(u8)]
8pub enum Typelselect {
9    #[doc = "0: No Error Detected Since Last Read"]
10    None = 0,
11    #[doc = "1: At Least One Single Error Detected Since last Read"]
12    Single = 1,
13    #[doc = "2: At Least One Dual Error Detected Since Last Read"]
14    Dual = 2,
15}
16impl From<Typelselect> for u8 {
17    #[inline(always)]
18    fn from(variant: Typelselect) -> Self {
19        variant as _
20    }
21}
22impl crate::FieldSpec for Typelselect {
23    type Ux = u8;
24}
25impl crate::IsEnum for Typelselect {}
26#[doc = "Field `TYPEL` reader - Low Double-Word Error Type"]
27pub type TypelR = crate::FieldReader<Typelselect>;
28impl TypelR {
29    #[doc = "Get enumerated values variant"]
30    #[inline(always)]
31    pub const fn variant(&self) -> Option<Typelselect> {
32        match self.bits {
33            0 => Some(Typelselect::None),
34            1 => Some(Typelselect::Single),
35            2 => Some(Typelselect::Dual),
36            _ => None,
37        }
38    }
39    #[doc = "No Error Detected Since Last Read"]
40    #[inline(always)]
41    pub fn is_none(&self) -> bool {
42        *self == Typelselect::None
43    }
44    #[doc = "At Least One Single Error Detected Since last Read"]
45    #[inline(always)]
46    pub fn is_single(&self) -> bool {
47        *self == Typelselect::Single
48    }
49    #[doc = "At Least One Dual Error Detected Since Last Read"]
50    #[inline(always)]
51    pub fn is_dual(&self) -> bool {
52        *self == Typelselect::Dual
53    }
54}
55#[doc = "High Double-Word Error Type\n\nValue on reset: 0"]
56#[derive(Clone, Copy, Debug, PartialEq, Eq)]
57#[repr(u8)]
58pub enum Typehselect {
59    #[doc = "0: No Error Detected Since Last Read"]
60    None = 0,
61    #[doc = "1: At Least One Single Error Detected Since last Read"]
62    Single = 1,
63    #[doc = "2: At Least One Dual Error Detected Since Last Read"]
64    Dual = 2,
65}
66impl From<Typehselect> for u8 {
67    #[inline(always)]
68    fn from(variant: Typehselect) -> Self {
69        variant as _
70    }
71}
72impl crate::FieldSpec for Typehselect {
73    type Ux = u8;
74}
75impl crate::IsEnum for Typehselect {}
76#[doc = "Field `TYPEH` reader - High Double-Word Error Type"]
77pub type TypehR = crate::FieldReader<Typehselect>;
78impl TypehR {
79    #[doc = "Get enumerated values variant"]
80    #[inline(always)]
81    pub const fn variant(&self) -> Option<Typehselect> {
82        match self.bits {
83            0 => Some(Typehselect::None),
84            1 => Some(Typehselect::Single),
85            2 => Some(Typehselect::Dual),
86            _ => None,
87        }
88    }
89    #[doc = "No Error Detected Since Last Read"]
90    #[inline(always)]
91    pub fn is_none(&self) -> bool {
92        *self == Typehselect::None
93    }
94    #[doc = "At Least One Single Error Detected Since last Read"]
95    #[inline(always)]
96    pub fn is_single(&self) -> bool {
97        *self == Typehselect::Single
98    }
99    #[doc = "At Least One Dual Error Detected Since Last Read"]
100    #[inline(always)]
101    pub fn is_dual(&self) -> bool {
102        *self == Typehselect::Dual
103    }
104}
105impl R {
106    #[doc = "Bits 0:23 - Error Address"]
107    #[inline(always)]
108    pub fn addr(&self) -> AddrR {
109        AddrR::new(self.bits & 0x00ff_ffff)
110    }
111    #[doc = "Bits 28:29 - Low Double-Word Error Type"]
112    #[inline(always)]
113    pub fn typel(&self) -> TypelR {
114        TypelR::new(((self.bits >> 28) & 3) as u8)
115    }
116    #[doc = "Bits 30:31 - High Double-Word Error Type"]
117    #[inline(always)]
118    pub fn typeh(&self) -> TypehR {
119        TypehR::new(((self.bits >> 30) & 3) as u8)
120    }
121}
122#[doc = "ECC Error Status Register\n\nYou can [`read`](crate::Reg::read) this register and get [`eccerr::R`](R). See [API](https://docs.rs/svd2rust/#read--modify--write-api)."]
123pub struct EccerrSpec;
124impl crate::RegisterSpec for EccerrSpec {
125    type Ux = u32;
126}
127#[doc = "`read()` method returns [`eccerr::R`](R) reader structure"]
128impl crate::Readable for EccerrSpec {}
129#[doc = "`reset()` method sets ECCERR to value 0"]
130impl crate::Resettable for EccerrSpec {
131    const RESET_VALUE: u32 = 0;
132}