1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
#[doc = "Register `TOUCH_FILTER_CTRL` reader"]
pub struct R(crate::R<TOUCH_FILTER_CTRL_SPEC>);
impl core::ops::Deref for R {
    type Target = crate::R<TOUCH_FILTER_CTRL_SPEC>;
    #[inline(always)]
    fn deref(&self) -> &Self::Target {
        &self.0
    }
}
impl From<crate::R<TOUCH_FILTER_CTRL_SPEC>> for R {
    #[inline(always)]
    fn from(reader: crate::R<TOUCH_FILTER_CTRL_SPEC>) -> Self {
        R(reader)
    }
}
#[doc = "Register `TOUCH_FILTER_CTRL` writer"]
pub struct W(crate::W<TOUCH_FILTER_CTRL_SPEC>);
impl core::ops::Deref for W {
    type Target = crate::W<TOUCH_FILTER_CTRL_SPEC>;
    #[inline(always)]
    fn deref(&self) -> &Self::Target {
        &self.0
    }
}
impl core::ops::DerefMut for W {
    #[inline(always)]
    fn deref_mut(&mut self) -> &mut Self::Target {
        &mut self.0
    }
}
impl From<crate::W<TOUCH_FILTER_CTRL_SPEC>> for W {
    #[inline(always)]
    fn from(writer: crate::W<TOUCH_FILTER_CTRL_SPEC>) -> Self {
        W(writer)
    }
}
#[doc = "Field `TOUCH_SMOOTH_LVL` reader - 0: Raw data. 1: IIR1/2. 2: IIR1/4. 3: IIR1/8."]
pub type TOUCH_SMOOTH_LVL_R = crate::FieldReader<u8, u8>;
#[doc = "Field `TOUCH_SMOOTH_LVL` writer - 0: Raw data. 1: IIR1/2. 2: IIR1/4. 3: IIR1/8."]
pub type TOUCH_SMOOTH_LVL_W<'a, const O: u8> =
    crate::FieldWriter<'a, u32, TOUCH_FILTER_CTRL_SPEC, u8, u8, 2, O>;
#[doc = "Field `TOUCH_JITTER_STEP` reader - Touch jitter step. Range: 0 – 15."]
pub type TOUCH_JITTER_STEP_R = crate::FieldReader<u8, u8>;
#[doc = "Field `TOUCH_JITTER_STEP` writer - Touch jitter step. Range: 0 – 15."]
pub type TOUCH_JITTER_STEP_W<'a, const O: u8> =
    crate::FieldWriter<'a, u32, TOUCH_FILTER_CTRL_SPEC, u8, u8, 4, O>;
#[doc = "Field `TOUCH_NEG_NOISE_LIMIT` reader - Negative threshold counter limit."]
pub type TOUCH_NEG_NOISE_LIMIT_R = crate::FieldReader<u8, u8>;
#[doc = "Field `TOUCH_NEG_NOISE_LIMIT` writer - Negative threshold counter limit."]
pub type TOUCH_NEG_NOISE_LIMIT_W<'a, const O: u8> =
    crate::FieldWriter<'a, u32, TOUCH_FILTER_CTRL_SPEC, u8, u8, 4, O>;
#[doc = "Field `TOUCH_NEG_NOISE_THRES` reader - Negative noise threshold."]
pub type TOUCH_NEG_NOISE_THRES_R = crate::FieldReader<u8, u8>;
#[doc = "Field `TOUCH_NEG_NOISE_THRES` writer - Negative noise threshold."]
pub type TOUCH_NEG_NOISE_THRES_W<'a, const O: u8> =
    crate::FieldWriter<'a, u32, TOUCH_FILTER_CTRL_SPEC, u8, u8, 2, O>;
#[doc = "Field `TOUCH_NOISE_THRES` reader - Active noise threshold."]
pub type TOUCH_NOISE_THRES_R = crate::FieldReader<u8, u8>;
#[doc = "Field `TOUCH_NOISE_THRES` writer - Active noise threshold."]
pub type TOUCH_NOISE_THRES_W<'a, const O: u8> =
    crate::FieldWriter<'a, u32, TOUCH_FILTER_CTRL_SPEC, u8, u8, 2, O>;
#[doc = "Field `TOUCH_HYSTERESIS` reader - Touch hysteresis."]
pub type TOUCH_HYSTERESIS_R = crate::FieldReader<u8, u8>;
#[doc = "Field `TOUCH_HYSTERESIS` writer - Touch hysteresis."]
pub type TOUCH_HYSTERESIS_W<'a, const O: u8> =
    crate::FieldWriter<'a, u32, TOUCH_FILTER_CTRL_SPEC, u8, u8, 2, O>;
#[doc = "Field `TOUCH_DEBOUNCE` reader - Debounce counter."]
pub type TOUCH_DEBOUNCE_R = crate::FieldReader<u8, u8>;
#[doc = "Field `TOUCH_DEBOUNCE` writer - Debounce counter."]
pub type TOUCH_DEBOUNCE_W<'a, const O: u8> =
    crate::FieldWriter<'a, u32, TOUCH_FILTER_CTRL_SPEC, u8, u8, 3, O>;
#[doc = "Field `TOUCH_FILTER_MODE` reader - Set filter mode. 0: IIR 1/2; 1: IIR 1/4; 2: IIR 1/8; 3: IIR 1/16; 4: IIR 1/32; 5: IIR 1/64; 6: IIR 1/128; 7: Jitter."]
pub type TOUCH_FILTER_MODE_R = crate::FieldReader<u8, u8>;
#[doc = "Field `TOUCH_FILTER_MODE` writer - Set filter mode. 0: IIR 1/2; 1: IIR 1/4; 2: IIR 1/8; 3: IIR 1/16; 4: IIR 1/32; 5: IIR 1/64; 6: IIR 1/128; 7: Jitter."]
pub type TOUCH_FILTER_MODE_W<'a, const O: u8> =
    crate::FieldWriter<'a, u32, TOUCH_FILTER_CTRL_SPEC, u8, u8, 3, O>;
#[doc = "Field `TOUCH_FILTER_EN` reader - Enable touch filter."]
pub type TOUCH_FILTER_EN_R = crate::BitReader<bool>;
#[doc = "Field `TOUCH_FILTER_EN` writer - Enable touch filter."]
pub type TOUCH_FILTER_EN_W<'a, const O: u8> =
    crate::BitWriter<'a, u32, TOUCH_FILTER_CTRL_SPEC, bool, O>;
impl R {
    #[doc = "Bits 9:10 - 0: Raw data. 1: IIR1/2. 2: IIR1/4. 3: IIR1/8."]
    #[inline(always)]
    pub fn touch_smooth_lvl(&self) -> TOUCH_SMOOTH_LVL_R {
        TOUCH_SMOOTH_LVL_R::new(((self.bits >> 9) & 3) as u8)
    }
    #[doc = "Bits 11:14 - Touch jitter step. Range: 0 – 15."]
    #[inline(always)]
    pub fn touch_jitter_step(&self) -> TOUCH_JITTER_STEP_R {
        TOUCH_JITTER_STEP_R::new(((self.bits >> 11) & 0x0f) as u8)
    }
    #[doc = "Bits 15:18 - Negative threshold counter limit."]
    #[inline(always)]
    pub fn touch_neg_noise_limit(&self) -> TOUCH_NEG_NOISE_LIMIT_R {
        TOUCH_NEG_NOISE_LIMIT_R::new(((self.bits >> 15) & 0x0f) as u8)
    }
    #[doc = "Bits 19:20 - Negative noise threshold."]
    #[inline(always)]
    pub fn touch_neg_noise_thres(&self) -> TOUCH_NEG_NOISE_THRES_R {
        TOUCH_NEG_NOISE_THRES_R::new(((self.bits >> 19) & 3) as u8)
    }
    #[doc = "Bits 21:22 - Active noise threshold."]
    #[inline(always)]
    pub fn touch_noise_thres(&self) -> TOUCH_NOISE_THRES_R {
        TOUCH_NOISE_THRES_R::new(((self.bits >> 21) & 3) as u8)
    }
    #[doc = "Bits 23:24 - Touch hysteresis."]
    #[inline(always)]
    pub fn touch_hysteresis(&self) -> TOUCH_HYSTERESIS_R {
        TOUCH_HYSTERESIS_R::new(((self.bits >> 23) & 3) as u8)
    }
    #[doc = "Bits 25:27 - Debounce counter."]
    #[inline(always)]
    pub fn touch_debounce(&self) -> TOUCH_DEBOUNCE_R {
        TOUCH_DEBOUNCE_R::new(((self.bits >> 25) & 7) as u8)
    }
    #[doc = "Bits 28:30 - Set filter mode. 0: IIR 1/2; 1: IIR 1/4; 2: IIR 1/8; 3: IIR 1/16; 4: IIR 1/32; 5: IIR 1/64; 6: IIR 1/128; 7: Jitter."]
    #[inline(always)]
    pub fn touch_filter_mode(&self) -> TOUCH_FILTER_MODE_R {
        TOUCH_FILTER_MODE_R::new(((self.bits >> 28) & 7) as u8)
    }
    #[doc = "Bit 31 - Enable touch filter."]
    #[inline(always)]
    pub fn touch_filter_en(&self) -> TOUCH_FILTER_EN_R {
        TOUCH_FILTER_EN_R::new(((self.bits >> 31) & 1) != 0)
    }
}
impl W {
    #[doc = "Bits 9:10 - 0: Raw data. 1: IIR1/2. 2: IIR1/4. 3: IIR1/8."]
    #[inline(always)]
    #[must_use]
    pub fn touch_smooth_lvl(&mut self) -> TOUCH_SMOOTH_LVL_W<9> {
        TOUCH_SMOOTH_LVL_W::new(self)
    }
    #[doc = "Bits 11:14 - Touch jitter step. Range: 0 – 15."]
    #[inline(always)]
    #[must_use]
    pub fn touch_jitter_step(&mut self) -> TOUCH_JITTER_STEP_W<11> {
        TOUCH_JITTER_STEP_W::new(self)
    }
    #[doc = "Bits 15:18 - Negative threshold counter limit."]
    #[inline(always)]
    #[must_use]
    pub fn touch_neg_noise_limit(&mut self) -> TOUCH_NEG_NOISE_LIMIT_W<15> {
        TOUCH_NEG_NOISE_LIMIT_W::new(self)
    }
    #[doc = "Bits 19:20 - Negative noise threshold."]
    #[inline(always)]
    #[must_use]
    pub fn touch_neg_noise_thres(&mut self) -> TOUCH_NEG_NOISE_THRES_W<19> {
        TOUCH_NEG_NOISE_THRES_W::new(self)
    }
    #[doc = "Bits 21:22 - Active noise threshold."]
    #[inline(always)]
    #[must_use]
    pub fn touch_noise_thres(&mut self) -> TOUCH_NOISE_THRES_W<21> {
        TOUCH_NOISE_THRES_W::new(self)
    }
    #[doc = "Bits 23:24 - Touch hysteresis."]
    #[inline(always)]
    #[must_use]
    pub fn touch_hysteresis(&mut self) -> TOUCH_HYSTERESIS_W<23> {
        TOUCH_HYSTERESIS_W::new(self)
    }
    #[doc = "Bits 25:27 - Debounce counter."]
    #[inline(always)]
    #[must_use]
    pub fn touch_debounce(&mut self) -> TOUCH_DEBOUNCE_W<25> {
        TOUCH_DEBOUNCE_W::new(self)
    }
    #[doc = "Bits 28:30 - Set filter mode. 0: IIR 1/2; 1: IIR 1/4; 2: IIR 1/8; 3: IIR 1/16; 4: IIR 1/32; 5: IIR 1/64; 6: IIR 1/128; 7: Jitter."]
    #[inline(always)]
    #[must_use]
    pub fn touch_filter_mode(&mut self) -> TOUCH_FILTER_MODE_W<28> {
        TOUCH_FILTER_MODE_W::new(self)
    }
    #[doc = "Bit 31 - Enable touch filter."]
    #[inline(always)]
    #[must_use]
    pub fn touch_filter_en(&mut self) -> TOUCH_FILTER_EN_W<31> {
        TOUCH_FILTER_EN_W::new(self)
    }
    #[doc = "Writes raw bits to the register."]
    #[inline(always)]
    pub unsafe fn bits(&mut self, bits: u32) -> &mut Self {
        self.0.bits(bits);
        self
    }
}
#[doc = "Configure touch filter settings\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 [touch_filter_ctrl](index.html) module"]
pub struct TOUCH_FILTER_CTRL_SPEC;
impl crate::RegisterSpec for TOUCH_FILTER_CTRL_SPEC {
    type Ux = u32;
}
#[doc = "`read()` method returns [touch_filter_ctrl::R](R) reader structure"]
impl crate::Readable for TOUCH_FILTER_CTRL_SPEC {
    type Reader = R;
}
#[doc = "`write(|w| ..)` method takes [touch_filter_ctrl::W](W) writer structure"]
impl crate::Writable for TOUCH_FILTER_CTRL_SPEC {
    type Writer = W;
    const ZERO_TO_MODIFY_FIELDS_BITMAP: Self::Ux = 0;
    const ONE_TO_MODIFY_FIELDS_BITMAP: Self::Ux = 0;
}
#[doc = "`reset()` method sets TOUCH_FILTER_CTRL to value 0x96aa_8800"]
impl crate::Resettable for TOUCH_FILTER_CTRL_SPEC {
    const RESET_VALUE: Self::Ux = 0x96aa_8800;
}