Хак одометра Yamaha DragStar 1100
В автокалькуляторах ничего подходящего не нашлось, пришлось копать самому. ( А сочетания иногда
прикольные. Например для приборки Harley-Davidson подошла формула от Cadillac Escalade 2005 года!)
Схема одометра в формате sPlan7 -
здесь
Флэшка 93C46, организация 16 бит.
Адрес: 20h и далее - старшие цифры.
Адрес
|
Данные
|
20h
|
сотни
|
21h
|
тысячи
|
22h
|
десятки тысяч
|
23h
|
сотни тысяч
|
Данные находятся не в явном виде, каждой цифре соответствует определённое слово (2-х байтный код):
Цифра
|
Код
|
0
|
BDEF
|
1
|
FBDE
|
2
|
F7BD
|
3
|
B18C
|
4
|
EF7B
|
5
|
A94A
|
6
|
A529
|
7
|
E318
|
8
|
DEF7
|
9
|
98C6
|
Как формируются 2 младшие цифры (00 - 99):
1. Для продления жизни флэшки используются 20 ячеек с адресами
от 00h до 09h (10 ячеек) и от 10h до 19h (ещё 10 ячеек).
!! Ячейки НЕ байтовые, а двухбайтовые, т.к. организация памяти 16-ти битная !!
!! Неиспользованные ячейки (0Ah - 0Fh и 1Ah - 1Fh) заполнены 7FFF !!
2. Используется последовательное заполнение ячеек пятью определёнными комбинациями:
Заполнение
|
Число
|
FBDE
|
от 0 до 19
|
F7BD
|
от 20 до 39
|
EF7B
|
от 40 до 59
|
DEF7
|
от 60 до 79
|
BDEF
|
от 80 до 99
|
Если рассмотреть в битовом виде, то видно что следующее значение получается путём сдвига влево на 1 бит с переносом.
Таким образом после BDEF получается 7BDF (0111.1011.1101.1111), старший 0 значит что надо переходить к началу - FBDE.
А как там в проге это решается (чтение константы, или обмен старшего и младшего бита) - нам не важно.
ПРИМЕР 1: Допустим на одометре у нас 25753 км. Как это выглядит в памяти? Старшие 3 цифры в кодированном виде находятся в
ячейках 20h-22h. Младшие две (53) - это EF7B, этим значение будут заполнены ячейки 00h-09h и 10h-13h, дальнейшие
ячейки (14h - 19h) будут заполнены предыдущим значением - F7BD.
ПРИМЕР 2: скриншот
Что мы видим? В ячейке 00 - BDEF, т.е. младшие 2 цифры из диапазона 80-99. В ячейке 01 у нас DEF7, это от предыдущего заполнения
осталось (60-79), т.е. наше искомое число =80.
Смотрим ячейки 20-23h: 20h =EF7B =4 (сотни км)
21h =FBDE =1
22h =F7BD =2
23h =FBDE =1
Итого: наши показания - 121480 км.