Skip to content

Commit c40b5e6

Browse files
committed
uninstall ISR, clean-up
1 parent caf1ad6 commit c40b5e6

File tree

1 file changed

+8
-12
lines changed

1 file changed

+8
-12
lines changed

modules/pins/digital/monitor/pico/modMonitor.c

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,12 @@ void xs_digital_monitor_destructor(void *data)
6464

6565
// disable interrupt for this pin
6666
gpio_set_irq_enabled(monitor->pin, GPIO_IRQ_EDGE_FALL | GPIO_IRQ_EDGE_RISE, false);
67-
gpio_init(monitor->pin);
6867

6968
// remove ISR
70-
// if (NULL == gMonitors)
71-
// ETS_GPIO_INTR_DISABLE();
69+
if (NULL == gMonitors)
70+
gpio_set_irq_enabled_with_callback(monitor->pin, GPIO_IRQ_EDGE_FALL | GPIO_IRQ_EDGE_RISE, false, NULL);
71+
72+
gpio_init(monitor->pin);
7273

7374
modCriticalSectionEnd();
7475

@@ -134,7 +135,6 @@ void xs_digital_monitor(xsMachine *the)
134135

135136
// enable interrupt for this pin
136137
gpio_set_irq_enabled(monitor->pin, edge << 2, true); // shift to GPIO_IRQ_EDGE_FALL | GPIO_IRQ_EDGE_RISE
137-
138138
}
139139

140140
void xs_digital_monitor_close(xsMachine *the)
@@ -182,17 +182,13 @@ void gpioISR(uint gpio, uint32_t events)
182182
continue;
183183

184184
if (gpio_get(gpio)) {
185-
if (1 & walker->edge) {
185+
if (1 & walker->edge)
186186
walker->rises += 1;
187-
doUpdate = !walker->triggered;
188-
walker->triggered = true;
189-
}
190187
}
191-
else if (2 & walker->edge) {
188+
else if (2 & walker->edge)
192189
walker->falls += 1;
193-
doUpdate = !walker->triggered;
194-
walker->triggered = true;
195-
}
190+
doUpdate = !walker->triggered;
191+
walker->triggered = true;
196192
break;
197193
}
198194

0 commit comments

Comments
 (0)