Перегляд повідомлення окремо
Старий 04.10.2017, 15:31   #12
AKSU
Злой паласатый мух
 
Аватар для AKSU
 
Реєстрація: 06.01.2012
Повідомлення: 4.601
Транспорт: Tmax 2002, з двигуном 2011 та інжектором
Звідки: Україна, Київ, Оболонь
Подякував: 301
Отримав 709 подяк у 551 повідомленнях
Типово

В данный момент, автор проекта занят, и не понятно когда он сможет добавить в прибор кнопки. Как оказалось, он тоже байкер, по этому "Долгими зимними вечерами, изнывая от мото-токсикоза, как-нть сделаю..." (с) :)
Ввод поправок, через rs-232 отключен - как я уже писал выше. По этому, единственный доступный сейчас способ настройки прибора - через редактирование EEPROM и прошивкой результата программатором.
К счастью, в этой версии автор поменял структуру EEPROM и изменить самостоятельно - стало очень просто.

А если вы самостоятельно этот прибор собрали, то и программатор у вас скорее всего есть.
Если нет: повторяю, готовый у китайцев стоит недорого, или можно собрать программатор Громова совсем за копейки. Потому, думаю, ввод поправок таким образом не должен составить особых проблем.

Возможно, со временем появится программка, которая будет создавать файл EEPROM-а с правильной поправкой. Специально для лентяев и музыкантов. :)
А пока считаем руками...

Вычисляем коэффициент поправки.

Для начала, выясняем какой нам требуется коэффициент поправки.
Берем GPS (или смартфон с GPS и приложением-спидометром), выезжаем на длинную ровную дорогу, смотрим на GPS и разгоняемся до 60 или более км/ч, удерживаем эту скорость около 3-5 секунд.
Запоминаем сколько показал GPS и спидометр. Для точности, можно повторить замеры на разных скоростях.

Скорость по GPS делим на показание спидометра = получаем коэффициент поправки. Нам нужен результат с точностью 2-3 знака после запятой.

На пример, в моем случае я разогнался по GPS до 100 км/ч, а спидометр показал 112 км/ч. Делим 100/112, получаем 0.893

Я для удобства взял 2 знака после запятой, т.е. 0,89.

Совет: Производитель всегда закладывает небольшую погрешность в спидометр. Конкретно Yamaha завышает реальные показания где-то на 5-7%, т.е. если вы едете 100 км/ч по спидометру, то в реальности это >95 км/ч. Учитывайте это при расчете коэффициента. Если вы сделаете так, что спидометр будет показывать 1в1 с GPS, то у вас соотрественно на 5% быстрее будет накручиваться одометр... Т.е. в моем случае вполне можно делать коэффициент 0,92-0,93...

Как я уже говорил, EEPROM с моей поправкой я получил от автора. Но это же скучно, давайте попробуем сами! ;)

Инструкция по созданию EEPROM с нужной поправкой.

И так, у меня есть EEPROM с моей поправкой 0.89, а мне нужно сделать например 1.33

Открываем блокнотом файл 0,89.eep, видим следующее:

Код:
:0800000041552F008F030000A1
:00000001FF
Нам нужна верхняя строка длинной 28 символов - и должна остаться такой длинны, потому, сразу нажимаем на клавиатуре Insert - переходим в режим редактирования с заменой.

В данной строке нас интересуют последние 10 символов:

Код:
:0800000041552F008F030000A1
A1 в конце - это контрольная сумма (CRC) всей строки - ее придется расчитать заново при каждом изменении. Об этом ниже.
8F030000 - это моя поправка в HEX, т.е. в 16-ричной системе исчисления, т.е. 8F 03 00 00 если разделить на "слова" (регистры).
В силу особенностей, переменные в машинных кодах всегда хранятся задом наперед, т.е. на самом деле мое число это 00 00 03 8F, точнее 38F

Проверяем.

По информации автора, поправка получается умножением коэффициента поправки на 1024 и переводом результата в hex.
т.е. в моем случае это 0.89 х 1024 = 911.36
Округляем до целого числа: 911

Запускаем калькулятор винды, переводим его в режим "Программист" (в меню "Вид"), выбираем 10-чную систему исчисления ("Dec"), набираем 911, переводим в 16-ричную ("Hex"), видим 38F, что и требовалось доказать. :)



Считаем новую поправку

1,33 х 1024 = 1361,92, округляем: 1362, получаем hex-значение: 552



добавляем нули, для удобства разделяем на "слова": 00 00 05 52, записываем "слова" задом наперед: 52 05 00 00, видим, что по сути нам нужно заменить 3 цифры

Редактируем верхнюю строку:

Код:
Было:
:0800000041552F008F030000A1

Стало:
:0800000041552F0052050000A1
Почти готово, осталось рассчитать контрольную сумму. Нам нужен калькулятор CRC. Самый адекватный пожалуй этот: http://www.fischl.de/hex_checksum_calculator/

Копируем нашу измененную строку в буфер обмена и вставляем там, нажимаем кнопку Analyse:



Нам нужна строка: Calculated checksum: DC.
DC - нужная нам контрольная сумма строки, меняем A1 на DC. Можно еще раз проверить полученную строку в CRC-калькуляторе - на всякий случай.

Вот наш EEPROM для коефициента 1.33, как видите, пришлось изменить всего 5 символов:

Код:
:0800000041552F0052050000DC
:00000001FF
Cохраняем файл как 1,33.epp, прошиваем его программатором в прибор. Наслаждаемся жизнью с новым коэффициентом! ;)

К слову, такой метод работает везде.
Например, я в конце 90-х таким образом, немного жульничая, добавлял себе деньги и ресурсы в игре X-COM - изменяя HEX-редактором файлы сохранения игры. :)
Там даже было еще проще - CRC не нужно было расчитывать. :)


Инструкция может показаться сложной (особенно некоторым музыкантам), но уверяю вас - сложного ничего нет. Никакой высшей математики.
Все очень просто, у меня все заняло несколько секунд. ;) Сказывается богатый опыт детства. :)))
И главное - все можно сделать самостоятельно, не дергая каждый раз автора! ;)
Прикладываю файлик с разными поправками - вдруг кому пригодится.

Всем добра!
Долучені файли
Тип файлу: zip eeprom.zip (2,1 КБ, 2 переглядів)
__________________
Это «ж-ж-ж-ж» — неспроста!
(с) Винни-Пух
AKSU зараз поза форумом   Відповісти з цитуванням