diff --git a/df_datalink_ge/src/main.c b/df_datalink_ge/src/main.c index 11e54bc..1314333 100644 --- a/df_datalink_ge/src/main.c +++ b/df_datalink_ge/src/main.c @@ -107,7 +107,7 @@ static PHY_CONFIG phyConfig = { .hwXadcId = PHY_HW_XADC_DEVICE_ID }; -TIMECTRL_CONFIG tmcConfig = { +TMC_CONFIG tmcConfig = { .baseAddr = 0, //TIME_CONTROLLER_BASEADDR, .reset = 10 }; @@ -122,7 +122,7 @@ static struct irq_ctrl_desc *intcDescPtr; // General interrupt controller descri static struct timer_desc *logTmPtr; static SYSBUS *sysbusDescPtr; static PHY_INST *phyInstPtr; -static TIMECTRL_INST *tmcInstPtr = NULL; +static TMC_INST *tmcInstPtr = NULL; static L2_INST *linkInstPtr; /****************************************************************************/ diff --git a/df_datalink_sp/src/main.c b/df_datalink_sp/src/main.c index 81d7d0c..2f7c88a 100644 --- a/df_datalink_sp/src/main.c +++ b/df_datalink_sp/src/main.c @@ -103,7 +103,7 @@ static PHY_CONFIG phyConfig = { .hwXadcId = PHY_HW_XADC_DEVICE_ID }; -TIMECTRL_CONFIG tmcConfig = { +TMC_CONFIG tmcConfig = { .baseAddr = 0, //TIME_CONTROLLER_BASEADDR, .reset = 10 }; @@ -118,7 +118,7 @@ static struct irq_ctrl_desc *intcDescPtr; // General interrupt controller descri static struct timer_desc *logTmPtr; static SYSBUS *sysbusDescPtr; static PHY_INST *phyInstPtr; -static TIMECTRL_INST *tmcInstPtr = NULL; +static TMC_INST *tmcInstPtr = NULL; static L2_INST *linkInstPtr; static struct hmc7044_dev *hmc7044_inst; diff --git a/df_datalink_sp/src/time_ctrl/time_ctrl.c b/df_datalink_sp/src/time_ctrl/time_ctrl.c index ea0f277..71aa5ae 100644 --- a/df_datalink_sp/src/time_ctrl/time_ctrl.c +++ b/df_datalink_sp/src/time_ctrl/time_ctrl.c @@ -51,12 +51,12 @@ * FAILURE Initialization failed * ******************************************************************************/ -int32_t TimeCtrl_Init(TIMECTRL_INST **instPtr, TIMECTRL_CONFIG *config) +int32_t TimeCtrl_Init(TMC_INST **instPtr, TMC_CONFIG *config) { ASSERT(config != NULL); ASSERT(instPtr != NULL); - (*instPtr) = malloc(sizeof(TIMECTRL_INST)); - memcpy(&((*instPtr)->config), config, sizeof(TIMECTRL_CONFIG)); + (*instPtr) = malloc(sizeof(TMC_INST)); + memcpy(&((*instPtr)->config), config, sizeof(TMC_CONFIG)); (*instPtr)->modelVer = TMC_Read((*instPtr), VERSION_REG); return SUCCESS; } @@ -70,7 +70,7 @@ int32_t TimeCtrl_Init(TIMECTRL_INST **instPtr, TIMECTRL_CONFIG *config) * @return NONE * ******************************************************************************/ -void TimeCtrl_Destroy(TIMECTRL_INST *instPtr) +void TimeCtrl_Destroy(TMC_INST *instPtr) { free(instPtr); } @@ -84,7 +84,7 @@ void TimeCtrl_Destroy(TIMECTRL_INST *instPtr) * @return timer controller version. * ******************************************************************************/ -uint32_t TimeCtrl_GetVersion(TIMECTRL_INST *instPtr) +uint32_t TimeCtrl_GetVersion(TMC_INST *instPtr) { ASSERT(instPtr != NULL); return TMC_Read(instPtr, VERSION_REG); @@ -100,7 +100,7 @@ uint32_t TimeCtrl_GetVersion(TIMECTRL_INST *instPtr) * FAILURE Initialization failed * ******************************************************************************/ -void TimeCtrl_Reset(TIMECTRL_INST *instPtr) +void TimeCtrl_Reset(TMC_INST *instPtr) { ASSERT(instPtr != NULL); TMC_Write(instPtr, CNTSTEP_OPT, TM_RESET_CODE); @@ -115,7 +115,7 @@ void TimeCtrl_Reset(TIMECTRL_INST *instPtr) * @return NONE * ******************************************************************************/ -void TimeCtrl_ResetHigh(TIMECTRL_INST *instPtr) +void TimeCtrl_ResetHigh(TMC_INST *instPtr) { ASSERT(instPtr != NULL); // TODO: @@ -130,7 +130,7 @@ void TimeCtrl_ResetHigh(TIMECTRL_INST *instPtr) * @return NONE * ******************************************************************************/ -void TimeCtrl_ResetLow(TIMECTRL_INST *instPtr) +void TimeCtrl_ResetLow(TMC_INST *instPtr) { ASSERT(instPtr != NULL); // TODO: @@ -145,7 +145,7 @@ void TimeCtrl_ResetLow(TIMECTRL_INST *instPtr) * @return integer value * ******************************************************************************/ -inline TIME_INT TimeCtrl_GetIntCnt(TIMECTRL_INST *instPtr) +inline TIME_INT TimeCtrl_GetIntCnt(TMC_INST *instPtr) { ASSERT(instPtr != NULL); return TMC_Read(instPtr, TIME_INT_REG); @@ -160,7 +160,7 @@ inline TIME_INT TimeCtrl_GetIntCnt(TIMECTRL_INST *instPtr) * @return fractional value * ******************************************************************************/ -inline TIME_FRAC TimeCtrl_GetFracCnt(TIMECTRL_INST *instPtr) +inline TIME_FRAC TimeCtrl_GetFracCnt(TMC_INST *instPtr) { ASSERT(instPtr != NULL); return TMC_Read(instPtr, TIME_FRAC_REG); @@ -176,7 +176,7 @@ inline TIME_FRAC TimeCtrl_GetFracCnt(TIMECTRL_INST *instPtr) * @return NONE * ******************************************************************************/ -void TimeCtrl_GetCurrentTime(TIMECTRL_INST *instPtr, TIME_WORD *tmWord) +void TimeCtrl_GetCurrentTime(TMC_INST *instPtr, TIME_WORD *tmWord) { ASSERT(instPtr != NULL); ASSERT(tmWord != NULL); @@ -194,7 +194,7 @@ void TimeCtrl_GetCurrentTime(TIMECTRL_INST *instPtr, TIME_WORD *tmWord) * @return NONE. * ******************************************************************************/ -void TimeCtrl_GetCurrentStep(TIMECTRL_INST *instPtr, TIME_FRAC *tmFrac) +void TimeCtrl_GetCurrentStep(TMC_INST *instPtr, TIME_FRAC *tmFrac) { ASSERT(instPtr != NULL); ASSERT(tmFrac != NULL); @@ -212,7 +212,7 @@ void TimeCtrl_GetCurrentStep(TIMECTRL_INST *instPtr, TIME_FRAC *tmFrac) * @return NONE. * ******************************************************************************/ -void TimeCtrl_TimeAdjust(TIMECTRL_INST *instPtr, const TIME_WORD *tmWord, TIMECTRL_ADJ_TYPE type) +void TimeCtrl_TimeAdjust(TMC_INST *instPtr, const TIME_WORD *tmWord, TIMECTRL_ADJ_TYPE type) { ASSERT(instPtr != NULL); ASSERT(tmWord != NULL); @@ -231,6 +231,28 @@ void TimeCtrl_TimeAdjust(TIMECTRL_INST *instPtr, const TIME_WORD *tmWord, TIMECT TMC_Write(instPtr, TIME_ADJ_INT, tmWord->int_part); TMC_Write(instPtr, TIME_ADJ_MODE, type); TMC_Write(instPtr, TIME_ADJ_TRIG, type); + +#ifdef EMULATION + uint32_t regFrac, regInt; + switch (type) + { + case TM_ADJ_ADD: + regFrac = TMC_Read(instPtr, TIME_FRAC_REG) + tmWord->frac_part; + regInt = TMC_Read(instPtr, TIME_INT_REG) + tmWord->int_part; + regInt += regFrac / TIME_FRAC_MAX; + regFrac %= TIME_FRAC_MAX; + + TMC_Write(instPtr, TIME_FRAC_REG, regFrac); + TMC_Write(instPtr, TIME_INT_REG, regInt); + break; + case TM_ADJ_SET: + TMC_Write(instPtr, TIME_FRAC_REG, tmWord->frac_part); + TMC_Write(instPtr, TIME_INT_REG, tmWord->int_part); + break; + default: + break; + } +#endif } /*****************************************************************************/ @@ -243,7 +265,7 @@ void TimeCtrl_TimeAdjust(TIMECTRL_INST *instPtr, const TIME_WORD *tmWord, TIMECT * @return NONE. * ******************************************************************************/ -void TimeCtrl_SetOptimizeStep(TIMECTRL_INST *instPtr, TIME_FRAC *tmFrac) +void TimeCtrl_SetOptimizeStep(TMC_INST *instPtr, TIME_FRAC *tmFrac) { ASSERT(instPtr != NULL); ASSERT(tmFrac != NULL); diff --git a/df_datalink_sp/src/time_ctrl/time_ctrl.h b/df_datalink_sp/src/time_ctrl/time_ctrl.h index 6d94f52..7b529b3 100644 --- a/df_datalink_sp/src/time_ctrl/time_ctrl.h +++ b/df_datalink_sp/src/time_ctrl/time_ctrl.h @@ -45,30 +45,30 @@ typedef struct { uintptr_t baseAddr; uint32_t reset; // time for reset (unit: us) -} TIMECTRL_CONFIG; +} TMC_CONFIG; typedef struct { - TIMECTRL_CONFIG config; + TMC_CONFIG config; uint32_t modelVer; -} TIMECTRL_INST; +} TMC_INST; /************************** Function Prototypes ******************************/ -int32_t TimeCtrl_Init(TIMECTRL_INST **instPtr, TIMECTRL_CONFIG *config); -uint32_t TimeCtrl_GetVersion(TIMECTRL_INST *instPtr); -void TimeCtrl_Destroy(TIMECTRL_INST *instPtr); -void TimeCtrl_Reset(TIMECTRL_INST *instPtr); -void TimeCtrl_ResetLow(TIMECTRL_INST *instPtr); -void TimeCtrl_ResetHigh(TIMECTRL_INST *instPtr); +int32_t TimeCtrl_Init(TMC_INST **instPtr, TMC_CONFIG *config); +uint32_t TimeCtrl_GetVersion(TMC_INST *instPtr); +void TimeCtrl_Destroy(TMC_INST *instPtr); +void TimeCtrl_Reset(TMC_INST *instPtr); +void TimeCtrl_ResetLow(TMC_INST *instPtr); +void TimeCtrl_ResetHigh(TMC_INST *instPtr); -TIME_INT TimeCtrl_GetIntCnt(TIMECTRL_INST *instPtr); -TIME_FRAC TimeCtrl_GetFracCnt(TIMECTRL_INST *instPtr); +TIME_INT TimeCtrl_GetIntCnt(TMC_INST *instPtr); +TIME_FRAC TimeCtrl_GetFracCnt(TMC_INST *instPtr); -void TimeCtrl_GetCurrentTime(TIMECTRL_INST *instPtr, TIME_WORD *tmWord); -void TimeCtrl_GetCurrentStep(TIMECTRL_INST *instPtr, TIME_FRAC *tmFrac); +void TimeCtrl_GetCurrentTime(TMC_INST *instPtr, TIME_WORD *tmWord); +void TimeCtrl_GetCurrentStep(TMC_INST *instPtr, TIME_FRAC *tmFrac); -void TimeCtrl_SetOptimizeStep(TIMECTRL_INST *instPtr, TIME_FRAC *tmFrac); -void TimeCtrl_TimeAdjust(TIMECTRL_INST *instPtr, const TIME_WORD *tmWord, TIMECTRL_ADJ_TYPE type); +void TimeCtrl_SetOptimizeStep(TMC_INST *instPtr, TIME_FRAC *tmFrac); +void TimeCtrl_TimeAdjust(TMC_INST *instPtr, const TIME_WORD *tmWord, TIMECTRL_ADJ_TYPE type); void TimeCtrl_CalculateTimeGap(const TIME_WORD *a, const TIME_WORD *b, TIME_WORD *gap); #endif /* TIME_SYNC_H_ */