?? e2prom.c
字號:
/******************************************************************************\
Project Version: MTKCARDVD()
********************************************************************************
Filename: E2prom.c
Author: Alan Chan
Company: CoreTek/ACT Company
********************************************************************************
File Version: 1.01
File Created: July 2007
Compiled Using: keil uVision2 Version 2.23
********************************************************************************
Files Required:
********************************************************************************
File Description:
********************************************************************************
File History:
--------------------------------------------------------------------------------
Date Name Description
--------------------------------------------------------------------------------
Mar. 2007 Alan Chan File Created
\******************************************************************************/
#include "global.h"
#include "tv.h"
#include "e2prom.h"
extern void RadioLoadDefaultData(void);
extern void RadioStationSend2DVD(void);
#ifdef SUPPORT_UART_PRINTF //martin 16Oct08
extern void DRS232LogS(char *pcStr);
#endif
/****************************************************************************/
void vInitialI2C(void)
{
bNoAck = 0;
EEP_Wait = 0;
IIC_Stop(0);
IIC_Stop(1);
}
/****************************************************************************/
void WriteE2prom(WORD addr,BYTE *databuf,WORD length)
{
BYTE id,temp;
union W_TEMP addr1;
addr1.valW = addr;
while( length > 0)
{
id = I2C_EEP_ADDR + (addr1.valB[0] << 1);
temp = EEPROM_PBYTE -(addr1.valB[1]&(EEPROM_PBYTE-1));
if( temp > length)
temp = length;
while(EEP_Wait > 0);
IICSW_Write(0,id,1,addr1.valB[1],databuf,temp);
EEP_Wait = EEPROM_PTIME;
length -= temp;
addr1.valW += temp;
databuf += temp;
}
}
/****************************************************************************/
void ReadE2prom(WORD addr,BYTE *databuf,WORD number)
{
BYTE id;
union W_TEMP addr1;
addr1.valW = addr;
id = I2C_EEP_ADDR + (addr1.valB[0] << 1);
while(EEP_Wait > 0);
IICSW_Read(0,id,1,addr1.valB[1],databuf,number);
}
/****************************************************************************/
BOOL fgEepromWriteByte(WORD wAddr,BYTE bData)
{
WriteE2prom(wAddr, &bData, 1);
return (TRUE);
}
BYTE bEepromReadByte(WORD wAddr)
{
BYTE bData;
ReadE2prom(wAddr, &bData,1);
return (bData);
}
void PowerDownSaveToE2prom(void)
{
WriteE2prom(SYSMODE_POS, &SysMode, 1);
WriteE2prom(TV_LAST_CH_POS, &bTvCurrChIndex, 1);
#ifdef MARTIN_SUPPORT_SHOW_TV_VERSION //31Jul08
WriteE2prom(TV_VERSION_POS, &fgTvVersion, 1);
#else
WriteE2prom(TV_LAST_CH_AUDIO_POS, &bTvCurrSound, 1);
#endif
WriteE2prom(TV_TOTAL_CH_POS, &bTvTotalCh, 1);
}
/****************************************************************************/
void LoadE2promDefault(void)
{
BYTE bTmp[6];
#ifdef SUPPORT_UART_PRINTF
DRS232LogS(" E2prom is New.\n");
#endif
bTmp[0] = CORETEK_ID;
WriteE2prom(CORETEK_ID_ADDR, &bTmp, 1);
// system mode
bTmp[0] = DVD_MODE;
WriteE2prom(SYSMODE_POS, &bTmp, 1);
// tv
bTmp[0] = bTvTotalCh = 0;
WriteE2prom(TV_TOTAL_CH_POS, &bTmp, 1);
bTmp[0] = bTvCurrChIndex = 1; //01Sep09 0;
WriteE2prom(TV_LAST_CH_POS, &bTmp, 1);
#ifdef MARTIN_SUPPORT_SHOW_TV_VERSION //31Jul08
fgTvVersion= TV_VERSION_VALUE; //31Jul08
_bSearchPercent=fgTvVersion;
bTmp[0] = fgTvVersion;
WriteE2prom(TV_VERSION_POS, &bTmp, 1);
// bTvCurrSound = TV_SOUND_DEFAULT;
#else
bTmp[0] = bTvCurrSound = TV_SOUND_DEFAULT;//TV_SOUND_BG; martin 14May08
WriteE2prom(TV_LAST_CH_AUDIO_POS, &bTmp, 1);
#endif
#ifdef MARTIN_TUNER_TYPE_SELECT
fgTunerType=TV_TYPE_DEFAULT;
bTunerDeafultVal=(TV_TYPE_DEFAULT <<6)||(TV_SOUND_DEFAULT <<3) ||(TV_SYSTEM_DEFAULT);//0xd0; //PAL I
bTmp[0] = bTunerDeafultVal; // = bTunerVal; //05Aug08
WriteE2prom(TV_TUNER_TYPE_POS, &bTmp, 1);
#endif
sTvCurrChannel.wFreq =VHF_LOW_BOT; //martin 16Oct08
sTvCurrChannel.bSystem=(0xc0 | bTunerDeafultVal);//bTunerVal;
bTvCurrSound=(bTunerDeafultVal & 0x38 )>>3;
#ifdef SUPPORT_UART_PRINTF
DRS232LogS("New E2prom is ok.\n");
#endif
}
/****************************************************************************/
void vInitialE2prom(void)
{
BYTE bTmp;//, page;
#ifdef SUPPORT_UART_PRINTF
DRS232LogS("Initial E2prom Start.\n");
#endif
bTmp = 0;
ReadE2prom(CORETEK_ID_ADDR, &bTmp, 1);
if(bTmp!=CORETEK_ID)
{
LoadE2promDefault();
return;
}
/////////////// TV Software Version /////////////////////////////////////
#if 0 // #ifdef MARTIN_SUPPORT_SHOW_TV_VERSION //31Jul08
bTmp=fgTvVersion;
WriteE2prom(TV_VERSION_POS, &bTmp, 1);
#endif
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
// Sysmode
/////////////////////////////////////////////////////////////////////////
ReadE2prom(SYSMODE_POS, &bTmp, 1);
SysMode = NextSysMode = bTmp;
/////////////////////////////////////////////////////////////////////////
// TV
/////////////////////////////////////////////////////////////////////////
LoadTVData();
return;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -