WildernessLabs / Meadow_Issues

Public repo for bugs and issues with Meadow
15 stars 0 forks source link

Interrupt failing to interrupt #327

Closed ctacke closed 1 year ago

ctacke commented 1 year ago

Rising-edge interrupts (at least) on D00 do not fire. This is a problem on 1.0.2.0 but works fine on 1.0.0.0.

The app below shows it - the event handler never is called, and debug messaging in Core, all the way at the wait for mq_revceive never unblocks.

https://github.com/WildernessLabs/Meadow.Core/blob/da926cb66597947b94cd82971619a532898dcc9b/source/implementations/f7/Meadow.F7/Devices/F7GPIOManager_interrupts.cs#L181

public class MeadowApp : App<F7FeatherV2>
{
    private IDigitalInterruptPort down;

    public override async Task Run()
    {
        Resolver.Log.Info("Run...");

        down = Device.Pins.D00.CreateDigitalInterruptPort(InterruptMode.EdgeRising, ResistorMode.InternalPullDown, TimeSpan.Zero, TimeSpan.Zero);
        Resolver.Log.Info($"D00 Should be low");
        down.Changed += (s, e) =>
        {
            Resolver.Log.Info($"D00 triggered a rising interrupt. State went {e.Old?.State ?? false} -> {e.New.State}");
        };

    }
}
Peter-Moody commented 1 year ago

I cannot reproduce this issue on the Nuttx side. Need to verify it is not a problem in Meadow.Core.

Peter-Moody commented 1 year ago

Chris found a problem in Meadow.Core