mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2024-12-01 09:24:10 +01:00
OP-1312 keep pulse timings low to have more margin to handle bus contentions and irq response time.
This commit is contained in:
parent
711c5ea79d
commit
8bbb56337b
@ -44,6 +44,11 @@
|
||||
#define PIOS_WS2811_PERIPHERALDATASIZE DMA_PeripheralDataSize_HalfWord
|
||||
#define PIOS_WS2811_TIM_PERIOD 20
|
||||
|
||||
// Following times are keept on the lower side to accounts
|
||||
// for bus contentions and irq response time
|
||||
#define PIOS_WS2811_T0_HIGH_PERIOD 25 // .35us +/- 150nS
|
||||
#define PIOS_WS2811_T1_HIGH_PERIOD 60 // .70us +/- 150nS
|
||||
|
||||
#define PIOS_WS2811_DMA_CH1_CONFIG(channel) \
|
||||
{ \
|
||||
.DMA_BufferSize = PIOS_WS2811_BUFFER_SIZE, \
|
||||
|
@ -215,10 +215,10 @@ void setupTimer()
|
||||
};
|
||||
|
||||
// (duty in ticks) / (period in ticks) * 1.25uS (period in S) = 0.40 uS
|
||||
oc.TIM_Pulse = 40 * PIOS_WS2811_TIM_PERIOD / 125;
|
||||
oc.TIM_Pulse = PIOS_WS2811_T0_HIGH_PERIOD * PIOS_WS2811_TIM_PERIOD / 125;
|
||||
genericTIM_OCxInit(pios_ws2811_cfg->timer, &oc, pios_ws2811_cfg->timerCh1);
|
||||
// (duty in ticks) / (period in ticks) * 1.25uS (period in S) = 0.80 uS
|
||||
oc.TIM_Pulse = 80 * PIOS_WS2811_TIM_PERIOD / 125;
|
||||
oc.TIM_Pulse = PIOS_WS2811_T1_HIGH_PERIOD * PIOS_WS2811_TIM_PERIOD / 125;
|
||||
genericTIM_OCxInit(pios_ws2811_cfg->timer, &oc, pios_ws2811_cfg->timerCh2);
|
||||
}
|
||||
|
||||
@ -337,7 +337,7 @@ void PIOS_WS2811_Update()
|
||||
|
||||
void PIOS_WS2811_DMA_irq_handler()
|
||||
{
|
||||
TIM_Cmd(pios_ws2811_cfg->timer, DISABLE);
|
||||
pios_ws2811_cfg->timer->CR1 &= (uint16_t) ~TIM_CR1_CEN;
|
||||
DMA_ClearFlag(pios_ws2811_cfg->streamCh1, pios_ws2811_cfg->irq.flags);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user