void OPT_Get_Result() { if(GlobalStruct.OPT_Status == 0) { if(OPT_StartConvert()) { SetTimerTask(OPT_Get_Result, 1000); GlobalStruct.OPT_Status = 1; } else { SetTimerTask(OPT_Get_Result, 300); GlobalStruct.OPT_Status = 0; } } else if(GlobalStruct.OPT_Status == 1) { if(OPT_IsReady()) { OPT_GetResultString(&GlobalStruct.Lux); SetTimerTask(OPT_Get_Result, 2000); GlobalStruct.OPT_Status = 0; } else { SetTimerTask(OPT_Get_Result, 800); } } }
void KeyScan(void){ if BitIsClear(KEY_PORTIN_STEP, KEY_STEP_PORT) SetBit(PrevKey, KEY_STEP_FLAG); if BitIsClear(KEY_PORTIN_OK, KEY_OK_PORT) SetBit(PrevKey, KEY_OK_FLAG); if (PrevKey) //Какая-то клавиша нажата, запускаем функцию проверки через защитынй интервал SetTimerTask(KeyCheck, PROTECT_PRD_KEY); else //Ничего не нажато, продолжаем сканировать SetTimerTask(KeyScan, SCAN_PERIOD_KEY); }
void RunTasks (void) { SetTimerTask(TaskLedOn,1000); SetTimerTask(TaskUART,1000); SetTimerTask(TaskADC3,10); //SetTimerTask(TaskAlarm,12000); //SetTimerTask(TaskPWM,25); //SetTimerTask(TaskTurnOnPhone, 1000); //SetTimerTask(TaskSideLights,25); //fprintf(stdout,"### START ###\r\n"); //fprintf(stdout,"ATE0\r\n"); wdt_enable(WDTO_120MS); }
void Display_Controll() { switch(GlobalStruct.OS_Status) { case 0: SetTask(ScreenSaver_Display); SetTimerTask(Display_Controll, 1000); break; case 1: SetTask(Main_Display_Print); SetTimerTask(Display_Controll, 250); } }
void TaskWaitButtonOff (void){ if(PM_PinIsClear(BUTTON_PLUS) || PM_PinIsClear(BUTTON_MINUS) || PM_PinIsClear(BUTTON_ON_OFF)) { SetTimerTask(TaskWaitButtonOff,5); if (++pressedTime > 45) { pressedTime = 45; ChangePwd(); } return; } pressedTime = 0; SetTimerTask(TaskScanButtons,10); }
void espUartTx(u08 Cmd, u08* Value, u08 Len){ if espModuleIsNot() //Нет модуля, ничего не делаем return; while(FIFO_SPACE(espTxBuf) < (Len+6)){ //Ждем пока буфер не освободится TaskManager(); if espModuleIsNot(){ //Не удалось определить наличие модуля return; } } u08 FlagInt = SREG & SREG_I; cli(); //Формируется пакет FIFO_PUSH(espTxBuf, CMD_CLCK_PILOT1); FIFO_PUSH(espTxBuf, CMD_CLCK_PILOT2); FIFO_PUSH(espTxBuf, CMD_CLCK_PILOT1); FIFO_PUSH(espTxBuf, CMD_CLCK_PILOT2); FIFO_PUSH(espTxBuf, Len); while(Len){ FIFO_PUSH(espTxBuf, *Value++); Len--; } FIFO_PUSH(espTxBuf, Cmd); epsTxStart(); if (FlagInt) sei(); espAttemptLinkSet(); SetTimerTask(espTimeoutError, ESP_ERR_TIMEOUT); //Таймаут ответа от модуля }
void TaskAlarm (void) { if (PM_PinIsClear(ALARM_STATUS) && PM_PinIsClear(ALARM_PAGER))//fprintf(stdout, "Alarm in GuardMode"); { } else if (PM_PinIsClear(ALARM_STATUS) && PM_PinIsSet(ALARM_PAGER)) { //fprintf(stdout, "Alarm is CALLING"); if (BitIsClear(status, ST_ALARM)) { SetTask(TaskCall); } } else { /*if (PM_PinIsSet(ALARM_STATUS)) { fprintf(stdout, "STATUS is High\t"); } else { fprintf(stdout, "STATUS is low\t"); } if (PM_PinIsSet(ALARM_PAGER)) { fprintf(stdout, "PAGER is High\n"); } else { fprintf(stdout, "PAGER is low\n"); }*/ } SetTimerTask(TaskAlarm, 1000); }
void TaskUART (void) { //fprintf(stdout, "pwm:%d\t 12v:%d\tOCR:%d\r\n", adc_v[ADC_PIN_RES_PWM], adc_v[ADC_PIN_12V],OCR1B); //fprintf(stdout, "U_1200mV:%d, U_1320mV:%d, U_1200mV:%d\t%d0\n", CONST_U_1200mV, CONST_U_1280mV, adc_v[ADC_PIN_12V], 50*adc_v[ADC_PIN_12V]/1023*3); //fprintf(stdout, "countOn: %d\t countOff:%d\n", countOn/4, countOff/4); SetTimerTask(TaskUART,1000); }
void Start_Display() { SetTimerTask(Check_OPT, 10); LCD_WS0010Start(); Add_To_DDR("OS Start"); Print_DDR(); }
inline void BeginScakKeyRepeat(void){ //Начать обработку следующего нажатия #ifdef EXTERNAL_INTERAPTS_USE GICR |= KEY_INT_MASK; #else SetTimerTask(KeyScan, SCAN_PERIOD_KEY); #endif }
void TaskCheckSideLights (void) { if (adc_v[ADC_PIN_12V] < U_mV(1300)) { //turnOFF after 60S LightsCounter--; if (adc_v[ADC_PIN_12V] < U_mV(1200)) { //turnOFF after 30S LightsCounter--; } } else // (U > 1300mV) { LightsCounter = (LightsCounter < 0) ? 0 : LightsCounter; LightsCounter = (LightsCounter > 3) ? 3 : LightsCounter+1; //turnON after 3S } SetTimerTask(TaskCheckSideLights,1000); if (LightsCounter < -60){ //turnON after 3S SwithLights(OFF); LightsCounter = 0; } else if (LightsCounter >= 3) //turnON after 3S { SwithLights(ON); LightsCounter = 0; } // Check alarm mode if (PM_PinIsClear(ALARM_STATUS)) //in Guard mode { SwithLights(OFF); LightsCounter = 0; } }
void TaskScanButtons (void){ if (PM_PinIsClear(BUTTON_PLUS)){ PM_OnPin(LED_GREEN); //push pressed pressedTime = 0; ChangePwd(); SetTimerTask(TaskWaitButtonOff,10); SetTimerTask(TaskGreanLedOff,100); return; } if (PM_PinIsClear(BUTTON_MINUS)){ PM_OnPin(LED_RED); //push pressed pressedTime = 0; ChangePwd(); SetTimerTask(TaskWaitButtonOff,10); SetTimerTask(TaskRedLedOff,100); return; } if (PM_PinIsClear(BUTTON_ON_OFF)){ SetTimerTask(TaskWaitButtonOff,10); SetTimerTask(TaskSwitchLamp,10); return; } SetTimerTask(TaskScanButtons, 10); return; }
void Initial() { CyGlobalIntEnable; //Check_Boot(); Timer_RTOS_Start(); PWM_Start(); I2C_Start(); UART_Start(); RTC_Start(); RTC_SetPeriod(1,1000); RTOS_Start(); SetTask(Brightles_PID_Controll); LCD_WS0010Start(); SetTask(WaitPowerStab); SetTimerTask(OPT_Get_Result, 1300); //BLE_Status(); GlobalStruct.OS_Status = 0; SetTimerTask(Display_Controll, 2000); }
void TaskCall (void) { switch(callTime){ case 0: case 15: SetBit(status, ST_ALARM); //fprintf_P(stdout, PSTR("ATDP+79082375997;\r\n")); break; } callTime++; SetTimerTask(TaskCall, 1000); }
void espTimeoutError(void){ if (espAttemptIsEnded()){ //Остались попытки? espModuleRemove(); //Считаем, что модуль отсутствует } else{ espStatusFlags--; //Минус одна попытка espReset(); //Сбрасываем FIFO_FLUSH(espTxBuf); //SetTimerTask(espCheckStart, CLK_TIMEOUT); //И запускаем проверку модуля espStart(); SetTimerTask(espTimeoutError, ESP_WHITE_START); //Ждем пока модуль не перестартует } }
void InitKeyboard(void){ MenuIni(); ClearBit(KEY_PORTIN_OK, KEY_OK_PORT); ClearBit(KEY_PORTIN_STEP, KEY_STEP_PORT); #ifdef EXTERNAL_INTERAPTS_USE MCUCR |= (1<<ISC01) | (1<<ISC00) | //По спадающему уровню на INTo (1<<ISC11) | (1<<ISC10); //по спадающему на INT1 GICR |= (1<<INT0) | (1<<INT1); //Разрешить прерывание от кнопок #else SetTimerTask(KeyScan, SCAN_PERIOD_KEY); #endif PrevKey = 0; Key = 0; }
void TaskPWM (void) { SetTimerTask(TaskPWM,100); //char logTmp = (char)(adc_v[ADC_PIN_RES_PWM] & 0xFF); //fprintf(stdout, "%c", logTmp); if (adc_v[ADC_PIN_RES_PWM] <= 15) { adc_v[ADC_PIN_RES_PWM] = 0; TCCR1A = 0; } else { TCCR1A |= (1<<WGM11) | (1<<COM1A1) | (1<<COM1B1); } OCR1A = adc_v[ADC_PIN_RES_PWM]*ICR_MAX/1024; OCR1B = OCR1A; }
void Brightles_PID_Controll() { volatile uint8 Procent = 0; volatile uint8 PWM; if(GlobalStruct.Lux > 0) { Procent = GlobalStruct.Lux / 160; if(Procent > 100) Procent = 100; PWM = (uint8)(68 - (0.68 * Procent)); PWM_WriteCompare1(PWM); } else { PWM = 68; PWM_WriteCompare1(PWM); } SetTimerTask(Brightles_PID_Controll, 2000); }
void TaskADC3 (void) { adc_v[ADC_PIN_RES_PWM] = adc_read(ADC_PRESCALER_64, ADC_VREF_AVCC, ADC_PIN_RES_PWM); adc_v[ADC_PIN_12V] = adc_read(ADC_PRESCALER_64, ADC_VREF_AVCC, ADC_PIN_12V); SetTimerTask(TaskADC3,50); }
void TaskLedOn (void) { SetTimerTask(TaskLedOn,10); //PORTB = 0x05; }
void Task1 (void) { SetTimerTask(Task2, 5); // LED_PORT ^=1<<LED1; digitalWrite(led, HIGH); }
void WaitPowerStab() { SetTimerTask(Start_Display, 1000); }
//UPDATE void SetTask(TPTR TS){ // Поставить задачу в очередь для немедленного выполнения SetTimerTask(TS,0); }
void Task2 (void) { SetTimerTask(Task1,5); // LED_PORT &= ~(1<<LED1); digitalWrite(led, LOW); }