//**************************************************************************** // @Module Power Saving Modes // @Filename PS.H // @Project CL2.0.dav //---------------------------------------------------------------------------- // @Controller Infineon XC886CLM-8FF // // @Compiler Keil // // @Codegenerator 1.3 // // @Description: This file contains all function prototypes and macros for // the PS module. // //---------------------------------------------------------------------------- // @Date 2025/1/21 08:53:36 // //**************************************************************************** // USER CODE BEGIN (PS_Header,1) // USER CODE END #ifndef _PS_H_ #define _PS_H_ //**************************************************************************** // @Project Includes //**************************************************************************** // USER CODE BEGIN (PS_Header,2) // USER CODE END //**************************************************************************** // @Macros //**************************************************************************** // USER CODE BEGIN (PS_Header,3) // USER CODE END //**************************************************************************** // @Defines //**************************************************************************** // USER CODE BEGIN (PS_Header,4) // USER CODE END //**************************************************************************** // @Typedefs //**************************************************************************** // USER CODE BEGIN (PS_Header,5) // USER CODE END //**************************************************************************** // @Imported Global Variables //**************************************************************************** // USER CODE BEGIN (PS_Header,6) // USER CODE END //**************************************************************************** // @Global Variables //**************************************************************************** // USER CODE BEGIN (PS_Header,7) // USER CODE END //**************************************************************************** // @Prototypes Of Global Functions //**************************************************************************** void PS_vInit(void); void PS_vSetPowerDown(void); void PS_vSetSlowDown(void); void PS_vResetSlowDown(void); // USER CODE BEGIN (PS_Header,8) // USER CODE END //**************************************************************************** // @Macro void PS_vSetIdle() // //---------------------------------------------------------------------------- // @Description This macro enters the idle mode by setting bit IDLE in SFR // PCON. The instruction will stop the CPU immediately. Thus // any following code will not be executed before the // controller has been restarted by an interrupt. // //---------------------------------------------------------------------------- // @Returnvalue None // //---------------------------------------------------------------------------- // @Parameters None // //---------------------------------------------------------------------------- // @Date 2025/1/21 // //**************************************************************************** #define PS_vSetIdle() PCON |= 0x01 //**************************************************************************** // @Macro PS_vDisableModule(ModuleName) // //---------------------------------------------------------------------------- // @Description This macro disables a specific peripheral module which is // passed in a parameter.Switch the page to 1 using the // statementSFR_PAGE(_su1, SST1); before calling this // Disable macro.After that again switch back the page to 0 // with the macro SFR_PAGE(_su1, RST1);.The following // constants are available for 'ModuleName': // ADC, T2, CCU, SSC, MDU, CAN, CDC, T21, UART1 // //---------------------------------------------------------------------------- // @Returnvalue None // //---------------------------------------------------------------------------- // @Parameters ModuleName: // Name of the Module // //---------------------------------------------------------------------------- // @Date 2025/1/21 // //**************************************************************************** #define PS_vDisableModule(Module) PS_vDisableModule_(Module) #define PS_vDisableModule_(Module) PS_vDisableModule_##Module #define PS_vDisableModule_ADC PMCON1 |= 0x01 #define PS_vDisableModule_T2 PMCON1 |= 0x08 #define PS_vDisableModule_CCU PMCON1 |= 0x04 #define PS_vDisableModule_SSC PMCON1 |= 0x02 #define PS_vDisableModule_MDU PMCON1 |= 0x10 #define PS_vDisableModule_CAN PMCON1 |= 0x20 #define PS_vDisableModule_CDC PMCON1 |= 0x40 #define PS_vDisableModule_T21 PMCON2 |= 0x01 #define PS_vDisableModule_UART1 PMCON2 |= 0x02 //**************************************************************************** // @Macro PS_vEnableModule(ModuleName) // //---------------------------------------------------------------------------- // @Description This macro enables a specific peripheral module which is // passed in a parameter. Switch the page to 1 using the // statement SFR_PAGE(_su1, SST1); before calling this // Enable macro.After that again switch back the page to 0 // with the macro SFR_PAGE(_su1, RST1);.The following // constants are available for 'ModuleName': // ADC, T2, CCU, SSC, MDU, CAN, CDC, T21, UART1 // //---------------------------------------------------------------------------- // @Returnvalue None // //---------------------------------------------------------------------------- // @Parameters ModuleName: // Name of the Module // //---------------------------------------------------------------------------- // @Date 2025/1/21 // //**************************************************************************** #define PS_vEnableModule(Module) PS_vEnableModule_(Module) #define PS_vEnableModule_(Module) PS_vEnableModule_##Module #define PS_vEnableModule_ADC PMCON1 &= ~(ubyte)0x01 #define PS_vEnableModule_T2 PMCON1 &= ~(ubyte)0x08 #define PS_vEnableModule_CCU PMCON1 &= ~(ubyte)0x04 #define PS_vEnableModule_SSC PMCON1 &= ~(ubyte)0x02 #define PS_vEnableModule_MDU PMCON1 &= ~(ubyte)0x10 #define PS_vEnableModule_CAN PMCON1 &= ~(ubyte)0x20 #define PS_vEnableModule_CDC PMCON1 &= ~(ubyte)0x40 #define PS_vEnableModule_T21 PMCON2 &= ~(ubyte)0x01 #define PS_vEnableModule_UART1 PMCON2 &= ~(ubyte)0x02 // USER CODE BEGIN (PS_Header,9) // USER CODE END #endif // ifndef _PS_H_