Пропала возможность работы с таймерами

После случайного обновления библиотек и плат в Arduino IDE 2.1.1 скетчи с командой hw_timer_t перестали компилироваться. Ошибка: error: too many arguments to function ‘hw_timer_t* timerBegin(uint32_t)’ 8 | My_timer = timerBegin(0, 80, true); Ранее до обновления программы, использующие таймеры, исправно работали. Попытка использовать 2.0.2 версию ситуацию не исправила.

Плата какая? ЕСП32?
Версия ядра Expessif ?

и что это за бред?

 hw_timer_t* timerBegin(uint32_t) 8 | My_timer = timerBegin(0, 80, true);

Выкладывайте весь код

Migration from 2.x to 3.0 — Arduino-ESP32 2.0.14 documentation (readthedocs-hosted.com)

Плата ESP32 Wroom32 клон
Версию ядра не знаю. Код

#define LED 21
hw_timer_t *My_timer = NULL;
void IRAM_ATTR onTimer(){
digitalWrite(LED, !digitalRead(LED));
}
void setup() {
pinMode(LED, OUTPUT);
My_timer = timerBegin(0, 80, true);
timerAttachInterrupt(My_timer, &onTimer, true);
timerAlarmWrite(My_timer, 1000000, true);
timerAlarmEnable(My_timer); //Just Enable
}
void loop() {
}

а кто знает?

ну так посмотри

Arduino esp32 by Espressiv 3.0.2
Arduino ESP32 Boards 2.0.13 может быть INSTALL

А теперь смотри ссылку из поста #3

@ВладФ
Это ведь вы VAF на гайвере?
Почитал вашу тему, проникся. Вам никакие таймеры не помогут.

тоже пошел посмотрел.
концовка впечатляющая ))

 Возможно играет роль выбор ESP32 for Arduino или ESP52 by Espressiv

@MMM ? а не вы ли bort707 на гайвере? :rofl:

Нет не я, но мне он тоже много чего советовал. В результате отпал от тамошней дискуссии.
Но и от вас хотелось бы конкретики. Сейчас все сошлось в точке выбора устанавливаемой платы, чтобы работал и esp_now и была бы возможность использовать таймеры. Не хотелось бы иметь два не смешиваемых случая.

ага

тогда я тоже не я

похоже он мне отвечал :rofl: :joy:

смотри ссылку в посте #3, там как раз про изменения в таймерах

Очень тяжелый ответ. Где пост? Где там об изменениях? Если вы все знаете и понимаете, скажите прямо, что произошли такие то изменения и теперь надо поступать так-то. Мне скажут, что я хочу многого, но действительно хочу иметь работающий комплект: arduino ide, Boards and libraries для использования.

При смене версии пакета есп32 от 2.х на 3.х произошли изменения в очень многих системных функциях. В частности, в функциях таймера. Например в timerBegin(uint32_t) теперь только один параметр.
В посте 3 есть ссылка на официальный документ от авторов кода - что именно надо изменить в старых скетчах, что они работали с новой версией. Менять нужно не в одном месте , и не в двух. Изменения не ограничиваются таймерами.

Поэтому с учетом вашего уровня понимания для вас проще будет поставить старую версию пакета ЕСП32.

1 лайк

@xDriver
вы можете подозревать что угодно, но ник у меня МММ и менять я его не собираюсь.
На этом дискуссия для меня закрыта.

Да что ж такое-то? Ответ по ССЫЛКЕ в посте #3. Номер поста указывается в верхнем правом углу. КАЖДОГО поста.

Переходите по ссылке и видите

Что делать? Приводить свой код в соответстсвие с новыми реалиями

нервные все какие то, по понедельникам…

1 лайк

Спасибо! Ткнули меня конкретно и поучительно. Но возвратится к старой версии у меня не получилось, может быть из-за моей криворукости. Теперь надо научится жить в новой версии, где что-то из старого работает получше, чем раньше.
Нужен новый пример с таймером, мне найти не удается. Все ответы на поиск устарели.