BEARBEITER : H. Bayerl BEGINN : 29.09.1997 FILENAME : dwf.c ************************************************************************* AENDERUNGSDOKUMENTION: ------------------------- Datum: Aenderungsbeschreibung: ------------------------------------------------------------------------ 29.09.97 Ersterstellung 08.04.99 Erweiterung auf sieben Segmente fuer S54 ---------------------------- Start MSN44 ------------------------------- 0.2 07.03.01 @ks Motorentyp an EVT angleichen **************************************************************************/ #include "..\..\common\header\bits.h" #include "..\..\common\header\oskar.h" #include "..\..\common\header\zustand.h" #include "..\..\common\header\sk.h" #include "..\..\common\header\sw_confg.h" #include "..\header\dwf.h" #include "..\header\tog.h" /*----------------------- Funktion : dwf_init -------------------------- Initialisierung der DWF-Funktion erstmalige Bestimmung der Anzahl der angesteuerten Warnfelder. Ab diesem Zeitpunkt ist nur noch eine Verringerung der aktiven Anzeigefenster moeglich. Ein bereits inaktives Warnfeld kann nicht mehr erneut aktiviert werden. Diese Funktion muss nach der ersten Erfassung der Motortemperatur stehen. !!!! --------------------------------------------------------------------------*/ void dwf_init() { dwf_st = 0; dwf_timer = 0; if ( toel > K_DWF_TOEL_0SEG ) { /*--1--*/ dwf_st = 0; /* Kein Segment angesteuert */ } /*--1a--*/ else { /*--2--*/ if ( toel > K_DWF_TOEL_1SEG ) { /*--3--*/ dwf_st = 1; /* Ein Segment angesteuert */ } /*--3a--*/ else { /*--4--*/ if ( toel > K_DWF_TOEL_2SEG ) { /*--5--*/ dwf_st = 2; /* Zwei Segmente angesteuert */ } /*--5a--*/ else { /*--6--*/ if ( toel > K_DWF_TOEL_3SEG ) { /*--7--*/ dwf_st = 3; /* Drei Segmente angesteuert */ } /*--7a--*/ else { /*--8--*/ #ifdef LED_DWF_SUPPORTED if ( B_CFG_S54 ) { /*--9--*/ if ( toel > K_DWF_TOEL_4SEG ) { /*--10--*/ dwf_st = 4; /* 4 Segmente angesteuert - nur S54 */ } /*--10a--*/ else { /*--11--*/ if ( toel > K_DWF_TOEL_5SEG ) { /*--12--*/ dwf_st = 5; /* 5 Segmente angesteuert - nur S54 */ } /*--12a--*/ else { /*--13--*/ if ( toel > K_DWF_TOEL_6SEG ) { /*--14--*/ dwf_st = 6; /* 6 Segmente angesteuert - nur S54 */ } /*--14a--*/ else { /*--15--*/ dwf_st = 7; /* 7 Segmente angesteuert - nur S54 */ } /*--15a--*/ } /*--13a--*/ } /*--11a--*/ } /*--9a--*/ else { /*--16--*/ #endif dwf_st = 4; /* Vier Segmente angesteuert */ #ifdef LED_DWF_SUPPORTED } /*--16a--*/ #endif } /*--8a--*/ } /*--6a--*/ } /*--4a--*/ } /*--2a--*/ } /* end of dwf_init() */ /*----------------------- Funktion : dwf_berechnung ---------------------- Bestimmung der Anzahl der angesteuerten Warnfelder. Es ist nur noch eine Verringerung der aktiven Anzeigefenster moeglich. Ein bereits inaktives Warnfeld kann nicht mehr erneut aktiviert werden. Um ein Warnfeld zu deaktivieren, muss die Motortemperatur fuer eine minimalen Zeitraum ueber der Temperaturschwelle liegen. --------------------------------------------------------------------------*/ void dwf_berechnung() { unsigned char dwf_neu; if ( toel > K_DWF_TOEL_0SEG ) {/*--1--*/ dwf_neu = 0; /* Kein Segment angesteuert */ }/*--1a--*/ else {/*--2--*/ if ( toel > K_DWF_TOEL_1SEG ) {/*--3--*/ dwf_neu = 1; /* Ein Segment angesteuert */ }/*--3a--*/ else {/*--4--*/ if ( toel > K_DWF_TOEL_2SEG ) {/*--5--*/ dwf_neu = 2; /* Zwei Segmente angesteuert */ }/*--5a--*/ else {/*--6--*/ if ( toel > K_DWF_TOEL_3SEG ) {/*--7--*/ dwf_neu = 3; /* Drei Segmente angesteuert */ }/*--7a--*/ else {/*--8--*/ #ifdef LED_DWF_SUPPORTED if ( B_CFG_S54 ) {/*--9--*/ if ( toel > K_DWF_TOEL_4SEG ) {/*--10--*/ dwf_neu = 4; /* 4 Segmente angesteuert - nur S54 */ }/*--10a--*/ else {/*--11--*/ if ( toel > K_DWF_TOEL_5SEG ) {/*--12--*/ dwf_neu = 5; /* 5 Segmente angesteuert - nur S54 */ }/*--12a--*/ else {/*--13--*/ if ( toel > K_DWF_TOEL_6SEG ) {/*--14--*/ dwf_neu = 6;/* 6 Segmente angesteuert - nur S54 */ }/*--14a--*/ else {/*--15--*/ dwf_neu = 7;/* 7 Segmente angesteuert - nur S54 */ }/*--15a--*/ }/*--13a--*/ }/*--11a--*/ }/*--9a--*/ else {/*--16--*/ #endif dwf_neu = 4; /* Vier Segmente angesteuert */ #ifdef LED_DWF_SUPPORTED }/*--16a--*/ #endif }/*--8a--*/ }/*--6a--*/ }/*--4a--*/ }/*--2a--*/ if ( B_SKM_NMAX ) {/*--17--*/ #ifdef LED_DWF_SUPPORTED if ( B_CFG_S54 ) {/*--18--*/ dwf_neu = 7; /* bei aktiver Drehzahlbegrenzung durch Egas-Notprogramm */ dwf_st = 7; }/*--18a--*/ else {/*--19--*/ #endif dwf_neu = 4; /* bei aktiver Drehzahlbegrenzung durch Egas-Notprogramm */ dwf_st = 4; #ifdef LED_DWF_SUPPORTED }/*--19a--*/ #endif }/*--17a--*/ if ( dwf_neu < dwf_st ) /* Verringerung der Anzeigefelder */ {/*--20--*/ if ( dwf_timer++ > K_DWF_T_HYS ) {/*--21--*/ dwf_st = dwf_neu; /* Uebernahme der Aenderung */ dwf_timer = 0; }/*--21a--*/ }/*--20a--*/ else {/*--22--*/ dwf_timer = 0; }/*--22a--*/ } /* end of dwf_berechnung()*/