void stepper_next_half_step_cw(STEPPER* INPUT_STEPPER_STRUCT) { stepper_step(INPUT_STEPPER_STRUCT); STEPPER_VALUE_OF_FLAG(INPUT_STEPPER_STRUCT) += 1; if(STEPPER_VALUE_OF_NEXT_STEP(INPUT_STEPPER_STRUCT) == 8) STEPPER_VALUE_OF_FLAG(INPUT_STEPPER_STRUCT) = (STEPPER_VALUE_OF_FLAG(INPUT_STEPPER_STRUCT) & (1<<7)); }
void stepper_next_full_step_high_torque_cw(STEPPER* INPUT_STEPPER_STRUCT) { stepper_step(INPUT_STEPPER_STRUCT); STEPPER_VALUE_OF_FLAG(INPUT_STEPPER_STRUCT) += 2; if(STEPPER_VALUE_OF_NEXT_STEP(INPUT_STEPPER_STRUCT) == 8) STEPPER_VALUE_OF_FLAG(INPUT_STEPPER_STRUCT) &= (1<<7); }
void stepper_next_half_step_ccw(STEPPER* INPUT_STEPPER_STRUCT) { stepper_step(INPUT_STEPPER_STRUCT); STEPPER_VALUE_OF_FLAG(INPUT_STEPPER_STRUCT) -=1; if(STEPPER_VALUE_OF_FLAG(INPUT_STEPPER_STRUCT) == 0xFF) { STEPPER_VALUE_OF_FLAG(INPUT_STEPPER_STRUCT) = ((1<<2)|(1<<1)|(1<<0)); } else if(STEPPER_VALUE_OF_FLAG(INPUT_STEPPER_STRUCT) == 0x7F) //unipolar { STEPPER_VALUE_OF_FLAG(INPUT_STEPPER_STRUCT) = ((1<<7)|(1<<2)|(1<<1)|(1<<0)); } }
void stepper_next_full_step_high_torque_ccw(STEPPER* INPUT_STEPPER_STRUCT) { stepper_step(INPUT_STEPPER_STRUCT); STEPPER_VALUE_OF_FLAG(INPUT_STEPPER_STRUCT) -= 2; if(STEPPER_VALUE_OF_FLAG(INPUT_STEPPER_STRUCT) == 0xFE) { STEPPER_VALUE_OF_FLAG(INPUT_STEPPER_STRUCT) = ((1<<2)|(1<<1)); } else if(STEPPER_VALUE_OF_FLAG(INPUT_STEPPER_STRUCT) == 0x7E) { STEPPER_VALUE_OF_FLAG(INPUT_STEPPER_STRUCT) = ((1<<7)|(1<<2)|(1<<1)); } }
void stepper_next_full_step_low_torque_cw(STEPPER* INPUT_STEPPER_STRUCT) { if(STEPPER_VALUE_OF_NEXT_STEP(INPUT_STEPPER_STRUCT) == 0) { STEPPER_VALUE_OF_FLAG(INPUT_STEPPER_STRUCT) = (STEPPER_VALUE_OF_FLAG(INPUT_STEPPER_STRUCT) & (1<<7))|(1<<0); //stepper_step(INPUT_STEPPER_STRUCT); //delay } stepper_step(INPUT_STEPPER_STRUCT); STEPPER_VALUE_OF_FLAG(INPUT_STEPPER_STRUCT) += 2; if(STEPPER_VALUE_OF_NEXT_STEP(INPUT_STEPPER_STRUCT) == 9) STEPPER_VALUE_OF_FLAG(INPUT_STEPPER_STRUCT) = (STEPPER_VALUE_OF_FLAG(INPUT_STEPPER_STRUCT) & (1<<7))|(1<<0); }
void stepper_next_full_step_low_torque_ccw(STEPPER* INPUT_STEPPER_STRUCT) { if(STEPPER_VALUE_OF_NEXT_STEP(INPUT_STEPPER_STRUCT) == 0) { STEPPER_VALUE_OF_FLAG(INPUT_STEPPER_STRUCT) = (STEPPER_VALUE_OF_FLAG(INPUT_STEPPER_STRUCT) & ((1<<2)|(1<<1)|(1<<0))); //stepper_step(INPUT_STEPPER_STRUCT); //delay } stepper_step(INPUT_STEPPER_STRUCT); STEPPER_VALUE_OF_FLAG(INPUT_STEPPER_STRUCT) -= 2; if(STEPPER_VALUE_OF_FLAG(INPUT_STEPPER_STRUCT) == 0xFF) { STEPPER_VALUE_OF_FLAG(INPUT_STEPPER_STRUCT) = ((1<<2)|(1<<1)|(1<<0)); } else if(STEPPER_VALUE_OF_FLAG(INPUT_STEPPER_STRUCT) == 0x7F) { STEPPER_VALUE_OF_FLAG(INPUT_STEPPER_STRUCT) = ((1<<7)|(1<<2)|(1<<1)|(1<<0)); } }
int main(void) { pin_config_out(g_led); pin_config_out(r_led); pin_config_out(e_heat); pin_config_out(b_heat); pin_config_out(buzzer); pin_low(buzzer); Stepper *stepper_x = stepper_init(x_step,x_dir,motor_enb); Stepper *stepper_y = stepper_init(y_step,y_dir,motor_enb); Stepper *stepper_z = stepper_init(z_step,z_dir,motor_enb); // stepper_start_frame(); Uart *uart = uart_init(); console_init(); thermistor_init(); // console_prompt(); pin_config_in(x_stop); pin_high(r_led); char dir = 1; int count = 0; unsigned int hit = 0; while(1) { // dir = pin_get(EXP2); stepper_dir(stepper_x,dir); stepper_dir(stepper_y,dir); stepper_dir(stepper_z,dir); if(dir == 1) { if(pin_get(x_stop)==0 ) { if(hit < 2) { stepper_step(stepper_x); stepper_step(stepper_y); stepper_step(stepper_z); count++; } } else { hit++; if(hit < 2) { printf("%i\n",count); printf("HIT!\n"); dir = 0; hit = 0; } } } if(dir == 0) { stepper_step(stepper_x); stepper_step(stepper_y); stepper_step(stepper_z); count--; if(count == 0) { dir = 1; } } _delay_us(50); /* count++; if(count == 1000){ pin_toggle(g_led); count = 0; // pin_toggle(stepper_x->direction); // pin_toggle(stepper_y->direction); // pin_toggle(stepper_z->direction); } */ } }