Показано с 1 по 10 из 178

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11
    Модератор Аватар для XsanderS
    Регистрация
    05.05.2008
    Возраст
    42
    Сообщений
    829
    Вес репутации
    408

    По умолчанию Re: Бортовой компьютер мотоцикла

    int0 int1 int2 int3 int4 это номера прирываний timer0 timer1 timer2 timer3 timer4 здесь глянь и станет все ясно
    SPI c pin0 не связанны на пинах 0,1 UART 2,3 связанны с теми что подписанны на плате SCL SDA это и есть квадратная шина, SPI выведен на отдельный разем (SPI процессора)
    Например если подключаешь дисплей по SPI там в зависимости как органезованна библиотека для конкретного устройства и там же прописанны пины.

    Можещь запускать и останавливать таймеры когда тебе надо, инициалезируешь таймер и при инициализации указываещь номер таймера . нужно посмотреть, как на леонардо, точнее какой таймер за что отвечает. Например timer0 системный таймер, timer1 управляет ШИМ итд... Точно посмотрю и напишу.

    Посмотри здесь описание функции attachInterrupt()

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

    вот пример, делал обработку сигнала с RC пульта.

    PHP код:
    #include <TimerOne.h>

    #define BTNPIN 2 // Вход сигнала
    #define L 5         // Выход на H-Мост вращение в лево
    #define R 6         // Выход на H-Мост вращение в право

    volatile uint16_t startImpuls;
    volatile uint16_t lengthImpuls;
    volatile uint16_t timerCount=0;

    void setup()
    {  

    /* LOW — вызов прерывания всякий раз, 
        когда на порту низкий уровень напряжения;
        CHANGE – прерывание вызывается при изменении 
        значения на входе;
        RISING – вызов прерывания при изменении уровня 
        напряжения с низкого (LOW) на высокое(HIGH)
        FALLING – вызов прерывания при изменении уровня 
        напряжения с высокого (HIGH) на низкое (LOW)*/
      
      
    startImpuls=0;
      
    lengthImpuls=0;
      
      
    pinMode (BTNPININPUT); 
      
    pinMode (LOUTPUT);
      
    pinMode (ROUTPUT);

      
    Serial.begin(115200);

      
    Timer1.initialize(10);                // Интервал срабатывания таймера 10мкс
      
    Timer1.attachInterrupt(callback);

      
    attachInterrupt(0fireUpRISING); // Запуск таймера при наличии сигнала HIGH

    }
    void callback() {  timerCount++; }

    void loop()
    {
       if (
    lengthImpuls 0
      { 
         
    uint16_t li lengthImpuls
         
    lengthImpuls=0;
      
         if (
    li 100  && li 150)   // эамер сигнала для вращения в лево
         
    analogWrite (L23 li);
         
         if (
    li 155  && li 200)   // эамер сигнала для вращения в право
         
    analogWrite (R23 li);
      }   
     }

    // Функция обработки прерывания на подъем
    void fireUp()
    {

      
    detachInterrupt(0);
      
    startImpuls timerCount;
      
    attachInterrupt(0fireDownFALLING);
    }

    // Функция обработки прерывания на падение
    void fireDown()
    {
      
    detachInterrupt(0);
      
    lengthImpuls timerCount startImpuls;
      
    startImpuls=0;
      
    timerCount=0;
      
    attachInterrupt(0fireUpRISING);

    ps: просьба заключать выкладываемые примеры кодов в php teg (доступен в расшыренном режиме написания сообщения)
    Последний раз редактировалось XsanderS; 07.01.2015 в 05:10.
    хороший модем должен качать пиво!
    Мой проект

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

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

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

Ваши права

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