перевожу код под arduino/ нужна помощь

SuRoG
SuRoG аватар
Offline
Зарегистрирован: 24.06.2016

код писался под attiny 44/ пытаюсь перерулить под arduino poro mini/ застрял на прерываниях по переполнению таймера.

interrupt [TIM0_OVF] void timer0_ovf_isr(void) // прерывание срабатывает 100 РАЗ В СЕКУНДУ

ругается на:\

'interrupt' does not name a typeвот часть кода в codevisionavr:

  /*прерывание по переполнению таймера*/
 
interrupt [TIM0_OVF] void timer0_ovf_isr(void) // прерывание срабатывает 100 РАЗ В СЕКУНДУ
{
 TCNT0=0x64;  // установка счетного регистра таймера
 if(IN_R)     // если на входе управления опусканием единица, то:   --------------------------------------------------------------------
   {                               //                                                                 |  есть плюс на управляющем входе |
    trig=0;                        // триггер осановки моторов при опускании в сброс.                  -------------------------------- |
    if(delay<START_DELAY)          // если еще не прошло время задержки включения опускания зеркал, то:                                 |
     {                             //                                                                                                   |
      if(jobR||jobL)                 //если мотор крутит еще вверх, то:                                                                 |
       {                             //                                                                                                 |
        delay=START_DELAY;           // счетчик задержки приравниваем к времени задержки - "ускоряем" его                               |
        MotorR(0);                   // останавливаем мотор правого зеркала                                                             |
        MotorL(0);                   // останавливаем мотор левого зеркала                                                              |
        delay_ms(REVERSE_DELAY);     // ждем задержку реверса                                                                           |
       }                             //                                                                                                 |
      delay++;                       // инкремент  таймера задержки                                                                     |
    }                                //                                                                                                 |
    else                                            // если  время задержки включения опускания зеркал вышло, то:                       |
      {                                             //                                                                                  |
       if(jobR==setR&&jobL==setL)Power_Key(1);      //                                                                                  |
       else Power_Key(0);                           //                                                                                  |
       if(jobR<setR)jobR++,MotorR(2-(stop+stop));   // если не достигли нужного угла поворота зеркала опускаем его                      |
       else MotorR(0);                              // если  достигли нужного угла поворота зеркала  - выключаем мотор                  |
       if(jobL<setL)jobL++,MotorL(2-(stop+stop));   //                                                                                  |
       else MotorL(0);                              //                                                                                  |
      }                                    //                                                                                           |
   }     //-----------------------------------------------------------------------------------------------------------------------------
 else                              // если на входе управления опусканием ноль, то:  ---------------------------------------------------
  {                                //                                                                       | на управляющем входе ноль |
   if((jobR||jobL)&&trig==0)       // если не закончили подъем и триггер еще не установлен, то:             ----------------------------|
    {                              //                                                                                                   |
     MotorR(0);                    // останавливаем правый мотор                                                                        |
     MotorL(0);                    // останавливаем левый мотор                                                                         |
     delay_ms(REVERSE_DELAY);      // выжидаем время задержки реверса                                                                   |
     trig=1;                       // устанавливаем триггер                                                                             |
    }                              //                                                                                                   |
   else delay=0;                   // если закончили подъем сброс счетчика задержки                                                     |
                                             //                                                                                         |
   if(jobR!=0)Power_Key(0),jobR--,MotorR(1-stop);    //  если зеркало еще не поднято - поднимаем.                                       |
   else MotorR(0);                                   //  если зеркало поднялось - выключаем мотор                                       |
   if(jobL!=0)Power_Key(0),jobL--,MotorL(1-stop);    //                                                                                 |
   else MotorL(0);                                   //                                                                                 |                                                                                                                                      |
   if(jobR==0&&jobL==0)Power_Key(1);        // если подняты оба зеркала - подаем питание на штатные кнопки                              |
  }     //------------------------------------------------------------------------------------------------------------------------------
                                                                                 // -------------------------------------------
 if(ERROR==0)                               //  если есть сигнал перегрузки, то:                                               |
  {                                         //                                                                                 |
   if(error<ERROR_DELAY)error++;            // запускаем таймер задержки, если время не вышло - считаем                        |
   else stop=1,delta=IN_R;                  // если время вышло, то  устанавливаем пременную защиты                            |
  }                                         //                                                                                 |
 else                                       // если сигнал перегрузки пропал, то:                                              |
 {                                          //                                                                                 |
  error=0;                                  // сбрасываем таймер задержки                                                      |
  if(delta!=IN_R)stop=0;                    // если изменилось состояние входа управления, то снимаем защиту.                  |
 }                                          //                                                                                 |
                                                                                //--------------------------------------------
}
yul-i-an
yul-i-an аватар
Offline
Зарегистрирован: 10.12.2012
Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

SuRoG пишет:

interrupt [TIM0_OVF] void timer0_ovf_isr(void)

ругается на: 'interrupt' does not name a type

#include <avr/interrupt.h>

ISR(TIMER0_OVF_vect)
{
  // здесь что-то делаем...
}

 

SuRoG
SuRoG аватар
Offline
Зарегистрирован: 24.06.2016

спасибо. заработало))))))

k0l9.khv
Offline
Зарегистрирован: 17.08.2016

можешь код который перевел выложить ? хочу тоже установить такое устройство