Функция micros()

arduino-logo

Описание функции micros

Функция micros() возвращает количество микросекунд с момента начала выполнения на плате ардуино текущей программы. Значение переполняется и сбрасывается на ноль примерно через 70 минут. Более того, на платах ардуино с частотой 16 МГц функция имеет разрешение 4 секунды (возвращаемое значение всегда кратно 4), на платах с частотой 8 МГц разрешение функции — 8 секунд.

Синтаксис

unsigned long micros()

Параметры

нет


Что возвращает

Количество микросекунд с момента начала выполнения программы.


Пример функции micros

void setup() {
  Serial.begin(9600);
  Serial.println(micros()); // Выводим количество микросекунд, прошедших после запуска МК
  delayMicroseconds(1000);  // Приостанавливаем работу МК на 1000 микросекунд
  Serial.println(micros()); // Выводим количество микросекунд, прошедших после запуска МК
}

Этот простой пример описан в функции setup().

  1. Мы сперва инициализируем последовательный порт Serial.begin(9600);.
  2. Далее выводим значение в порт, которое нам вернула функция micros() — это значение равно 8 микросекундам.
  3. Делаем паузу длительностью 1000 микросекунд функцией delayMicroseconds.
  4. Повторяем шаг 2: снова выводим количество микросекунд. На этот раз оно равняется 1084 микросекундам.
Функция delayMicroseconds в arduino
Результат выполнения примера для функции micros на Arduino UNO

Код функции micros

(hardware/arduino/avr/cores/arduino/wiring.c 1.8.10)

unsigned long micros() {
        unsigned long m;
        uint8_t oldSREG = SREG, t;

        cli();
        m = FastLED_timer0_overflow_count; // ._long;
#if defined(TCNT0)
        t = TCNT0;
#elif defined(TCNT0L)
        t = TCNT0L;
#else
        #error TIMER 0 not defined
#endif


#ifdef TIFR0
        if ((TIFR0 & _BV(TOV0)) && (t < 255))
                m++;
#else
        if ((TIFR & _BV(TOV0)) && (t < 255))
                m++;
#endif

        SREG = oldSREG;

        return ((m << 8) + t) * (64 / clockCyclesPerMicrosecond());
}

Загрузки

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии