⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 backup_m04_c2.c

📁 sircs decoder, for amplifier.. this is to decode
💻 C
📖 第 1 页 / 共 3 页
字号:
/****************************************************************************************************/
/* $Header  : 																					  	
/* AUTHOR 	: TC PUI																		  		
/* FILE NAME: BACKUP.C																		  		
/* PURPOSE	: POWER CONTROL												 				 		
/* MODEL	: 2004 CIS 2-CH AMP 										  						
/* Copyright (c) 2004 Sony Corporation All Rights Reserved					  						
/****************************************************************************************************/
#define	_BACKUP_C

#include "_main_M04_C2.h"
/****************************************************************************************************/
/* Device Independent																				*/
/****************************************************************************************************/

#define _EEPHIZ		P0_EEP_DFLT
#define _EEPOUT		(P0_EEP_DFLT + P0_EEPDAT)

#define EEPDIR		DDR0.BYTE
#define EEPCLK		P_SCL					/* I2C clock line		*/
#define EEPDAT		P_SDA					/* I2C data  line		*/

#define EEPCLK_0	(EEPCLK = 0)	/*; _Wait(11)		/* min 4.7usec			*/
#define EEPCLK_1	(EEPCLK = 1)	/*; _Wait(9)		/* min 4.0usec			*/
#define EEPDAT_0	(EEPDAT = 0)	/*; _Wait(11)		/* min 4.7usec			*/
#define EEPDAT_1	(EEPDAT = 1)	/*; _Wait(9)		/* min 4.0usec			*/

#define EEPDIR_H	(EEPDIR=_EEPHIZ)
#define EEPDIR_L	(EEPDIR=_EEPOUT)

/****************************************************************************************************/
/* local function prottype																			*/
/****************************************************************************************************/

int	BR24xxWriteAll(unsigned char data);
int	BR24xxForceRead(unsigned char *data,unsigned int addr,unsigned int cunt);
int	BR24xxRead(unsigned char *data,unsigned int addr,unsigned int cunt);
int	BR24xxForceRead(unsigned char *data,unsigned int addr,unsigned int cunt);
int	BR24xxWrite(unsigned char *data,unsigned int addr,unsigned int cunt);
int	BR24xxForceWrite(unsigned char *data, unsigned int addr, unsigned int cunt);
int	BR24xxSta(void);
int	BR24xxStp(void);
int	BR24xxAcc(unsigned char *data,unsigned char acko,unsigned char acki);
void _Wait(unsigned int n);
void RstBR24C16(void);

/****************************************************************************************************/
/* local define																						*/
/****************************************************************************************************/

#define _EROM_TYPE		_BR24C16
#define _TIME_LOOP		1
#define _TIME_OVER		512
#define _FILL_DATA		0x00
#define _TEST_DATA		0xa5
#define _TEST_CLAR		0x96
#define _FACT_DISP		0x0011
#define _FACT_HARD		0x0022
#define _FACT_TUNR		0x0033
#define _TEST_VER1		SOFT_VER

#define _screq			bacup_screq			/* search start request data */
#define _scunt			bacup_scunt			/* search counter			 */
#define _romaddr		bacup_romaddr
#define _entry			bacup_entry
#define _len			bacup_len
#define _addr			bacup_addr
#define _stat			bacup_stat
#define _fail			bacup_fail
#define _test			bacup_test
#define _clar			bacup_clar
#define _ver1			bacup_ver1
#define _ent1			bacup_ent1
#define _ent2			bacup_ent2
#define _clroff			bacup_clroff
#define _dumy			bacup_dumy
#define SYS				bacup_syss
#define BUF				bacup_buff
#define BLK				bacup_block

/****************************************************************************************************/
/* EEPROM MAP																						*/
/****************************************************************************************************/

/* PLEASE RE-CHECK the Memory Map!!! */
#define _SYS_ADD			0
#define _SYS_ENTRY_NUM		7
#define _SYS_ALL_LEN		16


/*   W       W      A      RRRR    N	N	III   N    N    GGGG      */
/*   W       W	   A A     R   R   NN 	N	 I	  NN   N   G          */
/*   W   W	 W	  AAAAA    RRRR    N N	N	 I	  N N  N  G   GGGG    */
/*	  W W W W    A     A   R  R	   N  N	N    I	  N  N N   G   GG     */
/*     W   W    A       A  R   R   N   NN	III	  N   NN    GGG G     */

/* When Address change, ENT number also changed */
#define DUMY_SIZE	10
#define DUMY_ADD	(_SYS_ALL_LEN - DUMY_SIZE)	/*  */
#define CLOF_ADD	(DUMY_ADD - 1)
#define ENT2_ADD	(CLOF_ADD - 1)
#define ENT1_ADD	(ENT2_ADD - 1)
#define TEST_ADD	(ENT1_ADD - 1)
#define CLEAR_ADD	(TEST_ADD - 1)
#define VERS_ADD	(CLEAR_ADD - 1)

#define DUMY_ENT	(_SYS_ENTRY_NUM - 1)
#define	CLOF_ENT	(DUMY_ENT - 1)
#define ENT2_ENT	(CLOF_ENT - 1)
#define ENT1_ENT	(ENT2_ENT - 1)
#define TEST_ENT	(ENT1_ENT- 1)
#define CLEAR_ENT	(TEST_ENT - 1)
#define VERS_ENT	(CLEAR_ENT - 1)

/* Block entery is use as Power Status with inhibit feature when not IR in trigger Power ON */
#define _BLK_ENTRY_NUM		1
#define _BLK_ADD			(_SYS_ADD + _SYS_ALL_LEN)
#define _BLK_ALL_LEN		1		

#define _MEM_ADD			(_BLK_ADD + _BLK_ALL_LEN)
#define _MEM_ENTRY_NUM		2
#define _MEM_ALL_LEN		2

#define _SEARCH_ALL_LEN		(_SYS_ALL_LEN+_BLK_ENTRY_NUM+_MEM_ALL_LEN)

/****************************************************************************************************/
/* State Code Define														  						*/
/****************************************************************************************************/

enum {
	_BAC_SRCH = 0,	/*	Backup Memory Search State 	*/
	_BLK_SRCH,		/* 	Block  Memory Search State 	*/
	_SYS_SRCH,		/* 	System Memory Search State 	*/
	_ALL_CLAR		/* 	Memory All Clear State 		*/
};

/****************************************************************************************************/
/* local variable type define																		*/
/****************************************************************************************************/

typedef struct map {
	unsigned char	*addr;		/* ram address						*/
	unsigned char	len;		/* ram length						*/
} MAP_;

/****************************************************************************************************/
/* local variable																					*/
/****************************************************************************************************/

unsigned int	_screq;					/* search start request data	*/
unsigned int	_scunt;					/* search counter	(unit byte)	*/
unsigned int	_romaddr;
unsigned int	_addr;
unsigned int	_entry;
unsigned int	_len;
unsigned char	_stat;
unsigned char	_test;
unsigned char	_clar;
unsigned char	_ent1;
unsigned char	_ent2;
unsigned char	_fail;
unsigned char	_ver1;
unsigned char	_clroff;
unsigned char	_dumy[9];
unsigned char	SYS[_SYS_ALL_LEN];
unsigned char	BLK[_BLK_ENTRY_NUM];
unsigned char	BUF[_MEM_ALL_LEN];

unsigned int	_page_numb;
unsigned int	_page_leng;
unsigned char	_sift_page;
unsigned char	_sift_add1;
unsigned char	_sift_add2;
unsigned char	_mask_page;
unsigned char	_mask_add1;
unsigned char	_mask_add2;

struct EROM_ {
	unsigned int	page_numb;
	unsigned int	page_leng;
	unsigned char	sift_page;
	unsigned char	sift_add1;
	unsigned char	sift_add2;
	unsigned char	mask_page;
	unsigned char	mask_add1;
	unsigned char	mask_add2;
};

