Сомнительно.
Но, если, подозрения на нее, то стоит начать вызывать ее по принципу “blink w/o delay”, выкинув из обработчика.
Что то есть в этом. Но есть ли смысл “стрелять по воробьям из пушки”, ставя мощное железо для вполне тривиальной задачи. Ведь 8-ми разрядника, с оптимальным количеством аппаратных прерываний, таймеров и GPIO должно же хватить?
Вы подразумеваете накопительный буфер? А потом , раз в установленный период вызывать значение на дисплей?
Конечно
мне важен каждый бит в переменной OptoStepCounter. В дальнейшем, в фоновом режиме это значение счетчика будет обрабатываться в связке с другой функцией вычисления.
Может быть, действительно, исключить отображение этой переменной на 7Segment побитово…
Хотелось бы, конечно, что бы в Real Time на 7Segment мелькали цифры. Но, вероятно не судьба, из за ресурсов МК.
Экран монитора обновляется с частотой 50-70 Гц. Вы каждый кадр замечаете?))
Кто хоть слово сказал про мощное железо? Я тебе говорю про НЕ УСТАРЕВШЕЕ железо. Я тебе говорю про железо, которое ДЕШЕВЛЕ.
Раз в секунду - не рилтайм? А скоко раз в секунду - рилтайм? Нормативы имеются?
“Малина Pi” - это разве железо дешевле?
Есть у меня где то, валяется … ааа…это BeagleBone Black…
Сорян, с “Малиной” не работал еще.
где хоть одно слово про Малину в ветке? вам РП2040 предлагали
так и считайте каждый бит, кто вам запрещает. А на экран каждый бит показывать совершенно лишнее
В идеале - максимально приближенно к скорости прерывания - 4мс. Прошло прерывание - 4 тика проца, пошло отображение на дисплей.
Я даже на Serial вижу счетчик без срывов. А на железном 7Segment теряются по 50 значений на каждые 1000 прерываний.
И это уже не говоря про уход в разнос таймера импульсов на драйвер шаговика, при максимальной скорости.
Так RP2040 это не в “Малину” разве ставят?
Видимо , без вариантов.
Придется делать через буфер и выводит с некой периодичностью.
Загоняться не надо. Это не игровой монитор.
Бессмысленная трата времени одноядерного контроллера в обработчике прерывания - одна из проблем. Тут и пропуск значений энкодера и тд.
Но срыв шагов это не должно вызывать.
какой буфер нахер? У впечатление, что вы бредите.
Выход в интернет через диск Дэ .
С хера ли?
Код читали? Что то по существу есть сказать?
Переменная OptoStepCounter изменяется при каждом прерывании оптического энкодера. Поскольку со скоростью срабатывание прерывания не представляется выводить ее значение
на 7Segment, то эта переменная будет записываться параллельно в другую переменную - буфер, которая будет вызываться раз в установленное на таймере время и выводится на 7Segment. Или просто , значение из OptoStepCounter будет вызываться на дисплей с некой периодичностью.
Токо заранее познакомьтесь с ATOMIC_BLOCK.
А то разнесет этот ваш счетчик по всему контроллеру.
Но он есть, при максимальных оборотах. Что на это оказывает влияние, - не знаю. Поэтому и задал тему.
Если предположить, что по увеличивающейся скорости прерываний на оптике, и увеличении оборотов шаговика, а следственно импульсов на его драйвер от Timer4, оказывает влияние вызов функции отображения значений на дисплей, то значит в этом причина.
Но вот какая связь, я не улавливаю.
Тупо МК затыкается от перегрузки?