Code Monkey home page Code Monkey logo

Comments (6)

golemparts avatar golemparts commented on May 24, 2024 2

Both synchronous and asynchronous interrupts have been added, and will be available as part of the upcoming 0.5.0 release.

from rppal.

golemparts avatar golemparts commented on May 24, 2024

Thanks for the suggestion, and the link. I agree that adding support for GPIO interrupts would be nice to have.

I've briefly looked into adding interrupts before, but only came across sysfs-based solutions. While I do have direct access to the relevant registers (GPEDSn), there doesn't seem to be a way to specify an ISR vector table, and polling the registers ends up causing the same issue you pointed out.

Regardless, it's still worth it to use the sysfs interface just for interrupts, and I'll add it to the to do list. I'm open to suggestions for a better solution though.

from rppal.

vandenoever avatar vandenoever commented on May 24, 2024

Perhaps you could use epoll.

https://github.com/rust-embedded/rust-sysfs-gpio/blob/master/src/lib.rs#L554

from rppal.

golemparts avatar golemparts commented on May 24, 2024

Yeah, using epoll to wait for sysfs changes is the plan. I would prefer more direct access though, but that doesn't currently seem possible in userspace.

from rppal.

braincore avatar braincore commented on May 24, 2024

Do you have plans to support level-triggered interrupts? As far as I can tell, only edge triggered is supported.

from rppal.

golemparts avatar golemparts commented on May 24, 2024

@braincore the interrupt code in the version of rppal currently in development uses the new /dev/gpiochipN interface through epoll, rather than the outdated sysfs interface used in previous versions. Since I don't specifically set the EPOLLET flag, in theory epoll should already be configured for level-triggered interrupts, but in reality it behaves like an edge trigger.

The BCM283x registers do have options to configure either level- or edge-triggered interrupts, but it's possible the userspace drivers don't support those. I'll look into what the drivers offer, and if it would make sense to build a level-triggered option in software instead.

from rppal.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.