xmc4300/ecat0/
feature.rs

1#[doc = "Register `FEATURE` reader"]
2pub type R = crate::R<FEATURE_SPEC>;
3#[doc = "FMMU Operation\n\nValue on reset: 0"]
4#[derive(Clone, Copy, Debug, PartialEq, Eq)]
5pub enum FMMU_A {
6    #[doc = "0: Bit oriented"]
7    VALUE1 = 0,
8    #[doc = "1: Byte oriented"]
9    VALUE2 = 1,
10}
11impl From<FMMU_A> for bool {
12    #[inline(always)]
13    fn from(variant: FMMU_A) -> Self {
14        variant as u8 != 0
15    }
16}
17#[doc = "Field `FMMU` reader - FMMU Operation"]
18pub type FMMU_R = crate::BitReader<FMMU_A>;
19impl FMMU_R {
20    #[doc = "Get enumerated values variant"]
21    #[inline(always)]
22    pub const fn variant(&self) -> FMMU_A {
23        match self.bits {
24            false => FMMU_A::VALUE1,
25            true => FMMU_A::VALUE2,
26        }
27    }
28    #[doc = "Bit oriented"]
29    #[inline(always)]
30    pub fn is_value1(&self) -> bool {
31        *self == FMMU_A::VALUE1
32    }
33    #[doc = "Byte oriented"]
34    #[inline(always)]
35    pub fn is_value2(&self) -> bool {
36        *self == FMMU_A::VALUE2
37    }
38}
39#[doc = "Distributed Clocks\n\nValue on reset: 1"]
40#[derive(Clone, Copy, Debug, PartialEq, Eq)]
41pub enum CLKS_A {
42    #[doc = "0: Not available"]
43    VALUE1 = 0,
44    #[doc = "1: Available"]
45    VALUE2 = 1,
46}
47impl From<CLKS_A> for bool {
48    #[inline(always)]
49    fn from(variant: CLKS_A) -> Self {
50        variant as u8 != 0
51    }
52}
53#[doc = "Field `CLKS` reader - Distributed Clocks"]
54pub type CLKS_R = crate::BitReader<CLKS_A>;
55impl CLKS_R {
56    #[doc = "Get enumerated values variant"]
57    #[inline(always)]
58    pub const fn variant(&self) -> CLKS_A {
59        match self.bits {
60            false => CLKS_A::VALUE1,
61            true => CLKS_A::VALUE2,
62        }
63    }
64    #[doc = "Not available"]
65    #[inline(always)]
66    pub fn is_value1(&self) -> bool {
67        *self == CLKS_A::VALUE1
68    }
69    #[doc = "Available"]
70    #[inline(always)]
71    pub fn is_value2(&self) -> bool {
72        *self == CLKS_A::VALUE2
73    }
74}
75#[doc = "Distributed Clocks (width)\n\nValue on reset: 1"]
76#[derive(Clone, Copy, Debug, PartialEq, Eq)]
77pub enum CLKS_W_A {
78    #[doc = "0: 32 bits"]
79    VALUE1 = 0,
80    #[doc = "1: 64 bits"]
81    VALUE2 = 1,
82}
83impl From<CLKS_W_A> for bool {
84    #[inline(always)]
85    fn from(variant: CLKS_W_A) -> Self {
86        variant as u8 != 0
87    }
88}
89#[doc = "Field `CLKS_W` reader - Distributed Clocks (width)"]
90pub type CLKS_W_R = crate::BitReader<CLKS_W_A>;
91impl CLKS_W_R {
92    #[doc = "Get enumerated values variant"]
93    #[inline(always)]
94    pub const fn variant(&self) -> CLKS_W_A {
95        match self.bits {
96            false => CLKS_W_A::VALUE1,
97            true => CLKS_W_A::VALUE2,
98        }
99    }
100    #[doc = "32 bits"]
101    #[inline(always)]
102    pub fn is_value1(&self) -> bool {
103        *self == CLKS_W_A::VALUE1
104    }
105    #[doc = "64 bits"]
106    #[inline(always)]
107    pub fn is_value2(&self) -> bool {
108        *self == CLKS_W_A::VALUE2
109    }
110}
111#[doc = "Low Jitter EBUS\n\nValue on reset: 0"]
112#[derive(Clone, Copy, Debug, PartialEq, Eq)]
113pub enum LJ_EBUS_A {
114    #[doc = "0: Not available, standard jitter"]
115    VALUE1 = 0,
116    #[doc = "1: Available, jitter minimized"]
117    VALUE2 = 1,
118}
119impl From<LJ_EBUS_A> for bool {
120    #[inline(always)]
121    fn from(variant: LJ_EBUS_A) -> Self {
122        variant as u8 != 0
123    }
124}
125#[doc = "Field `LJ_EBUS` reader - Low Jitter EBUS"]
126pub type LJ_EBUS_R = crate::BitReader<LJ_EBUS_A>;
127impl LJ_EBUS_R {
128    #[doc = "Get enumerated values variant"]
129    #[inline(always)]
130    pub const fn variant(&self) -> LJ_EBUS_A {
131        match self.bits {
132            false => LJ_EBUS_A::VALUE1,
133            true => LJ_EBUS_A::VALUE2,
134        }
135    }
136    #[doc = "Not available, standard jitter"]
137    #[inline(always)]
138    pub fn is_value1(&self) -> bool {
139        *self == LJ_EBUS_A::VALUE1
140    }
141    #[doc = "Available, jitter minimized"]
142    #[inline(always)]
143    pub fn is_value2(&self) -> bool {
144        *self == LJ_EBUS_A::VALUE2
145    }
146}
147#[doc = "Enhanced Link Detection EBUS\n\nValue on reset: 0"]
148#[derive(Clone, Copy, Debug, PartialEq, Eq)]
149pub enum ELD_EBUS_A {
150    #[doc = "0: Not available"]
151    VALUE1 = 0,
152    #[doc = "1: Available"]
153    VALUE2 = 1,
154}
155impl From<ELD_EBUS_A> for bool {
156    #[inline(always)]
157    fn from(variant: ELD_EBUS_A) -> Self {
158        variant as u8 != 0
159    }
160}
161#[doc = "Field `ELD_EBUS` reader - Enhanced Link Detection EBUS"]
162pub type ELD_EBUS_R = crate::BitReader<ELD_EBUS_A>;
163impl ELD_EBUS_R {
164    #[doc = "Get enumerated values variant"]
165    #[inline(always)]
166    pub const fn variant(&self) -> ELD_EBUS_A {
167        match self.bits {
168            false => ELD_EBUS_A::VALUE1,
169            true => ELD_EBUS_A::VALUE2,
170        }
171    }
172    #[doc = "Not available"]
173    #[inline(always)]
174    pub fn is_value1(&self) -> bool {
175        *self == ELD_EBUS_A::VALUE1
176    }
177    #[doc = "Available"]
178    #[inline(always)]
179    pub fn is_value2(&self) -> bool {
180        *self == ELD_EBUS_A::VALUE2
181    }
182}
183#[doc = "Enhanced Link Detection MII\n\nValue on reset: 1"]
184#[derive(Clone, Copy, Debug, PartialEq, Eq)]
185pub enum ELD_MII_A {
186    #[doc = "0: Not available"]
187    VALUE1 = 0,
188    #[doc = "1: Available"]
189    VALUE2 = 1,
190}
191impl From<ELD_MII_A> for bool {
192    #[inline(always)]
193    fn from(variant: ELD_MII_A) -> Self {
194        variant as u8 != 0
195    }
196}
197#[doc = "Field `ELD_MII` reader - Enhanced Link Detection MII"]
198pub type ELD_MII_R = crate::BitReader<ELD_MII_A>;
199impl ELD_MII_R {
200    #[doc = "Get enumerated values variant"]
201    #[inline(always)]
202    pub const fn variant(&self) -> ELD_MII_A {
203        match self.bits {
204            false => ELD_MII_A::VALUE1,
205            true => ELD_MII_A::VALUE2,
206        }
207    }
208    #[doc = "Not available"]
209    #[inline(always)]
210    pub fn is_value1(&self) -> bool {
211        *self == ELD_MII_A::VALUE1
212    }
213    #[doc = "Available"]
214    #[inline(always)]
215    pub fn is_value2(&self) -> bool {
216        *self == ELD_MII_A::VALUE2
217    }
218}
219#[doc = "Separate Handling of FCS Errors\n\nValue on reset: 1"]
220#[derive(Clone, Copy, Debug, PartialEq, Eq)]
221pub enum SH_FCSE_A {
222    #[doc = "0: Not supported"]
223    VALUE1 = 0,
224    #[doc = "1: Supported, frames with wrong FCS and additional nibble will be counted separately in Forwarded RX Error Counter"]
225    VALUE2 = 1,
226}
227impl From<SH_FCSE_A> for bool {
228    #[inline(always)]
229    fn from(variant: SH_FCSE_A) -> Self {
230        variant as u8 != 0
231    }
232}
233#[doc = "Field `SH_FCSE` reader - Separate Handling of FCS Errors"]
234pub type SH_FCSE_R = crate::BitReader<SH_FCSE_A>;
235impl SH_FCSE_R {
236    #[doc = "Get enumerated values variant"]
237    #[inline(always)]
238    pub const fn variant(&self) -> SH_FCSE_A {
239        match self.bits {
240            false => SH_FCSE_A::VALUE1,
241            true => SH_FCSE_A::VALUE2,
242        }
243    }
244    #[doc = "Not supported"]
245    #[inline(always)]
246    pub fn is_value1(&self) -> bool {
247        *self == SH_FCSE_A::VALUE1
248    }
249    #[doc = "Supported, frames with wrong FCS and additional nibble will be counted separately in Forwarded RX Error Counter"]
250    #[inline(always)]
251    pub fn is_value2(&self) -> bool {
252        *self == SH_FCSE_A::VALUE2
253    }
254}
255#[doc = "Enhanced DC SYNC Activation\n\nValue on reset: 1"]
256#[derive(Clone, Copy, Debug, PartialEq, Eq)]
257pub enum EDC_SYNCA_A {
258    #[doc = "0: Not available"]
259    VALUE1 = 0,
260    #[doc = "1: Available"]
261    VALUE2 = 1,
262}
263impl From<EDC_SYNCA_A> for bool {
264    #[inline(always)]
265    fn from(variant: EDC_SYNCA_A) -> Self {
266        variant as u8 != 0
267    }
268}
269#[doc = "Field `EDC_SYNCA` reader - Enhanced DC SYNC Activation"]
270pub type EDC_SYNCA_R = crate::BitReader<EDC_SYNCA_A>;
271impl EDC_SYNCA_R {
272    #[doc = "Get enumerated values variant"]
273    #[inline(always)]
274    pub const fn variant(&self) -> EDC_SYNCA_A {
275        match self.bits {
276            false => EDC_SYNCA_A::VALUE1,
277            true => EDC_SYNCA_A::VALUE2,
278        }
279    }
280    #[doc = "Not available"]
281    #[inline(always)]
282    pub fn is_value1(&self) -> bool {
283        *self == EDC_SYNCA_A::VALUE1
284    }
285    #[doc = "Available"]
286    #[inline(always)]
287    pub fn is_value2(&self) -> bool {
288        *self == EDC_SYNCA_A::VALUE2
289    }
290}
291#[doc = "EtherCAT LRW command support\n\nValue on reset: 0"]
292#[derive(Clone, Copy, Debug, PartialEq, Eq)]
293pub enum LRW_CS_A {
294    #[doc = "0: Supported"]
295    VALUE1 = 0,
296    #[doc = "1: Not supported"]
297    VALUE2 = 1,
298}
299impl From<LRW_CS_A> for bool {
300    #[inline(always)]
301    fn from(variant: LRW_CS_A) -> Self {
302        variant as u8 != 0
303    }
304}
305#[doc = "Field `LRW_CS` reader - EtherCAT LRW command support"]
306pub type LRW_CS_R = crate::BitReader<LRW_CS_A>;
307impl LRW_CS_R {
308    #[doc = "Get enumerated values variant"]
309    #[inline(always)]
310    pub const fn variant(&self) -> LRW_CS_A {
311        match self.bits {
312            false => LRW_CS_A::VALUE1,
313            true => LRW_CS_A::VALUE2,
314        }
315    }
316    #[doc = "Supported"]
317    #[inline(always)]
318    pub fn is_value1(&self) -> bool {
319        *self == LRW_CS_A::VALUE1
320    }
321    #[doc = "Not supported"]
322    #[inline(always)]
323    pub fn is_value2(&self) -> bool {
324        *self == LRW_CS_A::VALUE2
325    }
326}
327#[doc = "EtherCAT read/write command support (BRW, APRW, FPRW)\n\nValue on reset: 0"]
328#[derive(Clone, Copy, Debug, PartialEq, Eq)]
329pub enum RW_CS_A {
330    #[doc = "0: Supported"]
331    VALUE1 = 0,
332    #[doc = "1: Not supported"]
333    VALUE2 = 1,
334}
335impl From<RW_CS_A> for bool {
336    #[inline(always)]
337    fn from(variant: RW_CS_A) -> Self {
338        variant as u8 != 0
339    }
340}
341#[doc = "Field `RW_CS` reader - EtherCAT read/write command support (BRW, APRW, FPRW)"]
342pub type RW_CS_R = crate::BitReader<RW_CS_A>;
343impl RW_CS_R {
344    #[doc = "Get enumerated values variant"]
345    #[inline(always)]
346    pub const fn variant(&self) -> RW_CS_A {
347        match self.bits {
348            false => RW_CS_A::VALUE1,
349            true => RW_CS_A::VALUE2,
350        }
351    }
352    #[doc = "Supported"]
353    #[inline(always)]
354    pub fn is_value1(&self) -> bool {
355        *self == RW_CS_A::VALUE1
356    }
357    #[doc = "Not supported"]
358    #[inline(always)]
359    pub fn is_value2(&self) -> bool {
360        *self == RW_CS_A::VALUE2
361    }
362}
363#[doc = "Fixed FMMU/SyncManager configuration\n\nValue on reset: 0"]
364#[derive(Clone, Copy, Debug, PartialEq, Eq)]
365pub enum FX_CONF_A {
366    #[doc = "0: Variable configuration"]
367    VALUE1 = 0,
368    #[doc = "1: Fixed configuration (refer to documentation of supporting ESCs)"]
369    VALUE2 = 1,
370}
371impl From<FX_CONF_A> for bool {
372    #[inline(always)]
373    fn from(variant: FX_CONF_A) -> Self {
374        variant as u8 != 0
375    }
376}
377#[doc = "Field `FX_CONF` reader - Fixed FMMU/SyncManager configuration"]
378pub type FX_CONF_R = crate::BitReader<FX_CONF_A>;
379impl FX_CONF_R {
380    #[doc = "Get enumerated values variant"]
381    #[inline(always)]
382    pub const fn variant(&self) -> FX_CONF_A {
383        match self.bits {
384            false => FX_CONF_A::VALUE1,
385            true => FX_CONF_A::VALUE2,
386        }
387    }
388    #[doc = "Variable configuration"]
389    #[inline(always)]
390    pub fn is_value1(&self) -> bool {
391        *self == FX_CONF_A::VALUE1
392    }
393    #[doc = "Fixed configuration (refer to documentation of supporting ESCs)"]
394    #[inline(always)]
395    pub fn is_value2(&self) -> bool {
396        *self == FX_CONF_A::VALUE2
397    }
398}
399impl R {
400    #[doc = "Bit 0 - FMMU Operation"]
401    #[inline(always)]
402    pub fn fmmu(&self) -> FMMU_R {
403        FMMU_R::new((self.bits & 1) != 0)
404    }
405    #[doc = "Bit 2 - Distributed Clocks"]
406    #[inline(always)]
407    pub fn clks(&self) -> CLKS_R {
408        CLKS_R::new(((self.bits >> 2) & 1) != 0)
409    }
410    #[doc = "Bit 3 - Distributed Clocks (width)"]
411    #[inline(always)]
412    pub fn clks_w(&self) -> CLKS_W_R {
413        CLKS_W_R::new(((self.bits >> 3) & 1) != 0)
414    }
415    #[doc = "Bit 4 - Low Jitter EBUS"]
416    #[inline(always)]
417    pub fn lj_ebus(&self) -> LJ_EBUS_R {
418        LJ_EBUS_R::new(((self.bits >> 4) & 1) != 0)
419    }
420    #[doc = "Bit 5 - Enhanced Link Detection EBUS"]
421    #[inline(always)]
422    pub fn eld_ebus(&self) -> ELD_EBUS_R {
423        ELD_EBUS_R::new(((self.bits >> 5) & 1) != 0)
424    }
425    #[doc = "Bit 6 - Enhanced Link Detection MII"]
426    #[inline(always)]
427    pub fn eld_mii(&self) -> ELD_MII_R {
428        ELD_MII_R::new(((self.bits >> 6) & 1) != 0)
429    }
430    #[doc = "Bit 7 - Separate Handling of FCS Errors"]
431    #[inline(always)]
432    pub fn sh_fcse(&self) -> SH_FCSE_R {
433        SH_FCSE_R::new(((self.bits >> 7) & 1) != 0)
434    }
435    #[doc = "Bit 8 - Enhanced DC SYNC Activation"]
436    #[inline(always)]
437    pub fn edc_synca(&self) -> EDC_SYNCA_R {
438        EDC_SYNCA_R::new(((self.bits >> 8) & 1) != 0)
439    }
440    #[doc = "Bit 9 - EtherCAT LRW command support"]
441    #[inline(always)]
442    pub fn lrw_cs(&self) -> LRW_CS_R {
443        LRW_CS_R::new(((self.bits >> 9) & 1) != 0)
444    }
445    #[doc = "Bit 10 - EtherCAT read/write command support (BRW, APRW, FPRW)"]
446    #[inline(always)]
447    pub fn rw_cs(&self) -> RW_CS_R {
448        RW_CS_R::new(((self.bits >> 10) & 1) != 0)
449    }
450    #[doc = "Bit 11 - Fixed FMMU/SyncManager configuration"]
451    #[inline(always)]
452    pub fn fx_conf(&self) -> FX_CONF_R {
453        FX_CONF_R::new(((self.bits >> 11) & 1) != 0)
454    }
455}
456#[doc = "ESC Features Supported\n\nYou can [`read`](crate::Reg::read) this register and get [`feature::R`](R). See [API](https://docs.rs/svd2rust/#read--modify--write-api)."]
457pub struct FEATURE_SPEC;
458impl crate::RegisterSpec for FEATURE_SPEC {
459    type Ux = u16;
460}
461#[doc = "`read()` method returns [`feature::R`](R) reader structure"]
462impl crate::Readable for FEATURE_SPEC {}
463#[doc = "`reset()` method sets FEATURE to value 0x01cc"]
464impl crate::Resettable for FEATURE_SPEC {
465    const RESET_VALUE: u16 = 0x01cc;
466}