aboutsummaryrefslogtreecommitdiffstats
path: root/src/adccmds.c
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2017-10-11 22:16:02 -0400
committerKevin O'Connor <kevin@koconnor.net>2017-10-12 11:59:27 -0400
commitd03cf2b83f9df6b802af72860d8d3b56df89956f (patch)
treeb9f61292f67fcf0548eaa8f5b3a7c491290689fd /src/adccmds.c
parent744c6d114e3681a2e8cfcd4475424a7d19774d52 (diff)
downloadkutter-d03cf2b83f9df6b802af72860d8d3b56df89956f.tar.gz
kutter-d03cf2b83f9df6b802af72860d8d3b56df89956f.tar.xz
kutter-d03cf2b83f9df6b802af72860d8d3b56df89956f.zip
adccmds: Continue to query analog inputs after a shutdown
Continue to sample the ADC input pins even if the MCU goes into a shutdown state. This enables the printer to continue reporting temperatures even on an mcu error. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'src/adccmds.c')
-rw-r--r--src/adccmds.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/adccmds.c b/src/adccmds.c
index d95ad282..41247a54 100644
--- a/src/adccmds.c
+++ b/src/adccmds.c
@@ -43,7 +43,7 @@ analog_in_event(struct timer *timer)
return SF_RESCHEDULE;
}
if (a->value < a->min_value || a->value > a->max_value)
- shutdown("ADC out of range");
+ try_shutdown("ADC out of range");
sched_wake_task(&analog_wake);
a->next_begin_time += a->rest_time;
a->timer.waketime = a->next_begin_time;
@@ -115,6 +115,12 @@ analog_in_shutdown(void)
struct analog_in *a;
foreach_oid(i, a, command_config_analog_in) {
gpio_adc_cancel_sample(a->pin);
+ if (a->sample_count) {
+ a->state = a->sample_count + 1;
+ a->next_begin_time += a->rest_time;
+ a->timer.waketime = a->next_begin_time;
+ sched_add_timer(&a->timer);
+ }
}
}
DECL_SHUTDOWN(analog_in_shutdown);