Зачод
. Кстати, датчик топлива мог бы поставить себе ёмкостной, но всё равно, интересное решение. У меня спидак пашет безупречно. Алгоритм заключается в измерении периода оборота колеса. Обратность периода - частота, вот её умнажая на калибр, прописанный в еепром, получаем скорость. При таком алгоритме имеем обновление скорости каждый оборот колеса. При переполнении счётчика измерения периода, скорость обнуляется.
У меня тоже самое. Может проблему не понятно разъяснил, попробую еще раз.
Максимальное время которое мажет остчитать таймер с датчика скорости составляет 6,7 сек. За такой промежуток времени можно измерить минимальную скорость - 0,8 км/ч (отображается 0). И вот что получается: при резком снижении скорости и остановке (по времени которое может составлять скажем секунды 2), таймер начинает считать от преведущего импульса и до следующего, а так как уже произошла остановка (следующего импульса с колеса не будет) таймер досчитывает да максимума и сбрасывается по переполение, но это уже происходит через 6,7-2=4,7 сек. И получается что спидометр показывает преведущую скорость еще 4,7 сек (после остановке) только потом по переполнению таймера происходит пересчет скорости и отображении 0 км/ч. Чем медленнее торможение скутера, тем время "зависания" скорости меньше. Вот по этой причине просто ограничил показание скорости на уровне 5 км/ч, если меньше 5км/ч показывать 0 км/ч. Такая причина заметна только при резком тормажении и остановке.
Мой расчет скорости:
-16 разрядный таймер тикает с частатой 10МГц/1024=9765,625 Гц
- прерывание по фронту с геркона на колесе и по переполнению
- spd = 3.6*9765.625*L_kol - константа при длине окружности колеса 1,50м,и она равна 52734
- максимальное значение таймера 65535
- реальная скорость получается: константа/значение таймера ( min V= 52734/65535=0,8 км/ч - отображается только целое число )
- максимальное время счета 16 разрядный таймер 65535*(1/ 9765,625 Гц)=6,7сек