Добрый день, Michael! You wrote in conference fido7.ru.embedded to Vladimir Ivanov on Thu, 01 Sep
2005 12:18:44 +0400:
MB> Hафига бyфеp сдвигать? Hе пpоще ли иметь yказатель на последний записанный элемент?
Так сделано просто потому, что мне показалось, что это может понадобиться в случае быстрой модификации алгоритма. Можно вообще отказаться от буфера и сразу копить сумму отсчетов. Но все зависит от конечной идеи алгоритма.
MB> BufSize - это сколько?
В настоящий момент сделано 16 отсчетов.
MB> Как я понял, y тебя yже всё сделано. Ты хpанишь последние отсчёты и выводишь на LCD сpеднее их значение, так? Если "скакание" тебя не yстpаивает, yвеличь BufSize (не менее чем до 50 элементов) и замедли вывод. Выдавай новое значение не чаще чем чеpез 250 мс, а то и pеже. И ничего скакать не бyдет. Собственно, по моемy опытy - пpоблема "скачек" показаний пpи выводе в цифpовом виде - именно в том, что новые значения выводятся слишком часто.
Да все сделано. ATMEGA8. 8МГц. Никаких дополнительных задач. Полностью свободные ресурсы. Все программы оптимизированы с точки зрения "не мешать просчитывать буфер тахометра". Период датчика Холла считает таймер 1, по срезу его значение записывается в буфер после предварительного его сдвига влево на одну позицию unsigned int. С увеличением размера буфера новый отсчет может прийти раньше обработки буфера предварительных отсчетов, поэтому произведено предварительное клонирование буфера перед его обработкой.
Дело в том, что я пробовал увеличивать BufSize, это превое, что в голову пришло. Однако при значениях 32 и более элемента реакция показаний на резкое увеличение оборотов (водитель "газ" нажал) очень медленная и это сильно заметно даже тупому водителю. Он меня сразу и спросил: "...чего это я газ нажал, а показания сразу не увеличились? Компьютер долго думает?...".
Регулировка только времени (периода) вывода также не дает нужного эффекта. Ясно, что выводить надо около трех-четырех раз в секунду. Это оптимально. Но что-то мне подсказывает, что готовность показать вычисленное значение может/должно зависеть не только от времени, но и от относительной скорости поступления нескольких последних отсчетов.