Страница 7 из 8 ПерваяПервая 12345678 ПоследняяПоследняя
Показано с 61 по 70 из 73
  1. #61
    Пользователь
    Регистрация
    05.03.2009
    Сообщений
    29
    Вес репутации
    199

    По умолчанию Re: Прерывания в Arduino.

    Сегодня провел испытание на автомобиле: примерно 8 импульсов за 1 оборот колеса. Что получается ~ 31см/ на импульс. Можно начинать писать спидометр. Как раз пригодится MsTimer2

  2. #62
    Пользователь
    Регистрация
    05.03.2009
    Сообщений
    29
    Вес репутации
    199

    По умолчанию Re: Прерывания в Arduino.

    Пытался при помощи приведенного мною выше кода отслеживать появление +5в. на Pin 2. Не получается не при каких значениях 3-го параметра функции attachInterrupt.
    Испытывал при помощи проводка подключая попеременно его то к земле, то к 5в. Значение переменной pulse растет только когда к земле провод подключаю.

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

    По умолчанию Re: Прерывания в Arduino.

    Тебе импульсы считать нужно?
    Последний раз редактировалось Chip; 20.09.2012 в 10:54.

  4. #64
    Новичок
    Регистрация
    21.01.2013
    Сообщений
    3
    Вес репутации
    0

    По умолчанию Re: Прерывания в Arduino.

    Специально зарегистрировался на этом форуме, т.к. сколько я лазил лазил по рус. инету, спецом по Ардуине Chip наверно в 5терку лучших вошел бы.

    Хотел у вас спросить. Сам я фермер, жизнь заставила писать для МК разнообразные программы для хозяйства, т.к. нужна гибкость и получение того, что мне конкретно от МК нужно. Раньше я писал проги на асемблере под пики, но когда код получался под 16000 команд написанных руками, мозг начал просить пощады (т.к .в памяти нужно было хранить для чего то для чего это).
    В начале я скачал прогу Флоукоде и за 1н день написал простую прогу (терморегулятор + димер) для неизвестного мне контроллера и оно все заработало.

    Потом купил Ардуино на атмеге 2560, довольно быстро получилось прикрутить символьный ЖКИ, датчики DHT, а потом если честно - разочарование, потому как не могу разобраться с критичными для моих применений вещами:

    1. Как пользоваться кучей таймеров атмеги 2560 и пользоваться их прерываниями?
    2. Почему DHT датчики так сильно тормозят на ардуино?

    мне вот что в хозяйстве, в основном нужно - работа с АЦП, димеры - плавные регулировки напряжения для вентиляции, освещения, насосов отопления, т.е. обычное фазовое управление на симисторы. На пике это в пол тыка делалось прерываниями, по убыванию фронта на INT и (желательно быстрый) отсчет таймера, на каждый симистор должен работать отдельный таймер (обычно были задействованы все 4ре таймера) , все это крутилось себе в прерываниях и особо не тормозило работу основной программы, можно было спокойно себе лазить в меню, изменять параметры.

    А сколько я видел примеров скетчей на ардуино - все идет через делей (!?) что за изврат??? или 1н единственный таймер №2

    В английском я не очень, по пикам хоть есть хорошие описания на русском, полностью переведенные пдфки, а по ардуине того, что мне надо вообще не нашел .

    Поэтому только на вас у меня вся надежда.
    Последний раз редактировалось Vespen; 21.01.2013 в 03:53.

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

    По умолчанию Re: Прерывания в Arduino.

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

  6. #66
    Новичок
    Регистрация
    21.01.2013
    Сообщений
    3
    Вес репутации
    0

    По умолчанию Re: Прерывания в Arduino.

    Chip буду очень признателен.

    Интересуют прерывания по таймерам Атмеги 2560, установка значений в таймер (для фазовых задержек), по INT прерываниям я уже вроде разобрался. желательно чтоб без библиотек.

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

    По умолчанию Re: Прерывания в Arduino.

    Конкретно для меги я ни разу не писал, Примеры для Arduino Nano приведу
    Многоканальный Dimmer на Arduino Nano на Mega будет работать если заменить фаил Nanopins.h на cyberpins.h
    Пример использования Timer1

    Вся информация по регистрам таймеров в Datasheet есть, к сожалению переводить Ds нет времени
    но вот например нашел кое что у себя, коментарии к некоторым регистрам и флагам
    Думаю этого должно быть достаточно для самостоятельного изучения
    Код:
    void Setup_TIMER2()
    {
        // TIMSK2 &= ~(1<<TOIE2); //разрешения прерывания по переполнению таймера/счетчика Т2   
        TCCR2A &= ~((1<<WGM21) | (1<<WGM20));// Режим работы таймера/счетчика  
        TCCR2B=((0 << CS22) | (0 << CS21) | (1 << CS20)) //Делитель 0 
        //ASSR &= ~(1<<AS2);  //Выбор источника синхронизации таймера если AS2=0 от системного генератора 
        //ASSR|=(1<<AS2); // Тактировать T2 от асинхронного генератора таймера 
        TCNT2 = TCNT2_Const; //  16000000/256/100/64=8 tcnt2=256-8=248.      
        TIMSK2 |= (1<<TOIE2);//Разрешение прерывания по переполнению Т2. 
       // TIMSK2|=(1<<OCIE2); // Разрешить прерывание по совпадению Т2.
      
    }
    
    void loop()    
    {    
    
    }   
    
    ISR(TIMER2_OVF_vect)//вектор прерывания по переполнению таймера  
    { 
        TCNT2=0; 
    } 
    
     ISR(TIMER2_COMPA_vect) //Обработчик прерывания по совпадению с OCR2
     {
        TCNT2=0; 
     }
    Последний раз редактировалось Chip; 23.01.2013 в 23:22.

  8. #68
    Новичок
    Регистрация
    21.01.2013
    Сообщений
    3
    Вес репутации
    0

    По умолчанию Re: Прерывания в Arduino.

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

    Огромный вам респект.

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

    По умолчанию Re: Прерывания в Arduino.

    Если что то будет не понятно, спрашивайте

  10. #70
    Новичок
    Регистрация
    18.06.2012
    Сообщений
    6
    Вес репутации
    155

    По умолчанию Re: Прерывания в Arduino.

    Извиняюсь что не писал долго, проект был отложен и теперь снова к нему вернулся и наступил на грабли,
    #include <LiquidCrystal.h>
    #include <MsTimer2.h>

    const int sensorPin = A1; // select the input pin for the potentiometer
    const int sensor1Pin = A2;


    int ledPin = 13; // select the pin for the LED

    int sensorValue = 0; // variable to store the value coming from the sensor
    int sensor1Value = 0;

    int ledValue = 0;
    int led1Value = 0;

    // initialize the library with the numbers of the interface pins
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

    void flash_led() //обработчик прерывания
    {
    digitalWrite(ledPin, HIGH);
    delay(led1Value); //длительность импульса
    digitalWrite(ledPin, LOW) ;
    }

    void setup() {
    // declare the ledPin as an OUTPUT:
    pinMode(ledPin, OUTPUT);

    MsTimer2::set(ledValue, flash_led); // будет срабатывать каждые 30сек.
    MsTimer2::start(); //включить таймер

    // set up the LCD's number of columns and rows:
    lcd.begin(16, 2);
    }

    void loop() {

    // read the value from the sensor:
    sensorValue = analogRead(sensorPin);
    sensor1Value = analogRead(sensor1Pin);


    lcd.setCursor(0, 1);

    // map it to the range of the analog out:
    ledValue = map(sensorValue, 0, 1023, 5000, 60000);
    led1Value = map(sensor1Value, 0, 1023, 6, 60);

    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Pause ");
    lcd.print(1000 / ledValue);
    lcd.print(" ");

    lcd.setCursor(0, 1);
    lcd.print("impuls ");
    lcd.print(led1Value);
    lcd.print("ms ");

    }
    показания на дисплее появляются по буквенно с паузой в 1сек, pin13 светится всё время, уже запутался полностью с этим прерыванием...

Страница 7 из 8 ПерваяПервая 12345678 ПоследняяПоследняя

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

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

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

Ваши права

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