legotron 0 23 декабря, 2007 Опубликовано 23 декабря, 2007 · Жалоба Добрый день! Подскажите пожалуйста, кто имел опыт работы с индикацией параметров на LCD. Ворос заключается в том, как сгладить движение стрелки(на примере... можно и не тока стрелки)? Есть 3 условия: 1 - скорость отображения изменения параметра не должна превышать X [ед/с] 2 - скорость обновления показа не должна быть меньше Y [fps] 3 - скорость поступления пар-ра Z [отсч/с] Есть ли наработки по таким вещам? Пока я думаю собрать цифровой либо интеполятор либо ресемплер, а потом ФНЧ и поставить. (а может и наоборот :) ) Попутный вопрос, если фильтры делать для них надо коэфф. жестко считать, а если X,Y,Z параметры необходимо менять динамически? А если пар-р Z случайная величина как быть? Да и Y может гулять... Заранее спасибо! Любая литература или совет будет мной очень приветствоваться :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 23 декабря, 2007 Опубликовано 23 декабря, 2007 · Жалоба А предельные значения (мин./макс.) всех этих параметров известны? Кто их определяет/задает? Синхронизацию асинхронных потоков обычно делают с помощью буферов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
legotron 0 23 декабря, 2007 Опубликовано 23 декабря, 2007 · Жалоба А предельные значения (мин./макс.) всех этих параметров известны? Кто их определяет/задает? Синхронизацию асинхронных потоков обычно делают с помощью буферов. Ситуация такая: значения приходят через какой-то период(вполне определенный). скажем 500-1000 мс. А скорость движения стрелки ограничена эргономическими соображениями(чтобы не слишком быстро скакала). Refresh стрелки планирую производить либо по таймеру, либо асинхронно по завершению отрисовки(у меня контроллер ЖК с буфером). Ксатати тоже пока не знаю, что лучше с точки зрения работы ОС. Ну вот, и мне необходимо сглаженно двигать эту стрелку(интерполировать частота refresha на порядок больше частоты поступления данных). И хотелось бы узнать как это обычно осуществляется на практике? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
slog 0 23 декабря, 2007 Опубликовано 23 декабря, 2007 · Жалоба Если на порядок, то суммируй 10 приходящих значений, а выводимое на индикатор дели на 10. В микроконтроллерах лучше делить/множить на 8 или 16. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
legotron 0 23 декабря, 2007 Опубликовано 23 декабря, 2007 · Жалоба Если на порядок, то суммируй 10 приходящих значений, а выводимое на индикатор дели на 10. В микроконтроллерах лучше делить/множить на 8 или 16. У меня стрелка нарисованная - её надо медленно двигать по пикселам иначе некрасиво будет!!! :) Насчет кратности 8/16 спасибо, я в курсе :) Тока у меня DSP-сопроцессор. Могу и float делить - не убудет :) :) :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 23 декабря, 2007 Опубликовано 23 декабря, 2007 · Жалоба Раз вывод через буфер, то синхронизировать нужно с выводом буфера. Поскольку частота поступления данных небольшая 1-2Гц, то ИМХО фильтровать значения не нужно. В крайнем случае можно реализовать плавающее среднее из двух-трех отсчетов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
legotron 0 23 декабря, 2007 Опубликовано 23 декабря, 2007 · Жалоба Раз вывод через буфер, то синхронизировать нужно с выводом буфера. Поскольку частота поступления данных небольшая 1-2Гц, то ИМХО фильтровать значения не нужно. В крайнем случае можно реализовать плавающее среднее из двух-трех отсчетов. Если не фильтровать совсем, то получится так: я показываю через 20 мс (к примеру), через 1с значение меняется скачком(тоже возможно) как следствие стрелка переместится скачком, или я неправильно вас понял? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 23 декабря, 2007 Опубликовано 23 декабря, 2007 · Жалоба Если не фильтровать совсем, то получится так: я показываю через 20 мс (к примеру), через 1с значение меняется скачком(тоже возможно) как следствие стрелка переместится скачком, или я неправильно вас понял? У человеческого глаза имеется инерционность порядка 100мс. Если выводить изображение чаще, чем 18 раз в секунду (в кинематографе, например, кадр меняется 24 раза/сек), то глаз наблюдателя сам "отфильтрует" движение. Нюансы могут возникнуть лишь, если будет присутствовать стробоскопический эффект от внешних источников света с разностной частотой биений ниже указанной. Для вашего же случая фильтр "скользящее среднее" ИМХО хорошо подходит. Используя скользящее среднее с периодом равным или чуть меньшим, чем поступление входных данных вы как раз получите плавное движение стрелки с текущему значению. Для этого вы должны иммитировать поступление данных в буфер синхронно с обновлением изображения. Допустим, если у вас период обновления 20мс, а данные поступают через 500мс, то можно использовать буфер с периодом 300-400мс. 400мс/20мс=20. Т.е. буфер фильтра на 20 значений. Каждый раз после обновления экрана, если нового отсчета еще нет, то вы иммитируете его, дописывая в буфер фильтра (плавающего среднего) значение последнего отсчета. Если же новый отсчет поступил, то заменяете последний отсчет его текущим значением и дописываете уже его в буфер фильтра. Если вам не нравится фильтрация типа "простое слользящее среднее", то можете выбрать сами другой тип цифрового фильтра. http://www.may.nnov.ru/mak/DSP/Contents.shtml P.S. указанные фильтры являются КИХ-фильтрами. Поэтому для нормальной их работы отсчеты (в вашем случае рефреш экрана) должны быть равномерными. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
legotron 0 23 декабря, 2007 Опубликовано 23 декабря, 2007 · Жалоба А что посоветуете по поводу подстройки "налету" частоты среза фильтра? P.S. указанные фильтры являются КИХ-фильтрами. Поэтому для нормальной их работы отсчеты (в вашем случае рефреш экрана) должны быть равномерными. А у БИХ могут быть неравномерными? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 23 декабря, 2007 Опубликовано 23 декабря, 2007 · Жалоба А что посоветуете по поводу подстройки "налету" частоты среза фильтра? Можно глубину буфера фильтра менять. Но изменение не должно быть чаще, чем период заполнения всего буфера. А у БИХ могут быть неравномерными?Честно говоря, я не очень хорошо подкован в теории, могу и глупость сморозить :laughing: ИМХО, если отсчеты неравномерные, то нужно вводить в конечную функцию фильтра временнУю зависимость входного параметра. Для равномерных отсчетов это как-то попроще, там только относительный номер отсчета играет роль. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
edunya 0 25 декабря, 2007 Опубликовано 25 декабря, 2007 · Жалоба Кто может подсказать: где можно взять информацию по ЖК знакогенератору AC16ZEYJLY56H-AR (схема, распиновка, применение)? Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DASM 0 25 декабря, 2007 Опубликовано 25 декабря, 2007 · Жалоба Вы с AC162 точно не путаете ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 25 декабря, 2007 Опубликовано 25 декабря, 2007 · Жалоба Угу. Скорее всего символ 2 как Z прочитан и на самом деле это двухстрочный символьный LCD фирмы AMPIRE из серии AC162E. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
edunya 0 26 декабря, 2007 Опубликовано 26 декабря, 2007 · Жалоба ...Скорее всего символ 2 как Z прочитан и на самом деле это двухстрочный символьный LCD. Наверное так и есть. Спасибо за помощь. Еще, если не затруднит, помогите найти ему достойное применение. Благодарю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться