ARDUINO Проблема в использовании библиотеки GyverTimer012

fordisimo

✩✩✩✩✩✩✩
9 Дек 2019
8
0
Здравствуте.

Два вопроса :
1) При применении библиотеки GyverTimer1 все работает корректно, при - GyverTimer2 - не работает. ( пример в прикрепленных файлах - Тестовая програмка мигания диодом).

/*
* Тест библ. для Timer1 и выв. в Порт - setPin
*/
#include <GyverTimer1.h>
#include <GyverHacks.h>

#define Led_PR 11 // Св.Диод на PIN 11
uint16_t value_F = 4; // частота (4 Гц)

volatile boolean First = true; // для миг. Св_диодом

void Omega_Redy() // ф-ция ПРИР. для "Timer1"
//~~~~~~~~~~~~~~~~~~~
{
if ( First ) { setPin(Led_PR,1); // вкл. Диод
First =false;
}
else { setPin(Led_PR,0); // выкл. Диод
First =true;
}
}

void setup() {
timer1_ISR(Omega_Redy); // подкл. Функцию

timer1_setFrequency(value_F); // уст. частоту
timer1_start(); // старт таймер
}

void loop()
{
// Пусто
}

/*
* Тест библ. для Timer2 (!!! НЕ РАБОТАЕТ !!!) и выв. в Порт - setPin
*/
#include <GyverTimer2.h>
#include <GyverHacks.h>

#define Led_PR 11 // Св.Диод на PIN 11

uint16_t value_F = 4; // частота (Гц)
volatile boolean First = true; // для миг. Св_диодом

void Omega_Redy() // ф-ция ПРИР. для "Timer2"
//~~~~~~~~~~~~~~~~~~~~~~~~~~~
{
if ( First ) { setPin(Led_PR,1); // вкл. Диод
First =false;
}
else { setPin(Led_PR,0); // выкл. Диод
First =true;
}
}

void setup() {

timer2_ISR(Omega_Redy); // подкл. Функцию

timer2_setFrequency(value_F); // уст. частоту
timer2_start(); // старт таймер
}

void loop()
{
// Пусто
}


2) Может кто посоветует вариант совместимого применения библиотек для получения прерывания по Тimer1 (16 бит), Тimer2 и PWM 16-20кГц на Arduino UNO?
 

Вложения

Изменено:

Nick_SPb

★✩✩✩✩✩✩
1 Ноя 2018
55
12
Если второй код компилируется без ошибок то хотелось бы взглянуть на эти файлы GyverTimer1.h , GyverTimer2.h
иначе скрин ошибки
 

fordisimo

✩✩✩✩✩✩✩
9 Дек 2019
8
0
Файлы здесь:
https://alexgyver.ru/gyvertimer012/

Оба кода компилируются без ошибок.
Проблема в другом:
в программе для Timer2 не происходит прерывание по таймеру, хотя они (программы) идентичные изменен только номер таймера (как я понял из описания библиотеки)
 

Вложения

Nick_SPb

★✩✩✩✩✩✩
1 Ноя 2018
55
12
Используйте другой пин для формирования шим сигнала, вот ваша проблема...


noPWM2.JPG

 

fordisimo

✩✩✩✩✩✩✩
9 Дек 2019
8
0
спасибо за ссылку, но в файлах (примеры использования Timer1 & Timer2, которые я привел) нет обращения к ШИМ. Не работает и пусть, речь идет о таймере 2, точнее прерывании от него.
 

AlexGyver

★★★★★★✩
Команда форума
30 Июл 2018
357
564
Максимальный период - 16384 мкс (соотв. частота 61 Гц)
 
Изменено:

fordisimo

✩✩✩✩✩✩✩
9 Дек 2019
8
0
У меня НЕ работает прерывание для Timer2 при использовании библиотеки Timer012 ( для Timer1 работает).
На страничке сайта нет примера с описанной мной ситуацией( пример только для Timer1), возможно остальные варианты не тестировались? ( Вопрос к Alex-у).
P.S. - ядро использовал Ваше.
- пробовал также и на стандартном Arduino UNO
 

fordisimo

✩✩✩✩✩✩✩
9 Дек 2019
8
0
Всем большое спасибо - с Вашей помощью разобрался.
Timer2 работает с 62 Гц и выше... (проверено).

Выводы:
1) Читать ДОКУМЕНТАЦИЮ!!!! :).......
"
=== Timer0 ===
- При использовании не работает ШИМ на выводах 5 и 6
- Влияет на millis() И delay(), соответственно на ВСЕ библиотеки, где используются эти команды
- Работает в режиме COMPARE (OVERFLOW ардуино забрала себе)
- Максимальный период - 16384 мкс (соотв. частота 61 Гц)
=== Timer1 ===
- При использовании не работает ШИМ на выводах 5 и 6
- При использовании не работает библиотека Servo
- Работает в режиме OVERFLOW и позволяет продолжить (resume) с момента остановки
- Максимальный период 4194304 мкс (соотв. частота 0,24 Гц)
=== Timer2 ===
- При использовании не работает ШИМ на выводах 3 и 11
- Влияет на tone() и pulse-функции, соответственно на ВСЕ библиотеки, где используются эти команды
- Работает в режиме OVERFLOW и позволяет продолжить (resume) с момента остановки
- Максимальный период - 16384 мкс (соотв. частота 61 Гц)
"

Осталось еще "пол" вопроса: " реально минимальный период с каким работают таймера?" - 1 мкс ?
 
Изменено: