Page 689 - 2
P. 689
float speed_pos = 0;
float speed_x = 0;
float speed_y = 0;
int X_DIR=0;
int Y_DIR=0;
// Timer 0 output compare interrupt service routine
interrupt [TIM0_COMP] void timer0_comp_isr(void)
{
if(speed_x < -0.5 || speed_x > 0.5){
X_A4988_DIR = X_DIR;
X_A4988_STEP = !X_A4988_STEP; }
}
// Timer2 output compare interrupt service routine
interrupt [TIM2_COMP] void timer2_comp_isr(void)
{
if(speed_y < -0.5 || speed_y > 0.5){
Y_A4988_DIR = Y_DIR;
Y_A4988_STEP = !Y_A4988_STEP; }
}
void button()
{
if(data0 == 'L') {PORTG=0x01;}
else if(data0 == 'R') {PORTG=0x02;}
else {PORTG=0x03;}
if(data0 == 'l') speed_x += 0.01;
else if(speed_x > 0) speed_x -= 0.01;
if(data0 == 'r') speed_x -= 0.01;
else if(speed_x < 0) speed_x += 0.01;
if(data0 == 'u') speed_y += 0.01;
else if(speed_y > 0) speed_y -= 0.01;
if(data0 == 'd') speed_y -= 0.01;
else if(speed_y < 0) speed_y += 0.01;
if(speed_x>500) speed_x=500;
if(speed_x<-500) speed_x=-500;
if(speed_y>500) speed_y=500;
if(speed_y<-500) speed_y=-500;
}
void init_pwm()
{
// Timer/Counter 0 initialization
- 689 -