File tree Expand file tree Collapse file tree 2 files changed +10
-8
lines changed
Expand file tree Collapse file tree 2 files changed +10
-8
lines changed Original file line number Diff line number Diff line change @@ -311,7 +311,7 @@ void enablePulsesExternalModule(uint8_t protocol)
311311#if defined(AFHDS3)
312312 case PROTOCOL_CHANNELS_AFHDS3:
313313 extmodulePulsesData.afhds3 .init (EXTERNAL_MODULE);
314- extmoduleSerialStart (/* AFHDS3_BAUDRATE, AFHDS3_COMMAND_TIMEOUT * 2000, false */ );
314+ extmoduleSerialStart ();
315315 mixerSchedulerSetPeriod (EXTERNAL_MODULE, AFHDS3_COMMAND_TIMEOUT * 1000 /* us */ );
316316 break ;
317317#endif
Original file line number Diff line number Diff line change @@ -325,19 +325,21 @@ void extmoduleSendNextFrame()
325325#if defined(EXTMODULE_USART) && defined(EXTMODULE_TX_INVERT_GPIO)
326326 extmoduleSendBuffer (extmodulePulsesData.afhds3 .getData (), extmodulePulsesData.afhds3 .getSize ());
327327#else
328+ if (EXTMODULE_TIMER_DMA_STREAM->CR & DMA_SxCR_EN)
329+ return ;
330+
328331 const uint16_t * dataPtr = extmodulePulsesData.afhds3 .getData ();
329332 uint32_t dataSize = extmodulePulsesData.afhds3 .getSize ();
330- // Peripheral data size
331- // we know that afdhds3 uses 2 byte values!
332- uint32_t dmaSize = (EXTMODULE_TIMER_DMA_SIZE & (DMA_SxCR_PSIZE_0 | DMA_SxCR_PSIZE_1)) | DMA_SxCR_MSIZE_0;
333-
334- EXTMODULE_TIMER->CCR2 = dataPtr[dataSize -1 ] - 4000 ; // 2mS in advance
335333 EXTMODULE_TIMER_DMA_STREAM->CR &= ~DMA_SxCR_EN; // Disable DMA
336- EXTMODULE_TIMER_DMA_STREAM->CR |= EXTMODULE_TIMER_DMA_CHANNEL | DMA_SxCR_DIR_0 | DMA_SxCR_MINC | dmaSize | DMA_SxCR_PL_0 | DMA_SxCR_PL_1;
334+ EXTMODULE_TIMER_DMA_STREAM->CR |= EXTMODULE_TIMER_DMA_CHANNEL | DMA_SxCR_DIR_0 | DMA_SxCR_MINC | DMA_SxCR_PSIZE_0 | DMA_SxCR_MSIZE_0 | DMA_SxCR_PL_0 | DMA_SxCR_PL_1;
337335 EXTMODULE_TIMER_DMA_STREAM->PAR = CONVERT_PTR_UINT (&EXTMODULE_TIMER->ARR );
338336 EXTMODULE_TIMER_DMA_STREAM->M0AR = CONVERT_PTR_UINT (dataPtr);
339- EXTMODULE_TIMER_DMA_STREAM->NDTR = ( uint32_t ) dataSize;
337+ EXTMODULE_TIMER_DMA_STREAM->NDTR = dataSize;
340338 EXTMODULE_TIMER_DMA_STREAM->CR |= DMA_SxCR_EN | DMA_SxCR_TCIE; // Enable DMA
339+
340+ // re-init timer
341+ EXTMODULE_TIMER->EGR = TIM_PSCReloadMode_Immediate;
342+ EXTMODULE_TIMER->CR1 |= TIM_CR1_CEN;
341343#endif
342344 }
343345 break ;
You can’t perform that action at this time.
0 commit comments