@@ -90,56 +90,56 @@ void IRAM_ATTR __timerISR(void * arg){
90
90
}
91
91
}
92
92
93
- uint64_t timerRead (hw_timer_t * timer ){
93
+ uint64_t IRAM_ATTR timerRead (hw_timer_t * timer ){
94
94
timer -> dev -> update = 1 ;
95
95
uint64_t h = timer -> dev -> cnt_high ;
96
96
uint64_t l = timer -> dev -> cnt_low ;
97
97
return (h << 32 ) | l ;
98
98
}
99
99
100
- uint64_t timerAlarmRead (hw_timer_t * timer ){
100
+ uint64_t IRAM_ATTR timerAlarmRead (hw_timer_t * timer ){
101
101
uint64_t h = timer -> dev -> alarm_high ;
102
102
uint64_t l = timer -> dev -> alarm_low ;
103
103
return (h << 32 ) | l ;
104
104
}
105
105
106
- void timerWrite (hw_timer_t * timer , uint64_t val ){
106
+ void IRAM_ATTR timerWrite (hw_timer_t * timer , uint64_t val ){
107
107
timer -> dev -> load_high = (uint32_t ) (val >> 32 );
108
108
timer -> dev -> load_low = (uint32_t ) (val );
109
109
timer -> dev -> reload = 1 ;
110
110
}
111
111
112
- void timerAlarmWrite (hw_timer_t * timer , uint64_t alarm_value , bool autoreload ){
112
+ void IRAM_ATTR timerAlarmWrite (hw_timer_t * timer , uint64_t alarm_value , bool autoreload ){
113
113
timer -> dev -> alarm_high = (uint32_t ) (alarm_value >> 32 );
114
114
timer -> dev -> alarm_low = (uint32_t ) alarm_value ;
115
115
timer -> dev -> config .autoreload = autoreload ;
116
116
}
117
117
118
- void timerSetConfig (hw_timer_t * timer , uint32_t config ){
118
+ void IRAM_ATTR timerSetConfig (hw_timer_t * timer , uint32_t config ){
119
119
timer -> dev -> config .val = config ;
120
120
}
121
121
122
- uint32_t timerGetConfig (hw_timer_t * timer ){
122
+ uint32_t IRAM_ATTR timerGetConfig (hw_timer_t * timer ){
123
123
return timer -> dev -> config .val ;
124
124
}
125
125
126
- void timerSetCountUp (hw_timer_t * timer , bool countUp ){
126
+ void IRAM_ATTR timerSetCountUp (hw_timer_t * timer , bool countUp ){
127
127
timer -> dev -> config .increase = countUp ;
128
128
}
129
129
130
- bool timerGetCountUp (hw_timer_t * timer ){
130
+ bool IRAM_ATTR timerGetCountUp (hw_timer_t * timer ){
131
131
return timer -> dev -> config .increase ;
132
132
}
133
133
134
- void timerSetAutoReload (hw_timer_t * timer , bool autoreload ){
134
+ void IRAM_ATTR timerSetAutoReload (hw_timer_t * timer , bool autoreload ){
135
135
timer -> dev -> config .autoreload = autoreload ;
136
136
}
137
137
138
- bool timerGetAutoReload (hw_timer_t * timer ){
138
+ bool IRAM_ATTR timerGetAutoReload (hw_timer_t * timer ){
139
139
return timer -> dev -> config .autoreload ;
140
140
}
141
141
142
- void timerSetDivider (hw_timer_t * timer , uint16_t divider ){//2 to 65536
142
+ void IRAM_ATTR timerSetDivider (hw_timer_t * timer , uint16_t divider ){//2 to 65536
143
143
if (!divider ){
144
144
divider = 0xFFFF ;
145
145
} else if (divider == 1 ){
@@ -151,41 +151,41 @@ void timerSetDivider(hw_timer_t *timer, uint16_t divider){//2 to 65536
151
151
timer -> dev -> config .enable = timer_en ;
152
152
}
153
153
154
- uint16_t timerGetDivider (hw_timer_t * timer ){
154
+ uint16_t IRAM_ATTR timerGetDivider (hw_timer_t * timer ){
155
155
return timer -> dev -> config .divider ;
156
156
}
157
157
158
- void timerStart (hw_timer_t * timer ){
158
+ void IRAM_ATTR timerStart (hw_timer_t * timer ){
159
159
timer -> dev -> config .enable = 1 ;
160
160
}
161
161
162
- void timerStop (hw_timer_t * timer ){
162
+ void IRAM_ATTR timerStop (hw_timer_t * timer ){
163
163
timer -> dev -> config .enable = 0 ;
164
164
}
165
165
166
- void timerRestart (hw_timer_t * timer ){
166
+ void IRAM_ATTR timerRestart (hw_timer_t * timer ){
167
167
timer -> dev -> config .enable = 0 ;
168
168
timer -> dev -> reload = 1 ;
169
169
timer -> dev -> config .enable = 1 ;
170
170
}
171
171
172
- bool timerStarted (hw_timer_t * timer ){
172
+ bool IRAM_ATTR timerStarted (hw_timer_t * timer ){
173
173
return timer -> dev -> config .enable ;
174
174
}
175
175
176
- void timerAlarmEnable (hw_timer_t * timer ){
176
+ void IRAM_ATTR timerAlarmEnable (hw_timer_t * timer ){
177
177
timer -> dev -> config .alarm_en = 1 ;
178
178
}
179
179
180
- void timerAlarmDisable (hw_timer_t * timer ){
180
+ void IRAM_ATTR timerAlarmDisable (hw_timer_t * timer ){
181
181
timer -> dev -> config .alarm_en = 0 ;
182
182
}
183
183
184
- bool timerAlarmEnabled (hw_timer_t * timer ){
184
+ bool IRAM_ATTR timerAlarmEnabled (hw_timer_t * timer ){
185
185
return timer -> dev -> config .alarm_en ;
186
186
}
187
187
188
- static void _on_apb_change (void * arg , apb_change_ev_t ev_type , uint32_t old_apb , uint32_t new_apb ){
188
+ static void IRAM_ATTR _on_apb_change (void * arg , apb_change_ev_t ev_type , uint32_t old_apb , uint32_t new_apb ){
189
189
hw_timer_t * timer = (hw_timer_t * )arg ;
190
190
if (ev_type == APB_BEFORE_CHANGE ){
191
191
timer -> dev -> config .enable = 0 ;
@@ -197,7 +197,7 @@ static void _on_apb_change(void * arg, apb_change_ev_t ev_type, uint32_t old_apb
197
197
}
198
198
}
199
199
200
- hw_timer_t * timerBegin (uint8_t num , uint16_t divider , bool countUp ){
200
+ hw_timer_t * IRAM_ATTR timerBegin (uint8_t num , uint16_t divider , bool countUp ){
201
201
if (num > 3 ){
202
202
return NULL ;
203
203
}
@@ -222,13 +222,13 @@ hw_timer_t * timerBegin(uint8_t num, uint16_t divider, bool countUp){
222
222
return timer ;
223
223
}
224
224
225
- void timerEnd (hw_timer_t * timer ){
225
+ void IRAM_ATTR timerEnd (hw_timer_t * timer ){
226
226
timer -> dev -> config .enable = 0 ;
227
227
timerAttachInterrupt (timer , NULL , false);
228
228
removeApbChangeCallback (timer , _on_apb_change );
229
229
}
230
230
231
- void timerAttachInterrupt (hw_timer_t * timer , void (* fn )(void ), bool edge ){
231
+ void IRAM_ATTR timerAttachInterrupt (hw_timer_t * timer , void (* fn )(void ), bool edge ){
232
232
static bool initialized = false;
233
233
static intr_handle_t intr_handle = NULL ;
234
234
if (intr_handle ){
@@ -279,29 +279,29 @@ void timerAttachInterrupt(hw_timer_t *timer, void (*fn)(void), bool edge){
279
279
}
280
280
}
281
281
282
- void timerDetachInterrupt (hw_timer_t * timer ){
282
+ void IRAM_ATTR timerDetachInterrupt (hw_timer_t * timer ){
283
283
timerAttachInterrupt (timer , NULL , false);
284
284
}
285
285
286
- uint64_t timerReadMicros (hw_timer_t * timer ){
286
+ uint64_t IRAM_ATTR timerReadMicros (hw_timer_t * timer ){
287
287
uint64_t timer_val = timerRead (timer );
288
288
uint16_t div = timerGetDivider (timer );
289
289
return timer_val * div / (getApbFrequency () / 1000000 );
290
290
}
291
291
292
- double timerReadSeconds (hw_timer_t * timer ){
292
+ double IRAM_ATTR timerReadSeconds (hw_timer_t * timer ){
293
293
uint64_t timer_val = timerRead (timer );
294
294
uint16_t div = timerGetDivider (timer );
295
295
return (double )timer_val * div / getApbFrequency ();
296
296
}
297
297
298
- uint64_t timerAlarmReadMicros (hw_timer_t * timer ){
298
+ uint64_t IRAM_ATTR timerAlarmReadMicros (hw_timer_t * timer ){
299
299
uint64_t timer_val = timerAlarmRead (timer );
300
300
uint16_t div = timerGetDivider (timer );
301
301
return timer_val * div / (getApbFrequency () / 1000000 );
302
302
}
303
303
304
- double timerAlarmReadSeconds (hw_timer_t * timer ){
304
+ double IRAM_ATTR timerAlarmReadSeconds (hw_timer_t * timer ){
305
305
uint64_t timer_val = timerAlarmRead (timer );
306
306
uint16_t div = timerGetDivider (timer );
307
307
return (double )timer_val * div / getApbFrequency ();
0 commit comments