static const struct EROM_ EROM[16] = {
	/* NUMB,   LEN,	 SFTP,   SFT1,	 SFT2,	MSKP,	MSK1,	MSK2,							*/
	{  128/8 ,   8,   	6,   	0,   	0,	0x0e,	0x7f,   0x00,},		/*	0	_BR24C01	*/
	{  256/8 ,   8,   	7,   	0,   	0,	0x0e,	0xff,   0x00,},		/*	1	_BR24C02	*/
	{  512/16,  16,   	7,   	0,   	0,	0x0e,	0xff,   0x00,},		/*	2	_BR24C04	*/
	{ 1024/16,  16,   	7,   	0,   	0,	0x0e,	0xff,   0x00,},		/*	3	_BR24C08	*/
	{ 2048/16,  16,   	7,   	0,   	0,	0x0e,	0xff,   0x00,},		/*	4	_BR24C16	*/
	{ 2048/16,  16,  	10,   	8,   	0,	0x0e,	0x07,	0xff,},		/*	5	_BR24E16	*/
	{ 4096/32,  32,  	11,   	8,   	0,	0x0e,	0x0f,	0xff,},		/*	6	_BR24C32	*/
	{ 8192/32,  32,  	12,   	8,   	0,	0x0e,	0x1f,	0xff,},		/*	7	_BR24C64	*/
	{32768/32,  32,  	14,   	8,   	0,	0x0e,	0x7f,	0xff,},		/*	8	_BR24C256	*/
	{  128/8 ,   8,   	6,   	0,   	0,	0x0e,	0x7f,   0x00,},		/*	9	_BR24C01	*/
	{  128/8 ,   8,   	6,   	0,   	0,	0x0e,	0x7f,   0x00,},		/*	10	_BR24C01	*/
	{  128/8 ,   8,   	6,   	0,   	0,	0x0e,	0x7f,   0x00,},		/*	11	_BR24C01	*/
	{  128/8 ,   8,   	6,   	0,   	0,	0x0e,	0x7f,   0x00,},		/*	12	_BR24C01	*/
	{  128/8 ,   8,   	6,   	0,  	0,	0x0e,	0x7f,   0x00,},		/*	13	_BR24C01	*/
	{  128/8 ,   8,   	6,   	0,   	0,	0x0e,	0x7f,   0x00,},		/*	14	_BR24C01	*/
	{  128/8 ,   8,   	6,   	0,   	0,	0x0e,	0x7f,   0x00,},		/*	15	_BR24C01	*/
};

/****************************************************************************************************/
/*								System Memory Address Table											*/
/****************************************************************************************************/

static const MAP_	_SysAddr[_SYS_ENTRY_NUM] = {
	{(unsigned char *)&_ver1,	 				 1},/*	0				*/
	{(unsigned char *)&_clar,	 				 1},/*	1				*/
	{(unsigned char *)&_test,	 				 1},/*	2				*/
	{(unsigned char *)&_ent1,	 				 1},/*	3				*/
	{(unsigned char *)&_ent2,	 				 1},/*	4				*/
	{(unsigned char *)&_clroff,					 1},/*	5				*/
	{(unsigned char *)&_dumy[0], 				10},/*	6				*/
};

/****************************************************************************************************/
/*								Block Memory Address Table											*/
/****************************************************************************************************/

static const MAP_	_BlkAddr[_BLK_ENTRY_NUM] = {
	{(unsigned char *)&Power.Flag, 				1},		/*	0				*/
};

/****************************************************************************************************/
/*								Backup Memory Address Table											*/
/****************************************************************************************************/

static const MAP_	_BacAddr[_MEM_ENTRY_NUM] = {
	{(unsigned char *)&E_VOL.SircsVolStep,			 1},	/*	0			*/
	{(unsigned char *)&AU_DET.IRInput,				 1},	/*  1			*/	
};

