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

📄 pwl.c

📁 OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI的双核处理器
💻 C
字号:
//---------------------------------------------------------------------------
//            TEXAS INSTRUMENTS INCORPORATED PROPRIETARY INFORMATION
//
//   Property of Texas Instruments -- For  Unrestricted  Internal  Use  Only
//   Unauthorized reproduction and/or distribution is strictly prohibited.  This
//   product  is  protected  under  copyright  law  and  trade  secret law as an
//   unpublished work.  Created 1987, (C) Copyright 2000 Texas Instruments.  All
//   rights reserved.
//
//   Filename       	: pwl.c
//   Description    	: Pulse Width Light body
//   Project        	: Samsom ... adapted for Helen
//   Author         	: Francois Reygagne freygagne@tif.ti.com
//   Modified by     : Jean-Philippe Ulipano jp_ulpiano@ti.com
//---------------------------------------------------------------------------

#include "test.h"
#include "global_types.h"
#include "result.h"
#include "intvecs.h"
#include "pwl.h"
#include "mapping.h"
#include "reset.h"
#include "errorcodes.h"


//--------------------------------------------------------------------------------
//    PWL_TestResetValue
//---------------------------------------------------------------------------------
void PWL_TestResetValue(void)
{
  TEST_REGISTER_RESET_VALUE(PWL_LEVEL_REG);
  TEST_FIELD_RESET_VALUE(PWL_CTRL_REG,PWL_CKEN);

  ARE_RESET_VALUES_OK();
}

//--------------------------------------------------------------------------------
//    PWL_TestRegistersAccess
//---------------------------------------------------------------------------------
void PWL_TestRegistersAccess(void)
{
  MODIFY_REGISTER_RESET_VALUE16(PWL_LEVEL_REG);
  MODIFY_FIELD_RESET_VALUE16(PWL_CTRL_REG,PWL_CKEN);

  ARE_RESET_VALUES_OK();
}

//--------------------------------------------------------------------------------
//    PWL_TestRegisters
//---------------------------------------------------------------------------------
UWORD16 PWL_TestRegisters(void)
{
  //Check Level Register after reset
  PWL_CheckResult(PWL_LEVEL_REG, PWL_LEVEL_REG_RESET_VALUE,
                       PWL_LEVEL_RESET_ERROR);

  //Check Control Register after reset
  PWL_CheckResult(PWL_CTRL_REG , PWL_CTRL_REG_RESET_VALUE ,
                  PWL_CTRL_RESET_ERROR);

  //Set all register used bits to HIGH
  PWL_LEVEL_REG = PWL_LEVEL_REG_HIGH_VALUE;
  PWL_CTRL_REG  = PWL_CTRL_REG_HIGH_VALUE;

  //Check all register used bits had been set high
  PWL_CheckResult(PWL_LEVEL_REG, PWL_LEVEL_REG_HIGH_VALUE,
                  PWL_LEVEL_HIGH_VALUE_ERROR);
  PWL_CheckResult(PWL_CTRL_REG , PWL_CTRL_REG_HIGH_VALUE,
                  PWL_CTRL_HIGH_VALUE_ERROR);

  //Set all register used bits to LOW
  PWL_LEVEL_REG = PWL_LEVEL_REG_LOW_VALUE;
  PWL_CTRL_REG  = PWL_CTRL_REG_LOW_VALUE;

  // check all register bits had been set low
  PWL_CheckResult(PWL_LEVEL_REG, PWL_LEVEL_REG_LOW_VALUE,
                  PWL_LEVEL_LOW_VALUE_ERROR);
  PWL_CheckResult(PWL_CTRL_REG , PWL_CTRL_REG_LOW_VALUE,
                  PWL_CTRL_LOW_VALUE_ERROR);

  //Determine global result OK or Bad
  return RES_GetFinal();
}



//-------------------------------------------
// PWL_SetLevelReg
//-------------------------------------------
void PWL_SetLevelReg(const UWORD8 value)
{
  PWL_LEVEL_REG = value;
}

//-------------------------------------------
// PWL_SetCtrolReg
//-------------------------------------------
void PWL_SetCtrolReg(const PWL_ClockEnable_t value)
{
  PWL_CTRL_REG = value;
}

//-------------------------------------------
// PWL_GetLevelReg
//-------------------------------------------
UWORD8 PWL_GetLevelReg(void)
{
  return PWL_LEVEL_REG;
}

//-------------------------------------------
// PWL_GetCtrolReg
//-------------------------------------------
UWORD8 PWL_GetCtrolReg(void)
{
  return PWL_CTRL_REG & PWL_CTRL_REG_MASK;
}


//--------------------------------------------------------------------------------
// PWL_EnableClock
//---------------------------------------------------------------------------------
void PWL_EnableClock(void)
{
  PWL_CTRL_REG = PWL_ENABLE_CLOCK;
}


//--------------------------------------------------------------------------------
// PWL_DisableClock
//---------------------------------------------------------------------------------
void PWL_DisableClock(void)
{
  PWL_CTRL_REG = PWL_CUT_CLOCK;
}


//--------------------------------------------------------------------------------
//  PWL_IsClockEnabled
//---------------------------------------------------------------------------------
boolean_t PWL_IsClockEnabled(void)
{
  if ( PWL_CTRL_REG == PWL_ENABLE_CLOCK )
       return True;
  else return False;
}

//--------------------------------------------------------------------------------
//  PWL_CheckResult
//---------------------------------------------------------------------------------
boolean_t PWL_CheckResult(const UWORD8       read_data,
                          const UWORD8       value,
                          const PWL_Error_t  error)
{
  if (read_data != value)
  {
      RES_Set(error);
      RES_Set(read_data);
      return False;
  }
  else
  {
      RES_Set(OK);
      return True;
  }//endif
}




//------------------------------------------------
//  PWL_CheckLightIntensityEvolutionLcd
//------------------------------------------------
void PWL_CheckLightIntensityEvolutionLcd(void)
{
//const UWORD32 STEP = 32;
//UWORD32 i;
//UWORD32 j;

// on board take a breakpoint on each step
// and check light intensity evolution on LCD

//----------------------------------
//BOARD_TEST
//---------------------------------
/*   // check different comparator threshold with 32/255 step */
/*   for (j=STEP; j <= 255;) */
/*   { */
/*      PWL_LEVEL_REG = (UWORD8)j; */
/*      // wait a moment on Board only */
/*         for (i=0; i<= 150;) { i++; };  */
/*      j += STEP; */

/*      if (j == 256)  */
/*         j = 255; // for max value checking  */
/*   }//end for */


//-------------------
//RTL SIMULATION
//------------------

     PWL_LEVEL_REG = 0xFF;

}//end PWL_CheckLightIntensityEvolutionLcd

⌨️ 快捷键说明

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