You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
IDF version (run git describe --tags to find it): v4.4.1 (but same code in master)
Build System: idf.py
Compiler version (run xtensa-esp32-elf-gcc --version to find it): xtensa-esp32-elf-gcc (crosstool-NG esp-2021r2-patch3) 8.4.0
Operating System: Linux
Using an IDE?: No
Power Supply: USB
Problem Description
When the RMT module is set to output and the same pin is set to open drain, then rmt_write_items adds an
end-marker 0. However, when the idle-level is high, then this leads to the output being pulled down.
It is crucial that the pin is set to open drain and pulled high externally.
Expected Behavior
The rmt_write_items should not add additional signals.
Either the rmt_write_items should write an end marker that corresponds to the idle level, or the lower level shouldn't emit anything when seeing an end marker.
Actual Behavior
The pin is pulled low for a short period of time.
See the attached screenshot.
Steps to reproduce
Pull pin 25 high with an external resistor (I used 15KOhm).
github-actionsbot
changed the title
RMT transmission with open drain adds pulse after transmission ends
RMT transmission with open drain adds pulse after transmission ends (IDFGH-7275)
Apr 29, 2022
Thinking more about this, it seems like the rmt_write_items functions doesn't even need to look at the idle-level. It can always use high-level stop-data:
rmt_item32_tstop_data= {{{ 0, 1, 0, 1 }}};
For any combination of "open drain" and "idle_level" this seemed to work for me.
Also: this behavior should probably be documented, as users sometimes need to fill in the second part of an rmt_item32_t without it having any effect.
Environment
git describe --tags
to find it): v4.4.1 (but same code in master)xtensa-esp32-elf-gcc --version
to find it): xtensa-esp32-elf-gcc (crosstool-NG esp-2021r2-patch3) 8.4.0Problem Description
When the RMT module is set to output and the same pin is set to open drain, then
rmt_write_items
adds anend-marker 0. However, when the idle-level is high, then this leads to the output being pulled down.
It is crucial that the pin is set to open drain and pulled high externally.
Expected Behavior
The
rmt_write_items
should not add additional signals.Either the
rmt_write_items
should write an end marker that corresponds to the idle level, or the lower level shouldn't emit anything when seeing an end marker.Actual Behavior
The pin is pulled low for a short period of time.
See the attached screenshot.
Steps to reproduce
Code to reproduce this issue
Possible fix
The following patch potentially fixes the issue. If not, it might help to diagnose it.
It did remove the blip for me.
The text was updated successfully, but these errors were encountered: