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

📄 hardware.c

📁 有线电视系统前端设备复用器原代码。 用语接受卫星信号
💻 C
📖 第 1 页 / 共 2 页
字号:
/*------------------------------------------------------------------------------*/
/* Project Name: Multiplexer of MPEG-II                                         */
/* Module  Name: */
/* Purpose     :                                                                */
/* Author      : LingYiChuan                                                    */
/* Date        : 2000/9/20                                                      */
/* Version     : 1.0                                                            */
/* Copyright HignSun Dvision, All Right Reservered.                             */
/*------------------------------------------------------------------------------*/
#include <icontrol\mpc8xx.h>
#include "src\board.h"
#include "psos.h"
#include "constant.h"
#include "structure.h"
#include "command.h"
#include "tspack.h"
#include "repid.h"
#include "nib.h"
#include "caproc.h"
extern void my_Delay(unsigned long int dly_ms);
extern unsigned char PanelOK;
extern unsigned char Connected;          

extern unsigned char SystemState;
extern System_Data   SystemData;

extern 	unsigned long First_PID_Remap(void);
extern  unsigned long WriteReMapTable(void);
extern  void ReportPIDRemap(unsigned char);

extern  void tk_psiSend(void);
extern  void TK_Repid(void);
extern  void TK_SDTSend(void);
extern  void TK_NITSend(void);
extern  void TK_EITSend(void);

extern  void TK_SearchProgram(void);
extern  void TK_Get0PSI(void);
extern  void TK_Get1PSI(void);
extern  void TK_Get2PSI(void);
extern  void TK_Get3PSI(void);
extern  void TK_Get4PSI(void);
extern  void TK_Get5PSI(void);
extern  void TK_Get6PSI(void);
extern  void TK_Get7PSI(void);


unsigned long TestFPGA(void)
{
	unsigned char Failed=FALSE;

	unsigned char FPGA1,FPGA2,FPGA3;
	unsigned char rt;

	FPGA1=0;
	FPGA2=0;
	FPGA3=0;

	FPGA1_TEST_REG=0x55;
	my_Delay(50);
	rt=FPGA1_TEST_REG;
	if(rt!=0x55)
	{
		FPGA1=1;
		Display("FPGA1 selftest failed! \n");
	}

	FPGA1_TEST_REG=0xAA;
	my_Delay(50);
	rt=FPGA1_TEST_REG;
	if(rt!=0xAA)
	{
		FPGA1=1;
		Display("FPGA1 selftest failed! \n");
	}


	FPGA2_TEST_REG=0x55;
	my_Delay(50);
	rt=FPGA2_TEST_REG;
	if(rt!=0x55)
	{
		FPGA2=1;
		Display("FPGA2 selftest failed! \n");
	}


	FPGA2_TEST_REG=0xAA;
	my_Delay(50);
	rt=FPGA2_TEST_REG;
	if(rt!=0xAA)
	{
		FPGA2=1;
		Display("FPGA2 selftest failed! \n");
	}
	
	FPGA3_TEST_REG=0x55;
	my_Delay(50);
	rt=FPGA3_TEST_REG;
	if(rt!=0x55)
	{
		FPGA3=1;
		Display("FPGA3 selftest failed! \n");
	}

	FPGA3_TEST_REG=0xAA;
	my_Delay(50);
	rt=FPGA3_TEST_REG;
	if(rt!=0xAA)
	{
		FPGA3=1;
		Display("FPGA3 selftest failed! \n");
	}

	rt=0x00|(FPGA3<<2)|(FPGA2<<1)|(FPGA1);
	if(rt==0)
		Display("FPGA selftest successfully! \n");

	return rt;
}

