Skip to content

Commit fed3cd7

Browse files
authored
Merge pull request #2 from macsnoeren/main
Added ESP-IDF interrupt handling example in the README.md
2 parents 05e44c8 + da4f6b6 commit fed3cd7

File tree

1 file changed

+42
-1
lines changed

1 file changed

+42
-1
lines changed

README.md

+42-1
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ void loop() {
174174
}
175175
```
176176

177-
Example of interrupt based read
177+
Example of interrupt based read (Ardiuno based)
178178

179179
```C++
180180
bool interrupt = false;
@@ -210,6 +210,47 @@ void loop() {
210210
}
211211
```
212212

213+
Example of interrupt based read (ESP-IDF based)
214+
215+
```C++
216+
#define MCP2515_INT_PIN GPIO_NUM_2
217+
218+
bool interrupt = false;
219+
struct can_frame frame;
220+
221+
static void IRAM_ATTR gpioInterruptCan (void *args) {
222+
interrupt = true;
223+
}
224+
225+
void setup() {
226+
gpio_install_isr_service(0);
227+
228+
...
229+
230+
gpio_set_intr_type(MCP2515_INT_PIN, GPIO_INTR_NEGEDGE); // Falling edge
231+
gpio_isr_handler_add(MCP2515_INT_PIN, gpioInterruptCan, NULL);
232+
}
233+
234+
void loop() {
235+
if (interrupt) {
236+
interrupt = false;
237+
238+
uint8_t irq = mcp2515.getInterrupts();
239+
240+
if (irq & MCP2515::CANINTF_RX0IF) {
241+
if (mcp2515.readMessage(MCP2515::RXB0, &frame) == MCP2515::ERROR_OK) {
242+
// frame contains received from RXB0 message
243+
}
244+
}
245+
246+
if (irq & MCP2515::CANINTF_RX1IF) {
247+
if (mcp2515.readMessage(MCP2515::RXB1, &frame) == MCP2515::ERROR_OK) {
248+
// frame contains received from RXB1 message
249+
}
250+
}
251+
}
252+
}
253+
```
213254

214255
## Set Receive Mask and Filter
215256

0 commit comments

Comments
 (0)