📄 pwl.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 + -