Possible to use RMT for simultaneous input and output on the same gpio line, for 1-wire?
Posted: Sat Nov 18, 2017 1:26 am
Hello.
I'm working with David Antliff to implement hardware support in esp32-owb, 1-Wire component for esp32/esp-idf. I have a preliminary driver, originally based on the nodemcu rmt driver but heavily modified at https://github.com/chmorgan/esp32-owb/c ... c2ec93b025
What I'm seeing is that the RMT output is showing up correctly and the timing is spot on perfect, it was amazing seeing how close the timing was to the target. My device, a DS18B20, is responding and pulling the line low. I'm doing the 1-wire reset via the driver's _reset() call. The bus trace looks like:
-----___ 480us__---_60us_-----
In the trace the RMT is outputting the high bus value the 480us low pulse and then releasing the bus. The 60us low section is the DS18B20 responding by pulling the bus low.
The RMT reports a single sample, something like this (I can get the exact output if it would be helpful):
level 0 480
level 1 0
This appears to indicate that the RMT isn't seeing the low state of the bus.
Anyone mind offering some suggestions for how to debug or provide additional information that could help?
I'm working with David Antliff to implement hardware support in esp32-owb, 1-Wire component for esp32/esp-idf. I have a preliminary driver, originally based on the nodemcu rmt driver but heavily modified at https://github.com/chmorgan/esp32-owb/c ... c2ec93b025
What I'm seeing is that the RMT output is showing up correctly and the timing is spot on perfect, it was amazing seeing how close the timing was to the target. My device, a DS18B20, is responding and pulling the line low. I'm doing the 1-wire reset via the driver's _reset() call. The bus trace looks like:
-----___ 480us__---_60us_-----
In the trace the RMT is outputting the high bus value the 480us low pulse and then releasing the bus. The 60us low section is the DS18B20 responding by pulling the bus low.
The RMT reports a single sample, something like this (I can get the exact output if it would be helpful):
level 0 480
level 1 0
This appears to indicate that the RMT isn't seeing the low state of the bus.
Anyone mind offering some suggestions for how to debug or provide additional information that could help?