From d035db8df30e83b5ed83295d704491315462749a Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Wed, 5 Jun 2019 21:06:49 +0200 Subject: [PATCH 1/2] Use IRQ as pin --- RF12.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/RF12.cpp b/RF12.cpp index add7bc5f..4996a827 100644 --- a/RF12.cpp +++ b/RF12.cpp @@ -86,9 +86,9 @@ #define SPI_MOSI 5 // PA5, pin 8 #define SPI_SCK 6 // PA4, pin 9 -#elif defined(__AVR_ATmega32U4__) //Arduino Leonardo +#elif defined(__AVR_ATmega32U4__) //Arduino Leonardo, YUN -#define RFM_IRQ 0 // PD0, INT0, Digital3 +#define RFM_IRQ 2 // PD1, pin 19, INT1, Digital2 #define SS_DDR DDRB #define SS_PORT PORTB #define SS_BIT 6 // Dig10, PB6 @@ -294,7 +294,7 @@ uint16_t rf12_control(uint16_t cmd) { bitClear(PCICR, PCIE2); #endif #else - bitClear(EIMSK, INT0); + bitClear(EIMSK, INT1); #endif uint16_t r = rf12_xferSlow(cmd); #if PINCHG_IRQ @@ -306,7 +306,7 @@ uint16_t rf12_control(uint16_t cmd) { bitSet(PCICR, PCIE2); #endif #else - bitSet(EIMSK, INT0); + bitSet(EIMSK, INT1); #endif #else // ATtiny @@ -686,9 +686,9 @@ uint8_t rf12_initialize (uint8_t id, uint8_t band, uint8_t g, uint16_t f) { #endif #else if ((nodeid & NODE_ID) != 0) - attachInterrupt(0, rf12_interrupt, LOW); + attachInterrupt(digitalPinToInterrupt(RFM_IRQ), rf12_interrupt, LOW); else - detachInterrupt(0); + detachInterrupt(digitalPinToInterrupt(RFM_IRQ)); #endif return nodeid; From 5e6fb185a49583e9110e8e2cc2f453e7e9e147af Mon Sep 17 00:00:00 2001 From: Federico Briata Date: Fri, 15 Nov 2024 19:44:12 +0100 Subject: [PATCH 2/2] RF12.cpp - make external interrupt configurable --- RF12.cpp | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/RF12.cpp b/RF12.cpp index 4996a827..913739b4 100644 --- a/RF12.cpp +++ b/RF12.cpp @@ -53,6 +53,7 @@ #if defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1280__) #define RFM_IRQ 2 +#define RFM_INT INT0 #define SS_DDR DDRB #define SS_PORT PORTB #define SS_BIT 0 @@ -65,6 +66,7 @@ #elif defined(__AVR_ATmega644P__) #define RFM_IRQ 10 +#define RFM_INT INT0 #define SS_DDR DDRB #define SS_PORT PORTB #define SS_BIT 4 @@ -77,6 +79,7 @@ #elif defined(__AVR_ATtiny84__) || defined(__AVR_ATtiny44__) #define RFM_IRQ 2 +#define RFM_INT INT0 #define SS_DDR DDRB #define SS_PORT PORTB #define SS_BIT 1 @@ -86,12 +89,17 @@ #define SPI_MOSI 5 // PA5, pin 8 #define SPI_SCK 6 // PA4, pin 9 -#elif defined(__AVR_ATmega32U4__) //Arduino Leonardo, YUN +#elif defined(__AVR_ATmega32U4__) //Arduino Leonardo -#define RFM_IRQ 2 // PD1, pin 19, INT1, Digital2 +#define RFM_IRQ 0 // PD0, pin 18, INT0, Digital3 +#define RFM_INT INT0 +//#define RFM_IRQ 2 // PD1, pin 19, INT1, Digital2 +//#define RFM_INT INT1 +//#define RFM_IRQ 7 // PE6, INT4, Digital7 - Adafruit Feather M0 RFM96 +//#define RFM_INT INT4 #define SS_DDR DDRB #define SS_PORT PORTB -#define SS_BIT 6 // Dig10, PB6 +#define SS_BIT 6 // PB6, pin 30, Digital10 #define SPI_SS 10 // PB6, pin 30, Digital10 #define SPI_MISO 14 // PB3, pin 11, Digital14 @@ -102,6 +110,7 @@ // ATmega168, ATmega328, etc. #define RFM_IRQ 2 // 2=JeeNode, 18=JeeNode pin change +#define RFM_INT INT0 //#define RFM_IRQ 1 // PCINT1=JeeNode Block pin change #define SS_DDR DDRB #define SS_PORT PORTB @@ -294,7 +303,7 @@ uint16_t rf12_control(uint16_t cmd) { bitClear(PCICR, PCIE2); #endif #else - bitClear(EIMSK, INT1); + bitClear(EIMSK, RFM_INT); #endif uint16_t r = rf12_xferSlow(cmd); #if PINCHG_IRQ @@ -306,13 +315,13 @@ uint16_t rf12_control(uint16_t cmd) { bitSet(PCICR, PCIE2); #endif #else - bitSet(EIMSK, INT1); + bitSet(EIMSK, RFM_INT); #endif #else // ATtiny - bitClear(GIMSK, INT0); + bitClear(GIMSK, RFM_INT); uint16_t r = rf12_xferSlow(cmd); - bitSet(GIMSK, INT0); + bitSet(GIMSK, RFM_INT); #endif return r; }