Browse Source

Fix the way that we idle the tone_alarm pin so that the board defines what is the 'safe' state.

sbg
px4dev 12 years ago
parent
commit
74c62a131e
  1. 8
      apps/drivers/stm32/tone_alarm/tone_alarm.cpp
  2. 1
      nuttx/configs/px4fmu/include/board.h

8
apps/drivers/stm32/tone_alarm/tone_alarm.cpp

@ -494,7 +494,7 @@ ToneAlarm::init() @@ -494,7 +494,7 @@ ToneAlarm::init()
return ret;
/* configure the GPIO to the idle state */
stm32_configgpio(GPIO_TONE_ALARM);
stm32_configgpio(GPIO_TONE_ALARM_IDLE);
/* clock/power on our timer */
modifyreg32(STM32_RCC_APB1ENR, 0, TONE_ALARM_CLOCK_ENABLE);
@ -606,6 +606,8 @@ ToneAlarm::start_note(unsigned note) @@ -606,6 +606,8 @@ ToneAlarm::start_note(unsigned note)
rEGR = GTIM_EGR_UG; // force a reload of the period
rCCER |= TONE_CCER; // enable the output
// configure the GPIO to enable timer output
stm32_configgpio(GPIO_TONE_ALARM);
}
void
@ -616,10 +618,8 @@ ToneAlarm::stop_note() @@ -616,10 +618,8 @@ ToneAlarm::stop_note()
/*
* Make sure the GPIO is not driving the speaker.
*
* XXX this presumes PX4FMU and the onboard speaker driver FET.
*/
stm32_gpiowrite(GPIO_TONE_ALARM, 0);
stm32_configgpio(GPIO_TONE_ALARM_IDLE);
}
void

1
nuttx/configs/px4fmu/include/board.h

@ -326,6 +326,7 @@ @@ -326,6 +326,7 @@
*/
#define TONE_ALARM_TIMER 3 /* timer 3 */
#define TONE_ALARM_CHANNEL 3 /* channel 3 */
#define GPIO_TONE_ALARM_IDLE (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTC|GPIO_PIN8)
#define GPIO_TONE_ALARM (GPIO_ALT|GPIO_AF2|GPIO_SPEED_2MHz|GPIO_FLOAT|GPIO_PUSHPULL|GPIO_PORTC|GPIO_PIN8)
/************************************************************************************

Loading…
Cancel
Save