@@ -155,41 +155,31 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(time_sleep_us_obj, time_sleep_us);
155155STATIC mp_obj_t time_ticks_ms (void ) {
156156 struct timeval tv ;
157157 gettimeofday (& tv , NULL );
158- return mp_obj_new_int_from_uint (((tv .tv_sec * 1000 ) + tv .tv_usec / 1000 )
159- & (MICROPY_PY_UTIME_TICKS_PERIOD - 1 ));
158+ return mp_obj_new_int_from_uint (((tv .tv_sec * 1000 ) + tv .tv_usec / 1000 ));
160159}
161160STATIC MP_DEFINE_CONST_FUN_OBJ_0 (time_ticks_ms_obj , time_ticks_ms );
162161
163162STATIC mp_obj_t time_ticks_us (void ) {
164- return mp_obj_new_int_from_uint (system_get_rtc_time ()
165- & (MICROPY_PY_UTIME_TICKS_PERIOD - 1 ));
163+ return mp_obj_new_int_from_uint (system_get_rtc_time ());
166164}
167165STATIC MP_DEFINE_CONST_FUN_OBJ_0 (time_ticks_us_obj , time_ticks_us );
168166
169167STATIC mp_obj_t time_ticks_cpu (void ) {
170- return mp_obj_new_int_from_uint (get_timer_counter_value ()
171- & (MICROPY_PY_UTIME_TICKS_PERIOD - 1 ));
168+ return mp_obj_new_int_from_uint (get_timer_counter_value ());
172169}
173170STATIC MP_DEFINE_CONST_FUN_OBJ_0 (time_ticks_cpu_obj , time_ticks_cpu );
174171
175172STATIC mp_obj_t time_ticks_diff (mp_obj_t start_in , mp_obj_t end_in ) {
176- // we assume that the arguments come from ticks_xx so are small ints
177- mp_uint_t start = MP_OBJ_SMALL_INT_VALUE (start_in );
178- mp_uint_t end = MP_OBJ_SMALL_INT_VALUE (end_in );
179- // Optimized formula avoiding if conditions. We adjust difference "forward",
180- // wrap it around and adjust back.
181- mp_int_t diff = ((end - start + MICROPY_PY_UTIME_TICKS_PERIOD / 2 )
182- & (MICROPY_PY_UTIME_TICKS_PERIOD - 1 ))
183- - MICROPY_PY_UTIME_TICKS_PERIOD / 2 ;
184- return MP_OBJ_NEW_SMALL_INT (diff );
173+ int32_t start = mp_obj_get_int_truncated (start_in );
174+ int32_t end = mp_obj_get_int_truncated (end_in );
175+ return mp_obj_new_int ((end - start ));
185176}
186177STATIC MP_DEFINE_CONST_FUN_OBJ_2 (time_ticks_diff_obj , time_ticks_diff );
187178
188- STATIC mp_obj_t time_ticks_add (mp_obj_t ticks_in , mp_obj_t delta_in ) {
189- // we assume that first argument come from ticks_xx so is small int
190- mp_uint_t ticks = MP_OBJ_SMALL_INT_VALUE (ticks_in );
191- mp_uint_t delta = mp_obj_get_int (delta_in );
192- return MP_OBJ_NEW_SMALL_INT ((ticks + delta ) & (MICROPY_PY_UTIME_TICKS_PERIOD - 1 ));
179+ STATIC mp_obj_t time_ticks_add (mp_obj_t start_in , mp_obj_t delta_in ) {
180+ uint32_t start = mp_obj_get_int_truncated (start_in );
181+ uint32_t delta = mp_obj_get_int_truncated (delta_in );
182+ return mp_obj_new_int_from_uint ((start + delta ));
193183}
194184STATIC MP_DEFINE_CONST_FUN_OBJ_2 (time_ticks_add_obj , time_ticks_add );
195185
0 commit comments