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

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

    Цитата Сообщение от Chip Посмотреть сообщение
    Кстати посмотрел Ардуиновкую либу, судя по коду там все 8 прерываний можно использовать.
    Мне больше Ваш вариант нравится, компактный, а значит имеющий меньше глюков и прост в понимании.
    Я еще узнал, что можно и аналоговые входы использовать как внешнее прерывание, в котором можно устанавливать порог срабатывания. Правда сейчас мне это не нужно.

    Хочу быстрее разобраться с чтением PPM и получить в переменных СН1-СН8 значения длительности отрицательных импульсов, усреднить и передать на управление сервоприводами. Положительные импульсы и пауза нужны только для контроля верного сигнала.

    Еще не помешает в переменной Error получить значения типа:
    0 - нет сигнала ( в течении 1-2 сек. нет паузы )
    1 - помеха (есть пауза, но положительные импульсы иногда короче или длинее 450-550 мкс. )
    2 - норма
    3-7 - для другой части программы, где будет контролироваться: аналоговые сигналы RSSI(величина ВЧ сигнала на входе приемника - отдельный провод с приемника), напряжение питания и температура разных элементов.
    Последний раз редактировалось Chip; 25.11.2011 в 13:50.
    Мои проекты - Катер для рыбалки

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

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

    Цитата Сообщение от Chip Посмотреть сообщение
    На Arduino mega PortD выводы 43-46 (INT0-INT3) и PortE выводы 6,7,8,9(INT4-INT7)
    регистры управления внешними прерываниями
    EICRA -для конфигурации прерываний INT0-INT3
    EICRB -для конфигурации прерываний INT4-INT7
    EIMSK -Разрешение на внешнее прерывание INT7 – INT0
    Я правильно разобрался?

    (SCL/INT0)PD0 и (SDA/INT1)PD1 оставлю для возможного расширения.

    (RXD1/INT2)PD2 и (TXD1/INT3)PD3 можно, но сейчас у меня там GPS подключен.

    (T3/INT6)PE6 и (CLKO/ICP3/INT7)PE7 , можно подпаяться к ножкам, т.к. они не разведены в ардуино Мега.

    Остались свободными только
    (OCR3B/INT4)PE4 - в ардуине пин2
    (OCR3B/INT5)PE5 - в ардуине пин3

    Значит мне нужно при подключении к пин2 изменить четыре строки


    ISR(INT4_vect)
    if (PINE & (1<<4))

    а тут как E4 = ICS60?

    EICRB &= ~((1<<ISC??)|(1<<ISC??))
    EICRB |= (1<<ISC??)
    Последний раз редактировалось Mastar; 25.11.2011 в 14:20.
    Мои проекты - Катер для рыбалки

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

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

    Попробуй вот так
    PHP код:
    void setup()    
    {  
      for(
    int x 1822x++){pinMode(xINPUT); digitalWrite(xHIGH);}    
      
    pinMode(2INPUT); digitalWrite(2HIGH);
      
    pinMode(3INPUT); digitalWrite(3HIGH);
      
      
    attachInterrupt(0INT_0FALLING); 
      
    attachInterrupt(1INT_1FALLING);  
      
    attachInterrupt(2INT_2FALLING);  
      
    attachInterrupt(3INT_3FALLING);  
      
    attachInterrupt(4INT_4FALLING);   
      
    attachInterrupt(5INT_5FALLING); 
      
    attachInterrupt(6INT_6FALLING);   
      
    attachInterrupt(7INT_7FALLING);  
     
      
    Serial.begin (115200);   
    }   

    void loop()   
    {     
    }   

    // обработка прерывания   
    void INT_0()   
    {   
    }     
    // обработка прерывания   
    void INT_1()   
    {   

    // обработка прерывания   
    void INT_2()   
    {      
    }   
    // обработка прерывания   
    void INT_3()   
    {  
    }  
    // обработка прерывания   
    void INT_4()   
    {   
    }     
    // обработка прерывания   
    void INT_5()   
    {   

    // обработка прерывания   
    void INT_6()   
    {      
    }   
    // обработка прерывания   
    void INT_7()   
    {  

    P.S.
    Скетч который я выкладывал работает, попробуй его еще раз, а то может ты успел его попробовать до того как я подправил

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

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

    Цитата Сообщение от Chip Посмотреть сообщение
    Скетч который я выкладывал работает, попробуй его еще раз, а то может ты успел его попробовать до того как я подправил
    Не спорю, но у меня подключен вход на PORTE4, поэтому и начал исправлять.

    ----

    Попробовать не проблема, минут через 5-10, но я хотел добить тот вариант, а пока не разобрался до конца с регистрами.

    ISR(INT4_vect)
    if (PINE & (1<<4))

    а тут как E4 = ICS60?

    EICRB &= ~((1<<ISC??)|(1<<ISC??))
    EICRB |= (1<<ISC??)
    Мои проекты - Катер для рыбалки

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

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

    Попробуй вот так
    Так его доделать нужно, иначе я ничего не увижу?
    Мои проекты - Катер для рыбалки

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

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

    ISR(INT4_vect)
    if (PINE & (1<<4))

    E4 = ICS4х

    EICRB &= ~((1<<ISC40)|(1<<ISC41))
    EICRB |= (1<<ISC40)
    EIMSK |=(1<<INT4);

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

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

    Цитата Сообщение от Mastar Посмотреть сообщение
    Так его доделать нужно, иначе я ничего не увижу?
    Ну так там все просто поставь в нужном прерывании включение светодиода (L)

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

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

    Цитата Сообщение от Chip Посмотреть сообщение
    Ну так там все просто поставь в нужном прерывании включение светодиода (L)
    Я в порт отправлял и при подключении к пин2 выдавало 0, при пин3 выдавало 1. Работает.
    PHP код:
    void setup()     
    {   
      for(
    int x 1822x++){pinMode(xINPUT); digitalWrite(xHIGH);}     
      
    pinMode(2INPUT); digitalWrite(2HIGH); 
      
    pinMode(3INPUT); digitalWrite(3HIGH); 
       
      
    attachInterrupt(0INT_0FALLING);  
      
    attachInterrupt(1INT_1FALLING);   
      
    attachInterrupt(2INT_2FALLING);   
      
    attachInterrupt(3INT_3FALLING);   
      
    attachInterrupt(4INT_4FALLING);    
      
    attachInterrupt(5INT_5FALLING);  
      
    attachInterrupt(6INT_6FALLING);    
      
    attachInterrupt(7INT_7FALLING);   
      
      
    Serial.begin (115200);    
    }    

    void loop()    
    {      
    }    

    // обработка прерывания    
    void INT_0()    

      
    Serial.println ("0");
    }      
    // обработка прерывания    
    void INT_1()    
    {
      
    Serial.println ("1");  
    }  
    // обработка прерывания    
    void INT_2()    

      
    Serial.println ("2");  
    }    
    // обработка прерывания    
    void INT_3()
    {
      
    Serial.println ("3");  
    }   
    // обработка прерывания    
    void INT_4()    
    {   
       
    Serial.println ("4"); 
    }      
    // обработка прерывания    
    void INT_5()    
    {    
        
    Serial.println ("5");
    }  
    // обработка прерывания    
    void INT_6()    
    {
      
    Serial.println ("6");  
    }    
    // обработка прерывания    
    void INT_7()    
    {   
        
    Serial.println ("7");

    Мои проекты - Катер для рыбалки

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

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

    В скетче из 23 поста положительные импульсы не воспринимает, всегда выдает 0, а вот отрицательные отлавливает, но выдает странные значения.
    Я еще разберусь с установками таймера под свою мегу, т.к. помню, что из скетча Ардулайт у меня сразу не заработало, изменил регистры под свою плату в таймере и все заработало.

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

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

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

    Может странные значения от того что куда нибудь не туда вставляешь serialprint ?

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

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

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

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

Ваши права

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