-
Notifications
You must be signed in to change notification settings - Fork 202
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
10 changed files
with
1,529 additions
and
1 deletion.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
// Демонстрация всех функций библиотеки | ||
|
||
#include <GyverTimers.h> | ||
|
||
void setup() { | ||
// Перенастроить таймер и задать ему период или частоту | ||
// Все функции возвращают реальный период / частоту, которые могут отличаться от введенных | ||
Timer2.setPeriod(1000); // Задать конкретный период 1000 мкс (~ 1000 гц), вернет реальный период в мкс | ||
Timer0.setFrequency(250); // Задать частоту прерываний таймера в Гц, вернет реальную частоту в герцах | ||
Timer1.setFrequencyFloat(50.20); // Задать частоту более точно, в дробных числах, актуально для низких частот и таймера 1 | ||
// С этого момента таймер уже перенастроен и гоняет с выьранной частотой / периодом | ||
|
||
// Подключить прерывание таймера, с этого момента прерывания начнут вызываться | ||
Timer0.enableISR(); // Подключить стандартное прерывание, канал А, без сдига фаз | ||
Timer2.enableISR(CHANNEL_B, 180); // Подключить прерывание таймера 2, канал B, начальная фаза - 180 градусов | ||
Timer1.enableISR(CHANNEL_A, 60); // Подключить прерывание канала А, задать фазу для канала А доступно только для таймера 1! | ||
Timer1.enableISR(CHANNEL_B, 120); // Подключить второе прерывание таймера 1, и задать фазовый сдвиг для этого потока | ||
// Прерывание уже начнет вызываться | ||
|
||
// Если вдруг прерывание нужно отключить, не останавливая таймер | ||
Timer1.disableISR(CHANNEL_B); | ||
// С этого момента прерывание B больше не будет вызываться | ||
|
||
// Если нужно приостановить таймер ПОЛНОСТЬЮ, аппаратно | ||
Timer2.pause(); | ||
// С этого момента таймер стоит на месте, содержимое счетчика остается нетронутым | ||
|
||
// Теперь таймер можно вернуть в строй | ||
Timer2.resume(); | ||
// Таймер продолжил считать с того же места | ||
|
||
// Если нужно полностью остановить таймер и сбросить содержимое счетчика | ||
Timer1.stop(); | ||
// Таймер стоит, счетчик сброшен | ||
|
||
// Возвращаем таймер в строй | ||
Timer1.restart(); | ||
// Таймер перезапущен, начал считать с начала | ||
|
||
// Если нужно вернуть стандартные Arduino - настройки таймера | ||
Timer0.setDefault(); | ||
// Теперь таймер работает в станлартном режиме | ||
} | ||
|
||
// векторы прерываний | ||
ISR(TIMER1_A) { | ||
|
||
} | ||
|
||
ISR(TIMER1_B) { | ||
|
||
} | ||
|
||
ISR(TIMER2_B) { | ||
|
||
} | ||
|
||
ISR(TIMER0_A) { | ||
|
||
} | ||
|
||
void loop() { | ||
|
||
} |
25 changes: 25 additions & 0 deletions
25
GyverTimers/examples/double_interrupts/double_interrupts.ino
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
// Пример генерации двухканальных прерываний на таймере с РАВНЫМ периодом, но сдвинутых по фазе | ||
// два потока прерываний с сдвигом 180 градусов (полная инверсия) | ||
|
||
#include <GyverTimers.h> | ||
|
||
void setup() { | ||
Serial.begin(9600); | ||
|
||
Serial.print("Real timer frequency is : "); // Выведем реальную частоту, реальная может отличаться от заданой (ограничено разрешением таймера) | ||
Serial.println(Timer1.setFrequencyFloat(2.50)); // Частота прерываний - 2.5 гц , используй .setFrequency(...) для целых чисел | ||
delay(1000); | ||
Timer1.enableISR(CHANNEL_A, 0); // Первый канал - А, начальная фаза - 0 градусов | ||
Timer1.enableISR(CHANNEL_B, 180); // Второй канал - B, начальная фаза - 180 градусов | ||
} | ||
|
||
void loop() {} | ||
|
||
// два прерывания на одном таймере | ||
ISR(TIMER1_A) { | ||
Serial.println(" Channel A interrupt !"); // Прерывание А | ||
} | ||
|
||
ISR(TIMER1_B) { | ||
Serial.println(" Channel B interrupt !"); // Прерывание B | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
// Пример генерации двухтактного меандра на таймере 2 (пины D3 и D11) | ||
#include <GyverTimers.h> | ||
|
||
void setup() { | ||
pinMode(3, OUTPUT); // настроить пин как выход | ||
pinMode(11, OUTPUT); // настроить пин как выход | ||
Timer2.setFrequency(30000); // настроить частоту таймера в Гц и запустить таймер | ||
Timer2.outputEnable(CHANNEL_A, TOGGLE_PIN); // в момент срабатывания таймера пин будет переключаться | ||
Timer2.outputEnable(CHANNEL_B, TOGGLE_PIN); // в момент срабатывания таймера пин будет переключаться | ||
Timer2.outputState(CHANNEL_A, HIGH); // задаём начальное состояние пина 11 | ||
Timer2.outputState(CHANNEL_B, LOW); // задаём начальное состояние пина 3 | ||
} | ||
|
||
void loop() { | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
//Пример генерации меандра на таймере 2 , канале B (D3 на Arduino UNO) | ||
#include <GyverTimers.h> | ||
|
||
void setup() { | ||
pinMode(3, OUTPUT); // настроить пин как выход | ||
Timer2.setFrequency(500); // настроить частоту таймера в Гц | ||
Timer2.outputEnable(CHANNEL_B, TOGGLE_PIN); // в момент срабатывания таймера пин будет переключаться | ||
} | ||
|
||
void loop() { | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
// Пример простой генерации прерываний аппаратным таймером | ||
#include <GyverTimers.h> | ||
|
||
void setup() { | ||
Serial.begin(9600); | ||
Timer1.setFrequency(3); // Высокоточный таймер 1 для первого прерывания, частота - 3 Герца | ||
//Timer1.setPeriod(333333); // то же самое! Частота 3 Гц это период 333 333 микросекунд | ||
//Timer1.setFrequencyFloat(4.22); // Если нужна дробная частота в Гц | ||
Timer1.enableISR(); // Запускаем прерывание (по умолч. канал А) | ||
|
||
// запустим второй таймер | ||
Timer2.setPeriod(1000000); // Устанавливаем период таймера 1000000 мкс -> 1 гц | ||
Timer2.enableISR(CHANNEL_A); // Или просто .enableISR(), запускаем прерывание на канале А таймера 2 | ||
pinMode(13, OUTPUT); // будем мигать | ||
} | ||
|
||
void loop() {} | ||
|
||
// Прерывание А таймера 1 | ||
ISR(TIMER1_A) { // пишем в сериал | ||
Serial.println("timer1"); | ||
} | ||
|
||
// Прерывание А таймера 2 | ||
ISR(TIMER2_A) { // генерируем меандр 1 кгц, мигаем | ||
digitalWrite(13, !digitalRead(13)); | ||
//Serial.println("timer2"); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
####################################### | ||
# Syntax Coloring Map For GyverTimers | ||
####################################### | ||
|
||
####################################### | ||
# Datatypes (KEYWORD1) | ||
####################################### | ||
GyverTimers KEYWORD1 | ||
|
||
Timer0 KEYWORD1 | ||
Timer1 KEYWORD1 | ||
Timer2 KEYWORD1 | ||
Timer3 KEYWORD1 | ||
Timer4 KEYWORD1 | ||
Timer5 KEYWORD1 | ||
|
||
####################################### | ||
# Methods and Functions (KEYWORD2) | ||
####################################### | ||
ISR KEYWORD2 | ||
|
||
setPeriod KEYWORD2 | ||
setFrequency KEYWORD2 | ||
setFrequencyFloat KEYWORD2 | ||
enableISR KEYWORD2 | ||
disableISR KEYWORD2 | ||
pause KEYWORD2 | ||
resume KEYWORD2 | ||
stop KEYWORD2 | ||
restart KEYWORD2 | ||
setDefault KEYWORD2 | ||
outputEnable KEYWORD2 | ||
outputDisable KEYWORD2 | ||
outputState KEYWORD2 | ||
|
||
####################################### | ||
# Constants (LITERAL1) | ||
####################################### | ||
TIMER0_A LITERAL1 | ||
TIMER0_B LITERAL1 | ||
TIMER1_A LITERAL1 | ||
TIMER1_B LITERAL1 | ||
TIMER1_C LITERAL1 | ||
TIMER2_A LITERAL1 | ||
TIMER2_B LITERAL1 | ||
TIMER3_A LITERAL1 | ||
TIMER3_B LITERAL1 | ||
TIMER3_C LITERAL1 | ||
TIMER4_A LITERAL1 | ||
TIMER4_B LITERAL1 | ||
TIMER4_C LITERAL1 | ||
TIMER5_A LITERAL1 | ||
TIMER5_B LITERAL1 | ||
TIMER5_C LITERAL1 | ||
|
||
CHANNEL_A LITERAL1 | ||
CHANNEL_B LITERAL1 | ||
CHANNEL_C LITERAL1 | ||
|
||
TOGGLE_PIN LITERAL1 | ||
CLEAR_PIN LITERAL1 | ||
SET_PIN LITERAL1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
name=GyverTimers | ||
version=1.0 | ||
author=AlexGyver <[email protected]> | ||
maintainer=AlexGyver <[email protected]> | ||
sentence=Library for control hardware timer on ATmega328p. | ||
paragraph=Has some functions to control timer run: start, stop, pause, set period and frequency. | ||
category=Timing | ||
url=https://github.com/AlexGyver/GyverLibs | ||
architectures=* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters