//***************************************************************************** // (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; } }