Функция millis atmel-studio

Тема в разделе "Микроконтроллеры AVR", создана пользователем Yerabdi, 3 сен 2018.

  1. Yerabdi

    Yerabdi Гик

    Здравствуйте всем как можно реализовать функцию millis в атмел-студио, запускаю таймер Т2 по совпадению на 100мкс, потому что сам код в теле цикле занимает 20-30мкс. Во время чтения кода чтобы не потерять данные запрещаю прерывание. Теперь не могу понять как можно пересчитать ниже 100кс с таймером Т2
     
  2. Yerabdi

    Yerabdi Гик

    Извините не правильно написал функция micros()
     
  3. parovoZZ

    parovoZZ Гуру

    Текущее значение таймера лежит в регистре TCNT. Считал в начале периода, в конце и по разности значений высчитал длительность периода.
     
  4. Yerabdi

    Yerabdi Гик

    Как можно присвоить значения TCNT
     
  5. Yerabdi

    Yerabdi Гик

    Код (C++):
    /*
    * timer_atmega328_2.c
    *
    * Created: 26.05.2017 15:04:07
    *  Author: asu
    */



    #include <avr/io.h>
    #include <avr/interrupt.h>
    unsigned long TT;
    int main(void)
    { DDRB=0xFF;
       
    TCCR1B |= (1<<CS11); // CLK/8
                               
         TCNT1=0;          
      asm("sei");

        while(1)
        {TT=TCNT1;
            TT=TT/2; // Частота микроконтроллера 16МГц так как предделитель 8,  1 такт = 0,5 микросекунд
         asm("nop");
       
        }
    }