Страница 2 из 6 ПерваяПервая 123456 ПоследняяПоследняя
Показано с 11 по 20 из 54
  1. #11
    Продвинутый
    Регистрация
    28.11.2010
    Возраст
    60
    Сообщений
    241
    Вес репутации
    221

    По умолчанию Re: PPM энкодер на ...дуино

    Поверьте, я ночью столько перепробовал и было почти уже добился, но превысил время обработки моих if в void impDown() и начало выдавать нули. Получается, что на мой анализ не хватило 500 мкс. Вычистил, кстати переменные оставил в скетче, но важно не это, я нигде не могу найти развернутого описания функции attachInterrupt(0, переход, событие);
    что такое 0 ?
    CHANGE, RISING, FALLING - понятно, но не до конца, что она будет делать, если не произойдет ожидаемое событие? Наверно поэтому и ставят detachInterrupt(0);
    Про LOW вообще в описании завуалировано, не понятно когда произойдет событие.
    Мои проекты - Катер для рыбалки

  2. #12
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    55
    Сообщений
    13,382
    Вес репутации
    10

    По умолчанию Re: PPM энкодер на ...дуино

    0 это прерывание int0, может быть int1, int2 и т.д.

  3. #13
    Продвинутый
    Регистрация
    28.11.2010
    Возраст
    60
    Сообщений
    241
    Вес репутации
    221

    По умолчанию Re: PPM энкодер на ...дуино

    Цитата Сообщение от Chip Посмотреть сообщение
    0 это прерывание int0, может быть int1, int2 и т.д.
    Спасибо, удобно и просто.
    Может и правда задействовать еще один таймер? Тогда можно независимо считать и отрицательный и положительные импульсы.

    Про LOW есть информация?

    И еще, delayMicroseconds() и micros() к какому таймеру привязаны?
    Последний раз редактировалось Mastar; 24.11.2011 в 18:24.
    Мои проекты - Катер для рыбалки

  4. #14
    Продвинутый
    Регистрация
    28.11.2010
    Возраст
    60
    Сообщений
    241
    Вес репутации
    221

    По умолчанию Re: PPM энкодер на ...дуино

    Попробовал int2, int3 - возвращает 0, видимо не работают.
    Мои проекты - Катер для рыбалки

  5. #15
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    55
    Сообщений
    13,382
    Вес репутации
    10

    По умолчанию Re: PPM энкодер на ...дуино

    На Arduino 328/168 только INT0, INT1
    НО для меги можно настроить int0-int7
    Последний раз редактировалось Chip; 25.11.2011 в 13:38.

  6. #16
    Продвинутый
    Регистрация
    28.11.2010
    Возраст
    60
    Сообщений
    241
    Вес репутации
    221

    По умолчанию Re: PPM энкодер на ...дуино

    Так у меня оба эти таймера задействованы, но сейчас это не важно,притормозил из-за зависания в прерывании. Как не давать ему уходить ему в нирвну.

    При появлении помехи или выключении передатчика, с пол-секунды еще пытается выводить мелкие длительности, но а потом виснет. Реально в тупике.

    Прошу помощи.
    Мои проекты - Катер для рыбалки

  7. #17
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    55
    Сообщений
    13,382
    Вес репутации
    10

    По умолчанию Re: PPM энкодер на ...дуино

    Это не таймеры, это внешние прерывания
    Позже код посмотрю , я еще на работе
    Последний раз редактировалось Chip; 24.11.2011 в 22:10.

  8. #18
    Продвинутый
    Регистрация
    28.11.2010
    Возраст
    60
    Сообщений
    241
    Вес репутации
    221

    По умолчанию Re: PPM энкодер на ...дуино

    Цитата Сообщение от Chip Посмотреть сообщение
    Это не таймеры, это внешние прерывания
    Позже код посмотрю , я еще на работе
    И не привязаны к таймерам, т.е. я могу и таймер 1 использовать и препывание 1 одновременно? Сечас попробую.
    Мои проекты - Катер для рыбалки

  9. #19
    Продвинутый
    Регистрация
    28.11.2010
    Возраст
    60
    Сообщений
    241
    Вес репутации
    221

    По умолчанию Re: PPM энкодер на ...дуино

    Все ноли при изменении на вариант
    с 1-м прерыванием, но не виснет при включении и выключении.
    PHP код:
    #include <TimerOne.h> 
     

    volatile uint16_t timerCount
    #define BTNPIN 2 //Входной сигнал PPM 
    int ppmImpuls[9]; // Массив импульсов для паузы и 8 каналов 
    int chImpuls[9] = {1000100100100100100100100100}; // Массив средних значений для паузы и 8 каналов 
    int chanel // Номер канала 
    int minImpuls 45 // Минимальный импульс (450 us) 
    int maxImpuls 155// Максимальный импульс (1550 us) 
    int minPausa 500// Минимальная пауза (5000 us) 
    int maxPausa 1300// Максимальная пауза (13000 us)

    void setup()     
    {       
      
    Serial.begin(115200); 
      
    pinMode (BTNPININPUT); 
      
    Timer1.initialize(10);                   
      
    Timer1.attachInterrupt(callback); 
      
    attachInterrupt(1impDownRISING);
    }     

    void loop()     
    {       
      for (
    int i=1<= 8i++) 
        { 
          
    chImpuls[i] = (chImpuls[i] + ppmImpuls[i]) / // усреднение 3 импульсов 
          
    Serial.print(i); Serial.print("=");  
          
    Serial.print(chImpuls[i]); Serial.print(" ");
        }      
          
    Serial.println(""); 
          
    //delay (200); 
          //servo1.writeMicroseconds(chImpuls[1]*10);  
          //servo2.writeMicroseconds(chImpuls[2]*10);  
    }   

    void callback() //--------- Счетчик------------ 
      

        
    timerCount++;
      } 

    void impUp() //---------- Функция обработки положительного импульса по таймеру 0   

      
    detachInterrupt(1); 
      
    timerCount=0
      
    attachInterrupt(1impDownRISING);     
    }     

    void impDown() // Функция обработки отрицательного импульса по таймеру 0 
    {  
      
    int ppm timerCount
      
    detachInterrupt(1); 
      if( 
    ppm minPausa ) { chanel=; } else { chanel ++ ; } 
      
    ppmImpuls[chanel] = ppm 
      
    attachInterrupt(1impUpFALLING);    

    p.s. Я кажись понял, нужно и пин другой подключить. Снова пробую.
    Последний раз редактировалось Mastar; 24.11.2011 в 22:48.
    Мои проекты - Катер для рыбалки

  10. #20
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    55
    Сообщений
    13,382
    Вес репутации
    10

    По умолчанию Re: PPM энкодер на ...дуино

    Конечно можешь, они никак друг от друга не зависят

Страница 2 из 6 ПерваяПервая 123456 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 4 (пользователей: 0 , гостей: 4)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •