164 if(old_sec != g_sec || firstTime) {
165 time = g_min * 100 +
g_sec;
201 if((g_sec & 0x02) == 0)
208 if((set =
DoControl(innerTemp, outerTemp, forTemp, recCnt <
NUM_HR, g_min, g_sec)) != NULL) {
245 if(--idx == (
UCHAR)-1)
248 dSec = g_sec - old5sec;
249 if(g_sec == 0 && old5sec != 0)
251 if(dSec == (
CHAR)(gSmi()-(
UCHAR)60) || (
CHAR)gSmi() == dSec || firstTime) {
254 time = idx * gIvMeas() * 100;
257 if(--idx == (
UCHAR)-1)
280 static UINT oldShdMin = 1;
281 static UCHAR old_sec = -1,
289 dMin = dMin < 0 ? gIvMeas() : dMin;
292 if(g_sets[i].outTemp >= (
INT)(gSdt() + gDelTemp())) {
295 if(oldShdMin != min) {
305 g_sets[i].
inTemp = inTemp;
312 else if(old_sec == (
UCHAR)-1 && g_sets[i].outTemp <= (
INT)(gSdt() - gDelTemp())) {
320 if(gdInNom(g_sets[i].inTemp) > gDelTemp()) {
340 else if(gdInNom(g_sets[i].inTemp) < -gDelTemp()) {
346 if(balDur >= gHci()) {
392 for(i=0;i<range;++i) {
396 if(abs(dOut) <= delLim) {
520 prevIdx = (
CHAR)(curIdx - delIdx);
523 return (
UCHAR)prevIdx;
MEASSET * DoControl(INT inTemp, INT outTemp, UINT forTemp, UCHAR learning, UINT min, UCHAR sec)
realizes the main heater controlling algorithm the value of inner temperature distinguishes between ...
UINT FindForeRun(INT *outTemp, const UCHAR range, UINT const delLim)
gets the forerun temperature of the closest outer temperature which was recorded in learning phase a...
void PrintMeasValues(MEASSET *ms, OP_MODE opm, UCHAR msrFull)
puts the measurement values on screen
void sMov(UCHAR mov)
set minute overflow counter
UCHAR CalcPrevIndex(UCHAR curIdx, UCHAR delIdx)
#define MAX_DEL_OUTER_TEMP
UINT CalcSupplyVoltage(UCHAR id)
UINT SetLimitValue(UINT val, DATTYPE dt, CHAR dir, INT min, INT max)
limiting values to constraints
UCHAR * GetCtrlMode(CTRL_MODE ctm, UCHAR *buf)
void PrintValue(DATTYPE dt, UCHAR col, UCHAR row, UCHAR name, void *value)
put a specific value on screen
void WriteCtrlMode(UCHAR name, UCHAR *cmName)
HCREC EEMEM ge_hcRec[NUM_HR]
void DoEngineTest(BTN_CODE bc)
do engine testing dependent on button request, simply drives the mixer engine unconditionally ...
MEASSET EEMEM ge_msRec[NUM_MSR]
void WriteMeasVal(MEASVAL *mv)
put a measurement value on lcd source value is being output as fixed decimal point number ...
void ControlEngine(ENG_MODE em)
takes care of the heating curve recording in eeprom records only if outer temp value does not exist ...
UINT CalcAdcTemp(UCHAR id)
calculate the temperature from specific ADC value in data array, specified by id
int main(void)
main controlling task
UCHAR GetSenderValues(UINT *innerTemp, UINT *outerTemp)
establish decimal temperature values form raw stream in sequence
BTN_CODE DecodeButton(void)
identify whether a (and which) button is pressed or not
UCHAR gMov()
return minute overflow counter
void DoSetup(BTN_CODE bc, OP_MODE *opm)
does the setup job, distinguishes data selection and modification dependent on user pressed buttons a...