From 0b54d9380f3a71b772747b1ed529d8fb89289b22 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 24 May 2011 15:10:01 -0600 Subject: altos: Make telescience reliably log only when told to Use a pull-up on telescience and tri-state input on telemetrum at boot time. Enable logging by pulling the TM output low and enabling as an output, disable by pulling the TM output high and switching back to input mode. Also, ignore pin state changes for 5 seconds at boot to give things a chance to settle down. Should work when both boards are powered up together. Signed-off-by: Keith Packard --- src/ao_flight.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/ao_flight.c b/src/ao_flight.c index cfecc5af..822a20b8 100644 --- a/src/ao_flight.c +++ b/src/ao_flight.c @@ -168,8 +168,9 @@ ao_flight(void) ao_wakeup(&ao_gps_data); ao_wakeup(&ao_gps_tracking_data); #endif -#ifdef ASCENT_PIN - ASCENT_PIN = 0; +#ifdef ASCENT_SIGNAL + ASCENT_SIGNAL = 0; + ASCENT_SIGNAL_DIR |= (1 << ASCENT_SIGNAL_PIN); #endif ao_wakeup(DATA_TO_XDATA(&ao_flight_state)); @@ -240,8 +241,9 @@ ao_flight(void) /* Turn the RDF beacon back on */ ao_rdf_set(1); -#ifdef ASCENT_PIN - ASCENT_PIN = 1; +#ifdef ASCENT_SIGNAL + ASCENT_SIGNAL_DIR &= ~(1 << ASCENT_SIGNAL_PIN); + ASCENT_SIGNAL = 0; #endif /* * Start recording min/max height @@ -320,9 +322,10 @@ void ao_flight_init(void) { #ifdef ASCENT_SIGNAL - ASCENT_SIGNAL = 1; - ASCENT_SIGNAL_DIR |= (1 << ASCENT_SIGNAL_PIN); ASCENT_SIGNAL_SEL &= ~(1 << ASCENT_SIGNAL_PIN); + ASCENT_SIGNAL_DIR &= ~(1 << ASCENT_SIGNAL_PIN); + P1INP |= (1 << ASCENT_SIGNAL_PIN); + ASCENT_SIGNAL = 1; #endif ao_flight_state = ao_flight_startup; ao_add_task(&flight_task, ao_flight, "flight"); -- cgit v1.2.3