unsigned long TestC54(void)
{
	unsigned long  Event;
	unsigned short ret;
	volatile unsigned char  r1,r2;
	unsigned char  Success=FALSE;
	unsigned short i,j;

	unsigned char  bufh[2048];
	unsigned char  bufl[2048];
	/*--------------------------------------------------------------------------*/
	/* 写HPI控制寄存器,设置操作时高八位在前                                     */
	/*--------------------------------------------------------------------------*/	
	HPI_CONTROL_REG_H=0x00;
	HPI_CONTROL_REG_L=0x00;

	HPI_ADDR_REG_H=0x00;
	HPI_ADDR_REG_L=0x10;

	HPI_DATA2_REG_H=0x01;
	HPI_DATA2_REG_L=0x55;

	HPI_DATA2_REG_H=0x01;
	HPI_DATA2_REG_L=0x55;
	
	/*-------------------------------------------------------------------------*/
	/* 中断C54                                                                 */
	/*-------------------------------------------------------------------------*/
	HPI_CONTROL_REG_H=0x04;
	HPI_CONTROL_REG_L=0x04;

	/*-------------------------------------------------------------------------*/
	/* 检查C549返回的结果                                                      */
	/*-------------------------------------------------------------------------*/
	for(i=0;i<100;i++)
	{
		/*---------------------------------------------------------------------*/
		/* 检查是否有C54的中断,对应于IRQ2                                      */
		/*---------------------------------------------------------------------*/
		Event=S_SiPendRegister;
		S_SiPendRegister=Event;

		if(Event&0x08000000)
		{
			Success=TRUE;
			/*-----------------------------------------------------------------*/
			/* 清除C54产生的中断                                               */
			/*-----------------------------------------------------------------*/
			HPI_CONTROL_REG_H=0x08;
			HPI_CONTROL_REG_L=0x08;

			break;
		}
		else
			my_Delay(50);/*by xu*/
	}

	if(Success)
	{
		/*--------------------------------------------------------------------*/
		/* 如果有回应,检查返回的值是否成功                                    */
		/*--------------------------------------------------------------------*/

		/*--------------------------------------------------------------------*/
		/* 读C54的返回值                                                      */
		/*--------------------------------------------------------------------*/
		HPI_CONTROL_REG_H=0x00;
		HPI_CONTROL_REG_L=0x00;

		HPI_ADDR_REG_H=0x00;
		HPI_ADDR_REG_L=0x14;

		r1=HPI_DATA2_REG_H;
		r2=HPI_DATA2_REG_L;

		r1=HPI_DATA2_REG_H;
		r2=HPI_DATA2_REG_L;

		ret=(r1<<8)|r2;

		if(ret==0xAA01) 
		{
			HPI_CONTROL_REG_H=0x00;
			HPI_CONTROL_REG_L=0x00;

			HPI_ADDR_REG_H=0x01;
			HPI_ADDR_REG_L=0x14;

			r1=HPI_DATA2_REG_H;
			r2=HPI_DATA2_REG_L;

			r1=HPI_DATA2_REG_H;
			r2=HPI_DATA2_REG_L;

			ret=(r1<<8)|r2;

			if(ret==0x0101)
			{
				Display("C54 selftest succesfully! \n");
				return 0;
			}
			else 
			{
				Display("C54 selftest failed! ret=0x%x \n",ret);
				return 1;
			}
		}
		else
		{
			Display("C54 selftest failed! ret=0x%x \n",ret);
			return 1;
		}
	}
	else
	{
		Display("C54 selftest failed! no interrupt received.");
		return 1;
	}

}

void ResetFPGA(void)
{
	/*----------------------------------------------------------------*/
	/* set PA4 0, and then set PA4 1                                  */
	/*----------------------------------------------------------------*/

	S_PortADataReg&=0xF700;

	my_Delay(50);

	S_PortADataReg|=0x0800;
	

}
void ResetC54(void)
{
	/*----------------------------------------------------------------*/
	/* set PA0 0, and then set PA0 1                                  */
	/*----------------------------------------------------------------*/


	S_PortADataReg&=0x7FFF;

	my_Delay(50);

	S_PortADataReg|=0x8000;
	


}

void ResetPanel(void)
{
	/*----------------------------------------------------------------*/
	/* set PA1 0, and then set PA1 1                                  */
	/*----------------------------------------------------------------*/
	
	S_PortADataReg&=0xBFFF;

	my_Delay(50);

	S_PortADataReg|=0x4000;
	

}

void ResetRaoma(void)
{
	/*----------------------------------------------------------------*/
	/* set PA2 0, and then set PA2 1                                  */
	/*----------------------------------------------------------------*/

	S_PortADataReg&=0xDFFF;

	my_Delay(1);

	S_PortADataReg|=0x2000;


}

void ResetNetboard(void)
{
	/*----------------------------------------------------------------*/
	/* set PA3 0, and then set PA3 1                                  */
	/*----------------------------------------------------------------*/

	S_PortADataReg&=0xEFFF;

	my_Delay(50);

⌨️ 快捷键说明

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