コード例 #1
0
ファイル: macros.c プロジェクト: ustropo/MT01
stat_t arcoOK_Macro(void)
{
	uint32_t lRet = pdFALSE;
	// set initial state for new move
//	memset(&gp, 0, sizeof(gp));						// clear all parser values
//	memset(&cm.gf, 0, sizeof(GCodeInput_t));		// clear all next-state flags
//	memset(&cm.gn, 0, sizeof(GCodeInput_t));		// clear all next-state values
//	cm.gn.motion_mode = cm_get_motion_mode(MODEL);	// get motion mode from previous block
	if (xMacroArcoOkSync == true)
	{
		switch (state)
		{
			case 0:	pl_arcook_start();
					lRet = xSemaphoreTake( xArcoOkSync, pdMS_TO_TICKS(3000) );
					if (lRet == pdFALSE)
					{
						uint32_t qSend = ARCO_OK_FAILED;
						xQueueSend( qKeyboard, &qSend, 0 );
						macro_func_ptr = command_idle;
						xMacroArcoOkSync = false;
			//			isCuttingSet(true);
						return (STAT_OK);
					}
					else
					{
						cm_request_cycle_start();
						stopDuringCut_Set(false);
						delay_thcStartStop(true);
						xMacroArcoOkSync = false; state = 0; macro_func_ptr = _command_dispatch; return (STAT_OK);
					}
					break;
			default:
					break;
		}
		_execute_gcode_block();
	}
	return (STAT_OK);
}
コード例 #2
0
ファイル: plasma.c プロジェクト: leocafonso/MT01_grafico
void emergencia_task(void)
{
	uint32_t keyEntry = 0;
	uint8_t emergencyCount = 0;
	bool realease = false;
	while(1)
	{
		emergenciaFlag = false;
		realease = false;
	    IR(ICU, IRQ8)  = 0;            //Clear any previously pending interrupts
	    IEN(ICU, IRQ8) = 1;            // Enable interrupt
		ulTaskNotifyTake( pdTRUE, portMAX_DELAY );
	    IR(ICU, IRQ8)  = 0;            //Clear any previously pending interrupts
	    IEN(ICU, IRQ8) = 0;            // Enable interrupt
		while(EMERGENCIA && !realease)
		{
			vTaskDelay(1 / portTICK_PERIOD_MS);
			emergencyCount++;
			if(emergencyCount == 100)
			{
				static mn_screen_event_t mn_emergencia;
				emergenciaFlag = true;
				if (isCuttingGet() == true)
				{
					stopDuringCut_Set(true);
				}
				//machine_pause();
				mn_emergencia.event = EMERGENCIA_SIGNAL_EVENT;
				xQueueSend( menu.qEvent, &mn_emergencia, 0 );
				ulTaskNotifyTake( pdTRUE, portMAX_DELAY );
				realease = true;
				emergencyCount = 0;
			}
		}
	}
}
コード例 #3
0
ファイル: plasma.c プロジェクト: leocafonso/MT01_grafico
void plasma_task(void)
{
	uint8_t debounce;
	uint32_t qSend = 0;
    bool pinState;

	while(1)
	{
        ulTaskNotifyTake( pdTRUE, portMAX_DELAY );
        ArcoOktaskIdle = true;
        debounce = 0;
        while(ArcoOktaskIdle)
        {
			pinState = ARCO_OK;
			vTaskDelay(pdMS_TO_TICKS(10));
			if(pinState == ARCO_OK)
			{
				debounce++;
			}
			if(debounce == DEBOUNCE_COUNT)
			{
				if (!ARCO_OK)
				{
					if (!simTorch)
					{
						//xTaskNotifyGive(xCncTaskHandle);
						xSemaphoreGive( xArcoOkSync );
					}
				}
				debounce = 0;
				do
				{
					if(ARCO_OK)
					{
						debounce++;
						arcoOkSet(false);
					}
					else
					{
						debounce = 0;
						arcoOkSet(true);
					}
					vTaskDelay(pdMS_TO_TICKS(10));
				}while(debounce != ARCOOK_DELAY_COUNT && isCutting && ArcoOktaskIdle);
				if (isCutting && ArcoOktaskIdle)
				{
//					xTimerStop( swTimers[AUTO_MENU_TIMER], 0 );
					stopDuringCut_Set(true);
//				    vTaskPrioritySet( xCncTaskHandle, 3 );
//					warm_stop(2);
//				    vTaskPrioritySet( xCncTaskHandle, 1 );
//					TORCH = FALSE;
//					if( uxTaskPriorityGet( xCncTaskHandle ) != 1 )
//					{
//
//					}
//					lstop = true;
//					ut_lcd_output_warning("PLASMA NÃO\nTRANSFERIDO\n");
//					while(qSend != KEY_ESC){
//						WDT_FEED
//						xQueueReceive( qKeyboard, &qSend, portMAX_DELAY );
//					}
					mn_screen_event_t arcoOk_Fail;
					arcoOk_Fail.event = ARCO_OK_FAILED_EVENT;
					qSend = ARCO_OK_FAILED;
					xQueueSend( menu.qEvent, &arcoOk_Fail, 0 );
				}
			}
		}
	}
}