Comments (6)
Both synchronous and asynchronous interrupts have been added, and will be available as part of the upcoming 0.5.0 release.
from rppal.
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.
Perhaps you could use epoll.
https://github.com/rust-embedded/rust-sysfs-gpio/blob/master/src/lib.rs#L554
from rppal.
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.
Do you have plans to support level-triggered interrupts? As far as I can tell, only edge triggered is supported.
from rppal.
@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)
- Support 1 Wire protocol HOT 1
- PinNotAvailable(): how to drop and reinit pin? HOT 1
- `rppal::gpio::Error` should impl `Serialize`
- Reason for not supporting 10-bit i2c addressing HOT 1
- Error Compiling rppal v0.13.1 HOT 1
- Accessing GPIOs > 54 on BCM2711 causes errors
- Does rppal support non-blocking SPI? HOT 2
- Soft PWM broken in 0.14.0 - subtraction undeflow error HOT 1
- cargo check yields errors after adding to Cargo.toml HOT 3
- GPIO starts fluctating HOT 1
- Set multiple pins at once? HOT 2
- Interrupt service routines for Timers? HOT 1
- is there any clear or clean or cleanup method? HOT 3
- Wrong library. My mistake. HOT 1
- Raspberry Pi5 HOT 53
- Banana Pi M5 support HOT 2
- Support concurrent reading and writing via Uart
- Using rppal with embedded_hal_async (async support) HOT 8
- Hardware field removed from /proc/cpuinfo causing identification issues HOT 5
- GPIO `is_low` output differs from rppal v0.17.0 impl compared to embedded-hal v1 impl
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rppal.