/* ** test program for PWM motor control routines for ORANGUTAN from pololu ** atmega8/LB1836M motor controller by Jim Remington (sjames_remington _at_ yahoo.com) ** This code uses 8-bit fast PWM mode with motor either coasting or braking in off state. ** include appropriate routine pwm_coast.c or pwm_brake.c (see below) ** WinAVR */ #include #include #define sei() __asm__ __volatile__ ("sei" ::) #define cli() __asm__ __volatile__ ("cli" ::) #include /* ** Delays */ #define F_CPU 1000000UL #include #define Delay( x ) _delay_loop_2( x ) // above, x is uint16 /* ***GLOBALS REQUIRED for communication with interrupt routines*** */ int l_speed,r_speed; //#include "pwm_coast.c" #include "pwm_brake.c" /* ** MAIN. Exercise left and right motors. Ramp up and down, forward and reverse. */ int main(void) { int i,j; pwm_init(); sei(); for(j=0;j<256;j+=5) { l_speed=j; r_speed=j; pwm_set(); Delay(20000); } for(j=255;j>0;j-=5) { l_speed=j; r_speed=j; pwm_set(); Delay(20000); } for(j=0;j<256;j+=5) { l_speed=-j; r_speed=-j; pwm_set(); Delay(20000); } for(j=255;j>0;j-=5) { l_speed=-j; r_speed=-j; pwm_set(); Delay(20000); } l_speed=r_speed=0; pwm_set(); while(1); return 0; }