/* * ---------------------------------------------------------------------------- * Function Name: DELAY_Init * Purpose: Get system clock and program wait state to decide delay loop count. * Params: * Returns: * Note: * ---------------------------------------------------------------------------- */ void DELAY_Init(void) { delay_MsLoop = 1; delay_SysClk = 25; delay_ProgWst = 1; /* get system clock */ switch (AX11000_GetSysClk()) { case SCS_100M : delay_SysClk = CLK_100M; break; case SCS_50M : delay_SysClk = CLK_50M; break; case SCS_25M : delay_SysClk = CLK_25M; default: break; } /* get program wait state */ delay_ProgWst = AX11000_GetProgWst() + 1; /* calculate driver loop count for per ms */ delay_MsLoop = ((U32_T)delay_SysClk * 1000) / ((U32_T)delay_ProgWst * 11); } /* End of DELAY_Init */
// note: void Initial_PWM(void) { U8_T loop; U8_T sysclk = 0; U32_T Sysclk; sysclk = AX11000_GetSysClk(); switch (sysclk) { case SYS_CLK_100M : Sysclk = 100000000; break; case SYS_CLK_50M : Sysclk = 50000000; break; case SYS_CLK_25M : Sysclk = 25000000; break; } for(loop = 0;loop < 24;loop++) outputs[loop].switch_status = 0; // _2003_ENALBE = 0; // enable 2003, otherwise cant drive relays CHSEL3 = 0; PCA_ModeSetup(0x07,0x40); // mode 011, con 0x40 ,so tick is 6 tick = 6; Sysclk = Sysclk / 6; ccap_low = 0x50; P3 &= 0xf0; P3 |= 0x07; // dont select any channel }