Post by peterglen » Tue Oct 06, 2020 7:46 pm . This function is used to configure the timer. To start the timer in one-shot mode, call esp_timer_start_once (), passing. 9 posts. When you use several pins to wake up the ESP32, it is useful to know which pin caused the wake up. In this guide, we will show you how to use FreeRTOS timers and delays using ESP32 and ESP-IDF. 9 posts. As soon as you need to do a few things at the same time, you. 9 posts. Actually, we have connected one module over UART with ESP32 chip in our product. void esp_rom_delay_us (uint32_t us) Pauses execution for us microseconds. According to the features used by an application, there are some sub sleep modes. Board index English Forum Discussion Forum ESP-IDF [SOLVED] My function for microseconds delay doesn't work properly. A beginners guide, Several things at the same time and the BlinkWithoutDelay example in the IDE. When ı create a task using xTaskCreate() function and adding some delay in the task function. Board index English Forum Discussion Forum ESP-IDF [SOLVED] My function for microseconds delay doesn't work properly. Internally, esp_timer uses a 64-bit hardware timer. This function can help install the low level putc function for esp_rom. Joined: Wed Jul 28, 2021 12:25 pm Location: Italy [SOLVED] My function for microseconds delay doesn't work properly. Currently, the largest value that will produce an accurate delay is 16383. us – Number of microseconds to pause . The API is slightly different than that for the ESP32. I am trying the run stepper motor with the tmc2208 driver and ı want to delay in microseconds like 5uS or 10 uS. ESP_Sprite. 0, For more information about FreeRTOS features specific to ESP-IDF,. That is how other arduino boards work and a lot of code and libraries expect delay to work as per the documentation. When ı create a task using xTaskCreate() function and adding some delay in the task function. Actual resolution may be less. In light sleep mode, digital peripherals, most of the RAM, and CPUs are clock-gated, and supply voltage is reduced. Where do you get the Delay() function from? It's not part of ESP-IDF. In particular the following timer’s parameters may be set: Divider: How quickly the timer’s counter is “ticking”. (adc1_channel_t)channel2); } It goes without saying that this a workaround. Hello, I am trying to provide delay between the RGB colors of an led. I also used portTICK_RATE_MS but the speed didnt change . 13 posts 1; 2; Next; Ritesh Posts: 1330 Joined: Tue Sep 06, 2016 9:37 am. Raising the level, the interrupt handler can reduce the timer processing delay. void esp_rom_delay_us (uint32_t us) Pauses execution for us microseconds. Then I take the difference of two and I know how long the task took to execute. Post by peterglen » Tue Oct 06, 2020 7:46 pm . (they haven't changed in decades) To get the broken down into elements you pass a pointer to a time_t to localtime () that fills in the tm structure. This function can help install the low level putc function for esp_rom. Raising the timer interrupt’s priority can reduce the timer processing delay caused by interrupt latency. 0. Hello, I am trying to provide delay between the RGB colors of an led. Till Now, we have used ets_delay_us FreeRTOS API to get microseconds delay but that is not recommend to use. Moreover, they are much more precise (certainly depending on clock frequency. Joined: Wed Aug 29, 2018 3:17 pm. doing some math to convert it to microseconds. Delay in esp_idf_hal::delay - Rust esp_idf_hal 0. I am trying the run stepper motor with the tmc2208 driver and ı want to delay in microseconds like 5uS or 10 uS. Optimizing execution speed is a key element of software performance. You will get a notification that the project has been created. Click ‘Choose Template’ button to proceed forward. tv_usec is set to microseconds, since the original time_t doesn't. const unsigned char sample [] = { // here a lot of numbers - audio data }; hw_timer_t * timer = NULL ; portMUX_TYPE timerMux = portMUX_INITIALIZER. Projects Discussion and Showcase Device Hacking. Hello community, I made a. 2. At 240 Mhz, with a 32 bit ccount register, we will see overflow every 17. N. For the operating frequency, ESP32 master clock is divided from APB clock (80MHz), so only 80, 40, 26. [中文] Introduction ¶ The ESP32 chip contains two hardware timer groups. source ·. There are other tasks running in the background but they have priority 2 or higher. Returns. ESP32 PWM duty cycle measurement from input. IDE name: Arduino IDE/IDF component Flash Frequency: 80Mhz Upload Speed: 115200. Description: micros() returns strange values when using arduino-esp32 as component of esp-idf, millis() returns values higher when using arduino-esp32 as component of esp-idf, then values using simply from Arduino IDEOverview. h) will allow you to busy-wait for a correct number of microseconds. mbratch Posts: 271 Joined: Fri Jun 11, 2021 1:51 pm. After searching. Dedicated GPIO is more of a CPU peripheral, so it has a strong relationship with CPU core. h) will allow you to busy-wait a specified number of uS. This is the better option when executing multiple tasks, which is usually the case in FreeRTOS. Board index English Forum Discussion Forum ESP-IDF; Need API support to provide micro seconds delay. The ESP32 can go into deep sleep mode, and then wake up at predefined periods of time. The event loop library keeps a copy of event_data and manages the copy’s lifetime automatically (allocation + deletion); this ensures that the data the handler receives is always valid. Because all the callbacks are dispatched from the same task, it is recommended to only do the minimal. However, the code doesn't work and I don't think the servo is getting any PWM signal. Engineering Climate Datasets. Board index English Forum Discussion Forum ESP-IDF [SOLVED] My function for microseconds delay doesn't work properly. As ESP-IDF FreeRTOS is a real-time operating system, it’s necessary to ensure that high throughput or low latency tasks are granted a high priority in order to run immediately. I am trying the run stepper motor with the tmc2208 driver and ı want to delay in microseconds like 5uS or 10 uS. The ESP32 has two cores, with 32 interrupts each. Turned out that vTaskDelay (2/portTICK_PERIOD_MS) wasn't waiting long enough. So I am trying to find some timer which I can reset and esp_timer functions esp_timer_delete() and esp_timer_create() I can. Now run the following commands to make sure we can compile and flash the code before continuing. time. The IDF zone occurs in southern BC, covering 5. sleep_us(us): This is yet another blocking method that provides a delay in microseconds. With a normal LEDs you can show the state of a system (blue= too cold, red= too hot). Priority is set when calling xTaskCreate() or xTaskCreatePinnedToCore() and can be changed at runtime by calling vTaskPrioritySet() . I guess the system timer runs with a resolution of 1 ms. Return. If we go to the Ticker. The delayMicroseconds function, on the other hand, does not yield to other tasks, so using it for delays more than 20 milliseconds is not recommended. I want to introduce delay (lets say few "us") to the input pulse whose pulse width is 20us and of 10 Hz repetition. However, improving execution speed may have trade-offs with other aspects of performance such as Minimizing Binary Size. Out there there are either IDF modules for ESP32 (with RMT) or Arduino based (which was quite hard to port to RTOS SDK). esp_timer set of APIs provides one-shot and periodic timers, microsecond time resolution, and 64-bit range. change "microseconds" to "milliseconds" because vTaskDelay is based on FreeRTOS time tic which is in multiple milliseconds. The delayMicroseconds function, on the other hand, does not yield to other tasks, so using it for delays more than 20 milliseconds is not recommended. Hello community, I made a. IDE name: Arduino IDE/IDF component Flash Frequency: 80Mhz Upload Speed: 115200. I call vTaskDelay for various reasons. Read part 1. {"payload":{"allShortcutsEnabled":false,"fileTree":{"components/esp_timer/include":{"items":[{"name":"esp_private","path":"components/esp_timer/include/esp_private. ESP32 Wi-Fi Sniffer Mode. Using Arduino Programming Questions. ESP32 supports two major power saving modes: Light-sleep and Deep-sleep. For example, the speed of a timer in an ESP32, which is running at a clock frequency of 80MHz, will be 80MHz or 8000000MHz for a set prescaler value of 1 and will be 1MHz or 1000000Hz for a prescaler value of 80. Specify the project name and directory. Top. System time can be kept by using either one or both of the hardware timers depending on the application’s purpose and accuracy requirements for system time. The esp_timer "High Resolution Timer" implementation is built on top of a hardware timer that's always running, so you just call esp_timer_get_time () to get a system timestamp from it. Use this function if an RTC IO needs to be disconnected from internal circuits in deep sleep, to minimize leakage current. The ESP32 SoCs contains from 2 to 4 hardware timers. In deep sleep mode, CPUs, most of the RAM, and all the. This note explains various steps which happen before app_main function of an ESP-IDF application is called. The voltage level on the pin will depend on the circuit it is connected to, until you configure it as an output. Post by filo_gr » Thu Sep 09, 2021 6:57 am . 0 have been backported. (infrared of 905nm) with “digitalWrtie”, but I do not get pulses under 2 microseconds. Espressif ESP32 High Resolution Timer. このプログラムの中で「ESP32にdelayMicrosecondsがない」としてシステム時間の計算をして擬似的にμsのdelayを行なっていました。. fn delay_us (&mut self, us: u32) Pauses execution for at minimum us microseconds. If you don't want to use vTaskDelay maybe you could make the priority of the IDLE and the MAIN task equal. # include <btAudio. Joined: Wed Jul 28, 2021 12:25 pm Location: Italy [SOLVED] My function for microseconds delay doesn't work properly. Take a look at Using millis() for timing. ESP-IDF FreeRTOS is based on the Xtensa port of FreeRTOS v8. ESP-IDF ESP-BOX ESP-ADF ESP-MDF ESP-WHO ESP-SkaiNet ESP32 Arduino IDEs for ESP-IDF ESP-AT ESP IoT Solution ESP. So in that module, we need exact delay of 10 and 40 microseconds of delay interval in some interval to update firmware into that module using one wire communication over GPIO pins. {"payload":{"allShortcutsEnabled":false,"fileTree":{"components/freertos/FreeRTOS-Kernel/portable/linux/include/freertos":{"items":[{"name":"portmacro. 0. As a workaround, I'm using something like this: use esp_idf_hal:: delay:: {Ets, FreeRtos}; /// A `Delay` implementation that uses [`Ets`] for delays <10 ms,. 1 post • Page 1 of 1. void esp_rom_delay_us (uint32_t us) ¶ Pauses execution for us microseconds. For delays longer than a few thousand. They are all 64-bit generic timers based on 16-bit pre-scalers and 64-bit up / down counters which are capable of being auto-reloaded. The application requires the precision of tens of microseconds. Optimizing execution speed is a key element of software performance. According to the documentation, ESP32 can receive 3 types of frames: Control, Management, Data. The timer period is initialized by the mcpwm_timer_config_t::period_ticks parameter in mcpwm_timer_config_t. With a neopixel you can show values in between with smoothly changing colors from for instance blue. 9 posts. g. On the ESP32, the bootrom is much bigger (7*64k) than on the ESP8266: ROM0 - 0x4000 0000 to 0x4006 ffff (448k = 7 * 64k) ROM1 - 0x3ff9 0000 to 0x3ff9 ffff (64k) The above map is correct and differs from what is published in the manuals. Optimizing execution speed is a key element of software performance. void esp_rom_install_channel_putc (int channel, void (* putc) (char c)) esp_rom_printf can print message to different channels simultaneously. Let's say portTICK_PERIOD_MS = 10 and you call delay(9). Hello community, I made a. Neopixels have great possibilties. Even when logs are disabled by using a tag name they will still require a processing time of around 10. Board index English Forum Discussion Forum ESP-IDF; IDF documentation suggests microsecond delay - should be millisec. Joined: Wed Aug 29, 2018 3:17 pm. Different from the API before IDF v4. The esp_intr_alloc () abstraction exists to hide all these. You should see different times if you wait for the serial output to finish:Board index English Forum Discussion Forum ESP-IDF [SOLVED] My function for microseconds delay doesn't work properly. 2. That means that it ticks at C times per second or, each clock tick is 1/C seconds. Board index English Forum Discussion Forum ESP-IDF; Need API support to provide micro seconds delay. esp_timer set of APIs provides one-shot and periodic timers, microsecond time resolution, and 52-bit range. After successful setup the timer will automatically start. The ESP32 has two cores, with 32 interrupts each. This discussion on sub-microsecond ESP timing seems well worth reading FYI. void esp_rom_install_channel_putc (int channel, void (* putc) (char c)) esp_rom_printf can print message to different channels simultaneously. The timer_u32. To switch to a different SoC target, choose target from the dropdown in the upper left. For the demonstration purpose, I will use the LCD1602, which is connected via the PCF8574 I2C expander. 1. THE TICK is a new Netflix show. I agree that it will work for microseconds. This document describes using ESP-IDF with the ESP32 SoC. この部分もESP-IDF側のAPIに切り替えるため、vTaskDelay ()関数を使ったのだが. g. vTaskDelay(500 / portTICK_RATE_MS); You can use vTaskDelay () even if not using FreeRTOS tasks. Pause can be longer if the implementation requires it due to precision/timing issues. espnow – ESP-NOW Module; espulp – ESP Ultra Low Power Processor Module; floppyio – Read flux transition information into the buffer. Hi everyone! I want to implement a timing delay of 1us in my program. It is located at mid-low elevations in the southern Rocky Mountain Trench to the east, on the southern portion of. int64 = 292,471 years before overflow at uS resolution! Unlike gettimeofday function, values returned by esp_timer_get_time() start from zero after startup of the chip wakes up from deep sleep and do not have. As you can see I measure the time between two instants using esp_timer_get_time() (this funcion returns an uint64_t with the number of microseconds starting from the power up). This feature is specially useful if you are running projects that require time stamping or daily tasks, while maintaining low power consumption. Step 3: Connect the Power Pin. ESP32 Timer Example (Arduino) Let’s say we’d like to toggle an LED every 1 ms without using a delay that blocks the CPU and does much harm to the overall timing performance of your system. 10 posts • Page 1 of 1. Top 1 post • Page 1 of 1 ESP-IDF ESP-BOX ESP-ADF ESP-MDF ESP-WHO ESP-SkaiNet ESP32 Arduino IDEs for ESP-IDF ESP-AT ESP IoT Solution ESP RainMaker Rust ESP8266 Report Bugs Showcase; Chinese Forum 中文社区 活动区 乐鑫活动专区 讨论区 ESP-IDF 中文讨论版 《ESP32-C3 物联网工程开发实战》书籍讨论版 ESP-AT 中文讨论版 ESP-BOX 中文讨论版 It appears that simply using taskENTER_CRITICAL (); and taskEXIT_CRITICAL (); from the FreeRTOS docs does not work because of the way FreeRTOS is modified for ESP32. The constant portTICK_PERIOD_MS can be used to calculate real time from the tick rate - with the resolution of one tick period. The spi_flash component contains API functions related to reading, writing, erasing, memory mapping for data in the external flash. Board index English Forum Discussion Forum ESP-IDF; Need API support to provide micro seconds delay. If the Modem-sleep mode is enabled, station will switch between active and sleep state periodically. hw_timer_t * timerBegin(uint32_t frequency); frequency select timer frequency in Hz. The choice depends on the application purpose and accuracy requirements for system time. You can update the period at runtime by calling mcpwm_timer_set_period() function. I also used portTICK_RATE_MS but the speed didnt change . Now, generally, the analogRead() execution time on ESP32 is in the ballpark of 10 microseconds. (station 1018621) in British Columbia, Canada. Any delay over 1024us will include timer0 interrupts, and in your example you'll also have serial interrupts. If 0 is passed as the argument, the delay will equal the time spent executing the interrupt service routine. Numeric values in an array from a 8-bit 8kHz wave file. Board index English Forum Discussion Forum ESP-IDF; IDF documentation suggests microsecond delay - should be millisec. ESP32-delay関数(時間調整について). py monitor. There is no Arduino RMT API that solves this issue (which IMO - is not a real issue, but a. For the ESP-IDF board, we have chosen the custom board option. microseconds micros : 10814 HPtimer = 10814 --> 10000 calls of micros() on core 1 (500µs longer) but value measured by the two functions give the same result microseconds micros core0 : 10835 microseconds HighPrecTimer: 10216 microseconds HighPrecTimer core0: 10504 microseconds micros : 10795 HPtimer = 10795. #include <rom/ets_sys. The following optimizations will improve the execution of nearly all code - including boot times, throughput, latency, etc: Set CONFIG_ESPTOOLPY_FLASHFREQ to 80 MHz. Board index English Forum Discussion Forum ESP-IDF [SOLVED] My function for microseconds delay doesn't work properly. In this tutorial we are going to learn how to configure the system time on the ESP32 and how to obtain the current time, using the Arduino core. I am trying to measure the duty cycle interval (from falling to rising edge) in microseconds of an incoming PWM signal of 20 KHz. Delay a task for a given number of ticks. The spi_flash component also has higher-level API functions which work with partitions defined in the partition table. h for it to reside in. Currently, the largest value that will produce an accurate delay is 16383; larger values can produce an extremely short delay. Sometimes it delays for exactly 2 seconds but sometimes it misses 10ms. The spi_flash component also has higher-level API functions which work with partitions defined in the partition table. esp_timer provides one-shot and periodic timers, microsecond time resolution, and 64-bit range. It’s also one of the worst things. Post by filo_gr » Thu Sep 09, 2021 6:57 am . Inter-Processor Call (IPC) Interrupt Allocation. Currently, ESP32 Wi-Fi supports the Modem-sleep mode which refers to the legacy power-saving mode in the IEEE 802. 3)? ¶ In ESP-IDF v3. To address the Y2K38 issue, you may need to use 64-bit time_t type when building the application. Joined: Wed Jul 28, 2021 12:25 pm Location: Italy [SOLVED] My function for microseconds delay doesn't work properly. The exact hardware timer implementation used depends on the target, where LAC timer is used for ESP32. 13 posts 1; 2; Next; Ritesh Posts: 1336 Joined: Tue Sep 06, 2016 9:37 am. Additionally, there are some power-down options that can be configured to further reduce the power consumption. 4 posts • Page 1 of 1. Hello! i am using an ESP32-WROOM-32U dev module to make a packet monitor. We have named our project ‘ESP32_TIMER_INTERRUPT. 2. Code: Select all. You are calling delay(2) which delays for 2 milliseconds which is longer than an ISR is allowed to block (300 microseconds by default). Post by filo_gr » Thu Sep 09, 2021 6:57 am . I am trying the run stepper motor with the tmc2208 driver and ı want to delay in microseconds like 5uS or 10 uS. The actual time that the task remains blocked depends on the tick rate. To switch to a different SoC target, choose target from the dropdown in the upper left. I was able to get the current date and time by polling NTP servers and using struct tm and getLocalTime() function. I dont get any delay even if I add some different delays. The ESP32 Wi-Fi programming model is depicted as follows: Wi-Fi Programming Model. Currently, the largest value that will produce an accurate delay is 16383; larger values can produce an extremely short delay. - Also I removed the capitalization from "Component" as I have not found a reason why is it capitalized. Postby fly135 » Fri Oct 05, 2018 5:10 pm. Dimming Neopixels, Delays<Microseconds. After much struggling I found that vTaskSuspendAll (); and xTaskResumeAll (); works but only as long as no delays are used. Thus, all ESP-IDF applications and many ESP-IDF components are written based on FreeRTOS. 1 is mostly compatible with apps written for ESP-IDF v5. 13 posts 1; 2; Next; Ritesh Posts: 1325 Joined: Tue Sep 06, 2016 9:37 am. Here is the simple ESP-IDF example, which is a cut-down version of the I2C example in the esp-idf. See Sleep Modes for these sleep modes and sub sleep modes. Actually, we have connected one module over UART with ESP32 chip in our product. A. Post by peterglen » Tue Oct 06, 2020 7:46 pm . For example, 1us = 1 / 1000000 of a second = 1MHZ clock rate. 9 microseconds per entry. Pauses the program for the amount of time (in microseconds) specified by the parameter. Parameters. For demonstration of log functionality, check ESP-IDF’s examples directory. Till Now, we have used ets_delay_us FreeRTOS API to get microseconds delay but that is not recommend to use. Inter-Processor Call (IPC) Interrupt Allocation. The event loop library keeps a copy of event_data and manages the copy’s lifetime automatically (allocation + deletion); this ensures that the data the handler receives is always valid. To delete the timer when it is no longer needed, call esp_timer_delete (). Step 2: Connect the PWM line. However, the time I receive back from the NTP server doing so is in seconds and I would like to have the time in milliseconds or microseconds precision. esp-idf-monitor also has a range of features to decode crash output and interact with the device. 0, however some functions of FreeRTOS v9. guillermop Posts: 12 Joined: Thu Jul 06, 2017 2:52 am [SOLVED] get timestamp in milliseconds. Suggested change -- change "microseconds" to "milliseconds" because vTaskDelay is based on FreeRTOS time tic which is in multiple milliseconds. 13 posts 1; 2; Next; Ritesh Posts: 1335 Joined: Tue Sep 06, 2016 9:37 am. In ESP-IDF you will use esp_timer_get_time() function. Board index English Forum Discussion Forum ESP-IDF; Delay booting. Board index English Forum Discussion Forum ESP-IDF; Need API support to provide micro seconds delay. Depending on what you found in step 1 above put a delay (n) , so if you found that control spends 10ms in the timer routine then put a Delay (10). While millis() is an absolute time clock. e. 0 and later versions, please refer to examples in the esp-protocols repo. Connects to the peer HID Host with virtual cable. For 2 sensors thats ~ 128 milliseconds. This will take about 30 microseconds to execute:. I don't want to use the vTaskDelay () since it effects also other part of my code. Joined: Wed Jul 28, 2021 12:25 pm Location: Italy [SOLVED] My function for microseconds delay doesn't work properly. I want to use my ESP32 in either lightSleep or modemSleep, both of which are not defined in #include "esp_deep_sleep. The calculation of the duration take place later. In the Extension, select ESP-IDF option: We will click the ‘ sntp ’ under the Protocols tab. 0. Step 4: Connect the potentiometer to the ESP32. To open the project in a new window, click ‘Yes. . 0-rc1 as on. Heap Memory Debugging. Joined: Wed Jul 28, 2021 12:25 pm Location: Italy [SOLVED] My function for microseconds delay doesn't work properly. Even a. A delay provider that uses `Ets` for delays below a certain threshold and `FreeRtos` for delays equal or above the threshold. 0. I don't want to use the vTaskDelay () since it effects also other part of. Parameters. This function should be provided with a structure timer_config_t to define how timer should operate. Obtaining v5. I am new to esp32 wanted to know how I can have a timer for 100 microseconds. Post by filo_gr » Thu Sep 09, 2021 6:57 am . ASSER_WARN with BT SPP (IDFGH. void esp_rom_delay_us (uint32_t us) Pauses execution for us microseconds. Note that this is busy-waiting, so. Inkplate esp-idf. cpp 📋 Copy to clipboard ⇓ Download. This function should be provided with a structure timer_config_t to define how timer should operate. Click ‘Choose Template’ button to proceed forward. #include "esp_task_wdt. This will include examples of logging, generating delays, keyboard input and blinking the onboard LED of ESP32. Is there any limitation about max millis() counter? If millis() is used properly then no. us – Number of microseconds to pause . Ideal would be a delay in the bootloader so it starts (and reading the strapping pins) after a short delay (~500ms). The sdk for the chip needed 2msec. Raising the timer interrupt’s priority can reduce the timer processing delay caused by interrupt latency. 0 have been backported. Optional: detach interrupt. bvernoux completed on Oct 19, 2016. Specify the project name and directory. std::this_thread::sleep_for(std::chrono::microseconds(1000)); works, but any delay below 1000 us results in the same behavior as the yield call. In this phase, an address (0-64 bit) is clocked out. August 15, 2022. It looks to be an unnecessary delay since the previous function, rmt_wait_tx_done, takes. Esp32 packet monitor. This example delays by 500ms: esp-idf-equivalent-to-arduino-delay. However, improving execution speed may have trade-offs with other aspects of performance such as Minimizing Binary Size. Till Now, we have used ets_delay_us FreeRTOS API to get microseconds delay but that is not recommend to use. In particular the following timer’s parameters may be set: Divider: How quickly the timer’s counter is “ticking”. Till Now, we have used ets_delay_us FreeRTOS API to get microseconds delay but that is not recommend to use. しかし最近色々調べてみると、実はESP32にもμs単位でのdelayを行う関数が存在していることを発見したので記録しておこうと思った. Board index English Forum Discussion Forum ESP-IDF [SOLVED] get timestamp in milliseconds. Each interrupt has a fixed priority, most (but not all) interrupts are connected to the interrupt matrix. get current time in millis() Post by Saskia » Fri Jul 21, 2017 9:58 am . void Delay_us(uint32_t. So we know that delay() is a relative time clock. Set the interrupt trigger type of the CPU to edge. After that, you can use vTaskDelay (. Type ESP-IDF: New Project in the search bar and press enter. 1. 4 posts • Page 1 of 1. This does shave 10-20uS from each transaction. Till Now, we have used ets_delay_us FreeRTOS API to get microseconds delay but that is not recommend to use. Esputil is written in C, with no dependencies on python or anything else, working on Mac, Linux, and Windows as a static, singe no-dependencies executable. Most of it is functions related to controlling a nextion screen via serial and stepper motors. Till Now, we have used ets_delay_us FreeRTOS API to get microseconds delay but that is not recommend to use. Joined: Wed Jul 28, 2021 12:25 pm Location: Italy [SOLVED] My function for microseconds delay doesn't work properly. 13 us. According to the documentation esp_sleep_enable_timer_wakeup accepts a uint64_t type for its requested duration parameter. 13 posts 1; 2; Next; Ritesh Posts: 1330 Joined: Tue Sep 06, 2016 9:37 am. The ESP32 will communicate with the PCF8574, which uses I2C communication, and this in turn will control the LCD.