|
|
@@ -84,11 +84,12 @@ static void MX_SPI1_Init(void);
|
|
|
|
|
|
/* Private user code ---------------------------------------------------------*/
|
|
|
/* USER CODE BEGIN 0 */
|
|
|
+#define MAX_SYSTICK 0xFFFFFFFF;
|
|
|
uint8_t data[64]; // tmp read buffer
|
|
|
uint8_t *dataUART; // pointee for rx_buffer
|
|
|
volatile uint8_t dataL;
|
|
|
volatile uint8_t dataI;
|
|
|
-volatile uint32_t uart_timeout;
|
|
|
+volatile uint32_t uart_timeout = MAX_SYSTICK;
|
|
|
|
|
|
volatile uint8_t icm_data_ready = 0;
|
|
|
//volatile uint8_t uart_data_ready = 0;
|
|
|
@@ -131,13 +132,12 @@ static inline uint8_t loop_callback() {
|
|
|
}
|
|
|
|
|
|
uint32_t ht = HAL_GetTick();
|
|
|
- //TODO toto opravit, ten timeout hned skoci do obsluhy
|
|
|
- if(uart_timeout + 2 > ht) {
|
|
|
+ // timemout: 1 - 2 ms
|
|
|
+ if(ht - 1 > uart_timeout) {
|
|
|
dataL = 0;
|
|
|
dataI = 0;
|
|
|
data[0] = 0;
|
|
|
- uart_timeout = 0;
|
|
|
-// HAL_GPIO_WritePin(LD3_GPIO_Port, LD3_Pin, GPIO_PIN_RESET);
|
|
|
+ uart_timeout = MAX_SYSTICK;
|
|
|
led_off();
|
|
|
HAL_UARTEx_ReceiveToIdle_DMA(&huart2, data, 64);
|
|
|
return 2; // UART receive timeout
|
|
|
@@ -155,7 +155,6 @@ void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size){
|
|
|
uart_timeout = HAL_GetTick();
|
|
|
dataL = data[0];
|
|
|
dataI = 0;
|
|
|
-// HAL_GPIO_TogglePin(LD3_GPIO_Port, LD3_Pin);
|
|
|
led_on();
|
|
|
if (Size == 1) {
|
|
|
return;
|
|
|
@@ -170,13 +169,12 @@ void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size){
|
|
|
|
|
|
dataI += Size;
|
|
|
if(dataI >= dataL){
|
|
|
-// HAL_GPIO_TogglePin(LD3_GPIO_Port, LD3_Pin);
|
|
|
led_off();
|
|
|
nbus_cb_UART_RX(dataI);
|
|
|
dataL=0;
|
|
|
dataI=0;
|
|
|
data[0]=0;
|
|
|
- uart_timeout = 0;
|
|
|
+ uart_timeout = MAX_SYSTICK;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
@@ -225,8 +223,6 @@ int main(void)
|
|
|
dataI=0;
|
|
|
dataL=0;
|
|
|
|
|
|
- HAL_UART_RegisterRxEventCallback(&huart2, HAL_UARTEx_RxEventCallback);
|
|
|
-
|
|
|
#ifdef MODULE_INIT_IP_ADC
|
|
|
MX_ADC_Init();
|
|
|
#endif
|