Can you clarify what you mean by 'bare-metal'?
Why do you want to not 'use FreeRTOS'?
All the IDF drivers make use of FreeRTOS functionality internally. If you don't want that, you can't use the IDF drivers.
Can you clarify what you mean by 'bare-metal'?
I hope my explanation is clearer this time. I intend to implement my core algorithm utilizing a state-machine bare-metal approach. Does the ESP-IDF leverage the I2C function via Interrupt Service Routines (ISRs)? Consequently, it seems superfluous to employ explicit interrupt functions.MicroController wrote: ↑Mon Dec 11, 2023 12:49 pmCan you clarify what you mean by 'bare-metal'?
Why do you want to not 'use FreeRTOS'?
All the IDF drivers make use of FreeRTOS functionality internally. If you don't want that, you can't use the IDF drivers.
Code: Select all
i2cWrite(num, txAddress, txBuffer, txLength, _timeOutMillis);
Code: Select all
i2cRead(num, address, rxBuffer, size, _timeOutMillis, &rxLength);
The priority doesn't really matter much here, unless you have other tasks hogging the CPU that need to be preempted when an I2C transaction is finished.If I use the Arduino IDE, at what priority should the task run? And is there any possibility to make it asynchronous?
Not sure about Arduino, but the 'bare' ESP-IDF drivers will yield the CPU while waiting for a transaction to finish; most likely the Arduino wrappers do the same, so no problem there.both take a timeout parameter, so I see no way to e.g. introduce a vTaskDelay and release control to other tasks?
See also hereWhat I want to do is to read four ADC's (Texas Instruments ADS1015) at 3.3 kHz, which is quite challenging I think?
Users browsing this forum: Baidu [Spider], Bing [Bot] and 125 guests