]> git.leonardobizzoni.com Git - pioneer-stm32/commitdiff
fix rx bug
authorFederica Di Lauro <federicadilauro1998@gmail.com>
Thu, 12 Mar 2020 15:37:32 +0000 (16:37 +0100)
committerFederica Di Lauro <federicadilauro1998@gmail.com>
Thu, 12 Mar 2020 15:37:32 +0000 (16:37 +0100)
otto_controller/Core/Src/main.cpp
otto_controller/Core/Src/usart.c
otto_controller/otto_controller.ioc
utils/catkin_ws/launch/serial_bridge.launch

index cd22b809edeaa7aee0b9e7a0bd66cfac42d411a1..a5bdc7c4fd7b2dad130c5081720aa650440e193a 100644 (file)
@@ -114,6 +114,7 @@ ConfigCommand config_cmd;
 int otto_status = 0;\r
 \r
 int test = 0;\r
+int error = 0;\r
 \r
 /* USER CODE END PV */\r
 \r
@@ -195,6 +196,8 @@ int main(void)
   VelocityCommand_size);\r
 \r
   /* USER CODE END 2 */\r
\r
\r
 \r
   /* Infinite loop */\r
   /* USER CODE BEGIN WHILE */\r
@@ -358,6 +361,12 @@ void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle) {
   VelocityCommand_size);\r
 }\r
 \r
+void HAL_UART_ErrorCallback(UART_HandleTypeDef *UartHandle){\r
+  error++;\r
+  HAL_UART_Receive_DMA(&huart6, (uint8_t*) &proto_buffer_rx,\r
+    VelocityCommand_size);\r
+}\r
+\r
 void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {\r
   //Blue user button on the NUCLEO board\r
   if (GPIO_Pin == user_button_Pin) {\r
index 3217f9a67b37c8f0f6c748f69cc0fcac5b867229..f5a299373c3fc56581bf479378dc616dfd708768 100644 (file)
@@ -42,7 +42,8 @@ void MX_USART6_UART_Init(void)
   huart6.Init.HwFlowCtl = UART_HWCONTROL_RTS;\r
   huart6.Init.OverSampling = UART_OVERSAMPLING_16;\r
   huart6.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;\r
-  huart6.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;\r
+  huart6.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_DMADISABLEONERROR_INIT;\r
+  huart6.AdvancedInit.DMADisableonRxError = UART_ADVFEATURE_DMA_DISABLEONRXERROR;\r
   if (HAL_UART_Init(&huart6) != HAL_OK)\r
   {\r
     Error_Handler();\r
@@ -92,7 +93,7 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
     hdma_usart6_tx.Init.MemInc = DMA_MINC_ENABLE;\r
     hdma_usart6_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;\r
     hdma_usart6_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;\r
-    hdma_usart6_tx.Init.Mode = DMA_NORMAL;\r
+    hdma_usart6_tx.Init.Mode = DMA_CIRCULAR;\r
     hdma_usart6_tx.Init.Priority = DMA_PRIORITY_LOW;\r
     hdma_usart6_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;\r
     if (HAL_DMA_Init(&hdma_usart6_tx) != HAL_OK)\r
@@ -110,7 +111,7 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
     hdma_usart6_rx.Init.MemInc = DMA_MINC_ENABLE;\r
     hdma_usart6_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;\r
     hdma_usart6_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;\r
-    hdma_usart6_rx.Init.Mode = DMA_NORMAL;\r
+    hdma_usart6_rx.Init.Mode = DMA_CIRCULAR;\r
     hdma_usart6_rx.Init.Priority = DMA_PRIORITY_LOW;\r
     hdma_usart6_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;\r
     if (HAL_DMA_Init(&hdma_usart6_rx) != HAL_OK)\r
index 337ab1d9460fd10d266abc85c605bd6b8bd98310..dbdd3dbf885ecb47c014b5a59ecb35b3a1aeb252 100644 (file)
@@ -7,7 +7,7 @@ Dma.USART6_RX.1.FIFOMode=DMA_FIFOMODE_DISABLE
 Dma.USART6_RX.1.Instance=DMA2_Stream1
 Dma.USART6_RX.1.MemDataAlignment=DMA_MDATAALIGN_BYTE
 Dma.USART6_RX.1.MemInc=DMA_MINC_ENABLE
-Dma.USART6_RX.1.Mode=DMA_NORMAL
+Dma.USART6_RX.1.Mode=DMA_CIRCULAR
 Dma.USART6_RX.1.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
 Dma.USART6_RX.1.PeriphInc=DMA_PINC_DISABLE
 Dma.USART6_RX.1.Priority=DMA_PRIORITY_LOW
@@ -17,7 +17,7 @@ Dma.USART6_TX.0.FIFOMode=DMA_FIFOMODE_DISABLE
 Dma.USART6_TX.0.Instance=DMA2_Stream6
 Dma.USART6_TX.0.MemDataAlignment=DMA_MDATAALIGN_BYTE
 Dma.USART6_TX.0.MemInc=DMA_MINC_ENABLE
-Dma.USART6_TX.0.Mode=DMA_NORMAL
+Dma.USART6_TX.0.Mode=DMA_CIRCULAR
 Dma.USART6_TX.0.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
 Dma.USART6_TX.0.PeriphInc=DMA_PINC_DISABLE
 Dma.USART6_TX.0.Priority=DMA_PRIORITY_LOW
@@ -166,7 +166,7 @@ PF15.Signal=GPIO_Output
 PG8.Mode=RTS_Only
 PG8.Signal=USART6_RTS
 PinOutPanel.RotationAngle=0
-ProjectManager.AskForMigrate=true
+ProjectManager.AskForMigrate=false
 ProjectManager.BackupPrevious=false
 ProjectManager.CompilerOptimize=6
 ProjectManager.ComputerToolchain=false
@@ -259,7 +259,8 @@ TIM6.IPParameters=Prescaler,Period
 TIM6.Period=159
 TIM6.Prescaler=9999
 USART6.BaudRate=9600
-USART6.IPParameters=VirtualMode-Asynchronous,WordLength,Parity,BaudRate
+USART6.DMADisableonRxErrorParam=ADVFEATURE_DMA_DISABLEONRXERROR
+USART6.IPParameters=VirtualMode-Asynchronous,WordLength,Parity,BaudRate,DMADisableonRxErrorParam
 USART6.Parity=PARITY_NONE
 USART6.VirtualMode-Asynchronous=VM_ASYNC
 USART6.WordLength=WORDLENGTH_8B
@@ -272,4 +273,3 @@ VP_TIM4_VS_ClockSourceINT.Signal=TIM4_VS_ClockSourceINT
 VP_TIM6_VS_ClockSourceINT.Mode=Enable_Timer
 VP_TIM6_VS_ClockSourceINT.Signal=TIM6_VS_ClockSourceINT
 board=custom
-isbadioc=false
index 71462a007443683e2c299a68f97bda98e823df73..2d00cb6e41bee986eb7f9e2d3f102773ac4d0cd0 100644 (file)
@@ -4,8 +4,8 @@
   <node name="serial_receiver" pkg="serial_bridge" type="serial_receiver.py"/>
   
   <!-- Node used to slow down /cmd_vel transmission to 10Hz -->
-  <node name="cmd_vel_throttler" type="throttle" pkg="topic_tools" 
-    args="messages /cmd_vel 20 /cmd_vel_throttled" />
+  <!-- <node name="cmd_vel_throttler" type="throttle" pkg="topic_tools" 
+        args="messages /cmd_vel 10000 /cmd_vel_throttled" /> -->
   
   <!-- Serial port -->  
   <param name="serial_port" value="/dev/ttyUSB0"/>