перевожу код под arduino/ нужна помощь
- Войдите на сайт для отправки комментариев
Пт, 24/06/2016 - 22:41
код писался под 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; // если изменилось состояние входа управления, то снимаем защиту. |
} // |
//--------------------------------------------
}
http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukomment...
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
ругается на: 'interrupt' does not name a type
спасибо. заработало))))))
можешь код который перевел выложить ? хочу тоже установить такое устройство