- Код: Выделить всё • Развернуть
 DDRB&=~(1<<DDB6)|(1<<DDB5);
DDRB&=~(((1<<DDB6)|(1<<DDB5)));
 ![]()  | 
			
					roboforum.ruТехнический форум по робототехнике.  | 
			
				
					 | 
		
DDRB&=~(1<<DDB6)|(1<<DDB5);
DDRB&=~(((1<<DDB6)|(1<<DDB5)));
 ? Неохото в авр стидию переходить...{
static char current_servo=1;
static unsigned int pause = 18432; 
static unsigned int OCR33;
        if (current_servo == 9) 
        {
         current_servo = 0;
         OCR33 += pause;
         OCR3C=OCR33;
         pause = 18432;
        } 
        else 
        {
         OCR33+=servo_position[current_servo];
         OCR3C=OCR33;
         pause -= servo_position[current_servo];
         current_servo++;
        }
   TCCR3C|=(1<<FOC3C);
}      void servo_grad(int grad){
    int i=0;                                //180 = 2300
    unsigned int time;                      //0 = 500
    unsigned int time_s = 0;                //grad = 1 * 10 +500
    unsigned int time_u = 0;
    time = grad*10+500;
    time_s = 20000 - time;
    if(time_s%1000 > 0 ){
        time_u = time_s%1000;
        time_s = time_s/1000;
    }else{
        time_s = time_s/1000;
        time_u = 0;
    }
    for(i = 0; i<100; i++){
            PORTC.0 = 1;
            delay_us(time);
            PORTC.0 = 0;
            delay_ms(time_s);
            delay_us(time_u);
    }
}delay_us(time*1);
delay_us(time_u);
float = c;
int k = 1;
c = (float)k*0.33;
printf("%f \r\n\0", c);
k++;  
delay_ms(2000);
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
emergency_stop_count++;
if(emergency_stop_count>30)
  {
  motors_off();
  }
}
void motors_off (void)
{ 
TCCR1A=0x00;
TCCR1B=0x00; 
PORTB&=~((1<<PORTB6)|(1<<PORTB7));
PORTC&=~((1<<PORTC7)|(1<<PORTC6)); 
DDRB&=~((1<<DDB6)|(1<<DDB5));       
DDRC&=~((1<<DDC7)|(1<<DDC6));
TCCR2=0x00;
TIMSK&=~(1<<TOIE2);
}
 Если в прерывании нет вызовов функций - компилятор сохраняет в стеке только те регистры, которые реально используются. А вот если есть - то все, которые по соглашению о вызовах функций могут портиться внутри функции. А их там больше десятка вроде. Поэтому лучше в прерываниях пользоваться макросами или inline-функциями._Boolbool
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0