Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Ответить

Arduino Uno Таймер

Пт дек 24, 2021 21:06:38

Привет "РА."-Кот :). Необходима ваша помощь. Хочу использовать для одного из проектов внутренний таймер с прерыванием, без использования выходов МК к которым он может быть подключен.
Выход 5 и 6: timer0
Выход 9 и 10:timer1
Выход 11 и 3:timer2
Данные выводи МК будут использоваться в качестве бинарных входов, а некоторые в качестве выходов. Как настроить таймер без привязки к выводам МК (ШИМ на выходе МК, тд. мне не нужен)?

Re: Arduino Uno Таймер

Пт дек 24, 2021 21:22:52

https://alexgyver.ru/lessons/timer-isr/

https://habr.com/ru/post/453276/

Re: Arduino Uno Таймер

Сб дек 25, 2021 03:44:39

Не понял, можно ли отдельно использовать вывод(Выход) МК от таймера или нет, что бы они не влияли друг на друга.

Re: Arduino Uno Таймер

Сб дек 25, 2021 10:04:23

В документации микроконтроллера см. внутреннюю пр. схему выбранного таймера. Введите вход с клока, выберите прескалера. Что произойдет через время таймера (например, поднятие флага), следите за прерываниями и не переходя к выводам (для Вашей другой функции).

Из пдф-а: The Timer/Counter can be clocked by an internal or an external clock source.
---
Я бы начал тесты с blink по таймера, сначала с готовой программы. Поменяйте на другое время, поменяйте тип исполняемой функции...

Internal Timers of Arduino
https://create.arduino.cc/projecthub/Ma ... ino-58f6c9

Re: Arduino Uno Таймер

Сб дек 25, 2021 11:23:44

По умолчанию, если не используются функции analogWrite() все выводы могут использоваться как цифровые.
Использование таймера "в своих нуждах" требует внимания только в отношении функций системного времени
millis()
micros()
delay()
да еще если tone() в программе использовать намечается.
Дополнительно имеется возможность использовать Т0 в части прерывания по совпадению для OCR0A (только для МК, имеющих таковой - к примеру 186 и 328 мегах) без дополнительных ограничений.
8)

Re: Arduino Uno Таймер

Сб дек 25, 2021 11:24:50

Да это уже немного ближе к тому, что я хочу.
То есть после срабатывания таймера по звортному отсчету функция изменяет некоторую переменную относящуюся к основной части программы без изменения состояний выходов мк.

Re: Arduino Uno Таймер

Сб дек 25, 2021 11:29:29

только что протестил библиотеку от alexgyver. подключил к проекту, над которым работаю, все ОК.
Код:
 

#include "GyverTimers.h"


Timer1.setFrequency(30);               // Высокоточный таймер 1 для первого прерывания, частота - 3 Герца
  //Timer1.setPeriod(333333);           // то же самое! Частота 3 Гц это период 333 333 микросекунд
  //Timer1.setFrequencyFloat(4.22);     // Если нужна дробная частота в Гц 
  Timer1.enableISR(CHANNEL_B);

// Прерывание А таймера 1
ISR(TIMER1_B) {  // пишем  в сериал
  Serial.println(millis());
}



Этот код работает. Посмотрел логическим анализатором на 10-м пине - никаких действий. Проверил работу пина в других функциях - никаких нареканий

Re: Arduino Uno Таймер

Сб дек 25, 2021 11:46:39

khomych, было бы хорошо делать только быстрые собития (напр. поднимать флаг, считать count и т. д.) во время переполнения прерывания таймера, а медленные события (как Serial.print()): выполнения напр. по флагу в теле программы (loop). Иначе можете пропустить собитие.

Re: Arduino Uno Таймер

Сб дек 25, 2021 12:00:42

Я в курсе. это просто для теста, что запускается прерывание
Ответить