From 0dbbdb4db3451d4074322fb6c65524882edba992 Mon Sep 17 00:00:00 2001 From: meyma Date: Tue, 13 Feb 2007 19:43:03 +0000 Subject: Motoransteuerung lesbarer gemacht --- source/AVR_Studio/Soccer/hal/board.c | 57 ++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 29 deletions(-) (limited to 'source/AVR_Studio/Soccer/hal/board.c') diff --git a/source/AVR_Studio/Soccer/hal/board.c b/source/AVR_Studio/Soccer/hal/board.c index d60834b..438973a 100755 --- a/source/AVR_Studio/Soccer/hal/board.c +++ b/source/AVR_Studio/Soccer/hal/board.c @@ -115,46 +115,45 @@ void Board::motor(int i, int speed) if((i < 0) || (i > 3)) return; const int OFFSET = 40; // Motor does not work with very low ratio const int PWM_MAX = 255; + int pwm = 0; // PWM-Speed - int pwm = abs(speed)+OFFSET; + if(speed != 0) pwm = abs(speed)+OFFSET; if(pwm > PWM_MAX) pwm = PWM_MAX; - if(i == 0) - { + if(i == 0) { MOTOR0_PWM = pwm; if(speed > 0) { - PORTD |= (1 << 5);//In 1 ein - PORTD &= ~(1 << 4);//In 2 aus + MOTOR0_PORT |= MOTOR0_A;//In 1 ein + MOTOR0_PORT &= ~MOTOR0_B;//In 2 aus } else if(speed < 0) { - PORTD |= (1 << 4);//In 2 ein - PORTD &= ~(1 << 5);//In 1 aus + MOTOR0_PORT |= MOTOR0_B;//In 2 ein + MOTOR0_PORT &= ~MOTOR0_A;//In 1 aus } else { - PORTD |= (1 << 4);//In 2 ein - PORTD |= (1 << 5);//In 1 ein + MOTOR0_PORT |= MOTOR0_B;//In 2 ein + MOTOR0_PORT |= MOTOR0_A;//In 1 ein } } - else if(i == 1) - { + else if(i == 1) { MOTOR1_PWM = pwm; if(speed > 0) { - PORTD |= (1 << 6);//In 1 ein - PORTD &= ~(1 << 7);//In 2 aus + MOTOR1_PORT |= MOTOR1_A;//In 1 ein + MOTOR1_PORT &= ~MOTOR1_B;//In 2 aus } else if(speed < 0) { - PORTD |= (1 << 7);//In 2 ein - PORTD &= ~(1 << 6);//In 1 aus + MOTOR1_PORT |= MOTOR1_B;//In 2 ein + MOTOR1_PORT &= ~MOTOR1_A;//In 1 aus } else { - PORTD |= (1 << 6);//In 2 ein - PORTD |= (1 << 7);//In 1 ein + MOTOR1_PORT |= MOTOR1_B;//In 2 ein + MOTOR1_PORT |= MOTOR1_A;//In 1 ein } } else if(i == 2) @@ -162,18 +161,18 @@ void Board::motor(int i, int speed) MOTOR2_PWM = pwm; if(speed > 0) { - PORTB |= (1 << 0);//In 1 ein - PORTB &= ~(1 << 1);//In 2 aus + MOTOR2_PORT |= MOTOR2_A;//In 1 ein + MOTOR2_PORT &= ~MOTOR2_B;//In 2 aus } else if(speed < 0) { - PORTB |= (1 << 1);//In 2 ein - PORTB &= ~(1 << 0);//In 1 aus + MOTOR2_PORT |= MOTOR2_B;//In 2 ein + MOTOR2_PORT &= ~MOTOR2_A;//In 1 aus } else { - PORTB |= (1 << 1);//In 2 ein - PORTB |= (1 << 0);//In 1 ein + MOTOR2_PORT |= MOTOR2_B;//In 2 ein + MOTOR2_PORT |= MOTOR2_A;//In 1 ein } } else if(i == 3) @@ -181,18 +180,18 @@ void Board::motor(int i, int speed) DRIBBLER_PWM = pwm; if(speed > 0) { - PORTB |= (1 << 2);//In 1 ein - PORTB &= ~(1 << 3);//In 2 aus + DRIBBLER_PORT |= DRIBBLER_A;//In 1 ein + DRIBBLER_PORT &= ~DRIBBLER_B;//In 2 aus } else if(speed < 0) { - PORTB |= (1 << 3);//In 2 ein - PORTB &= ~(1 << 2);//In 1 aus + DRIBBLER_PORT |= DRIBBLER_B;//In 2 ein + DRIBBLER_PORT &= ~DRIBBLER_A;//In 1 aus } else { - PORTB |= (1 << 2);//In 2 ein - PORTB |= (1 << 3);//In 1 ein + DRIBBLER_PORT |= DRIBBLER_B;//In 2 ein + DRIBBLER_PORT |= DRIBBLER_A;//In 1 ein } } } -- cgit v1.2.3