pigpio icon indicating copy to clipboard operation
pigpio copied to clipboard

gpioSetISRFunc error -123

Open TMagerat opened this issue 6 months ago • 1 comments

Hello

I'm struggling with the function gpioSetISRFunc I always have a bad init error -123 I tried to find some solution by disabling the W-1 interface but it does not work

This is my config.txt

I need this function because I have 2 different square signals on my PIN BCM 17 and 27 that represent the speed of 2 different rotors I want that each time a RISING_EDGE is occuring it computes the times between the last and the current rising_edge

I tried to do

sudo -s
cd /sys/class/gpio/
echo 17 > export 
cd gpio17
echo in > direction 
echo both > edge 
cd /sys/class/gpio/
echo 17 > unexport 

as mentionned here #97 https://github.com/fivdi/pigpio/issues/97

but sadly after the line

echo 17 > export 

I have an invalid argument error My code is something like this :

void rotor1_interrupt(int gpio, int level, uint32_t tick) {
    static uint32_t last_tick = 0;
    uint32_t diff_tick;

    
    diff_tick = tick - last_tick;
    last_tick = tick;

    if (diff_tick > 0) {
        rotor1_speed = 1.0 / ((double) diff_tick / 1000000.0);
        clock_gettime(CLOCK_MONOTONIC, &speed1);
        time1 = (speed1.tv_sec - start.tv_sec) + (speed1.tv_nsec - start.tv_nsec) / 1.0e9;
    }
    rotor1_speed_buffer[rotor1_data_index] = rotor1_speed;
    time1_buffer[rotor1_data_index] = time1;
    speed_order_buffer[rotor1_data_index]=speed_order;
    rotor1_data_index++;


    update_pwm_flag_rotor1 = 1; // Indicate that rotor 1s speed has been updated
    
}
...
int main(int argc, char **argv) {
    ...
    if (gpioInitialise() < 0) {
        fprintf(stderr, "Pigpio initialization failed\n");
        return 1;
    }
    gpioSetMode(ROTOR1_PIN, PI_INPUT);
    gpioSetMode(ROTOR2_PIN, PI_INPUT);
    gpioSetMode(PWM_PIN, PI_OUTPUT);

    gpioSetISRFunc(ROTOR1_PIN, RISING_EDGE, 0, rotor1_interrupt);
    gpioSetISRFunc(ROTOR2_PIN, RISING_EDGE, 0, rotor2_interrupt);
    ...
    }

It fails at the first gpioSetISRFunc

Thanks in advance

Tom

TMagerat avatar Aug 05 '24 12:08 TMagerat