Skip to content
Snippets Groups Projects
Commit e91c077a authored by Sebastian Meiling's avatar Sebastian Meiling Committed by GitHub
Browse files

Merge pull request #7303 from dailab/gpioIntFix

Gpio Interrupt fix for the CC2538
parents e7c434dc c4584aca
No related branches found
No related tags found
No related merge requests found
...@@ -98,7 +98,7 @@ int gpio_init_int(gpio_t pin, gpio_mode_t mode, gpio_flank_t flank, ...@@ -98,7 +98,7 @@ int gpio_init_int(gpio_t pin, gpio_mode_t mode, gpio_flank_t flank,
isr_ctx[port_num(pin)][pin_num(pin)].arg = arg; isr_ctx[port_num(pin)][pin_num(pin)].arg = arg;
/* enable power-up interrupts for this GPIO port: */ /* enable power-up interrupts for this GPIO port: */
SYS_CTRL->IWE |= port_num(pin); SYS_CTRL->IWE |= (1 << port_num(pin));
/* configure the active flank(s) */ /* configure the active flank(s) */
gpio(pin)->IS &= ~pin_mask(pin); gpio(pin)->IS &= ~pin_mask(pin);
...@@ -111,7 +111,7 @@ int gpio_init_int(gpio_t pin, gpio_mode_t mode, gpio_flank_t flank, ...@@ -111,7 +111,7 @@ int gpio_init_int(gpio_t pin, gpio_mode_t mode, gpio_flank_t flank,
case GPIO_RISING: case GPIO_RISING:
gpio(pin)->IBE &= ~pin_mask(pin); gpio(pin)->IBE &= ~pin_mask(pin);
gpio(pin)->IEV |= pin_mask(pin); gpio(pin)->IEV |= pin_mask(pin);
gpio(pin)->P_EDGE_CTRL &= (1 << pp_num(pin)); gpio(pin)->P_EDGE_CTRL &= ~(1 << pp_num(pin));
break; break;
case GPIO_BOTH: case GPIO_BOTH:
gpio(pin)->IBE |= pin_mask(pin); gpio(pin)->IBE |= pin_mask(pin);
...@@ -175,7 +175,7 @@ static inline void handle_isr(cc2538_gpio_t *gpio, int port_num) ...@@ -175,7 +175,7 @@ static inline void handle_isr(cc2538_gpio_t *gpio, int port_num)
{ {
uint32_t state = gpio->MIS; uint32_t state = gpio->MIS;
gpio->IC = 0x000000ff; gpio->IC = 0x000000ff;
gpio->IRQ_DETECT_ACK = 0x000000ff; gpio->IRQ_DETECT_ACK = (0xff << (port_num * GPIO_BITS_PER_PORT));
for (int i = 0; i < GPIO_BITS_PER_PORT; i++) { for (int i = 0; i < GPIO_BITS_PER_PORT; i++) {
if (state & (1 << i)) { if (state & (1 << i)) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment