From d81a19ef788f606ba04da78bf98e4b37d2e78cc3 Mon Sep 17 00:00:00 2001 From: Richard Meadows Date: Sat, 19 Dec 2015 21:30:02 +0000 Subject: [PATCH] 10 seconds pips for UBSEDS12 --- firmware/inc/pips.h | 5 ++--- firmware/src/main.c | 9 ++------- firmware/src/telemetry.c | 26 +++++++++++++++++++------- 3 files changed, 23 insertions(+), 17 deletions(-) diff --git a/firmware/inc/pips.h b/firmware/inc/pips.h index e8633da..6148cb1 100644 --- a/firmware/inc/pips.h +++ b/firmware/inc/pips.h @@ -30,9 +30,8 @@ */ #define PIPS_RATE 1 -#define PIPS_LENGTH_MS 50 +#define PIPS_LENGTH_MS 200 -#define PIPS_ON_FREQUENCY (1000 / PIPS_LENGTH_MS) -#define PIPS_OFF_FREQUENCY PIPS_RATE +#define PIPS_FREQUENCY (1000 / PIPS_LENGTH_MS) #endif /* PIPS_H */ diff --git a/firmware/src/main.c b/firmware/src/main.c index a5e535b..dab66d1 100644 --- a/firmware/src/main.c +++ b/firmware/src/main.c @@ -381,15 +381,12 @@ int main(void) } telemetry_trigger_flag = 0; - /* End pips */ - telemetry_stop(); + /* Pips */ + telemetry_start(TELEMETRY_PIPS, 10); while (telemetry_active()) { system_sleep(); } - /* Watchdog */ - //wdt_reset_count(); - /* Send the next packet */ output_telemetry_string(TELEMETRY_CONTESTIA); @@ -401,8 +398,6 @@ int main(void) /* aprs_trigger_flag = 0; */ - /* Pips */ - telemetry_start(TELEMETRY_PIPS, 0xFFFF); /* Measure XOSC against gps timepulse */ measure_xosc(XOSC_MEASURE_TIMEPULSE, xosc_measure_callback); diff --git a/firmware/src/telemetry.c b/firmware/src/telemetry.c index f74e129..faef119 100644 --- a/firmware/src/telemetry.c +++ b/firmware/src/telemetry.c @@ -123,6 +123,8 @@ float _si_temperature = 128.0; */ int32_t _aprs_frequency = 0; +uint32_t pips_tick; + /** * Returns 1 if we're currently outputting. */ @@ -153,7 +155,8 @@ int telemetry_start(enum telemetry_t type, int32_t length) { timer0_tick_init(RTTY_BITRATE); break; case TELEMETRY_PIPS: - timer0_tick_init(PIPS_OFF_FREQUENCY); + pips_tick = 0; + timer0_tick_init(PIPS_FREQUENCY); break; case TELEMETRY_APRS: timer0_tick_init(AX25_TICK_RATE); @@ -340,18 +343,27 @@ void telemetry_tick(void) { case TELEMETRY_PIPS: /* ---- ---- A pips mode! */ - if (!radio_on) { /* Turn on */ - /* Pips: Cw */ - si_trx_on(SI_MODEM_MOD_TYPE_CW, TELEMETRY_FREQUENCY, 1); radio_on = 1; - timer0_tick_frequency(PIPS_ON_FREQUENCY); + if (pips_tick == 0) { /* Turn on */ - } else { /* Turn off */ + if (!radio_on) { /* Turn on */ + /* Pips: Cw */ + si_trx_on(SI_MODEM_MOD_TYPE_CW, TELEMETRY_FREQUENCY, 1); radio_on = 1; + } + } else if (pips_tick == 1) { /* Turn off */ si_trx_off(); radio_on = 0; - timer0_tick_frequency(PIPS_OFF_FREQUENCY); + /* next pip */ telemetry_index++; + + /* Maybe finished */ if (is_telemetry_finished()) return; + + + } else if (pips_tick == PIPS_FREQUENCY-1) { + pips_tick = 0; break; } + pips_tick++; + break; } }