📄 power.c
字号:
/********************************************************************************/
/* Power Down Function Test */
/* Function : power.c */
/* Description : Power-down mode test main routine */
/* void Test_SlowMode(void) : Slow mode test */
/* void Test_StopMode(void) : Stop mode test */
/* void Test_IdleMode(void) : Idle mode test */
/* Author : Yong Hyeon Kim E-mail: telecom2@sec.samsung.com */
/********************************************************************************/
#include "..\include\k401.h"
#include "..\include\k401lib.h"
#include "..\include\def.h"
#include "..\include\power.h"
#include "math.h"
#include "..\include\rtc.h"
void __irq Eint0Int(void);
void __irq AlarmInt(void);
void __irq T1matchInt(void);
void __irq T2matchInt(void);
void Test_SlowMode(void);
void Test_StopMode(void);
void Test_IdleMode(void);
void Test_Idle(void);
void Test_DIdleMode(void);
/********************************************************************************/
/* Function : void PowerDown_Test(void) */
/* Description : Power-down mode test main routine */
/********************************************************************************/
void Test_StopMode(void)
{
char saveSyscon;
Uart_Printf("[STOP Mode Test]\n");
Uart_Printf("Check the current cunsumption.\n");
Uart_Printf("Push the buttons to exit STOP mode.\n");
Uart_Printf("After 10 seconds, KS17C40100 will wake up by RTC alarm interrupt\n");
Rtc_Init();
rRTCCON = 0x01; // R/W enable, 1/32768, Normal(merge), No reset
rALMYEAR=TESTYEAR2 ;
rALMMON =TESTMONTH2;
rALMDAY =TESTDAY2 ;
rALMHOUR=TESTHOUR2 ;
rALMMIN =TESTMIN2 ;
rALMSEC =TESTSEC2+9;
rRTCALM=0x7f;
rEINTCON=0x1;
rEINTMOD=0x0;
pISR_EINT0=(U32)Eint0Int;
pISR_RTCA=(U32)AlarmInt;
saveSyscon=rSYSCON;
rSYSCON|=BIT_GLOBAL;
rINTMSK=(BIT_EINT0|BIT_RTCA);
//Port_Stop();
EnterPWDN(0x59);
Delay(1); //wait until KS17C40100 enters STOP mode.
//
// wait EINT[7:0] or alarm interrupt
//
//Port_Init();
rSYSCON=saveSyscon;
Uart_Printf("Return to Normal Mode.\n");
}
void Test_IdleMode(void)
{
int saveSYSCON;
saveSYSCON=rSYSCON;
Uart_Printf("[IDLE Mode Test]\n");
Uart_Printf("Check the current cunsumption. Push the buttons to exit IDLE mode.\n");
Uart_Printf("After 10 seconds, KS17C40100 will wake up by RTC alarm interrupt.\n");
Uart_Printf("KS17C40100 will also wake up by EINT0.\n");
Uart_TxEmpty(); //Wait until UART1 Tx buffer empty.
Rtc_Init();
rRTCCON = 0x01; // R/W enable, 1/32768, Normal(merge), No reset
rALMYEAR=TESTYEAR2 ;
rALMMON =TESTMONTH2;
rALMDAY =TESTDAY2 ;
rALMHOUR=TESTHOUR2 ;
rALMMIN =TESTMIN2 ;
rALMSEC =TESTSEC2+9;
rRTCALM=0x7f;
rEINTCON=0x1;
rEINTMOD=0x0;
pISR_EINT0=(U32)Eint0Int;
pISR_RTCA=(U32)AlarmInt;
rSYSCON|=BIT_GLOBAL;
rINTMSK=(BIT_EINT0|BIT_RTCA);
rSYSCON|=BIT_IDLE;
Delay(1); //wait until KS17C40100 enters IDLE mode.
//
// wait EINT[7:0] interrupt or alarm wake-up
//
Uart_Printf("Return to Normal Mode.\n");
rSYSCON=saveSYSCON;
}
void __irq Eint0Int(void)
{
rINTPND&=~(BIT_EINT0);
Uart_Printf("EINT0 ISR is occurred for wake-up from IDLE or STOP mode.\n");
}
void __irq AlarmInt(void)
{
rINTPND&=~(BIT_RTCA);
Uart_Printf("ALARM ISR is occurred for wake-up from IDLE or STOP mode.\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -