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

📄 hard.c

📁 嵌入式linux学习之uclinux步进电机驱动实例(测试平台S3C44B0X,uclinux系统)
💻 C
字号:
//associate with the hardware

#include "step.h"
#include "hard.h"

usigned short x_steptable[8] = 
	{0x0001, 0x0005, 0x0004, 0x0006, 0x0002, 0x000A, 0x0008, 0x0009};
usigned short y_steptable[8] = 
	{0x0010, 0x0050, 0x0040, 0x0060, 0x0020, 0x00A0, 0x0080, 0x0090};
usigned short z_steptable[8] = 
	{0x0100, 0x0500, 0x0400, 0x0600, 0x0200, 0x0A00, 0x0800, 0x0900};

#define Flipbits = 0x0B00;
#define Short irq_enable_bit = 0x1000;
unsigned short word;
static int base = 0x378;

extern int xdest;
extern int ydest;
extern int zdest;
extern int xpos;
extern int ypos;
extern int zpos;

void verbose_outb(int port, int value)
{
	printk("outb(%02X, %04X)", port, value);
}

void move_one_step()
{
	if(xdest > xpos){
		xpos++;
	}else if(xdest < xpos){
		xpos--;
	}

	if(ydest > ypos){
		ypos++;
	}else if(ydest < ypos){
		ypos--;
	}

	if(zdest > zpos){
		zpos++;
	}else if(zdest < zpos){
		zpos--;
	}
	word = x_steptable[xpos % 8]
    		| y_steptable[ypos % 8]
 		| z_steptable[zpos % 8] ;
	if(interrupts_are_enabled) word |= Irq_enable_bit;
	word ^= Flipbits;
	verbose_outb( (word & 0x00FF), base + 0);
	verbose_outb( (word >> 8), base + 2);
	if(verbose_move) report_status(); 
}

void disableirq()
{       //disable irq on card
	word &= ~Irq_enable_bit;
	verbose_outb((word >> 8), base + 2); 	
}

void enableirq()
{       //enable irq on card
	word = Irq_enable_bit;
	verbose_outb( (word >> 8), base + 2);
}

⌨️ 快捷键说明

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