⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fs44b0mu110.c

📁 uClinux基于S3C44B0X打印机驱动
💻 C
📖 第 1 页 / 共 4 页
字号:
					M110_Motor_Status = (M110_Motor_Status & (~CR_I0)) |CR_I1;
					break;				
				case	MID_CURRENT:
					M110_Motor_Status = (M110_Motor_Status & (~CR_I1)) |CR_I0;
					break;
			}				
	}	
	CPLD_M110_Motor_Addr = M110_Motor_Status;
}
//********************************************************
//********************************************************
static signed char	PrinterInit(void)
{
	// cut off printer current
	signed char err;
	Motor_Off(ALL_MOTOR);	
	err = GoHomePosition();
	if(err < 0)
	{
		CR_Step = 0;
		return -err;
	}	
	Mdelay1MS(5);
	CR_Step = 0;
	return 0;
}
//********************************************************
//********************************************************
static void	PF_Motor_A_Step(void)
{

	//step = (nStep %4);
	PF_A_Step = (++PF_A_Step) & 0x03;
	switch(PF_A_Step)
	{
		case	0:
			M110_Motor_Status = (M110_Motor_Status  & (~PF_Phase1))|PF_Phase0;
			break;
			
		case	1:
			M110_Motor_Status = M110_Motor_Status  & (~(PF_Phase1|PF_Phase0));
			break;
	
		case	2:
			M110_Motor_Status = (M110_Motor_Status  & (~PF_Phase0))|PF_Phase1;		
			break;
			
		case	3:
			M110_Motor_Status = M110_Motor_Status| PF_Phase0 | PF_Phase1 ;
			break;
	
	}
	CPLD_M110_Motor_Addr = M110_Motor_Status;	
}
//********************************************************
//********************************************************
static void	PF_IN_HalfDot_A(void)
{	
	SetWorkCurrent(PF_MOTOR,NORMAL_CURRENT);

	PF_Motor_A_Step();
	MdelayTime(7000);

	Motor_Off(PF_MOTOR);

}
//********************************************************
//********************************************************
static void	PF_IN_dot_A(int step)
{	
	u8	i=0;
	
	//Acceleration
	if(step < 16)
	{
		PF_Motor_A_Step();
		MdelayTime(7000);
	}
	else if(step >= 16)
	{
		for (i = 0; i< 14; i++)
		{
			PF_Motor_A_Step();
			MdelayTime(PF_Acceleration[i]);
		}	
		//Constant Speed
		for (i = 0; i< (step - 16); i++)
		{
			PF_Motor_A_Step();
			MdelayTime(PF_ConstSpeed);
		}	
		//Deceleration
		for (i = 0; i< 2; i++)
		{
			PF_Motor_A_Step();
			MdelayTime(PF_Deceleration[i]);
		}
	}	
	// Lash
	PF_Motor_A_Step();
	MdelayTime(PF_Lash);		
}
//********************************************************
//********************************************************
static void	PF_IN_Line_A(void)
{	
	u8	i=0;
	
	//Acceleration
	for (i = 0; i< 14; i++)
	{
		PF_Motor_A_Step();
		MdelayTime(PF_Acceleration[i]);
	}	
	//Constant Speed
	for (i = 0; i< 8; i++)
	{
		PF_Motor_A_Step();
		MdelayTime(PF_ConstSpeed);
	}	
	//Deceleration
	for (i = 0; i< 2; i++)
	{
		PF_Motor_A_Step();
		MdelayTime(PF_Deceleration[i]);
	}
	// Lash
	PF_Motor_A_Step();
	MdelayTime(PF_Lash);		
}
//********************************************************
//********************************************************
static void	InPapeTest(void)
{
	//u16	i=0;
	
	SetWorkCurrent(PF_MOTOR,NORMAL_CURRENT);
	
	PF_IN_Line_A();
	Motor_Off(PF_MOTOR);

}

