From 178d7c0aa32267ea71be2ccff146ea6ff990d7dc Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Thu, 4 May 2017 22:07:51 -0700 Subject: [PATCH] altos/telemini-v3.0: Add 'recovery mode' on PA14 (pin 6 on dbg header) Connect this pin to GND (pin 3) and TeleMini will come up with N0CALL at 434.550MHz using the original frequency calibration. Helps recover from accidental mis-configuration. Signed-off-by: Keith Packard --- src/telemini-v3.0/ao_pins.h | 7 +++++++ src/telemini-v3.0/ao_telemini.c | 17 +++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/telemini-v3.0/ao_pins.h b/src/telemini-v3.0/ao_pins.h index 0551e1fc..17cff2ae 100644 --- a/src/telemini-v3.0/ao_pins.h +++ b/src/telemini-v3.0/ao_pins.h @@ -67,6 +67,13 @@ #define HAS_IGNITE_REPORT 1 #define AO_SMALL_ALTITUDE_TABLE 1 +/* Use debug connector clock for recovery mode */ +#define HAS_FORCE_FREQ 1 +#define AO_RECOVERY_PORT (&stm_gpioa) +#define AO_RECOVERY_PIN 14 +#define AO_RECOVERY_VALUE 0 +#define AO_RECOVERY_MODE AO_EXTI_MODE_PULL_UP + /* Beeper is on Tim1 CH3 */ #define BEEPER_CHANNEL 4 #define BEEPER_TIMER 2 diff --git a/src/telemini-v3.0/ao_telemini.c b/src/telemini-v3.0/ao_telemini.c index ecd16dd2..a50268b9 100644 --- a/src/telemini-v3.0/ao_telemini.c +++ b/src/telemini-v3.0/ao_telemini.c @@ -19,9 +19,26 @@ #include #include +static void +ao_check_recovery(void) +{ + int i; + ao_enable_input(AO_RECOVERY_PORT, AO_RECOVERY_PIN, AO_RECOVERY_MODE); + for (i = 0; i < 100; i++) + ao_arch_nop(); + if (ao_gpio_get(AO_RECOVERY_PORT, AO_RECOVERY_PIN, AO_RECOVERY) == AO_RECOVERY_VALUE) { + ao_flight_force_idle = 1; + ao_force_freq = 1; + } + ao_gpio_set_mode(AO_RECOVERY_PORT, AO_RECOVERY_PIN, 0); + ao_disable_port(AO_RECOVERY_PORT); +} + void main(void) { + ao_check_recovery(); + ao_clock_init(); ao_task_init(); ao_timer_init(); -- 2.30.2