File tree 1 file changed +42
-1
lines changed
1 file changed +42
-1
lines changed Original file line number Diff line number Diff line change @@ -174,7 +174,7 @@ void loop() {
174
174
}
175
175
```
176
176
177
- Example of interrupt based read
177
+ Example of interrupt based read (Ardiuno based)
178
178
179
179
``` C++
180
180
bool interrupt = false ;
@@ -210,6 +210,47 @@ void loop() {
210
210
}
211
211
```
212
212
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
+ ```
213
254
214
255
## Set Receive Mask and Filter
215
256
You can’t perform that action at this time.
0 commit comments