/****************************************************************************************************/
/* FUNCTION		:	BakInitialize																	
/* PURPOSE		:	Backup Initialize						  										
/* INPUT		:	None																			
/* RETURN VALUE	:	None																			
/****************************************************************************************************/
void BakInitialize(void)
{
	unsigned int i;

	Bak.Init		= 0;
	Bak.Debg.Eror	= 1;
	Bak.Debg.Data	= 0;
	Bak.Debg.Addr	= 0;
	_screq			= 0;
	_scunt			= 0;
	_romaddr		= 0;
	_entry			= 0;
	_len			= 0;
	_addr			= ~Bak.Debg.Addr;
	_stat			= _BAC_SRCH;
	_test			= _TEST_DATA;
	_clar			= _TEST_CLAR;
	_ver1			= _TEST_VER1;
	_ent1			= _BLK_ENTRY_NUM;
	_ent2			= _MEM_ENTRY_NUM;
	_fail			= 0;
	_clroff			= _TEST_CLAR;
	for(i=0;i<sizeof(_dumy);i++){	_dumy[i]= 0;	}
	for(i=0;i<_SYS_ALL_LEN;i++){	SYS[i]	= 0;	}
	for(i=0;i<_BLK_ENTRY_NUM;i++){	BLK[i]	= 0;	}
	for(i=0;i<_MEM_ALL_LEN;i++){	BUF[i]	= 0;	}
	_page_numb = EROM[(_EROM_TYPE &0x0F)].page_numb;
	_page_leng = EROM[(_EROM_TYPE &0x0F)].page_leng;
	_sift_page = EROM[(_EROM_TYPE &0x0F)].sift_page;
	_sift_add1 = EROM[(_EROM_TYPE &0x0F)].sift_add1;
	_sift_add2 = EROM[(_EROM_TYPE &0x0F)].sift_add2;
	_mask_page = EROM[(_EROM_TYPE &0x0F)].mask_page;
	_mask_add1 = EROM[(_EROM_TYPE &0x0F)].mask_add1;
	_mask_add2 = EROM[(_EROM_TYPE &0x0F)].mask_add2;
	return;
}
/****************************************************************************************************/
/* FUNCTION		:	BakControl																			
/* PURPOSE		:	Backup Control						  										
/* INPUT		:	None																			
/* RETURN VALUE	:	None																			
/****************************************************************************************************/
void BakControl(void)
{
	unsigned int i, j, k, rest;
	unsigned char CLR[32];

 
	if (Bak.Wait) {
		
		Bak.Wait = 0;
		
	} else if (_stat == _BAC_SRCH) {
		/* Common data backup */

		for (i = 0; i < _TIME_LOOP; i++) {
			if (_romaddr + _len < _MEM_ALL_LEN) {
				if (BUF[_romaddr + _len] != _BacAddr[_entry].addr[_len]) {
					if (_screq){
						_scunt = CLEAR;			/* data search counter		 */
					}
					Bak.Buzy = TRUE;					/* for power & display module*/
					if (BR24xxWrite(&_BacAddr[_entry].addr[_len], _MEM_ADD + _romaddr + _len, 1)) {
						BUF[_romaddr + _len] = _BacAddr[_entry].addr[_len];
					} else {
  						_fail = TRUE;
 				
					}
					return;
				} else {

					if (_screq && (_scunt < _SEARCH_ALL_LEN)){	
						_scunt++;	
					}
					_len++;
					if (_len >= _BacAddr[_entry].len) {
						_romaddr += _len;
						_len = 0;
						_entry++;
						if (_entry >= _MEM_ENTRY_NUM) {
							_entry = 0;
							_romaddr = 0;


							_stat = _BLK_SRCH;

						break;
						}
					}
				}
			}
		}
		
	} else if (_stat == _BLK_SRCH) {

		/* Block data backup */
		for (i = 0; i < _TIME_LOOP; i++) {
			if (_entry < _BLK_ENTRY_NUM) {
				if (BLK[_entry] != 0) {
					if (_screq){
						_scunt = CLEAR;			/* data search counter		 */	
					}
					Bak.Buzy = TRUE;					/* for power & display module*/
					if (BR24xxWrite(_BlkAddr[_entry].addr, _BLK_ADD + _romaddr, _BlkAddr[_entry].len)) {
						BLK[_entry] = 0;
					} else {
						_fail = TRUE;
					}
					return;
				} else {
					if (_screq && (_scunt < _SEARCH_ALL_LEN)){
						_scunt++;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -