summaryrefslogtreecommitdiffstats
path: root/app/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'app/main.c')
-rw-r--r--app/main.c140
1 files changed, 92 insertions, 48 deletions
diff --git a/app/main.c b/app/main.c
index d5b5ec4..da5ffb8 100644
--- a/app/main.c
+++ b/app/main.c
@@ -17,37 +17,73 @@ void exti15_10_isr (void)
-static void cmd_dispatch (void)
+static void process_key (uint8_t c)
{
- uint8_t c;
- while (!ring_read_byte (&rx2_ring, &c)) {
+ static int unlocked;
+ static unsigned unlock_sm;
+ static uint8_t unlock[] = "unlock";
+
+ if (!unlocked) {
+ if (c == unlock[unlock_sm]) {
+ unlock_sm++;
+
+ if (!unlock[unlock_sm]) {
+ unlocked++;
+ printf ("Serial now unlocked\n");
+ }
- printf ("KEY> %c\r\n", c);
+ return;
- switch (c) {
- case 'R':
- scb_reset_system();
+ } else {
+ unlock_sm = 0;
+ printf ("serial locked type unlock to unlock\r\n");
+ return;
+ }
+ }
- break;
- case 'G':
- gps_reset();
- break;
+ printf ("KEY> %c\r\n", c);
+
+
+ switch (c) {
+ case 'R':
+ scb_reset_system();
+ break;
+
+ case 'G':
+ gps_reset();
+ break;
+
+ case 'I':
+ gps_bs();
+ break;
+
+ case 'A':
+ //gps_almanac();
+ gps_dump_almanac();
+ break;
+
+ case 'D':
+ break;
- case 'I':
- gps_bs();
- break;
- case 'A':
- //gps_almanac();
- gps_dump_almanac();
- break;
- }
}
}
+static void cmd_dispatch (void)
+{
+ uint8_t c;
+
+ while (!ring_read_byte (&usart2_rx_ring, &c))
+ process_key (c);
+
+ while (!ring_read_byte (&cdcacm_rx_ring, &c))
+ process_key (c);
+
+}
+
#if 0
static void pd_port (uint32_t p)
{
@@ -271,37 +307,20 @@ static void clock_setup (void)
#define REFCLK_OUT (GPIO8)
#define REFCLK_OUT_PORT GPIOA
-#define REFCLK_IN (GPIO7)
-#define REFCLK_IN_PORT GPIOE
static void timer_setup (void)
{
MAP_INPUT (REFCLK_OUT);
- MAP_INPUT (REFCLK_IN);
MAP_AF (REFCLK_OUT, GPIO_AF0);
- MAP_AF (REFCLK_IN, GPIO_AF1);
-
#if 0
- /* Divide by 2 to trigger TIM2 */
- timer_reset (TIM1);
- timer_set_mode (TIM1, TIM_CR1_CKD_CK_INT, TIM_CR1_CMS_EDGE, TIM_CR1_DIR_UP);
- timer_set_master_mode (TIM1, TIM_CR2_MMS_UPDATE);
- timer_set_period (TIM1, 1);
- timer_slave_set_filter (TIM1, TIM_SMCR_ETF_OFF);
- timer_slave_set_prescaler (TIM1, TIM_SMCR_ETPS_OFF);
- TIM1_SMCR |= TIM_SMCR_ECE;
- timer_enable_counter (TIM1);
+ /*Old scheme 10MHz -> TIM1 ETR -> TIM2 */
- timer_reset (TIM2);
- timer_set_mode (TIM2, TIM_CR1_CKD_CK_INT, TIM_CR1_CMS_EDGE, TIM_CR1_DIR_UP);
- timer_slave_set_filter (TIM2, TIM_SMCR_ETF_OFF); /*no filter*/
- timer_slave_set_prescaler (TIM2, TIM_SMCR_ETPS_OFF); /*no prescaler */
- timer_slave_set_polarity (TIM2, TIM_ET_RISING); /*rising edge */
- timer_slave_set_mode (TIM2, TIM_SMCR_SMS_ECM1); /*external clock mode 1*/
- timer_slave_set_trigger (TIM2, TIM_SMCR_TS_ITR0); /*clock from timer 1*/
- timer_enable_counter (TIM2);
-#endif
+#define REFCLK_IN (GPIO7)
+#define REFCLK_IN_PORT GPIOE
+
+ MAP_INPUT (REFCLK_IN);
+ MAP_AF (REFCLK_IN, GPIO_AF1);
@@ -338,6 +357,26 @@ static void timer_setup (void)
timer_slave_set_mode (TIM2, TIM_SMCR_SMS_ECM1); /*external clock mode 1*/
timer_slave_set_trigger (TIM2, TIM_SMCR_TS_ITR0); /*clock from timer 1*/
timer_enable_counter (TIM2);
+#else
+ /* New Scheme 10MHz -> TIM2_ETR */
+
+#define REFCLK_IN (GPIO15)
+#define REFCLK_IN_PORT GPIOA
+
+ MAP_INPUT (REFCLK_IN);
+ MAP_AF (REFCLK_IN, GPIO_AF1);
+
+
+ timer_reset (TIM2);
+ timer_set_mode (TIM2, TIM_CR1_CKD_CK_INT, TIM_CR1_CMS_EDGE, TIM_CR1_DIR_UP); /* count up with clock*/
+ timer_slave_set_filter (TIM2, TIM_SMCR_ETF_OFF); /*no filter*/
+ timer_slave_set_prescaler (TIM2, TIM_SMCR_ETPS_OFF); /*no prescaler */
+ timer_slave_set_polarity (TIM2, TIM_ET_RISING); /*rising edge */
+ timer_slave_set_mode (TIM2, TIM_SMCR_SMS_ECM1); /*external clock mode 1*/
+ timer_slave_set_trigger (TIM2, TIM_SMCR_TS_ETRF); /*Trigger from ETRF input */
+ timer_enable_counter (TIM2);
+#endif
+
}
@@ -412,12 +451,14 @@ system_init (void)
ptp_clock_start();
- max7219_init (1, 8);
-
+ max7219_init (1);
+ max7219_dispatch();
gps_init();
ntp_init();
+ adc_init();
+
}
@@ -435,8 +476,8 @@ main (void)
while (1) {
uint32_t now = HW_CLOCK_REG;
- uint64_t abs = abs_extend (now);
- EPOCH e = pll_decompose (abs);
+ uint64_t abs = ref_extend (now);
+ EPOCH e = ref_decompose (abs);
time_print_epoch ("TEST: ", e);
delay_ms (100);
}
@@ -449,8 +490,8 @@ main (void)
#if 0
{
uint32_t now = HW_CLOCK_REG;
- uint64_t abs = abs_extend (now);
- EPOCH e = pll_decompose (abs);
+ uint64_t abs = ref_extend (now);
+ EPOCH e = ref_decompose (abs);
time_print_epoch ("TEST: ", e);
delay_ms (100);
}
@@ -467,6 +508,9 @@ main (void)
dispatch_lwip();
max7219_dispatch();
+ adc_dispatch();
+
+ pll_check();
}