Files
acquisition_module/PS.C
2025-07-05 07:56:54 +08:00

296 lines
9.1 KiB
C

//****************************************************************************
// @Module Power Saving Modes
// @Filename PS.C
// @Project CL2.0.dav
//----------------------------------------------------------------------------
// @Controller Infineon XC886CLM-8FF
//
// @Compiler Keil
//
// @Codegenerator 1.3
//
// @Description: This file contains functions that use the PS module.
//
//----------------------------------------------------------------------------
// @Date 2025/1/21 08:53:36
//
//****************************************************************************
// USER CODE BEGIN (PS_General,1)
// USER CODE END
//****************************************************************************
// @Project Includes
//****************************************************************************
#include "MAIN.H"
// USER CODE BEGIN (PS_General,2)
// USER CODE END
//****************************************************************************
// @Macros
//****************************************************************************
// USER CODE BEGIN (PS_General,3)
// USER CODE END
//****************************************************************************
// @Defines
//****************************************************************************
// USER CODE BEGIN (PS_General,4)
// USER CODE END
//****************************************************************************
// @Typedefs
//****************************************************************************
// USER CODE BEGIN (PS_General,5)
// USER CODE END
//****************************************************************************
// @Imported Global Variables
//****************************************************************************
// USER CODE BEGIN (PS_General,6)
// USER CODE END
//****************************************************************************
// @Global Variables
//****************************************************************************
// USER CODE BEGIN (PS_General,7)
// USER CODE END
//****************************************************************************
// @External Prototypes
//****************************************************************************
// USER CODE BEGIN (PS_General,8)
// USER CODE END
//****************************************************************************
// @Prototypes Of Local Functions
//****************************************************************************
// USER CODE BEGIN (PS_General,9)
// USER CODE END
//****************************************************************************
// @Function void PS_vInit(void)
//
//----------------------------------------------------------------------------
// @Description This is the initialization function of the Power Saving
// function library. It is assumed that the SFRs used by this
// library are in their reset state.
//
// This function does not contain any generated C-code, but it
// is possible to insert application specific source lines.
//
//----------------------------------------------------------------------------
// @Returnvalue None
//
//----------------------------------------------------------------------------
// @Parameters None
//
//----------------------------------------------------------------------------
// @Date 2025/1/21
//
//****************************************************************************
// USER CODE BEGIN (PS_Init,1)
// USER CODE END
void PS_vInit(void)
{
// USER CODE BEGIN (PS_Init,2)
// USER CODE END
/// Slow Down Clock is 48.00 MHz
/// which is 1/4 of the System Clock fSYS
/// wake up with reset is selected
SFR_PAGE(_su1, noSST); // switch to page1 with out saving
/// Pin P0.1 (input)
/// - used as wake up pin via RXD_1 from powerdown
/// Pin P0.5 (input)
/// - used as wake up pin via EXINT0 from powerdown
PMCON0 = 0x13; // wakeup control register
// ---------- Modules configuration status for PMCON1 reg.----------
/// ADC enabled
/// SSC disabled
/// CCU enabled
/// T2 enabled
/// MDU enabled
/// CAN enabled
/// CDC enabled
PMCON1 = 0x02; // Power mode control register 1
SFR_PAGE(_su3, noSST); // switch to page3 with out saving
// ---------- Modules configuration status for PMCON2 reg.----------
/// T21 enabled
/// UART1 enabled
PMCON2 = 0x00; // Power mode control register 2
SFR_PAGE(_su0, noSST); // switch to page0 with out saving
IEN0 |= 0x01; // interrupt enable register 0
TCON = 0x01; // Set TCON.IT0
MODPISEL = 0x01; // load peripheral input select reg
} // End of function PS_vInit
//****************************************************************************
// @Function void PS_vSetPowerDown(void)
//
//----------------------------------------------------------------------------
// @Description This function invokes the software power down mode by
// execution of following steps:
// - the external wake-up from software power down remains
// disabled
// - bit PD in SFR PMCON0 will be set
// (this will stop all controller functions)
//
//----------------------------------------------------------------------------
// @Returnvalue None
//
//----------------------------------------------------------------------------
// @Parameters None
//
//----------------------------------------------------------------------------
// @Date 2025/1/21
//
//****************************************************************************
void PS_vSetPowerDown(void)
{
// enter software power down mode
STR_PAGE(_su1, _su); // push current SCU page and switch to page1
/// External wake-up enabled
/// Wake-up via pin RxD_1 and EXINT0 is selected
PMCON0|=0x03;
MAIN_vUnlockProtecReg(); // open access to protected register
PMCON0 |= 0x04; // set PD
MAIN_vlockProtecReg(); // close access to protected register
RST_PAGE(_su); // restore the old SCU page
} // End of function PS_vSetPowerDown
//****************************************************************************
// @Function void PS_vSetSlowDown(void)
//
//----------------------------------------------------------------------------
// @Description This function activates the slow down mode by setting bit
// SD in SFR PMCON0.
// Note: DAvE's project settings for the on-chip peripheral
// components are only valid for normal clock operation.
// During slow down mode the behavior of the peripherals can
// differ from these settings due to the reduced clock rate!
//
//----------------------------------------------------------------------------
// @Returnvalue None
//
//----------------------------------------------------------------------------
// @Parameters None
//
//----------------------------------------------------------------------------
// @Date 2025/1/21
//
//****************************************************************************
//void PS_vSetSlowDown(void)
//{
// STR_PAGE(_su1, _su); // push current SCU page and switch to page1
// MAIN_vUnlockProtecReg(); // open access to protected register
// PMCON0 |= 0x08; // set SD
// MAIN_vlockProtecReg(); // close access to protected register
// RST_PAGE(_su); // restore the old SCU page
//} // End of function PS_vSetSlowDown
//****************************************************************************
// @Function void PS_vResetSlowDown(void)
//
//----------------------------------------------------------------------------
// @Description This function terminates the slow down mode by clearing bit
// SD in SFR PMCON0.
//
//----------------------------------------------------------------------------
// @Returnvalue None
//
//----------------------------------------------------------------------------
// @Parameters None
//
//----------------------------------------------------------------------------
// @Date 2025/1/21
//
//****************************************************************************
//void PS_vResetSlowDown(void)
//{
// STR_PAGE(_su1, _su); // push current SCU page and switch to page1
// MAIN_vUnlockProtecReg(); // open access to protected register
// PMCON0 &= ~(ubyte)0x08; // clear SD
// MAIN_vlockProtecReg(); // close access to protected register
// RST_PAGE(_su); // restore the old SCU page
//} // End of function PS_vResetSlowDown
// USER CODE BEGIN (PS_General,10)
// USER CODE END