aboutsummaryrefslogtreecommitdiff
path: root/spaghetti-monster/fsm-main.c
diff options
context:
space:
mode:
authorSelene ToyKeeper2019-11-14 01:52:50 -0700
committerSelene ToyKeeper2019-11-14 01:52:50 -0700
commit8b59e880614455bd7bc7d8595de847dd6fe9b5b2 (patch)
treea7426296b9fa1471ba2841eba0415bbfaed3e5c7 /spaghetti-monster/fsm-main.c
parentfixed some compile issues related to delay_4ms() (diff)
downloadanduril-8b59e880614455bd7bc7d8595de847dd6fe9b5b2.tar.gz
anduril-8b59e880614455bd7bc7d8595de847dd6fe9b5b2.tar.bz2
anduril-8b59e880614455bd7bc7d8595de847dd6fe9b5b2.zip
refactored how interrupts work...
set a flag and return immediately, then handle the actual logic later during a less-critical code path Enables smarter responses to standby wakeups. Seems to fix missed button presses during standby, and most of the too-fast sleep ticks. Also eliminated waits from button state measurement, so it can happen easier during standby. (also eliminates the chance of an infinite loop on extra-noisy hardware) Also might improve timing-sensitive interrupts like attiny85 PWM channel 4, or a PWM-DSM hybrid technique I'd like to try. BUT this change also appears to break the thermal sensor, so that needs to be fixed.
Diffstat (limited to '')
-rw-r--r--spaghetti-monster/fsm-main.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/spaghetti-monster/fsm-main.c b/spaghetti-monster/fsm-main.c
index e537a9e..a898f41 100644
--- a/spaghetti-monster/fsm-main.c
+++ b/spaghetti-monster/fsm-main.c
@@ -160,6 +160,9 @@ int main() {
standby_mode();
}
+ // catch up on interrupts
+ handle_deferred_interrupts();
+
// give the recipe some time slices
loop();
@@ -168,4 +171,22 @@ int main() {
}
}
+
+void handle_deferred_interrupts() {
+ /*
+ if (irq_pcint) { // button pressed or released
+ // nothing to do here
+ // (PCINT only matters during standby)
+ }
+ */
+ if (irq_adc) { // ADC done measuring
+ ADC_inner();
+ // irq_adc = 0; // takes care of itself
+ }
+ if (irq_wdt) { // the clock ticked
+ WDT_inner();
+ // irq_wdt = 0; // takes care of itself
+ }
+}
+
#endif