Example #1
0
void OUTPUT_TASK(void *p_arg)
{
	char i;
	char timeout = 0;
	(void)p_arg;
	
	while((!MTQ_POWER_PIN()) && timeout < 50)  //第一次启动等待至POWER拉高再进行处理
	{
		timeout++;
		BSP_OS_TimeDlyMs(10);
	}
	
	if(MTQ_POWER_PIN())
	{	
		MTQ_WAKEN;
	}
	
	PwmPwrStatusOld = MTQ_POWER_PIN();  //将Pwm引脚的电平值赋值给PwmOld
	
	while(1)
	{
		
		if(PwmPwrStatusOld != MTQ_POWER_PIN())  //Pwm使能信号发生改变
		{
			if(MTQ_POWER_PIN())  //电源开启
			{
				MTQ_WAKEN;   //芯片醒来
				
				for(i=0; i<3; i++)
				{
					PwmOutPut[i].PwmSetDuty = PwmOutPut[i].PwmSetDutyOld;
				}
			}
			else   //电源关闭
			{
				for(i=0; i<3; i++)
				{
					PwmOutPut[i].PwmSetDutyOld = PwmOutPut[i].PwmSetDuty;
					PwmOutPut[i].PwmCurDuty = 0;
					bsp_SetPWMDutyCycle(PwmOutPut[i].PwmCurDuty, i+1);
				}
				
				MTQ_SLEEP;   //关闭芯片
			}
		}
		
		
		if(MTQ_POWER_PIN() && MTQ_SLEEP_PIN())  //MTQ打开
		{
			for(i=0; i<3; i++)
			{
				if(PwmOutPut[i].PwmSetDir != PwmOutPut[i].PwmCurDir || PwmOutPut[i].PwmSetDuty != PwmOutPut[i].PwmCurDuty)
				{
					PwmOutPut[i].PwmCurDuty =  PwmOutPut[i].PwmSetDuty;
					PwmOutPut[i].PwmCurDir = PwmOutPut[i].PwmSetDir;
					
					if(PwmOutPut[0].PwmCurDir)
						MTQ1_DIR_NAG;
					else
						MTQ1_DIR_POS;

					if(PwmOutPut[1].PwmCurDir)
						MTQ2_DIR_NAG;
					else
						MTQ2_DIR_POS;

					if(PwmOutPut[2].PwmCurDir)
						MTQ3_DIR_NAG;
					else
						MTQ3_DIR_POS;
					
					if(PwmOutPut[i].PwmCurDir)
					{
						
						bsp_SetPWMDutyCycle(PwmOutPut[i].PwmCurDuty, i+1);
					}
					else
					{
						
						bsp_SetPWMDutyCycle(100 - PwmOutPut[i].PwmCurDuty, i+1);
					}
				}

			}		
		}
		
		
		
		
		
/*			
		if(MotorCurOutput != MotorSetOutput)
		{
			MotorCurOutput = MotorSetOutput;
			MotorChange(MotorSetOutput);
		}
*/	
		PwmPwrStatusOld = MTQ_POWER_PIN();
		BSP_OS_TimeDlyMs(1);
	}
}
Example #2
0
void OUTPUT_TASK(void *p_arg)
{
	char timeout = 0;
	(void)p_arg;
	
	//PwmCurDuty_1 = PwmSetDuty_1;
  //PwmCurDuty_2 = PwmSetDuty_2;
  //PwmCurDuty_3 = PwmSetDuty_3;
	
	while((!MTQ_POWER_PIN()) && timeout < 50)  //第一次启动等待至POWER拉高再进行处理
	{
		timeout++;
		BSP_OS_TimeDlyMs(100);
	}
	
	if(MTQ_POWER_PIN())
	{	
		MTQ_WAKEN;
	}
	
	PwmPwrStatusOld = MTQ_POWER_PIN();  //将Pwm引脚的电平值赋值给PwmOld
	
	while(1)
	{
		
		if(PwmPwrStatusOld != MTQ_POWER_PIN())  //Pwm使能信号发生改变
		{
			if(MTQ_POWER_PIN())  //电源开启
			{
				MTQ_WAKEN;   //芯片醒来
				
				PwmSetDuty_1 = PwmCurDutyOld_1;
				PwmSetDuty_2 = PwmCurDutyOld_2;
				PwmSetDuty_3 = PwmCurDutyOld_3;
			}
			else   //电源关闭
			{
				PwmCurDutyOld_1 = PwmCurDuty_1;
				PwmCurDutyOld_2 = PwmCurDuty_2;
				PwmCurDutyOld_3 = PwmCurDuty_3;
				PwmCurDuty_1 = 0;
				PwmCurDuty_2 = 0;
				PwmCurDuty_3 = 0;
				bsp_SetPWMDutyCycle(PwmCurDuty_1, 1);
				bsp_SetPWMDutyCycle(PwmCurDuty_2, 2);
				bsp_SetPWMDutyCycle(PwmCurDuty_3, 3);
				
				MTQ_SLEEP;   //关闭芯片
			}
		}
		
		
		if(MTQ_POWER_PIN() && MTQ_SLEEP_PIN())  //MTQ打开
		{
			if(PwmCurDuty_1 != PwmSetDuty_1)
			{
				PwmCurDuty_1 = PwmSetDuty_1;
				bsp_SetPWMDutyCycle(PwmCurDuty_1, 1);			
			}
			if(PwmCurDuty_2 != PwmSetDuty_2)
			{
				PwmCurDuty_2 = PwmSetDuty_2;
				bsp_SetPWMDutyCycle(PwmCurDuty_2, 2);			
			}
			if(PwmCurDuty_3 != PwmSetDuty_3)
			{
				PwmCurDuty_3 = PwmSetDuty_3;
				bsp_SetPWMDutyCycle(PwmCurDuty_3, 3);
			}
			
		}
		
		
		
		
		
/*			
		if(MotorCurOutput != MotorSetOutput)
		{
			MotorCurOutput = MotorSetOutput;
			MotorChange(MotorSetOutput);
		}
*/	
		PwmPwrStatusOld = MTQ_POWER_PIN();
		BSP_OS_TimeDlyMs(100);
	}
}