//*****************************************************************************
// (C) Automotive Lighting Reutlingen GmbH
// Tuebinger Strasse 123, 72762 Reutlingen, Germany
//
// Automotive Lighting Reutlingen GmbH owns all the rights to this work.
// This work shall not be copied, reproduced, used, modified, transferred
// or its information shall not be disclosed without the prior written
// authorization of Automotive Lighting Reutlingen GmbH.
//*****************************************************************************
//-----------------------------------------------------------------------------
/// \file AvacUtil.c
///
/// \brief
///
/// \descr
///
/// Additional information can be found in the design description (Link:
/// MDDD)
///
/// \author Alf Traulsen (taf2rt)
/// mailTo:alf.traulsen@al-lighting.com
//-----------------------------------------------------------------------------
#include "Std_Types.h"
#include "AL_Platform_Types.h"
#include
#include
#include
// *****************************************************************************
// Function : AvacUtil_Order1FilterByRelTime() C164: 15us
//
// Parameter : ORDER1_Filter* pFilter - pointer to filter structure
// uint16 unRelTime - filter time relative to sampling time
// sint16 nValue - input value
//
// Returnvalue : actual filter value
//
// Description : calculation of filter coefficient and call of Order1Filter().
// *****************************************************************************
sint16 AvacUtil_Order1FilterByRelTime(ORDER1_Filter* pFilter, uint16 unRelTime, sint16 nValue)
{
uint16 unBeta;
if(unRelTime == 0)
{
unBeta = 1; // minimum filter coefficient ==> relative time = 0,2
}
else
{
unRelTime = UTIL_MIN(unRelTime, 127);
unBeta = 127 - (uint16) 30000 / (uint16) (unRelTime * 256 + 100);
}
Order1Filter(pFilter, nValue, unBeta);
return Order1FilterValue(pFilter);
}
/*DOC*************************************************************************
Funktion AvacUtil_SignalLimiter()
Parameter sint16 LimitMax - obere Grenze
sint16 LimitMin - untere Grenze
sint16 Value - Wert, der begrenzt werden soll
Ergebnis sint16 - begrenzter Wert
Beschreibung
Das Eingangssignal Value wird auf LimitMin bis LimitMax begrenzt.
*************************************************************************DOC*/
sint16 AvacUtil_SignalLimiter(sint16 LimitMax, sint16 LimitMin, sint16 Value)
{
sint16 ret;
if(Value > LimitMax)
{
ret = LimitMax;
}
else if(Value < LimitMin)
{
ret = LimitMin;
}
else
{
ret = Value;
}
return ret;
}
/*DOC*************************************************************************
Funktion AvacUtil_RateLimiter()
Parameter sint16* pRateLimiter - Zeiger auf die Speichervariable
sint16 RateUp - Gradient für steigende Signale
sint16 RateDown - Gradient für fallende Signale
sint16 Value - Neuer Wert der begrenzt werden soll
Ergebnis keines
Beschreibung
Das Ausgangssignal (*pRateLimiter) wird dem Eingangssignal nachgeführt,
aber nur mit der maximalen Änderung RateUp bzw. RateDown pro Funktionsaufruf.
*************************************************************************DOC*/
void AvacUtil_RateLimiter(sint16* pRateLimiter, sint16 RateUp, sint16 RateDown, sint16 Value)
{
if(Value > *pRateLimiter + RateUp)
{
*pRateLimiter += RateUp;
}
else if(Value < *pRateLimiter - RateDown)
{
*pRateLimiter -= RateDown;
}
else
{
*pRateLimiter = Value;
}
}