void vTaskDS1820DisplayTemps( void *pvParameters){ //char lcd_string[20]; static int count = 0; float fTempHLT = 0, fTempMash = 0; lcd_printf(1,1, 12, "TEMPERATURES"); for (;;) { xSemaphoreTake(xAppletRunningSemaphore, portMAX_DELAY); //take the semaphore so that the key handler wont //return to the menu system until its returned fTempHLT = ds1820_get_temp(HLT); fTempMash = ds1820_get_temp(MASH); //fTempCabinet = ds1820_get_temp(CABINET); count++; lcd_fill(1,50, 200, 190, Dark_Green); lcd_printf(1, 5, 10, "HLT = %u.%u", (unsigned int)floor(fTempHLT), (unsigned int)((fTempHLT-floor(fTempHLT))*pow(10, 3))); lcd_printf(1, 6, 10, "MASH = %u.%u", (unsigned int)floor(fTempMash), (unsigned int)((fTempMash-floor(fTempMash))*pow(10, 3))); lcd_printf(1, 7, 10, "LitresinBoiler = %u.%u", (unsigned int)floor(fGetLitresCurrentlyInBoiler()), (unsigned int)((fGetLitresCurrentlyInBoiler()-floor(fGetLitresCurrentlyInBoiler()))*pow(10, 3))); lcd_printf(1, 8, 10, "IsEnoughWater = %s", (GetBoilerState().level == HIGH) ? "True" : "False"); // lcd_printf(1, 7, 10, "Cabinet = %u.%u", (unsigned int)floor(fTempCabinet), (unsigned int)((fTempCabinet-floor(fTempCabinet))*pow(10, 3))); xSemaphoreGive(xAppletRunningSemaphore); //give back the semaphore as its safe to return now. vTaskDelay(500); } }
void vTaskDS1820DisplayTemps( void *pvParameters) { //char lcd_string[20]; static int count = 0; lcd_printf(1,1, 12, "TEMPERATURES"); for (;;) { xSemaphoreTake(xAppletRunningSemaphore, portMAX_DELAY); //take the semaphore so that the key handler wont //return to the menu system until its returned count++; //portENTER_CRITICAL(); lcd_fill(1,50, 200, 190, Black); lcd_printf(1, 5, 10, "HLT = %.2f", ds1820_get_temp(HLT)); lcd_printf(1, 6, 10, "Mash = %.2f", ds1820_get_temp(MASH)); lcd_printf(1, 7, 10, "Cabinet = %.2f", ds1820_get_temp(CABINET)); lcd_printf(1, 8, 10, "Ambient = %.2f", ds1820_get_temp(AMBIENT)); lcd_printf(1, 9, 10, "HLT_SSR = %.2f", ds1820_get_temp(HLT_SSR)); lcd_printf(1, 10, 10, "BOIL_SSR = %.2f", ds1820_get_temp(BOIL_SSR)); //printf("Display High water = %u\r\n",uxTaskGetStackHighWaterMark(NULL)); //portEXIT_CRITICAL(); xSemaphoreGive(xAppletRunningSemaphore); //give back the semaphore as its safe to return now. vTaskDelay(500); } }
void main (void) // Start des Hauptprogramms { unsigned char c1; // Initialisierung der ser. Schnittstelle des CC03ers seri_init(); // Endlosschleife while(1) { // Hauptmenü aufrufen haupt_menue(); // Eingabe und Auswertung c1 = getchar(); switch (c1) { case '1': ow_reset_demo(); break; case '2': ow_rd_rom_id(); break; case '3': ds1820_get_temp(); break; case '4': ds1820_scr_pa_wr_demo(); break; case '5': bus_demo(); break; case '9': delay_test(); break; } } }
void ds1820_refresh_all(){ for(int i = 0; i < 3; i++){ //Read temperatures from sensors whose conversion is ready if((temp[i] != DS1820_TEMP_NONE) && (ds1820_convert_ready(DS1820_PIN1 + i))){ temp[i] = ds1820_get_temp(DS1820_PIN1 + i); //Check for first values if(temp_min[i] == DS1820_TEMP_NONE){ temp_min[i] = temp[i]; } if(temp_max[i] == DS1820_TEMP_NONE){ temp_max[i] = temp[i]; } //Update min/max values if(temp[i] < temp_min[i]){ temp_min[i] = temp[i]; }else if(temp[i] > temp_max[i]){ temp_max[i] = temp[i]; } } //Start conversion for the next call if(ds1820_convert(DS1820_PIN1 + i)){ temp[i] = DS1820_TEMP_NONE; //Indication for ready check that there is no sensor //temp_min[DS1820_PIN1 + i] = DS1820_TEMP_NONE; //Reset min/max values //temp_max[DS1820_PIN1 + i] = DS1820_TEMP_NONE; }else if(temp[i] == DS1820_TEMP_NONE){ temp[i] = DS1820_TEMP_INIT; //Indication for ready check that there is a sensor } } }
void vCheckTask(void *pvParameters) { char buf[50]; char pcBrewElapsedTime[50], pcStepElapsedTime[50]; char pcBrewElapsedHours[50], pcBrewElapsedMinutes[50], pcBrewElapsedSeconds[50], pcBrewStep[50]; char pcBrewStepElapsedHours[50], pcBrewStepElapsedMinutes[50], pcBrewStepElapsedSeconds[50], pcMashTemp[50], pcHLTTemp[50]; char pcChillerPumpState[50], pcBoilState[50], pcHeapRemaining[50], pcBrewState[50], pcBoilDuty[50], pcLitresDelivered[50]; int ii = 0; char upper_limit = 255, lower_limit = 255; unsigned int touch, hops, ds1820, timer, litres, check, low_level = 90, heap, print, serial, serialcontrol; unsigned int display_applet, stats_applet, res_applet, graph_applet, brew_task; static char cBuf[80]; for (;;){ touch = uxTaskGetStackHighWaterMark(xTouchTaskHandle); ds1820 = uxTaskGetStackHighWaterMark(xDS1820TaskHandle); timer = uxTaskGetStackHighWaterMark(xTimerSetupHandle); litres = uxTaskGetStackHighWaterMark(xLitresToBoilHandle); print = uxTaskGetStackHighWaterMark(xPrintTaskHandle); hops = uxTaskGetStackHighWaterMark(xHopsTaskHandle); check = uxTaskGetStackHighWaterMark(NULL); serial = uxTaskGetStackHighWaterMark(xSerialHandlerTaskHandle); serialcontrol = uxTaskGetStackHighWaterMark(xSerialControlTaskHandle); heap = xPortGetFreeHeapSize(); display_applet = uiGetBrewAppletDisplayHWM(); res_applet = uiGetBrewResAppletHWM(); stats_applet = uiGetBrewStatsAppletHWM(); graph_applet = uiGetBrewGraphAppletHWM(); brew_task = uiGetBrewTaskHWM(); sprintf(pcBrewElapsedHours, "4D51E338F02649DFA173631622024A90:%02u\r\n\0", ucGetBrewHoursElapsed()); vConsolePrint(pcBrewElapsedHours); vTaskDelay(80); sprintf(pcBrewElapsedMinutes, "99A2038A62BF47E7BFB1922A43C0825C:%02u\r\n\0", ucGetBrewMinutesElapsed()); vConsolePrint(pcBrewElapsedMinutes); vTaskDelay(80); sprintf(pcBrewElapsedSeconds, "E9C4FDDEDEBC41D7AC3A3F4C636759A2:%02u\r\n\0", ucGetBrewSecondsElapsed()); vConsolePrint(pcBrewElapsedSeconds); vTaskDelay(80); sprintf(pcBrewStep, "1308CA31CAEE4A9A8AC5B353F5ACB594:%02u\r\n\0", ucGetBrewStep()); vConsolePrint(pcBrewStep); vTaskDelay(80); sprintf(pcBrewStepElapsedSeconds, "02BA9C74C1384C069ECB648C3CEFFCBA:%02u\r\n\0", ucGetBrewStepSecondsElapsed()); vConsolePrint(pcBrewStepElapsedSeconds); vTaskDelay(80); sprintf(pcBrewStepElapsedMinutes, "35C22A915227449C8F2A740F2C26B344:%02u\r\n\0", ucGetBrewStepMinutesElapsed()); vConsolePrint(pcBrewStepElapsedMinutes); vTaskDelay(80); sprintf(pcMashTemp, "E21DFC36AFB24226A323D7931B6A1F30:%02u\r\n\0", (unsigned int)floor(ds1820_get_temp(MASH))); vConsolePrint(pcMashTemp); vTaskDelay(50); sprintf(pcHLTTemp, "81A73894E64546868F39EE1758D459AD:%02u\r\n\0", (unsigned int)floor(ds1820_get_temp(HLT))); vConsolePrint(pcHLTTemp); vTaskDelay(50); sprintf(pcChillerPumpState, "461F715060F5468883F6F8500CEAA4BC:%02u\r\n\0", ucGetChillerPumpState()); vConsolePrint(pcChillerPumpState); vTaskDelay(80); sprintf(pcBoilState, "60140A1EB194439B8C9A198355FD93AA:%02u\r\n\0", ucGetBoilState()); vConsolePrint(pcBoilState); vTaskDelay(80); sprintf(pcBrewState, "FB46F7E5DF914AF1816035EC02DEE0DC:%02u\r\n\0", ucGetBrewState()); vConsolePrint(pcBrewState); vTaskDelay(80); sprintf(pcBoilDuty, "F066509116CA43F7B6845C8E2EBA69FA:%02u\r\n\0", uiGetBoilDuty()); vConsolePrint(pcBoilDuty); vTaskDelay(80); sprintf(pcLitresDelivered, "3AEE6966D7664AA4BE05BBBBF48E2836:%02u\r\n\0", uiGetActualLitresDelivered()); vConsolePrint(pcLitresDelivered); vTaskDelay(80); lower_limit = cI2cGetInput(CRANE_LOWER_LIMIT_PORT, CRANE_LOWER_LIMIT_PIN); upper_limit = cI2cGetInput(CRANE_UPPER_LIMIT_PORT, CRANE_UPPER_LIMIT_PIN); sprintf(buf, "BD52AA172CAE4F58A11EC35872EFEB99:%d \r \n", ii++%1024); sprintf(pcHeapRemaining, "*Heap:%u*low=%d,up=%d\r\n\0", heap, lower_limit, upper_limit); vConsolePrint(pcHeapRemaining); vTaskDelay(80); vConsolePrint(buf); if (touch < low_level || timer < low_level || litres < low_level|| print < low_level || hops < low_level || check < low_level|| display_applet < low_level || res_applet < low_level || stats_applet < low_level || graph_applet < low_level || brew_task < low_level) { //vTaskSuspendAll(); vConsolePrint("=============================\r\n"); sprintf(cBuf,"check task: idle ticks = %d\r\n", ulIdleCycleCount); vConsolePrint(cBuf); vTaskDelay(80); sprintf(cBuf, "touchwm = %d\r\n", touch); vConsolePrint(cBuf); vTaskDelay(80); sprintf(cBuf, "DS1820wm = %d\r\n", ds1820); vConsolePrint(cBuf); vTaskDelay(80); sprintf(cBuf, "TimerSetupwm = %d\r\n", timer); vConsolePrint(cBuf); vTaskDelay(80); sprintf(cBuf, "litreswm = %d\r\n", litres); vConsolePrint(cBuf); vTaskDelay(80); sprintf(cBuf, "hopswm = %d\r\n", hops); vConsolePrint(cBuf); vTaskDelay(80); sprintf(cBuf, "check = %d\r\n", check); vConsolePrint(cBuf); vTaskDelay(80); sprintf(cBuf, "serial = %d\r\n", serial); vConsolePrint(cBuf); vTaskDelay(80); sprintf(cBuf, "serialcontrol = %d\r\n", serialcontrol); vConsolePrint(cBuf); vTaskDelay(80); sprintf(cBuf, "brewtask = %d\r\n", brew_task); vConsolePrint(cBuf); vTaskDelay(80); sprintf(cBuf, "stats = %d\r\n", stats_applet); vConsolePrint(cBuf); vTaskDelay(80); sprintf(cBuf, "res = %d\r\n", res_applet); vConsolePrint(cBuf); vTaskDelay(80); sprintf(cBuf, "graph = %d\r\n", graph_applet); vConsolePrint(cBuf); vTaskDelay(80); sprintf(cBuf, "brew_display = %d\r\n", display_applet); vConsolePrint(cBuf); vTaskDelay(80); sprintf(cBuf, "print = %d\r\n", print); vConsolePrint(cBuf); vConsolePrint("=============================\r\n"); //xTaskResumeAll(); vTaskDelay(800); } vTaskDelay(800); taskYIELD(); } }