?? stepper.c
字號:
#include <stdio.h>#include <sys/time.h>#include <signal.h>#include "../include/44b.h"#define STEP_INTERVALE 0x40#define STEPER_VALUE_MIN 0x40#define STEPER_VALUE_MAX 0x1000 #define STEPER_MOTOR_ENABLE 1#define STEPER_MOTOR_DISABLE 0#define STEPER_MOTOR_CLOCKWISE 0#define STEPER_MOTOR_ANTICLOCKWISE 1 #define true 1#define false 0 #define STEPER_ENABLE 0x01#define STEPER_SINGLE 0x02#define STEPER_REVERSE 0x04 #define MIN_STEPER_PLUSE_FREQ 0x300#define MAX_STEPER_PLUSE_FREQ 0x100000#define GEN_PLUSE_HIGH() {rPDATC |= (1<<11);}#define GEN_PLUSE_LOW() {rPDATC &= (~(1<<11));}static int steper_control_mask = 0xf8;int port_con_c, port_up_c;void stepper_control(int benable){ if(benable == STEPER_MOTOR_ENABLE) { steper_control_mask |= (1<<3); *(unsigned char *)0x0a000006 = steper_control_mask; } else { steper_control_mask &= (~(1<<3)); *(unsigned char *)0x0a000006 = steper_control_mask; }}void stepper_set_direct(int direct){ if(direct == STEPER_MOTOR_CLOCKWISE) { steper_control_mask |= (1<<2); *(unsigned char *)0x0a000006 = steper_control_mask; } else { steper_control_mask &= (~(1<<2)); *(unsigned char *)0x0a000006 = steper_control_mask; }}static int pulse_direct = 1;static int stepper_speed = 1;void pulse_timer(int signo){ if(pulse_direct <= 0) { GEN_PLUSE_LOW(); GEN_PLUSE_HIGH(); pulse_direct = stepper_speed; } pulse_direct --;} void stepper_speedup(){ stepper_speed --; if(stepper_speed <= 0) stepper_speed = 1;}void stepper_speeddown(){ stepper_speed ++; if(stepper_speed >= 100) stepper_speed = 100;}void stepper_setspeed(int speed){ if(speed <= 100 && speed >= 1) stepper_speed = speed;}void stepper_init(){ port_con_c = rPCONC; port_up_c = rPUPC; // config the port c rPCONC |= (1 << 22); rPUPC |= (1 << 11); stepper_control(STEPER_MOTOR_ENABLE); stepper_set_direct(STEPER_MOTOR_CLOCKWISE);} void stepper_uninit(){ rPCONC = port_con_c; rPUPC = port_up_c;}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -