📄 power.c
字号:
if(Power_Timer>4)
{
Power_Timer=0;
nPowerState=SWITCH_ON_DELAY1;
ResetT100a();
TFT_I2Cm_Reset_xn();
SystemPowerUp();
DimOnInit=0;
//Iris=0;
}
#endif
#if ResetJudge==ResetJudgeOld
if(Power_Timer>1)
{
Power_Timer=0;
nPowerState=SWITCH_ON_DELAY1;
SystemPowerUp();
break;
}
if(Power_Timer<=1)
{
CCFL_Power(false);
ResetT100a();
TFT_I2Cm_Reset_xn();
DimOnInit=0;
I2Cm_Init();
}
if(Power_Timer==1)
if(Val_Initialize()==0)
{
RegD8=5;//debug;
LoadFunSetting();//Must be called before LoadSetting();
Set_Initialize();
if(ValBit(Sys_Flag,F_StatusRAM)) //校验正确,是外部复位。MCU已经跑起来了
{
SaveStatus();
}
else //校验错误,MCU把RAM清零了。说明是上电复位
{
LoadStatus();
}
ClrBit(Sys_Flag,F_StatusRAM);
if(ValBit(Sys_Flag,F_External_Reset))//add_navy
{
DefaultSetting(SETTING_DATA_NUMBER);
ClrBit(Sys_Flag,F_External_Reset);
}
else
{
RegD8=6;//debug;
LoadSetting();
Send_Power_Off();
CheckPowerOff(MSG_POWER_OFF);//power off!
}
RegD9=Setting_Flag;//debug;
}
SaveSetting();
#endif
break;
case SWITCH_ON_DELAY1:
ResetT100a();
TFT_I2Cm_Reset_xn();
if(Power_Timer>=5)
{
Power_Timer=0;
nPowerState=INITIAL_STEP1;
}
break;
case INITIAL_STEP1:
if(Power_Timer>=5)
{
Power_Timer=0;
nPowerState=INITIAL_STEP2;
I2Cm_Init();
}
break;
case INITIAL_STEP2:
ReleaseT100aReset();
Power_Timer=0;
nPowerState=INITIAL_STEP3;
//因为从System_Power_UP到设置F_MachineState间隔一段时间
//有可能TimerA被Disable,因此需要再次打开。
Enable_TimerA();
Enable_TimerB();
IrTxStage=IrIdle;
TotalIrBytes=0;
#if ResetJudge==ResetJudgeNew
RegD8=0;//debug;
if(Val_Initialize()==0)
{
LoadFunSetting();//Must be called before LoadSetting();
Set_Initialize();
RegD9=0xaa;//debug;
if(ManualResetCheck()!=ResetCheckSum)//power on
{
LoadSetting();
RegD8=1;//debug;
}
else
if(ValBit(SICSR,LVDRF)==0&&ValBit(SICSR,WDGRF)==0)//reset
{
DefaultSetting(SETTING_DATA_NUMBER);
RegD8=2;//debug;
}
#if D_STARTUP_POWER_OFF
#else
if(!ValBit(Setting_Flag,F_On_Off))
#endif
{
Send_Power_Off();
CheckPowerOff(MSG_POWER_OFF);//power off!
}
}
SaveSetting();
#endif
break;//
case INITIAL_STEP3:
if(Power_Timer>=2)
{
Power_Timer=0;
T100I2CWriteByte(TW100, 0xC2, T100I2CReadByte(TW100, 0xC2)|0x12);//avoid ghost shape;
TFT_Device_Init();
#if POWER_ON_LOGO==0
Source_Select(gobal_user_para.source);
#endif
SetBlueScreen();//enable full blue screen;
Lcd_Mode_Select(gobal_user_para.lcd_mode);
Lcd_Mirror_Select(gobal_user_para.mirror);
OSDInit();
#if POWER_ON_LOGO==0
SetAutoBlueScreen();
#endif
nPowerState=INITIAL_STEP4;
ClrBit(Setting_Flag,F_Audio_Mute);
#if POWER_ON_LOGO==0
DetectVideoExsit();
AVSelectTimer=0;
#endif
}
//Printf_Debug(0,1,Video_Format_mem);//debug;
/*#if COM_WITH_DVBT==1
if(IrTxStage==IrIdle&&TotalIrBytes==0)
DvbtPower(1);
#endif
*/
break;
case INITIAL_STEP4:
#if COM_WITH_DVBT==1
if(IrTxStage==IrIdle&&TotalIrBytes==0)
DvbtPower(1);
#endif
#define Delay1 1//50
#if POWER_ON_LOGO==0
DetectVideoExsit();
#endif
#define CcflSlowUp 1
//060603.{{{{{//逐渐加大亮度,避免黑屏;
if(Power_Timer==Delay1)
{
#if CcflSlowUp!=0
PwmAdjust(Power_Timer-Delay1);
#else
PwmAdjust(nBright);
#endif
PowerOffSource=POWER_ON;
#if POWER_ON_LOGO==0
DisplayAvInStr();
#else
DisplayPowerOnLogo(PowerOnLogoData);
#endif
}
if(Power_Timer==Delay1+5)
CCFL_Power(true);
if(Power_Timer>Delay1&&nAutoDimmer_Flag==0)
{
#if CcflSlowUp!=0
if((Power_Timer-Delay1)/3<=nBright)
PwmAdjust((int8u)((Power_Timer-Delay1)/3));
//if( Div((Power_Timer-Delay1),3) <=nBright)//
// PwmAdjust( Div((Power_Timer-Delay1),3) );
#else
PwmAdjust(nBright);
#endif
}
#if POWER_ON_LOGO==0
if(Power_Timer>=Delay1+90-10)
Adject_Volume(gobal_user_para.volume);
if(Power_Timer>=Delay1+90)
#else
if(Power_Timer>=250-10)
Adject_Volume(gobal_user_para.volume);
if(Power_Timer>=250)
#endif
{
Power_Timer=0;
nPowerState=SYSTEM_RUN;
#if POWER_ON_LOGO!=0
CCFL_Power(false);
Source_Select(gobal_user_para.source);
#endif
#if GAMMA_DEBUG==1||BLACK_LEVEL_DEBUG==1
RegD8=RegD9=0;//debug;
#endif
//if(0==ValBit(Setting_Flag,F_Audio_Mute))
if(nVolume!=0) Mute_Audio_Clr;
Adject_Volume(gobal_user_para.volume);
}
//060603.}}}}}//逐渐加大亮度,避免黑屏;
#if SOFT_MUTE!=0
/*逐渐加大音量会有扑扑声音
//if(0==ValBit(Setting_Flag,F_Audio_Mute))
{
//Mute_Audio_Clr;
if(Power_Timer>Delay1&&((Power_Timer&0x01)==0))
{
if(Power_Timer-Delay1<=gobal_user_para.volume/VOL_INX)
Adject_Volume((Power_Timer-Delay1)*VOL_INX);
else
Adject_Volume(gobal_user_para.volume);
}
}*/
#endif
#undef Delay1
break;
case SYSTEM_RUN:
//Printf_Debug(0,3,RegD9);//debug;
//Printf_Debug(0,6,Setting_Flag);//debug;
#if COM_WITH_DVBT==1
if(gobal_user_para.source==0 && 0==ValBit(Video_Flag,F_SysAvIn))//av1
{
if(IrTxStage==IrIdle&&TotalIrBytes==0)
DvbtPower(1);
}/*
else
{
if(Power_Timer==250)
{Power_Timer=0;
if(IrTxStage==IrIdle&&TotalIrBytes==0)
DvbtPower(0);
}
}*/
#endif
#if POWER_ON_LOGO!=0
if(Power_Timer<50)
break;
if(Power_Timer==50)
{
Power_Timer=60;
OSDInit();
SetAutoBlueScreen();//070227.
CCFL_Power(true);
}
if(Power_Timer==60)
Power_Timer--;
#endif
Set_Machine_Power();
CheckPowerOff(nMsg.ID);
break;
case POWER_OFF:
#if COM_WITH_DVBT==1
/*if(Power_Timer>=200)
{
MCU_IO_Refresh();
M5V_SW(false);
Power_Timer=200;
}*/
/*
if(CheckPowerOn(nMsg.ID))
{
MCU_IO_Init();//061017.
MCCSR=0B00000010;// Fcpu=Fosc2
break;
}*/
if(Power_Timer<50)
{
if(Power_Timer==1)
{
IrTxStage=IrIdle;
TotalIrBytes=0;
}
if(IrTxStage==IrIdle&&TotalIrBytes==0)
DvbtPower(0);
}
/*
DetectVideoExsit();
if(ValBit(Video_Flag,F_SysAvIn)&&Power_Timer<=50)
break;
else
Power_Timer=1;
*/
#endif
Clr_Machine_Power();
if(Power_Timer==1)//in order not to leave shadow on screen after power down.
{
OSDDisnable();
CCFL_Power(false);
T100I2CWriteByte(TW100,0x18,0x3f);//Switch Analog Source to NC pin
//T100I2CWriteByte(TW100+4,0x00,0x01);//Switch Analog Source Mux to YUV
T100I2CWriteByte(TW100,0xC2,0x12);//0213.avoid ghost shape;
//T100I2CWriteByte(TW100+4,0x07,0x14);//enable full blue screen;
}
/*if(Power_Timer==3)
{
//T100I2CWriteByte(TW100+4,0x3f,0x01);//disnable comb filter.
ResetT100a();//in order to avoid image shape stays on screen after power off.
}*/
#if SOFT_MUTE!=0
if(Power_Timer<22)
{
if(Power_Timer/3<=7)
//if( Div(Power_Timer,3) <=7 )//
{
if(Power_Timer%3==0)
//if(Mod(Power_Timer,3)==0)
{
Adject_Volume(gobal_user_para.volume/8*(8-Power_Timer/3));
//Adject_Volume( (gobal_user_para.volume>>3)*(8-Div(Power_Timer,3)));//
}
}
}
#endif
if(Power_Timer==23)
{
//ReleaseT100aReset();
Adject_Volume(0);
Mute_Audio_Set;
ResetT100a();//in order to avoid image shape stays on screen after power off.
}
if(Power_Timer==30)
{
MCU_IO_Refresh();
M5V_SW(false);
//Mute_Audio_Clr;//061016.In order to degrade standby current;38mA->15mA
}
if(Power_Timer==49)
{
Mute_Audio_Clr;//061016.In order to degrade standby current;38mA->15mA
}
#if ResetJudge==ResetJudgeNew
if(ManualResetCheck()!=ResetCheckSum)//061106.power on or reset.
{
CheckPowerOn(nMsg.ID);
break;
}
#endif
if(Power_Timer>=50)
{
Power_Timer=50;
//Disable_TimerA(); //070108.
Disable_TimerB(); //070108.
SetBit(Sys_Flag,F_SystemWait); //070108.
#if 0 //#if D_ADD_ACC_DETECT
if(ValBit(Det_Flag,F_ACC_Det)!=0 && nCloseACCTimer!=0)
{
Send_Power_On();
nMsg.ID = MSG_POWER_ON;//power on!
}
#endif
if(CheckPowerOn(nMsg.ID))
{
MCU_IO_Init();//061017.
//MCU_IO_Refresh();//061017.
MCCSR=0B00000010;// Fcpu=Fosc2
//disable ei0;
//ISPR0= (LEVEL_3<<6) + (LEVEL_3<<4) + (LEVEL_1<<2) + LEVEL_3 ;
break;
}
if(PowerOffSource==KEY_POWER_OFF)
{
Reset_IO();
MCCSR=0B01110010;// Fcpu=Fosc2/16
asm_wait();
//enable ei0;
//ISPR0= (LEVEL_3<<6) + (LEVEL_1<<4) + (LEVEL_1<<2) + LEVEL_3 ;
//MCCSR=0B00000000;
//asm halt;
break;
}
/*if(CheckPowerOn(nMsg.ID))
{
PowerOffSource=POWER_STANDBY;
break;
}*/
}
#if COM_WITH_DVBT==1
/*else
{
if(Power_Timer==1)
{
IrTxStage=IrIdle;
TotalIrBytes=0;
}
if(IrTxStage==IrIdle&&TotalIrBytes==0)
DvbtPower(0);
}*/
#endif
break;
default:
EnterPowerOff();
break;
}
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -