Форум программистов, компьютерный форум, киберфорум
Avazart
Войти
Регистрация
Восстановить пароль
Темы блога относятся к программированию на языке С++

В основном для C++Qt (Qt5.1) и C++ Builder (RAD 2009 и RAD XE3)
Рейтинг: 4.00. Голосов: 1.

Заметки по Arduino: Пример кода с таймером

Запись от Avazart размещена 18.03.2020 в 19:21
Обновил(-а) Avazart 23.03.2019 в 22:15
Метки arduino

Пример кода с таймером.

Нажмите на изображение для увеличения
Название: 5-5.jpg
Просмотров: 1506
Размер:	48.7 Кб
ID:	5311
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
unsigned long tick = 0;
volatile bool timeout = false;
 
void setup() 
{
   Serial.begin(9600);
 
   cli();
 
   TCCR1A = TCCR1B = 0;
   
   // Устанавливаем делитель 1024 (смотри таблицу)
   bitWrite(TCCR1B, CS12, 1); 
   bitWrite(TCCR1B, CS11, 0);
   bitWrite(TCCR1B, CS10, 1); 
 
   // Исходя из частоты МК 16 МГц, делителя 1024 и необходимой частоты 1гц считаем число для сравнения:
   const uint16_t cmpValue = 16000000UL/1024/1;
   OCR1A = cmpValue;    // Задаем число для сравнения
   
   bitWrite(TCCR1B, WGM12, 1);  // Cброс счетчика по совпадению/сравнению   
   bitWrite(TIMSK1, OCIE1A, 1);  // Cтартуем таймер
 
   sei();
   
   tick = millis();
}
 
 
void loop() 
{
    if(timeout)
    {
       const unsigned long curr = millis();
       Serial.println(curr-tick);
       tick = curr;
       
       timeout= false;
    }
}
 
 
ISR(TIMER1_COMPA_vect)
{ 
    timeout = true;
}
Статьи:

1. http://mkprog.ru/avr/avr-dlya-nachinayushhih-urok-5-tajmery.html
2. https://www.arduino.cc/reference/en/...ytes/bitwrite/
Размещено в Arduino
Просмотров 172 Комментарии 0
Всего комментариев 0
Комментарии
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.