File tree Expand file tree Collapse file tree 1 file changed +14
-4
lines changed Expand file tree Collapse file tree 1 file changed +14
-4
lines changed Original file line number Diff line number Diff line change @@ -48,6 +48,7 @@ int mp_hal_stdin_rx_chr(void) {
48
48
if (c != -1 ) {
49
49
return c ;
50
50
}
51
+ MICROPY_EVENT_POLL_HOOK
51
52
vTaskDelay (1 );
52
53
}
53
54
}
@@ -92,12 +93,21 @@ uint32_t mp_hal_ticks_us(void) {
92
93
93
94
void mp_hal_delay_ms (uint32_t ms ) {
94
95
struct timeval tv_start ;
95
- gettimeofday (& tv_start , NULL );
96
- vTaskDelay (ms / portTICK_PERIOD_MS );
97
96
struct timeval tv_end ;
98
- gettimeofday (& tv_end , NULL );
99
- uint64_t dt = (tv_end .tv_sec - tv_start .tv_sec ) * 1000 + (tv_end .tv_usec - tv_start .tv_usec ) / 1000 ;
97
+ uint64_t dt ;
98
+ gettimeofday (& tv_start , NULL );
99
+ for (;;) {
100
+ gettimeofday (& tv_end , NULL );
101
+ dt = (tv_end .tv_sec - tv_start .tv_sec ) * 1000 + (tv_end .tv_usec - tv_start .tv_usec ) / 1000 ;
102
+ if (dt + portTICK_PERIOD_MS >= ms ) {
103
+ // doing a vTaskDelay would take us beyound requested delay time
104
+ break ;
105
+ }
106
+ MICROPY_EVENT_POLL_HOOK
107
+ vTaskDelay (1 );
108
+ }
100
109
if (dt < ms ) {
110
+ // do the remaining delay accurately
101
111
ets_delay_us ((ms - dt ) * 1000 );
102
112
}
103
113
}
You can’t perform that action at this time.
0 commit comments