void init_motors() { //setup reset line SET_DDR_PIN_OUTPUT(DDRB, PIN0); //set motor output pins DDRB |= (1<<PINB1)|(1<<PINB2); DDRD |= (1<<PIND5)|(1<<PIND6); configure_motor(&(motors[0]),0,PORTB,PINB1,M1_IDLE_SPEED, M1_OFFSET); configure_motor(&(motors[1]),1,PORTB,PINB2,M2_IDLE_SPEED, M2_OFFSET); configure_motor(&(motors[2]),2,PORTD,PIND5,M3_IDLE_SPEED, M3_OFFSET); configure_motor(&(motors[3]),3,PORTD,PIND6,M4_IDLE_SPEED, M4_OFFSET); initPWM(); calibrate_motors(); //reset motors //MOTORS_OFF; //Reset the RC pulse to zero to simulate throttle low position /*for(int i = 0; i < nMOTORS; i++) { //writeVelocity(0,&(motors[i])); writePWMduty(0,&(motors[i])); }*/ //writePWMduty(0,&(motors[1])); //_delay_ms(50); //MOTORS_ON; }
u8 setup_motor (u8 motor){ u8 flag=1; switch (motor){ case 1: configure_motor(MOTOR_1_PORT, MOTOR_1_PIN, MOTOR_1_TIMER, MOTOR_1_CHANNEL); break; case 2: configure_motor(MOTOR_2_PORT, MOTOR_2_PIN, MOTOR_2_TIMER, MOTOR_2_CHANNEL); break; case 3: configure_motor(MOTOR_3_PORT, MOTOR_3_PIN, MOTOR_3_TIMER, MOTOR_3_CHANNEL); break; case 4: configure_motor(MOTOR_4_PORT, MOTOR_4_PIN, MOTOR_4_TIMER, MOTOR_4_CHANNEL); break; default: flag=0; break; } return flag; }
void setup_all_motors (void){ configure_motor(MOTOR_1_PORT, MOTOR_1_PIN, MOTOR_1_TIMER, MOTOR_1_CHANNEL); configure_motor(MOTOR_2_PORT, MOTOR_2_PIN, MOTOR_2_TIMER, MOTOR_2_CHANNEL); configure_motor(MOTOR_3_PORT, MOTOR_3_PIN, MOTOR_3_TIMER, MOTOR_3_CHANNEL); configure_motor(MOTOR_4_PORT, MOTOR_4_PIN, MOTOR_4_TIMER, MOTOR_4_CHANNEL); }