efm32pg22_pac/efm32pg22c200/iadc0_ns/
trigger.rs1#[doc = "Register `TRIGGER` reader"]
2pub struct R(crate::R<TRIGGER_SPEC>);
3impl core::ops::Deref for R {
4 type Target = crate::R<TRIGGER_SPEC>;
5 #[inline(always)]
6 fn deref(&self) -> &Self::Target {
7 &self.0
8 }
9}
10impl From<crate::R<TRIGGER_SPEC>> for R {
11 #[inline(always)]
12 fn from(reader: crate::R<TRIGGER_SPEC>) -> Self {
13 R(reader)
14 }
15}
16#[doc = "Register `TRIGGER` writer"]
17pub struct W(crate::W<TRIGGER_SPEC>);
18impl core::ops::Deref for W {
19 type Target = crate::W<TRIGGER_SPEC>;
20 #[inline(always)]
21 fn deref(&self) -> &Self::Target {
22 &self.0
23 }
24}
25impl core::ops::DerefMut for W {
26 #[inline(always)]
27 fn deref_mut(&mut self) -> &mut Self::Target {
28 &mut self.0
29 }
30}
31impl From<crate::W<TRIGGER_SPEC>> for W {
32 #[inline(always)]
33 fn from(writer: crate::W<TRIGGER_SPEC>) -> Self {
34 W(writer)
35 }
36}
37#[doc = "Field `SCANTRIGSEL` reader - Scan Trigger Select"]
38pub type SCANTRIGSEL_R = crate::FieldReader<u8, SCANTRIGSEL_A>;
39#[doc = "Scan Trigger Select\n\nValue on reset: 0"]
40#[derive(Clone, Copy, Debug, PartialEq, Eq)]
41#[repr(u8)]
42pub enum SCANTRIGSEL_A {
43 #[doc = "0: Immediate triggering. The scan queue will be disabled once all conversions in the scan table are complete, unless TRIGGERACTION is set to continuous."]
44 IMMEDIATE = 0,
45 #[doc = "1: Triggers when the local timer count reaches zero."]
46 TIMER = 1,
47 #[doc = "2: Triggers on PRS0 from a timer module that is using the same clock group as the ADC and has been programmed to use the same clock source as the ADC. The prescale may be different between the ADC and the timer module."]
48 PRSCLKGRP = 2,
49 #[doc = "3: Triggers on asynchronous PRS0 positive edge. Requires PRS0 to go low for 3 ADC_CLKs before another positive edge can be detected. Generates an additional delay of 1 to 2 ADC_SRC_CLK cycles for synchronization."]
50 PRSPOS = 3,
51 #[doc = "4: Triggers on asynchronous PRS0 negative edge. Requires PRS0 to go high for 3 ADC_CLKs before another negative edge can be detected. Generates an additional delay of 1 to 2 ADC_SRC_CLK cycles for synchronization. PRSNEG should only be used when the trigger source is from a module that remains powered during EM23. For modules (ie: TIMER) that power down during EM23, PRSPOS should be used for an asynchronous trigger, and PRSCLKGRP should be used for a synchronous trigger."]
52 PRSNEG = 4,
53}
54impl From<SCANTRIGSEL_A> for u8 {
55 #[inline(always)]
56 fn from(variant: SCANTRIGSEL_A) -> Self {
57 variant as _
58 }
59}
60impl SCANTRIGSEL_R {
61 #[doc = "Get enumerated values variant"]
62 #[inline(always)]
63 pub fn variant(&self) -> Option<SCANTRIGSEL_A> {
64 match self.bits {
65 0 => Some(SCANTRIGSEL_A::IMMEDIATE),
66 1 => Some(SCANTRIGSEL_A::TIMER),
67 2 => Some(SCANTRIGSEL_A::PRSCLKGRP),
68 3 => Some(SCANTRIGSEL_A::PRSPOS),
69 4 => Some(SCANTRIGSEL_A::PRSNEG),
70 _ => None,
71 }
72 }
73 #[doc = "Checks if the value of the field is `IMMEDIATE`"]
74 #[inline(always)]
75 pub fn is_immediate(&self) -> bool {
76 *self == SCANTRIGSEL_A::IMMEDIATE
77 }
78 #[doc = "Checks if the value of the field is `TIMER`"]
79 #[inline(always)]
80 pub fn is_timer(&self) -> bool {
81 *self == SCANTRIGSEL_A::TIMER
82 }
83 #[doc = "Checks if the value of the field is `PRSCLKGRP`"]
84 #[inline(always)]
85 pub fn is_prsclkgrp(&self) -> bool {
86 *self == SCANTRIGSEL_A::PRSCLKGRP
87 }
88 #[doc = "Checks if the value of the field is `PRSPOS`"]
89 #[inline(always)]
90 pub fn is_prspos(&self) -> bool {
91 *self == SCANTRIGSEL_A::PRSPOS
92 }
93 #[doc = "Checks if the value of the field is `PRSNEG`"]
94 #[inline(always)]
95 pub fn is_prsneg(&self) -> bool {
96 *self == SCANTRIGSEL_A::PRSNEG
97 }
98}
99#[doc = "Field `SCANTRIGSEL` writer - Scan Trigger Select"]
100pub type SCANTRIGSEL_W<'a, const O: u8> =
101 crate::FieldWriter<'a, u32, TRIGGER_SPEC, u8, SCANTRIGSEL_A, 3, O>;
102impl<'a, const O: u8> SCANTRIGSEL_W<'a, O> {
103 #[doc = "Immediate triggering. The scan queue will be disabled once all conversions in the scan table are complete, unless TRIGGERACTION is set to continuous."]
104 #[inline(always)]
105 pub fn immediate(self) -> &'a mut W {
106 self.variant(SCANTRIGSEL_A::IMMEDIATE)
107 }
108 #[doc = "Triggers when the local timer count reaches zero."]
109 #[inline(always)]
110 pub fn timer(self) -> &'a mut W {
111 self.variant(SCANTRIGSEL_A::TIMER)
112 }
113 #[doc = "Triggers on PRS0 from a timer module that is using the same clock group as the ADC and has been programmed to use the same clock source as the ADC. The prescale may be different between the ADC and the timer module."]
114 #[inline(always)]
115 pub fn prsclkgrp(self) -> &'a mut W {
116 self.variant(SCANTRIGSEL_A::PRSCLKGRP)
117 }
118 #[doc = "Triggers on asynchronous PRS0 positive edge. Requires PRS0 to go low for 3 ADC_CLKs before another positive edge can be detected. Generates an additional delay of 1 to 2 ADC_SRC_CLK cycles for synchronization."]
119 #[inline(always)]
120 pub fn prspos(self) -> &'a mut W {
121 self.variant(SCANTRIGSEL_A::PRSPOS)
122 }
123 #[doc = "Triggers on asynchronous PRS0 negative edge. Requires PRS0 to go high for 3 ADC_CLKs before another negative edge can be detected. Generates an additional delay of 1 to 2 ADC_SRC_CLK cycles for synchronization. PRSNEG should only be used when the trigger source is from a module that remains powered during EM23. For modules (ie: TIMER) that power down during EM23, PRSPOS should be used for an asynchronous trigger, and PRSCLKGRP should be used for a synchronous trigger."]
124 #[inline(always)]
125 pub fn prsneg(self) -> &'a mut W {
126 self.variant(SCANTRIGSEL_A::PRSNEG)
127 }
128}
129#[doc = "Field `SCANTRIGACTION` reader - Scan Trigger Action"]
130pub type SCANTRIGACTION_R = crate::BitReader<SCANTRIGACTION_A>;
131#[doc = "Scan Trigger Action\n\nValue on reset: 0"]
132#[derive(Clone, Copy, Debug, PartialEq, Eq)]
133pub enum SCANTRIGACTION_A {
134 #[doc = "0: For TRIGSEL=IMMEDIATE, goes through the scan table once and disables queue. For TRIGSEL = TIMER, PRSCLKGRP, PRSPOS, PRSNEG, goes through the scan table once per trigger."]
135 ONCE = 0,
136 #[doc = "1: Goes through the scan table, converts each entry with a mask bit set, and puts it back into the scan queue to repeat again continuously. The queues are first come first serve. If both queues are triggered, the single queue will get to convert after each scan table completes. The scan queue will get to convert after each single conversion completes."]
137 CONTINUOUS = 1,
138}
139impl From<SCANTRIGACTION_A> for bool {
140 #[inline(always)]
141 fn from(variant: SCANTRIGACTION_A) -> Self {
142 variant as u8 != 0
143 }
144}
145impl SCANTRIGACTION_R {
146 #[doc = "Get enumerated values variant"]
147 #[inline(always)]
148 pub fn variant(&self) -> SCANTRIGACTION_A {
149 match self.bits {
150 false => SCANTRIGACTION_A::ONCE,
151 true => SCANTRIGACTION_A::CONTINUOUS,
152 }
153 }
154 #[doc = "Checks if the value of the field is `ONCE`"]
155 #[inline(always)]
156 pub fn is_once(&self) -> bool {
157 *self == SCANTRIGACTION_A::ONCE
158 }
159 #[doc = "Checks if the value of the field is `CONTINUOUS`"]
160 #[inline(always)]
161 pub fn is_continuous(&self) -> bool {
162 *self == SCANTRIGACTION_A::CONTINUOUS
163 }
164}
165#[doc = "Field `SCANTRIGACTION` writer - Scan Trigger Action"]
166pub type SCANTRIGACTION_W<'a, const O: u8> =
167 crate::BitWriter<'a, u32, TRIGGER_SPEC, SCANTRIGACTION_A, O>;
168impl<'a, const O: u8> SCANTRIGACTION_W<'a, O> {
169 #[doc = "For TRIGSEL=IMMEDIATE, goes through the scan table once and disables queue. For TRIGSEL = TIMER, PRSCLKGRP, PRSPOS, PRSNEG, goes through the scan table once per trigger."]
170 #[inline(always)]
171 pub fn once(self) -> &'a mut W {
172 self.variant(SCANTRIGACTION_A::ONCE)
173 }
174 #[doc = "Goes through the scan table, converts each entry with a mask bit set, and puts it back into the scan queue to repeat again continuously. The queues are first come first serve. If both queues are triggered, the single queue will get to convert after each scan table completes. The scan queue will get to convert after each single conversion completes."]
175 #[inline(always)]
176 pub fn continuous(self) -> &'a mut W {
177 self.variant(SCANTRIGACTION_A::CONTINUOUS)
178 }
179}
180#[doc = "Field `SINGLETRIGSEL` reader - Single Trigger Select"]
181pub type SINGLETRIGSEL_R = crate::FieldReader<u8, SINGLETRIGSEL_A>;
182#[doc = "Single Trigger Select\n\nValue on reset: 0"]
183#[derive(Clone, Copy, Debug, PartialEq, Eq)]
184#[repr(u8)]
185pub enum SINGLETRIGSEL_A {
186 #[doc = "0: Immediate triggering. The single queue will be disabled once the conversion is complete, unless TRIGGERACTION is set to continuous."]
187 IMMEDIATE = 0,
188 #[doc = "1: Triggers when the local timer count reaches zero."]
189 TIMER = 1,
190 #[doc = "2: Triggers on PRS1 from a timer module that is using the same clock group as the ADC and has been programmed to use the same clock source as the ADC. The prescale may be different between the ADC and the timer module."]
191 PRSCLKGRP = 2,
192 #[doc = "3: Triggers on asynchronous PRS1 positive edge. Requires PRS1 to go low for 3 ADC_CLKs before another positive edge can be detected. Generates an additional delay of 1 to 2 ADC_SRC_CLK cycles for synchronization."]
193 PRSPOS = 3,
194 #[doc = "4: Triggers on asynchronous PRS1 negative edge. Requires PRS1 to go high for 3 ADC_CLKs before another negative edge can be detected. Generates an additional delay of 1 to 2 ADC_SRC_CLK cycles for synchronization. PRSNEG should only be used when the trigger source is from a module that remains powered during EM23. For modules (ie: TIMER) that power down during EM23, PRSPOS should be used for an asynchronous trigger, and PRSCLKGRP should be used for a synchronous trigger."]
195 PRSNEG = 4,
196}
197impl From<SINGLETRIGSEL_A> for u8 {
198 #[inline(always)]
199 fn from(variant: SINGLETRIGSEL_A) -> Self {
200 variant as _
201 }
202}
203impl SINGLETRIGSEL_R {
204 #[doc = "Get enumerated values variant"]
205 #[inline(always)]
206 pub fn variant(&self) -> Option<SINGLETRIGSEL_A> {
207 match self.bits {
208 0 => Some(SINGLETRIGSEL_A::IMMEDIATE),
209 1 => Some(SINGLETRIGSEL_A::TIMER),
210 2 => Some(SINGLETRIGSEL_A::PRSCLKGRP),
211 3 => Some(SINGLETRIGSEL_A::PRSPOS),
212 4 => Some(SINGLETRIGSEL_A::PRSNEG),
213 _ => None,
214 }
215 }
216 #[doc = "Checks if the value of the field is `IMMEDIATE`"]
217 #[inline(always)]
218 pub fn is_immediate(&self) -> bool {
219 *self == SINGLETRIGSEL_A::IMMEDIATE
220 }
221 #[doc = "Checks if the value of the field is `TIMER`"]
222 #[inline(always)]
223 pub fn is_timer(&self) -> bool {
224 *self == SINGLETRIGSEL_A::TIMER
225 }
226 #[doc = "Checks if the value of the field is `PRSCLKGRP`"]
227 #[inline(always)]
228 pub fn is_prsclkgrp(&self) -> bool {
229 *self == SINGLETRIGSEL_A::PRSCLKGRP
230 }
231 #[doc = "Checks if the value of the field is `PRSPOS`"]
232 #[inline(always)]
233 pub fn is_prspos(&self) -> bool {
234 *self == SINGLETRIGSEL_A::PRSPOS
235 }
236 #[doc = "Checks if the value of the field is `PRSNEG`"]
237 #[inline(always)]
238 pub fn is_prsneg(&self) -> bool {
239 *self == SINGLETRIGSEL_A::PRSNEG
240 }
241}
242#[doc = "Field `SINGLETRIGSEL` writer - Single Trigger Select"]
243pub type SINGLETRIGSEL_W<'a, const O: u8> =
244 crate::FieldWriter<'a, u32, TRIGGER_SPEC, u8, SINGLETRIGSEL_A, 3, O>;
245impl<'a, const O: u8> SINGLETRIGSEL_W<'a, O> {
246 #[doc = "Immediate triggering. The single queue will be disabled once the conversion is complete, unless TRIGGERACTION is set to continuous."]
247 #[inline(always)]
248 pub fn immediate(self) -> &'a mut W {
249 self.variant(SINGLETRIGSEL_A::IMMEDIATE)
250 }
251 #[doc = "Triggers when the local timer count reaches zero."]
252 #[inline(always)]
253 pub fn timer(self) -> &'a mut W {
254 self.variant(SINGLETRIGSEL_A::TIMER)
255 }
256 #[doc = "Triggers on PRS1 from a timer module that is using the same clock group as the ADC and has been programmed to use the same clock source as the ADC. The prescale may be different between the ADC and the timer module."]
257 #[inline(always)]
258 pub fn prsclkgrp(self) -> &'a mut W {
259 self.variant(SINGLETRIGSEL_A::PRSCLKGRP)
260 }
261 #[doc = "Triggers on asynchronous PRS1 positive edge. Requires PRS1 to go low for 3 ADC_CLKs before another positive edge can be detected. Generates an additional delay of 1 to 2 ADC_SRC_CLK cycles for synchronization."]
262 #[inline(always)]
263 pub fn prspos(self) -> &'a mut W {
264 self.variant(SINGLETRIGSEL_A::PRSPOS)
265 }
266 #[doc = "Triggers on asynchronous PRS1 negative edge. Requires PRS1 to go high for 3 ADC_CLKs before another negative edge can be detected. Generates an additional delay of 1 to 2 ADC_SRC_CLK cycles for synchronization. PRSNEG should only be used when the trigger source is from a module that remains powered during EM23. For modules (ie: TIMER) that power down during EM23, PRSPOS should be used for an asynchronous trigger, and PRSCLKGRP should be used for a synchronous trigger."]
267 #[inline(always)]
268 pub fn prsneg(self) -> &'a mut W {
269 self.variant(SINGLETRIGSEL_A::PRSNEG)
270 }
271}
272#[doc = "Field `SINGLETRIGACTION` reader - Single Trigger Action"]
273pub type SINGLETRIGACTION_R = crate::BitReader<SINGLETRIGACTION_A>;
274#[doc = "Single Trigger Action\n\nValue on reset: 0"]
275#[derive(Clone, Copy, Debug, PartialEq, Eq)]
276pub enum SINGLETRIGACTION_A {
277 #[doc = "0: For TRIGSEL=IMMEDIATE, converts the single queue once and disables queue. For TRIGSEL = TIMER, PRSCLKGRP, PRSPOS, PRSNEG, converts the single queue once per trigger.ask."]
278 ONCE = 0,
279 #[doc = "1: Converts the single queue, then checks for a pending scan queue before converting the single queue again continuously. The queues are first come first serve. If both queues are continuous, the IADC alternates between them."]
280 CONTINUOUS = 1,
281}
282impl From<SINGLETRIGACTION_A> for bool {
283 #[inline(always)]
284 fn from(variant: SINGLETRIGACTION_A) -> Self {
285 variant as u8 != 0
286 }
287}
288impl SINGLETRIGACTION_R {
289 #[doc = "Get enumerated values variant"]
290 #[inline(always)]
291 pub fn variant(&self) -> SINGLETRIGACTION_A {
292 match self.bits {
293 false => SINGLETRIGACTION_A::ONCE,
294 true => SINGLETRIGACTION_A::CONTINUOUS,
295 }
296 }
297 #[doc = "Checks if the value of the field is `ONCE`"]
298 #[inline(always)]
299 pub fn is_once(&self) -> bool {
300 *self == SINGLETRIGACTION_A::ONCE
301 }
302 #[doc = "Checks if the value of the field is `CONTINUOUS`"]
303 #[inline(always)]
304 pub fn is_continuous(&self) -> bool {
305 *self == SINGLETRIGACTION_A::CONTINUOUS
306 }
307}
308#[doc = "Field `SINGLETRIGACTION` writer - Single Trigger Action"]
309pub type SINGLETRIGACTION_W<'a, const O: u8> =
310 crate::BitWriter<'a, u32, TRIGGER_SPEC, SINGLETRIGACTION_A, O>;
311impl<'a, const O: u8> SINGLETRIGACTION_W<'a, O> {
312 #[doc = "For TRIGSEL=IMMEDIATE, converts the single queue once and disables queue. For TRIGSEL = TIMER, PRSCLKGRP, PRSPOS, PRSNEG, converts the single queue once per trigger.ask."]
313 #[inline(always)]
314 pub fn once(self) -> &'a mut W {
315 self.variant(SINGLETRIGACTION_A::ONCE)
316 }
317 #[doc = "Converts the single queue, then checks for a pending scan queue before converting the single queue again continuously. The queues are first come first serve. If both queues are continuous, the IADC alternates between them."]
318 #[inline(always)]
319 pub fn continuous(self) -> &'a mut W {
320 self.variant(SINGLETRIGACTION_A::CONTINUOUS)
321 }
322}
323#[doc = "Field `SINGLETAILGATE` reader - Single Tailgate Enable"]
324pub type SINGLETAILGATE_R = crate::BitReader<SINGLETAILGATE_A>;
325#[doc = "Single Tailgate Enable\n\nValue on reset: 0"]
326#[derive(Clone, Copy, Debug, PartialEq, Eq)]
327pub enum SINGLETAILGATE_A {
328 #[doc = "0: The single queue is ready to start warming up and converting once the trigger had been detected."]
329 TAILGATEOFF = 0,
330 #[doc = "1: After the single queue's trigger is detected, it must wait until the end of a scan operation before the Single queue can be converted."]
331 TAILGATEON = 1,
332}
333impl From<SINGLETAILGATE_A> for bool {
334 #[inline(always)]
335 fn from(variant: SINGLETAILGATE_A) -> Self {
336 variant as u8 != 0
337 }
338}
339impl SINGLETAILGATE_R {
340 #[doc = "Get enumerated values variant"]
341 #[inline(always)]
342 pub fn variant(&self) -> SINGLETAILGATE_A {
343 match self.bits {
344 false => SINGLETAILGATE_A::TAILGATEOFF,
345 true => SINGLETAILGATE_A::TAILGATEON,
346 }
347 }
348 #[doc = "Checks if the value of the field is `TAILGATEOFF`"]
349 #[inline(always)]
350 pub fn is_tailgateoff(&self) -> bool {
351 *self == SINGLETAILGATE_A::TAILGATEOFF
352 }
353 #[doc = "Checks if the value of the field is `TAILGATEON`"]
354 #[inline(always)]
355 pub fn is_tailgateon(&self) -> bool {
356 *self == SINGLETAILGATE_A::TAILGATEON
357 }
358}
359#[doc = "Field `SINGLETAILGATE` writer - Single Tailgate Enable"]
360pub type SINGLETAILGATE_W<'a, const O: u8> =
361 crate::BitWriter<'a, u32, TRIGGER_SPEC, SINGLETAILGATE_A, O>;
362impl<'a, const O: u8> SINGLETAILGATE_W<'a, O> {
363 #[doc = "The single queue is ready to start warming up and converting once the trigger had been detected."]
364 #[inline(always)]
365 pub fn tailgateoff(self) -> &'a mut W {
366 self.variant(SINGLETAILGATE_A::TAILGATEOFF)
367 }
368 #[doc = "After the single queue's trigger is detected, it must wait until the end of a scan operation before the Single queue can be converted."]
369 #[inline(always)]
370 pub fn tailgateon(self) -> &'a mut W {
371 self.variant(SINGLETAILGATE_A::TAILGATEON)
372 }
373}
374impl R {
375 #[doc = "Bits 0:2 - Scan Trigger Select"]
376 #[inline(always)]
377 pub fn scantrigsel(&self) -> SCANTRIGSEL_R {
378 SCANTRIGSEL_R::new((self.bits & 7) as u8)
379 }
380 #[doc = "Bit 4 - Scan Trigger Action"]
381 #[inline(always)]
382 pub fn scantrigaction(&self) -> SCANTRIGACTION_R {
383 SCANTRIGACTION_R::new(((self.bits >> 4) & 1) != 0)
384 }
385 #[doc = "Bits 8:10 - Single Trigger Select"]
386 #[inline(always)]
387 pub fn singletrigsel(&self) -> SINGLETRIGSEL_R {
388 SINGLETRIGSEL_R::new(((self.bits >> 8) & 7) as u8)
389 }
390 #[doc = "Bit 12 - Single Trigger Action"]
391 #[inline(always)]
392 pub fn singletrigaction(&self) -> SINGLETRIGACTION_R {
393 SINGLETRIGACTION_R::new(((self.bits >> 12) & 1) != 0)
394 }
395 #[doc = "Bit 16 - Single Tailgate Enable"]
396 #[inline(always)]
397 pub fn singletailgate(&self) -> SINGLETAILGATE_R {
398 SINGLETAILGATE_R::new(((self.bits >> 16) & 1) != 0)
399 }
400}
401impl W {
402 #[doc = "Bits 0:2 - Scan Trigger Select"]
403 #[inline(always)]
404 #[must_use]
405 pub fn scantrigsel(&mut self) -> SCANTRIGSEL_W<0> {
406 SCANTRIGSEL_W::new(self)
407 }
408 #[doc = "Bit 4 - Scan Trigger Action"]
409 #[inline(always)]
410 #[must_use]
411 pub fn scantrigaction(&mut self) -> SCANTRIGACTION_W<4> {
412 SCANTRIGACTION_W::new(self)
413 }
414 #[doc = "Bits 8:10 - Single Trigger Select"]
415 #[inline(always)]
416 #[must_use]
417 pub fn singletrigsel(&mut self) -> SINGLETRIGSEL_W<8> {
418 SINGLETRIGSEL_W::new(self)
419 }
420 #[doc = "Bit 12 - Single Trigger Action"]
421 #[inline(always)]
422 #[must_use]
423 pub fn singletrigaction(&mut self) -> SINGLETRIGACTION_W<12> {
424 SINGLETRIGACTION_W::new(self)
425 }
426 #[doc = "Bit 16 - Single Tailgate Enable"]
427 #[inline(always)]
428 #[must_use]
429 pub fn singletailgate(&mut self) -> SINGLETAILGATE_W<16> {
430 SINGLETAILGATE_W::new(self)
431 }
432 #[doc = "Writes raw bits to the register."]
433 #[inline(always)]
434 pub unsafe fn bits(&mut self, bits: u32) -> &mut Self {
435 self.0.bits(bits);
436 self
437 }
438}
439#[doc = "Trigger\n\nThis register you can [`read`](crate::generic::Reg::read), [`write_with_zero`](crate::generic::Reg::write_with_zero), [`reset`](crate::generic::Reg::reset), [`write`](crate::generic::Reg::write), [`modify`](crate::generic::Reg::modify). See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [trigger](index.html) module"]
440pub struct TRIGGER_SPEC;
441impl crate::RegisterSpec for TRIGGER_SPEC {
442 type Ux = u32;
443}
444#[doc = "`read()` method returns [trigger::R](R) reader structure"]
445impl crate::Readable for TRIGGER_SPEC {
446 type Reader = R;
447}
448#[doc = "`write(|w| ..)` method takes [trigger::W](W) writer structure"]
449impl crate::Writable for TRIGGER_SPEC {
450 type Writer = W;
451 const ZERO_TO_MODIFY_FIELDS_BITMAP: Self::Ux = 0;
452 const ONE_TO_MODIFY_FIELDS_BITMAP: Self::Ux = 0;
453}
454#[doc = "`reset()` method sets TRIGGER to value 0"]
455impl crate::Resettable for TRIGGER_SPEC {
456 const RESET_VALUE: Self::Ux = 0;
457}