Minimum Endstop not changing switch state

Hi. I’m having some difficulty getting the minimum end stop to work:

Problem:
State changes in software are not changing when calling my_drive.axis1.min_endstop.endstop_state. It remains False regardless of button press.

Setup:
I’ve tried both configurations 1 & 3 shown here: Endstops and Homing — ODrive Documentation 0.0 documentation

An off-board “external” 10k Resistor is being used. Is this the issue? Not sure if an internal integrated circuit IO pull up/pull down resistor is also in use and therefore the external is not needed.

A NC mechanical switch is used.

Code for configuration 1:

    my_drive = odrive.find_any()
    my_drive.config.gpio1_mode = GPIO_MODE_DIGITAL
    my_drive.axis1.min_endstop.config.gpio_num = 1
    my_drive.axis1.min_endstop.config.enabled = True
    my_drive.axis1.min_endstop.config.debounce_ms = 50
    my_drive.axis1.min_endstop.config.is_active_high = False
    my_drive.config.gpio1_mode = GPIO_MODE_DIGITAL_PULL_DOWN

Output:
When I put a multimeter across the output signal that would go to the IO port 1 and GND , I get 5.1v measured when the mechanical switch is not pressed and 0V when it is.The signal wire is not yet plugged into GPIO input port.

When I then plug the signal into GPIO port 1, the signal voltage remains at to 5.1v when unpressed, but goes to 2.48v when pressed. Not sure why its not dropping all the way to 0V.

I appreciate any help. Thanks in advance.

Paul on discord asked me to switch to GPIO 8 which worked!

2 Likes