@@ -90,56 +90,56 @@ void IRAM_ATTR __timerISR(void * arg){
9090 }
9191}
9292
93- uint64_t timerRead (hw_timer_t * timer ){
93+ uint64_t IRAM_ATTR timerRead (hw_timer_t * timer ){
9494 timer -> dev -> update = 1 ;
9595 uint64_t h = timer -> dev -> cnt_high ;
9696 uint64_t l = timer -> dev -> cnt_low ;
9797 return (h << 32 ) | l ;
9898}
9999
100- uint64_t timerAlarmRead (hw_timer_t * timer ){
100+ uint64_t IRAM_ATTR timerAlarmRead (hw_timer_t * timer ){
101101 uint64_t h = timer -> dev -> alarm_high ;
102102 uint64_t l = timer -> dev -> alarm_low ;
103103 return (h << 32 ) | l ;
104104}
105105
106- void timerWrite (hw_timer_t * timer , uint64_t val ){
106+ void IRAM_ATTR timerWrite (hw_timer_t * timer , uint64_t val ){
107107 timer -> dev -> load_high = (uint32_t ) (val >> 32 );
108108 timer -> dev -> load_low = (uint32_t ) (val );
109109 timer -> dev -> reload = 1 ;
110110}
111111
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 ){
113113 timer -> dev -> alarm_high = (uint32_t ) (alarm_value >> 32 );
114114 timer -> dev -> alarm_low = (uint32_t ) alarm_value ;
115115 timer -> dev -> config .autoreload = autoreload ;
116116}
117117
118- void timerSetConfig (hw_timer_t * timer , uint32_t config ){
118+ void IRAM_ATTR timerSetConfig (hw_timer_t * timer , uint32_t config ){
119119 timer -> dev -> config .val = config ;
120120}
121121
122- uint32_t timerGetConfig (hw_timer_t * timer ){
122+ uint32_t IRAM_ATTR timerGetConfig (hw_timer_t * timer ){
123123 return timer -> dev -> config .val ;
124124}
125125
126- void timerSetCountUp (hw_timer_t * timer , bool countUp ){
126+ void IRAM_ATTR timerSetCountUp (hw_timer_t * timer , bool countUp ){
127127 timer -> dev -> config .increase = countUp ;
128128}
129129
130- bool timerGetCountUp (hw_timer_t * timer ){
130+ bool IRAM_ATTR timerGetCountUp (hw_timer_t * timer ){
131131 return timer -> dev -> config .increase ;
132132}
133133
134- void timerSetAutoReload (hw_timer_t * timer , bool autoreload ){
134+ void IRAM_ATTR timerSetAutoReload (hw_timer_t * timer , bool autoreload ){
135135 timer -> dev -> config .autoreload = autoreload ;
136136}
137137
138- bool timerGetAutoReload (hw_timer_t * timer ){
138+ bool IRAM_ATTR timerGetAutoReload (hw_timer_t * timer ){
139139 return timer -> dev -> config .autoreload ;
140140}
141141
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
143143 if (!divider ){
144144 divider = 0xFFFF ;
145145 } else if (divider == 1 ){
@@ -151,41 +151,41 @@ void timerSetDivider(hw_timer_t *timer, uint16_t divider){//2 to 65536
151151 timer -> dev -> config .enable = timer_en ;
152152}
153153
154- uint16_t timerGetDivider (hw_timer_t * timer ){
154+ uint16_t IRAM_ATTR timerGetDivider (hw_timer_t * timer ){
155155 return timer -> dev -> config .divider ;
156156}
157157
158- void timerStart (hw_timer_t * timer ){
158+ void IRAM_ATTR timerStart (hw_timer_t * timer ){
159159 timer -> dev -> config .enable = 1 ;
160160}
161161
162- void timerStop (hw_timer_t * timer ){
162+ void IRAM_ATTR timerStop (hw_timer_t * timer ){
163163 timer -> dev -> config .enable = 0 ;
164164}
165165
166- void timerRestart (hw_timer_t * timer ){
166+ void IRAM_ATTR timerRestart (hw_timer_t * timer ){
167167 timer -> dev -> config .enable = 0 ;
168168 timer -> dev -> reload = 1 ;
169169 timer -> dev -> config .enable = 1 ;
170170}
171171
172- bool timerStarted (hw_timer_t * timer ){
172+ bool IRAM_ATTR timerStarted (hw_timer_t * timer ){
173173 return timer -> dev -> config .enable ;
174174}
175175
176- void timerAlarmEnable (hw_timer_t * timer ){
176+ void IRAM_ATTR timerAlarmEnable (hw_timer_t * timer ){
177177 timer -> dev -> config .alarm_en = 1 ;
178178}
179179
180- void timerAlarmDisable (hw_timer_t * timer ){
180+ void IRAM_ATTR timerAlarmDisable (hw_timer_t * timer ){
181181 timer -> dev -> config .alarm_en = 0 ;
182182}
183183
184- bool timerAlarmEnabled (hw_timer_t * timer ){
184+ bool IRAM_ATTR timerAlarmEnabled (hw_timer_t * timer ){
185185 return timer -> dev -> config .alarm_en ;
186186}
187187
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 ){
189189 hw_timer_t * timer = (hw_timer_t * )arg ;
190190 if (ev_type == APB_BEFORE_CHANGE ){
191191 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
197197 }
198198}
199199
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 ){
201201 if (num > 3 ){
202202 return NULL ;
203203 }
@@ -222,13 +222,13 @@ hw_timer_t * timerBegin(uint8_t num, uint16_t divider, bool countUp){
222222 return timer ;
223223}
224224
225- void timerEnd (hw_timer_t * timer ){
225+ void IRAM_ATTR timerEnd (hw_timer_t * timer ){
226226 timer -> dev -> config .enable = 0 ;
227227 timerAttachInterrupt (timer , NULL , false);
228228 removeApbChangeCallback (timer , _on_apb_change );
229229}
230230
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 ){
232232 static bool initialized = false;
233233 static intr_handle_t intr_handle = NULL ;
234234 if (intr_handle ){
@@ -279,29 +279,29 @@ void timerAttachInterrupt(hw_timer_t *timer, void (*fn)(void), bool edge){
279279 }
280280}
281281
282- void timerDetachInterrupt (hw_timer_t * timer ){
282+ void IRAM_ATTR timerDetachInterrupt (hw_timer_t * timer ){
283283 timerAttachInterrupt (timer , NULL , false);
284284}
285285
286- uint64_t timerReadMicros (hw_timer_t * timer ){
286+ uint64_t IRAM_ATTR timerReadMicros (hw_timer_t * timer ){
287287 uint64_t timer_val = timerRead (timer );
288288 uint16_t div = timerGetDivider (timer );
289289 return timer_val * div / (getApbFrequency () / 1000000 );
290290}
291291
292- double timerReadSeconds (hw_timer_t * timer ){
292+ double IRAM_ATTR timerReadSeconds (hw_timer_t * timer ){
293293 uint64_t timer_val = timerRead (timer );
294294 uint16_t div = timerGetDivider (timer );
295295 return (double )timer_val * div / getApbFrequency ();
296296}
297297
298- uint64_t timerAlarmReadMicros (hw_timer_t * timer ){
298+ uint64_t IRAM_ATTR timerAlarmReadMicros (hw_timer_t * timer ){
299299 uint64_t timer_val = timerAlarmRead (timer );
300300 uint16_t div = timerGetDivider (timer );
301301 return timer_val * div / (getApbFrequency () / 1000000 );
302302}
303303
304- double timerAlarmReadSeconds (hw_timer_t * timer ){
304+ double IRAM_ATTR timerAlarmReadSeconds (hw_timer_t * timer ){
305305 uint64_t timer_val = timerAlarmRead (timer );
306306 uint16_t div = timerGetDivider (timer );
307307 return (double )timer_val * div / getApbFrequency ();
0 commit comments