Проблема с прерыванием и скоростным счетчиком на esp и решение

проблема с прерыванием и ее решение

Контроллеры на основе ESP8266
Ответить
DrGebb
Рядовой
Сообщения: 7
Зарегистрирован: 07.11.2019{, 11:43}
Репутация: 0
Имя: Глеб

Проблема с прерыванием и скоростным счетчиком на esp и решение

#1

Сообщение DrGebb » 09.11.2019{, 17:21}

Сразу к делу. Штатный скоростной счетчик не работает корректно с есп. Есп после прошивки - постоянно уходит в ребут. Нужно всего лишь добавить ICACHE_RAM_ATTR перед декларированием функции, которая будет вызываться в прерывании. Что это и зачем это надо можно прочить <здесь>
СпойлерПоказать
Изображение
После этих манипуляций - все работает как надо.

Есть еще баг, который касается непосредственно flprog. При установке галки в чекбоксе "аппаратный таймер"
СпойлерПоказать
Изображение
. При компиляции создается функция setupSpeedCounterTimer(); --- она объявляется, вызывается и используется, все хорошо.

НО когда мы НЕ ставим галку в чекбоксе "аппаратный таймер" -- то эта функция setupSpeedCounterTimer(); -- просто вызывается, будучи не задекларированной - компилятор сообщает об ошибке. Я так понял, что без "аппаратного таймера" - это функция вообще не нужна, и присутствие ее в коде - это ошибка. Изображение

Надеюсь автор программы увидит это сообщение и исправить эти ошибки.

edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20.09.2019{, 11:38}
Репутация: 65
Имя: Эдуард

Проблема с прерыванием и скоростным счетчиком на esp и решение

#2

Сообщение edyapd » 09.11.2019{, 17:47}

DrGebb, у вас даже не написано к какой версии программы это относится.
Если это последняя версия 6.1.1, то вам СЮДА
И ещё, про прерывания, зависит от версии ESP установленной в Arduino IDE. Например с 2.4 всё нормально, проблемы начались с 2.5

DrGebb
Рядовой
Сообщения: 7
Зарегистрирован: 07.11.2019{, 11:43}
Репутация: 0
Имя: Глеб

Проблема с прерыванием и скоростным счетчиком на esp и решение

#3

Сообщение DrGebb » 09.11.2019{, 18:03}

edyapd, да версия flprog 6.1.1, да 5.3 тоже самое. А версия есп в Arduino IDE 2.5.2

Аватара пользователя
Max
Лейтенант
Сообщения: 691
Зарегистрирован: 06.09.2015{, 13:12}
Репутация: 5
Откуда: Тюмень-Баку
Имя: Максим

Проблема с прерыванием и скоростным счетчиком на esp и решение

#4

Сообщение Max » 11.03.2020{, 21:04}

У кого работает на ESP8226 скоростной счетчик?

У меня вообще не компилируется.
(pr22:76: error: 'setupSpeedCounterTimer' was not declared in this scope

setupSpeedCounterTimer();)

Как решается эта проблема? И, вообще, есть ли решение?

DrGebb
Рядовой
Сообщения: 7
Зарегистрирован: 07.11.2019{, 11:43}
Репутация: 0
Имя: Глеб

Проблема с прерыванием и скоростным счетчиком на esp и решение

#5

Сообщение DrGebb » 11.03.2020{, 22:28}

DrGebb писал(а):
09.11.2019{, 17:21}
При компиляции создается функция setupSpeedCounterTimer(); --- она объявляется, вызывается и используется, все хорошо.

НО когда мы НЕ ставим галку в чекбоксе "аппаратный таймер" -- то эта функция setupSpeedCounterTimer(); -- просто вызывается, будучи не задекларированной - компилятор сообщает об ошибке. Я так понял, что без "аппаратного таймера" - это функция вообще не нужна, и присутствие ее в коде - это ошибка.

Надеюсь автор программы увидит это сообщение и исправить эти ошибки.

lentyaj1982
Рядовой
Сообщения: 19
Зарегистрирован: 01.10.2021{, 20:55}
Репутация: 5
Имя: raphiz

Проблема с прерыванием и скоростным счетчиком на esp и решение

#6

Сообщение lentyaj1982 » 27.03.2023{, 11:00}

я нашел причину постоянного ребута МК при использовании скоростного счётчика. Проверьте у себя.
Ведь надо разделить 60 000 000 на длину паузы, чтоб точно определить обороты, мы обычно используем Unsigned long integer, что логично, вводя 60 000 000, а можно просто Float и всё работает. Два скоростных счётчика уже 12 часов пашут и по графику сбоев нет, это ещё с тяжёлым веб интерфейсом с сек обновлением. Всё чётко.

ecoins
Полковник
Сообщения: 2927
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Проблема с прерыванием и скоростным счетчиком на esp и решение

#7

Сообщение ecoins » 27.03.2023{, 16:17}

Очень интересный результат.
Поучительный пример для аккуратного использования типов переменных.
С Уважением, Энвер.

Ответить

Вернуться в «ESP8266»