Move clock sync logic to separate files

This commit is contained in:
jazzpi 2022-08-01 08:17:43 +02:00
parent 372d07af84
commit bd9d86b168
5 changed files with 37 additions and 4 deletions

View File

@ -21,7 +21,7 @@
#define SLAVE_STATUS_BASE_ADDRESS 0x600 #define SLAVE_STATUS_BASE_ADDRESS 0x600
#define SLAVE_CMD_BASE_ADDRESS 0x500 // #define SLAVE_CMD_BASE_ADDRESS 0x500 //
#define SLAVE_EMERGENCY_ADDRESS 0x001 // Emergency Frame #define SLAVE_EMERGENCY_ADDRESS 0x001 // Emergency Frame
#define TIME_SYNC_ADDRESS 0x002 #define CLOCK_SYNC_ADDRESS 0x002
typedef struct { typedef struct {
int16_t FrameID; int16_t FrameID;

11
Core/Inc/Clock_Sync.h Normal file
View File

@ -0,0 +1,11 @@
#ifndef INC_CLOCK_SYNC_H_
#define INC_CLOCK_SYNC_H_
#include "stm32g4xx_hal.h"
#include "stm32g4xx_hal_fdcan.h"
void clock_sync_init(FDCAN_HandleTypeDef* can, TIM_HandleTypeDef* timer);
void clock_sync_handle_timer_complete();
#endif // INC_CLOCK_SYNC_H_

20
Core/Src/Clock_Sync.c Normal file
View File

@ -0,0 +1,20 @@
#include "Clock_Sync.h"
#include "CAN_Communication.h"
#include "stm32g4xx_hal_fdcan.h"
#include "stm32g4xx_hal_tim.h"
static FDCAN_HandleTypeDef* can;
static TIM_HandleTypeDef* timer;
void clock_sync_init(FDCAN_HandleTypeDef* can_handle,
TIM_HandleTypeDef* timer_handle) {
can = can_handle;
timer = timer_handle;
HAL_TIM_Base_Start_IT(timer);
}
void clock_sync_handle_timer_complete() {
CAN_Transmit(can, CLOCK_SYNC_ADDRESS, NULL, 0);
}

View File

@ -25,6 +25,7 @@
#include "AIR_State_Maschine.h" #include "AIR_State_Maschine.h"
#include "AMS_Errorcodes.h" #include "AMS_Errorcodes.h"
#include "CAN_Communication.h" #include "CAN_Communication.h"
#include "Clock_Sync.h"
#include "Error_Check.h" #include "Error_Check.h"
#include "SPI_Slave_Communication.h" #include "SPI_Slave_Communication.h"
#include "Slave_Monitoring.h" #include "Slave_Monitoring.h"
@ -75,7 +76,7 @@ void setAMSError(void);
/* USER CODE BEGIN 0 */ /* USER CODE BEGIN 0 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef* htim) { void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef* htim) {
if (htim == &htim1) { if (htim == &htim1) {
CAN_Transmit(&hfdcan1, TIME_SYNC_ADDRESS, NULL, 0); clock_sync_handle_timer_complete();
} }
} }
@ -119,11 +120,11 @@ int main(void) {
/* USER CODE BEGIN 2 */ /* USER CODE BEGIN 2 */
airstates = init_AIR_State_Maschine(); airstates = init_AIR_State_Maschine();
initSlaves();
set_SPI_errorInfo(&defaulterrorhandle); set_SPI_errorInfo(&defaulterrorhandle);
spi_communication_init(&hspi1, &airstates); spi_communication_init(&hspi1, &airstates);
CAN_Init(&hfdcan1); CAN_Init(&hfdcan1);
HAL_TIM_Base_Start_IT(&htim1); clock_sync_init(&hfdcan1, &htim1);
initSlaves();
HAL_GPIO_WritePin(Status_LED_GPIO_Port, Status_LED_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(Status_LED_GPIO_Port, Status_LED_Pin, GPIO_PIN_SET);
// setAMSError(); // setAMSError();

View File

@ -38,6 +38,7 @@ BUILD_DIR = build
C_SOURCES = \ C_SOURCES = \
Core/Src/AIR_State_Maschine.c \ Core/Src/AIR_State_Maschine.c \
Core/Src/CAN_Communication.c \ Core/Src/CAN_Communication.c \
Core/Src/Clock_Sync.c \
Core/Src/Error_Check.c \ Core/Src/Error_Check.c \
Core/Src/SPI_Slave_Communication.c \ Core/Src/SPI_Slave_Communication.c \
Core/Src/Slave_Monitoring.c \ Core/Src/Slave_Monitoring.c \