//********************************************************
//********************************************************
static void	PF_Motor_B_Step(void)
{	
	PF_B_Step = (++PF_B_Step) & 0x03;
	switch(PF_B_Step)
	{	
		case	3:
			M110_Motor_Status = (M110_Motor_Status  & (~PF_Phase1))|PF_Phase0;
			break;
			
		case	2:
			M110_Motor_Status = M110_Motor_Status  & (~(PF_Phase1|PF_Phase0));
			break;
	
		case	1:
			M110_Motor_Status = (M110_Motor_Status  & (~PF_Phase0))|PF_Phase1;		
			break;
			
		case	0:
			M110_Motor_Status = M110_Motor_Status| PF_Phase0 | PF_Phase1 ;
			break;
	}
	CPLD_M110_Motor_Addr = M110_Motor_Status;	

}
//********************************************************
//********************************************************
static void	PF_IN_dot_b(int step)
{	
	u8	i=0;
	
	//Acceleration
	if(step < 16)
	{
		PF_Motor_B_Step();
		MdelayTime(7000);
	}
	else
	{
		for (i = 0; i< 14; i++)
		{
			PF_Motor_B_Step();
			MdelayTime(PF_Acceleration[i]);
		}	
		//Constant Speed
		for (i = 0; i< (step - 16); i++)
		{
			PF_Motor_B_Step();
			MdelayTime(PF_ConstSpeed);
		}	
		//Deceleration
		for (i = 0; i< 2; i++)
		{
			PF_Motor_B_Step();
			MdelayTime(PF_Deceleration[i]);
		}
	}	
	// Lash
	PF_Motor_B_Step();
	MdelayTime(PF_Lash);		
}
//********************************************************
//********************************************************
static void	PF_OUT_Line_B(void)
{
	u8	i=0;
	
	//Acceleration
	for (i = 0; i< 14; i++)
	{
		PF_Motor_B_Step();
		MdelayTime(PF_Acceleration[i]);
	}
	
	//Constant Speed
	for (i = 0; i< ram_spack - 16; i++)
	{
		PF_Motor_B_Step();
		MdelayTime(PF_ConstSpeed);
	}
	
	//Deceleration
	for (i = 0; i< 2; i++)
	{
		PF_Motor_B_Step();
		MdelayTime(PF_Deceleration[i]);
	}
	
	// Lash
	PF_Motor_B_Step();
	MdelayTime(PF_Lash);	
	
}
//********************************************************
//********************************************************
static void	PF_OUT_HalfDot_B(void)
{	
	SetWorkCurrent(PF_MOTOR,NORMAL_CURRENT);

	PF_Motor_B_Step();
	MdelayTime(5000);
	Motor_Off(PF_MOTOR);
}
//********************************************************
//********************************************************
static void	PF_Line_spack(int step_c)
{	
	SetWorkCurrent(PF_MOTOR,NORMAL_CURRENT);
  for(; step_c > 0; step_c--)
  {
	  PF_Motor_B_Step();
	  MdelayTime(5000);
	}
	Motor_Off(PF_MOTOR);
}
//********************************************************
//********************************************************
static void	OutPape1Line(void)
{

	SetWorkCurrent(PF_MOTOR,NORMAL_CURRENT);
	
	PF_OUT_Line_B();

	Motor_Off(PF_MOTOR);
}
//********************************************************
//********************************************************
static void	line_spacing(int tt)
{
	u8	i=0;
	SetWorkCurrent(PF_MOTOR,NORMAL_CURRENT);
		
	//Acceleration
	if(tt >= 16)
	{
		for (i = 0; i< 14; i++)
		{
			PF_Motor_B_Step();
			MdelayTime(PF_Acceleration[i]);
		}
		
		//Constant Speed
		for (i = 0; i< tt-16; i++)
		{
			PF_Motor_B_Step();
			MdelayTime(PF_ConstSpeed);
		}
		
		//Deceleration
		for (i = 0; i< 2; i++)
		{
			PF_Motor_B_Step();
			MdelayTime(PF_Deceleration[i]);
		}
	}
	else
	{
		for(i=0; i<tt; i++)
			PF_OUT_HalfDot_B();
	}
	
	// Lash
	PF_Motor_B_Step();
	MdelayTime(PF_Lash);

	Motor_Off(PF_MOTOR);
}
//********************************************************
// Carriage Motor Control part
//********************************************************
static void	CR_Motor_A_Step(void)
{
	u8 step=0;
	if ((++CR_Step)>=CR_MAX_STEP)		// 0-241
	{
		CR_Step = CR_MAX_STEP-1;
		return;
	}		
	step = CR_Step & 0x03;	
	switch(step)
	{	
		case	0:
			M110_Motor_Status = (M110_Motor_Status  & (~CR_Phase0))|CR_Phase1;
			break;
			
		case	1:
			M110_Motor_Status = M110_Motor_Status| CR_Phase0 | CR_Phase1 ;
			
			break;
	
		case	2:
			M110_Motor_Status = (M110_Motor_Status  & (~CR_Phase1))|CR_Phase0;		
			break;
			
		case	3:
			M110_Motor_Status = M110_Motor_Status  & (~(CR_Phase1|CR_Phase0));
			break;
	}
	CPLD_M110_Motor_Addr = M110_Motor_Status;	
}
//********************************************************
//********************************************************
static void	CR_Acceleration_A(void)
{
	u8	i;
	
	// Acceleration	11 steps
	for (i=0; i<11; i++)
	{
		CR_Motor_A_Step();
		MdelayTime(CR_Acc_A[i]);
	}
	
	// Constant speed  (6 steps)
	for (i=0; i<6; i++)
	{
		CR_Motor_A_Step();
		MdelayTime(CR_ConstSpeed);
	}
	//total 18 steps
}
//********************************************************
//********************************************************
static void	CR_ConstSpeed_A( u8 nStep)
{
	u8	i;			
	for (i=0; i<nStep; i++)
	{
		CR_Motor_A_Step();
		MdelayTime(CR_ConstSpeed);
	}
}
//********************************************************
//********************************************************
static void	CR_Deleration_A(void)
{
	u8	i;
	// Constant speed  (3 steps)

	for (i = 0; i < 3; i++)//
	{
		CR_Motor_A_Step();
		MdelayTime(CR_ConstSpeed);
	}
	// Deleration speed
	for (i = 0; i < 12; i++)
	{
		CR_Motor_A_Step();
		MdelayTime(CR_Dec_A[i]);
	}
	CR_Motor_A_Step();
	MdelayTime(CR_Lash);//14	
}
//********************************************************
//********************************************************
static void	CR_Motor_B_Step(void)
{
	u8 step = 0;
	
	if ((--CR_Step) == 0XFF)		// 0-241
	{
		CR_Step = 0;
		return;
	}
	
	step = CR_Step & 0x03;
	
	switch(step)
	{
		case	0:
			M110_Motor_Status = (M110_Motor_Status  & (~CR_Phase0))|CR_Phase1;
			break;
			
		case	1:
			M110_Motor_Status = M110_Motor_Status| CR_Phase0 | CR_Phase1 ;
			
			break;
	
		case	2:
			M110_Motor_Status = (M110_Motor_Status  & (~CR_Phase1))|CR_Phase0;		
			break;
			
		case	3:
			M110_Motor_Status = M110_Motor_Status  & (~(CR_Phase1|CR_Phase0));
			break;
	
	}
	CPLD_M110_Motor_Addr = M110_Motor_Status;	

}
//********************************************************
//********************************************************
static void	CR_Acceleration_B(void)
{
	u8	i;
	// Acceleration	8 steps
	for (i = 0; i < 8; i++)
	{
		CR_Motor_B_Step();
		MdelayTime(CR_Acc_B[i]);
	}		
	// Constant speed  (6 steps)
	for (i = 0; i < 7; i++)
	{
		CR_Motor_B_Step();
		MdelayTime(CR_ConstSpeed);
	}
	// total 14 steps	
}
//********************************************************
//********************************************************
static void	CR_ConstSpeed_B(u8 nStep)
{
	u8	i;
	for (i = 0; i < nStep; i++)
	{
		CR_Motor_B_Step();
		MdelayTime(CR_ConstSpeed);
	}
}
//********************************************************
//********************************************************
static void	CR_Deleration_B(void)
{

	u8	i;		
	// Constant speed  (6 steps)
	for (i = 0; i < 6; i++)
	{
		CR_Motor_B_Step();
		MdelayTime(CR_ConstSpeed);
	}
	// Deleration speed		12 steps	
	for (i = 0; i < 12; i++)
	{
		CR_Motor_B_Step();
		MdelayTime(CR_Dec_B[i]);
	}
	CR_Motor_B_Step();
	MdelayTime(CR_Lash);
	// total 18 steps
}
//********************************************************
//********************************************************
static void	PrintTriggerPulse(void)
{
	CPLD_M110_PrintTrigger_Addr = 0X05;	// low
	Mdelay2US();
	Mdelay2US();
	CPLD_M110_PrintTrigger_Addr = 0X0A;	// HIGHT
	//Mdelay2US();
	//Mdelay2US();
	//CPLD_M110_PrintTrigger_Addr = 0X05;	// low	
}
//********************************************************
// Function:行打印预处理
//********************************************************
static void	PrintPreHandle(char *Str)
{

	u16 u;
	u8		i = 0,j,ch,c,t;
	U32		qm = 0,wm = 0,ulOffset = 0,pos;
	char	iLen = 0;
	//u8		ZiMoBuf[32],hzbuf[32],ascbuf[10];
	u8 	*ZiMoBuf;
	u8 	*hzbuf;
	u8 	*ascbuf;
	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -