Подписываемся на VK

Ежедневные новости, видео и приколы...

YouTube канал

Подбор моторов

TOP статьи

Вход




RC Магазины





Для удобства пользования форумом и поиска информации прошу придерживаться правила: 1 тема = 1 вопрос.

К примеру, если обсуждается настройка передатчика, а у вас вопрос про подключение такого же передатчика к симулятору или вопрос про другую модель передатчика - создавайте новую тему. Если вы новичок в авиамоделизме, рекомендуется прочитать статью Новичку и ссылки с нее.

Исключение только в разделе Вопросы и обсуждения по статьям

Как выложить фото, Как опубликовать видео

С уважением,

Константин.

Сервозамедлитель своими руками

Re: Сервозамедлитель своими руками

Посмотрел еще раз, да, правильно, я сначала и не обратил внимание, что внизу размещены процедуры обработки прерывания и больше ничего нет.
Обычно они до main размещаются.
так по программе трудно что-то сказать, я в С небольшой специалист, пишу всю жизнь на ассемблере.

alldn
Александр (г.Тамбов)
useravatar
Offline
2863 Сообщений
Мужчина  Дата рождения 
Администратор отключил публичную отправку сообщений

Re: Сервозамедлитель своими руками

alldn написал(а):

Обычно они до main размещаются.

Над культурой написания мне тоже надо поработать)

wert
Сергей (Москва)
Ученик пилота
ranks
useravatar
Offline
98 Сообщений
Мужчина  Дата рождения 
Администратор отключил публичную отправку сообщений

Re: Сервозамедлитель своими руками

Нашел в чем беда, поправил код. В ближайшее время попытаюсь доделать в железе, и вернусь к теме топика.

wert написал(а):


#define F_CPU 9600000UL

#include <avr/io.h>
#include <avr/interrupt.h>

volatile unsigned int Tick;   // 100KHz pulse
volatile unsigned int inPulse;   // Servo input pulse variable
volatile unsigned int inPulseRev;   // Servo input reverse pulse variable
volatile unsigned int inPulseBuf;

int main (void)
{
   sei(); //  Enable global interrupts
   
   //Port config
   DDRB |= (1<<PB0)|(1<<PB2); // PB0 and PB2 as output
   DDRB |= (0<<PB1); // PB1 as input
   
   //Timer config
   TCCR0A |= (1<<WGM01); // Configure timer 1 for CTC mode
   TIMSK0 |= (1<<OCIE0A); // Enable CTC interrupt
   TCCR0B |= (1<<CS00); // No prescaler
   OCR0A = 95; // Set CTC compare value 10*10^-6 sec per interrupt
   TCNT0 = 0;
   
   //Var input
   Tick = 0;
   inPulse = 150;
   inPulseBuf = 150;
   
   //Int0 config
   MCUCR |= (0<<ISC01)|(1<<ISC00); // any logical changes
   GIMSK |= (1<<INT0); // enable interrupt INT0
   
   

   while(1)
   {
   
   }
}


ISR(INT0_vect)
{
    
      if (PINB & (1 << PB1))
         {
           TCNT0 = 0; //clear counter
           Tick = 0; // clear var
           PORTB |= (1<<PB0)|(1<<PB2); //start pulse
           inPulse = inPulseBuf;                      
           inPulseRev = 300 - inPulse; // calc reverse pulse             
         }
      else
         {           
           inPulseBuf = Tick; //read pulse                      
         }
      
}

ISR(TIM0_COMPA_vect)
{
   Tick++;
   
   if (inPulse > 0)
     {
       inPulse--;       
     }
  else
     {
        PORTB &= ~(1<<PB0);
     }

  if (inPulseRev > 0)
     {
       inPulseRev--;       
     }
  else
     {
        PORTB &= ~(1<<PB2);
     }
   
}

wert
Сергей (Москва)
Ученик пилота
ranks
useravatar
Offline
98 Сообщений
Мужчина  Дата рождения 
Администратор отключил публичную отправку сообщений

Re: Сервозамедлитель своими руками

Еще актуально? Чем закончилось, то?

grafalexphoto
Александр
Пилот
ranks
useravatar
Offline
497 Сообщений
Мужчина  Дата рождения 
Администратор отключил публичную отправку сообщений

Информация

Статистика форума:
 
Всего тем:
9974
Всего опросов:
79
Всего сообщений:
183086
Сообщений на этой неделе:
1
Пользователи форума:
 
Всего пользователей:
10096
Последним зарегистрировался:
IL2Sturm
Пользователи онлайн:
0
Гостей онлайн:
572

Самые активные пользователи: 
konst, carpenter, kompmen, cnyx, Dragony, maks_dg, Goby, Student, alldn, nikolaypet
Онлайн: 
Нет пользователей онлайн
Последние сообщения форумаПоследние созданные темы
1) Модель с ДВС. Проектируем и строим
2) МИГ 3 с размазом 1300мм
3) Питание борта за 15 минут на кренке 7805
4) Расчет фюзеляжа
5) Аппа "Wensheng WS 6" нужна помощь
6) Расчет эффективного пропеллера вертолета, самолета
7) Зажигание на датчике холла
8) Аккумуляторная батарея LiPo HRB 14,8 4S 2200mA/h
9) На что заменить полетник на Iflight Protek25
10) Юлиус Пердана и SHURIK-1960
1) МИГ 3 с размазом 1300мм - У Юлиуса Перданы больше интересных для меня моделей пока нет
2) Аппа "Wensheng WS 6" нужна помощь - Нужна помощь по аппаратуре управления
3) Расчет эффективного пропеллера вертолета, самолета - Как сделать пропеллер эффективным
4) Аккумуляторная батарея LiPo HRB 14,8 4S 2200mA/h
5) На что заменить полетник на Iflight Protek25 - сгорел полетник. ищу замену
6) Зажигание на датчике холла
7) Сервомотор ведет себя не адекватно - элероны
8) Помогите пожалуйста с вертолетом (управление) - Помогите пожалуйста с вертолетом (управление)
9) Вопрос по ПК - ПК фоксер ф722 v4, рагуль 1202 от fpv. Из этого сделать ЛК?
10) Продажа комплекта деталей для авиамоделирования - Здрaвcтвуйтe! Пpодaю кoмплект деталей для aвиамoделиpoвания