summaryrefslogtreecommitdiff
path: root/src/stm/ao_arch.h
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2012-06-26 23:11:10 -0700
committerKeith Packard <keithp@keithp.com>2012-06-26 23:11:10 -0700
commitf1ae622eff60e05c1f5d8f822a3cf6a85750c6cc (patch)
tree9652e24ae8a4e56a47b463419356da356f7ade7f /src/stm/ao_arch.h
parent936ecad62596f34773afb7460b10f63df7d0896d (diff)
altos: Optimize FEC encode and decode
Integrate interleaving, CRC and padding within the decode/encode functions. Provide for ISR priorities so that the 1120 RX interrupt takes precedence over the other interrupts or we risk losing bits. Optimize the viterbi decoder a bit (goes from 10ms per packet to 7ms per packet). Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src/stm/ao_arch.h')
-rw-r--r--src/stm/ao_arch.h23
1 files changed, 18 insertions, 5 deletions
diff --git a/src/stm/ao_arch.h b/src/stm/ao_arch.h
index bbd1b3b1..30cd9ea5 100644
--- a/src/stm/ao_arch.h
+++ b/src/stm/ao_arch.h
@@ -25,7 +25,7 @@
* STM32L definitions and code fragments for AltOS
*/
-#define AO_STACK_SIZE 1024
+#define AO_STACK_SIZE 512
#define AO_LED_TYPE uint16_t
@@ -111,14 +111,22 @@ extern const uint16_t ao_serial_number;
uint32_t *sp; \
asm("mov %0,sp" : "=&r" (sp) ); \
ao_cur_task->sp = (sp); \
- if ((uint8_t *) sp < ao_cur_task->stack) \
+ if ((uint8_t *) sp < &ao_cur_task->stack[0]) \
ao_panic (AO_PANIC_STACK); \
} while (0)
-#define ao_arch_isr_stack() /* nothing */
+#if 0
+#define ao_arch_isr_stack() do { \
+ uint32_t *sp = (uint32_t *) 0x20004000; \
+ asm("mov %0,sp" : "=&r" (sp) ); \
+ } while (0)
+#else
+#define ao_arch_isr_stack()
+#endif
+
#define ao_arch_cpu_idle() do { \
- asm("wfi"); \
+ asm("wfi"); \
} while (0)
#define ao_arch_restore_stack() do { \
@@ -173,6 +181,11 @@ extern const uint16_t ao_serial_number;
#define AO_TIM91011_CLK (2 * AO_PCLK2)
#endif
+#define AO_STM_NVIC_HIGH_PRIORITY 4
+#define AO_STM_NVIC_CLOCK_PRIORITY 6
+#define AO_STM_NVIC_MED_PRIORITY 8
+#define AO_STM_NVIC_LOW_PRIORITY 10
+
void ao_lcd_stm_init(void);
void ao_lcd_font_init(void);
@@ -215,7 +228,7 @@ ao_serial3_pollchar(void);
void
ao_serial3_set_speed(uint8_t speed);
-extern uint32_t ao_radio_cal;
+extern const uint32_t ao_radio_cal;
void
ao_adc_init();