diff options
| author | Keith Packard <keithp@keithp.com> | 2013-08-20 11:40:17 -0700 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2013-08-27 21:56:42 -0600 | 
| commit | 7b0f9b25a56fa8b4aa1c2e9d79c43e6a97cab0c0 (patch) | |
| tree | d6b0c692976bf8086c5fce18193a4624623d0835 /src/stm/ao_beep_stm.c | |
| parent | 3ded57394f6dfd7beb9526c031a5c6c6c9926917 (diff) | |
altos: Initial TeleMetrum v2.0 bits
Adds new telemetry and logging formats along with code for TeleMetrum
v2.0 design.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src/stm/ao_beep_stm.c')
| -rw-r--r-- | src/stm/ao_beep_stm.c | 48 | 
1 files changed, 44 insertions, 4 deletions
diff --git a/src/stm/ao_beep_stm.c b/src/stm/ao_beep_stm.c index 4761fbfc..a95d869b 100644 --- a/src/stm/ao_beep_stm.c +++ b/src/stm/ao_beep_stm.c @@ -17,6 +17,10 @@  #include "ao.h" +#ifndef BEEPER_CHANNEL +#define BEEPER_CHANNEL	1 +#endif +  void  ao_beep(uint8_t beep)  { @@ -56,6 +60,7 @@ ao_beep(uint8_t beep)  		 *  is enabled and active high.  		 */ +#if BEEPER_CHANNEL == 1  		stm_tim3.ccmr1 = ((0 << STM_TIM234_CCMR1_OC2CE) |  				  (STM_TIM234_CCMR1_OC2M_FROZEN << STM_TIM234_CCMR1_OC2M) |  				  (0 << STM_TIM234_CCMR1_OC2PE) | @@ -68,7 +73,6 @@ ao_beep(uint8_t beep)  				  (0 << STM_TIM234_CCMR1_OC1FE) |  				  (STM_TIM234_CCMR1_CC1S_OUTPUT << STM_TIM234_CCMR1_CC1S)); -  		stm_tim3.ccer = ((0 << STM_TIM234_CCER_CC4NP) |  				 (0 << STM_TIM234_CCER_CC4P) |  				 (0 << STM_TIM234_CCER_CC4E) | @@ -81,6 +85,33 @@ ao_beep(uint8_t beep)  				 (0 << STM_TIM234_CCER_CC1NP) |  				 (0 << STM_TIM234_CCER_CC1P) |  				 (1 << STM_TIM234_CCER_CC1E)); +#endif +#if BEEPER_CHANNEL == 4 +		stm_tim3.ccmr2 = ((0 << STM_TIM234_CCMR2_OC4CE) | +				  (STM_TIM234_CCMR2_OC4M_TOGGLE << STM_TIM234_CCMR2_OC4M) | +				  (0 << STM_TIM234_CCMR2_OC4PE) | +				  (0 << STM_TIM234_CCMR2_OC4FE) | +				  (STM_TIM234_CCMR2_CC4S_OUTPUT << STM_TIM234_CCMR2_CC4S) | + +				  (0 << STM_TIM234_CCMR2_OC3CE) | +				  (STM_TIM234_CCMR2_OC3M_FROZEN << STM_TIM234_CCMR2_OC3M) | +				  (0 << STM_TIM234_CCMR2_OC3PE) | +				  (0 << STM_TIM234_CCMR2_OC3FE) | +				  (STM_TIM234_CCMR2_CC3S_OUTPUT << STM_TIM234_CCMR2_CC3S)); + +		stm_tim3.ccer = ((0 << STM_TIM234_CCER_CC4NP) | +				 (0 << STM_TIM234_CCER_CC4P) | +				 (1 << STM_TIM234_CCER_CC4E) | +				 (0 << STM_TIM234_CCER_CC3NP) | +				 (0 << STM_TIM234_CCER_CC3P) | +				 (0 << STM_TIM234_CCER_CC3E) | +				 (0 << STM_TIM234_CCER_CC2NP) | +				 (0 << STM_TIM234_CCER_CC2P) | +				 (0 << STM_TIM234_CCER_CC2E) | +				 (0 << STM_TIM234_CCER_CC1NP) | +				 (0 << STM_TIM234_CCER_CC1P) | +				 (0 << STM_TIM234_CCER_CC1E)); +#endif  		/* 5. Enable the counter by setting the CEN bit in the TIMx_CR1 register. */ @@ -110,13 +141,22 @@ ao_beep_for(uint8_t beep, uint16_t ticks) __reentrant  void  ao_beep_init(void)  { -	/* Our beeper is on PC6, which is hooked to TIM3_CH1, -	 * which is on PC6 -	 */ +#if BEEPER_CHANNEL == 1 +	/* Our beeper is on PC6, which is hooked to TIM3_CH1. +	 */  	stm_rcc.ahbenr |= (1 << STM_RCC_AHBENR_GPIOCEN);  	stm_afr_set(&stm_gpioc, 6, STM_AFR_AF2); +#endif +#if BEEPER_CHANNEL == 4 + +	/* Our beeper is on PB1, which is hooked to TIM3_CH4. +	 */ +	stm_rcc.ahbenr |= (1 << STM_RCC_AHBENR_GPIOBEN); + +	stm_afr_set(&stm_gpiob, 1, STM_AFR_AF2); +#endif  	/* Leave the timer off until requested */  | 
