smk 0 19 мая, 2019 Опубликовано 19 мая, 2019 · Жалоба Есть файл на ASM. Писан давно и размером 470к. Кодировка текстов какая-то старая. В нотепеде часть текста в ОЕМ866 а часть Win-1251. Стоит задача выправить вывод на LCD чтоб он стал англоязычным. При этом как только я вношу правки в текст с соблюдением к-ва символов в строке прибор начинает плохо работать. По всему видать где-то сбивается какая-то адресация. Может смерить правильно а через 2-3 мин покажет ерунду. Передергивание питания решает проблему но не извабляет от нее. Чем больше правок вношу тем уверенней проявляются глюки. Возникает вопрос как это выявить или как исправить чтоб без глюков. Русскоязычная версия работает хорошо. проблемы начинаются именно по ходу внесения правок. Иногда замечал что как-бы вывод численно правильный но смещен на 1 позицию но это скорее частный случай. Обычно демонстрирует результат измерения полную ерунду. Прошу помочь решить вопрос. Может кто с ASMом на короткой ноге. Платформа C8051F02. Редактирую в Keil. Так как кейл не поддерживает ту кодировку то правлю в нотепеде а в кейле компилирую. Спасибо. Часть кода с текстом: ;==================================================== ZAS: DB "================" DB " ”Ћ’ЋЊ…’ђ " DB " ЉЋ‹€ђ 3M " DB "================" DB " Џ…ђ…“‹ЋЉ Ќ…—€‘-" DB " ’Ћ‰ ‘€‹› n 13 " DB " '„ЋЊ ЃЂЃ› џѓ€' " DB " ’…‹.000-00-00 " DB 000H ;---------------------------------------------------- ZAS1A: DB " Ћ‡“ 62256 " DB " ERROR " DB " " DB " " DB 000H ;---------------------------------------------------- ZAS1_2: DB " ЏђЋѓђ…‚ Џђ€ЃЋђЂ" DB " Ћ‘’Ђ‹Ћ‘њ " DB " 900 ‘…Љ. " DB " Ћ’Њ…Ќ€’њ " DB 000H ;---------------------------------------------------- ZAS2: DB " ЉЂ‹€ЃђЋ‚ЉЂ " DB " ЌЂ‘’ђ.€‡Њ…ђ…Ќ." DB " €‡Њ…ђ…Ќ€… " DB " ЌЂ‘’ђЋ‰ЉЂ " DB 000H ;---------------------------------------------------- Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zeal0t 0 19 мая, 2019 Опубликовано 19 мая, 2019 · Жалоба CP866 там кодировка. которая раньше была под практически всеми DOS. ZAS: DB "================" DB " ФОТОМЕТР " DB " КОЛИР 3M " DB "================" DB " ПЕРЕУЛОК НЕЧИС-" DB " ТОЙ СИЛЫ n 13 " DB " 'ДОМ БАБЫ ЯГИ' " DB " ТЕЛ.000-00-00 "? DB 000H не знаю как правит/сохраняет notepad и что он делает с некоторыми русскими буквами такими как я,ё,Ё и другими, но я бы правил такое во внутреннем редакторе FARa например. он умеет работать в той кодировке, в которой создан файл. и надо стараться что бы каждая строка каждого блока из 4-х строк не вылезала за 16 символов. судя по всему в приборе LCD экран 16x4 и если подпрограмма вывода очередного такого то блока не проверяет какие то параметры, длины и прочее - то и могут возникнуть глюки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 27 19 мая, 2019 Опубликовано 19 мая, 2019 · Жалоба 1. Проверьте, что в настройках IDE не установлен UNICODE. 2. Для 8-битной кодировки многие "проблемы" решаются таблицей перекодировки (Вам лучше работать в CP1251/Win а перекодировать в LCD) char recodeTable[256] = {0x01 , 0x02 , . . . 0xFF}; symbLCD = recodeTable[inSumb]; То что надо прописать с "хитрыми" Йо (Ё) - пишите так char *Msg1 = "12345\0xA8"; // Ё в виде кода ps извиняюсь, не ASM, но что касаемо кодировки и IDE тоже самое. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 27 19 мая, 2019 Опубликовано 19 мая, 2019 · Жалоба 3 hours ago, smk said: . . . Редактирую в Keil. Так как кейл не поддерживает ту кодировку то правлю в нотепеде а в кейле компилирую. . . . Это не Keil, но в IDE ейном могут быть аналогичные настройки. Если есть автоопределение кодировки - отключите, это от диавола. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 20 мая, 2019 Опубликовано 20 мая, 2019 · Жалоба Что уже только не пробовали. И перекодировали и из фар правили и под досом компилировали. Нашли старую IDE тех лет и под ней правили. Просмотр процедуры вывода не дал ничего. Там если код символа меньше 128 (англ) ничего не делать, а если больше то пе5рекодировать на русский. Работает. Начинаем править - измерение дает неправильный результат. Питание передергиваем и опять правильно до поры. Потом всеравно неправильно. Как-то что-то с кодом происходит. Отследить даже не знаю как. Нужны еще идеи что это может быть. При компиляции размер хекса не меняется. Судя по коду правка не должна влиять ни на что. Во всяком случае очевидных зависимостей нет. Может есть еще идеи? Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Harbinger 10 20 мая, 2019 Опубликовано 20 мая, 2019 · Жалоба Бинарники сравнивали? Отличия должны быть только по тем адресам, где текст, и больше нигде. Если это так, а вычисления всё равно некорректные, автор мог какую-то хитрость учудить, используя текст не только как текст... Спойлер В устройстве имеется внешняя SRAM, 32 килобайта. Верно? ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 27 20 мая, 2019 Опубликовано 20 мая, 2019 · Жалоба 41 minutes ago, smk said: . . . Может есть еще идеи? Спасибо. 1. Проверьте тайминги при выдаче на LCD (если они зашкалили или "на пределе"). Может "подшивать" по этой причине. Если тактирование от кварца - поставьте другой, с меньшей частотой. Ну, и вообще аппаратную часть. Если что-то там "подшивает" - то нет смысла софт мучить. 2. Проверьте длины строк. Могло что-то увеличиться и подтереть RAM. 3. Если есть возможность - "заглушите" замер (что оно у Вас там меряет, например вместо "оцифровки" АЦП подложите константу). 4. Добейтесь устойчивого сбоя, например чтобы ОНО вылетало сразу. Далее ищем причину методом бинарного деления (артиллеристы его постоянно применяют). Вообще, если есть исходник - почему на отладчике не смотрите ? (EC2 или что там) ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 7 21 мая, 2019 Опубликовано 21 мая, 2019 · Жалоба 13 hours ago, smk said: Может есть еще идеи? Дурацкая идея - автор исходного прибора сделал какую-то самопальную защиту. Если не сходится контрольная сумма, иногда оно что-то где-то будет портить. Для проверки - поменять ОДНУ букву (или даже цифру), проверить, что в бинарнике поменялся только один байт, и включать... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zeal0t 0 21 мая, 2019 Опубликовано 21 мая, 2019 · Жалоба 21 hours ago, smk said: Начинаем править - измерение дает неправильный результат. А если ничего не исправлять, а собрать в том виде что есть в оригинале? Измерения сбиваются? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 21 мая, 2019 Опубликовано 21 мая, 2019 · Жалоба В оригинале не сбиваются. В том то и дело. Там есть таблица перекодировки под LCD. Вероятно раньше была нужна. Так вот правка этой таблицы приводит с порче измерения. Какая там взаимосвязь совершенно не понятно. Либо портится расчет либо что-то с адресацией. Выяснить это будет очень не просто. и тут ведь не важно что править. Что такс что таблицу - результат одинаковый. Может выложить исходный файл? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 27 21 мая, 2019 Опубликовано 21 мая, 2019 · Жалоба 35 minutes ago, smk said: В оригинале не сбиваются. . . . Смотрите опции компилятора/проекта, а также директивы в тексте исходника ASM (например выравнивание итп). Вам в первую очередь надо добиться "снайперской" компиляции, когда бинарник (прошивка), которая идет изначально и компилировалась не Вами, будет 1-в-1, побайтно, совпадать с той, что получится после Вашей компиляции в Keil. те fc firmware_old.bin firmware_keil.bin /b не даст различий. Сравнивать надо именно образы флеша, а не "объектник" в HEX (или в чем оно там выдает после компиляции). Если это будет выполняться - отловить сбой (причину) будет делом техники. ps исходник можете через личку забросить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 22 мая, 2019 Опубликовано 22 мая, 2019 · Жалоба В 20.05.2019 в 20:15, Harbinger сказал: Бинарники сравнивали? Отличия должны быть только по тем адресам, где текст, и больше нигде. Если это так, а вычисления всё равно некорректные, автор мог какую-то хитрость учудить, используя текст не только как текст... Показать контент В устройстве имеется внешняя SRAM, 32 килобайта. Верно? ;) Сравнил. Отличия действительно только по байтам текста. Больше нигде. при этом замечено, что как ни правь текст - измерения портятся. Что сделано: 1) была заменена одна строка в характерной странице - измерения испортились. 2) Заменена всех четырех строк дисплея картину не поменяла. 3) была создана дополнительная страница с аналогичным содержанием. Отобразилась правильно, но измерения испортились. 4) Есть там таблица перекодировки. Пробовали исправить ее. На индикаторе текст изменился и измерения испортились. Обращает на себя внимание факт, что измерения портятся не сразу. Скажем я делаю подряд 3-4-5 измерений и они проходят правильно. Но как только наступает пауза примерно минут 2-3-4 то первое же измерение после паузы неправильное. В любом режиме. Как правило при смене режима измерения по схеме "Цветность (3р) - белизна(3р)-цветность" сбой наступает или сразу или на втором измерении цветности после переключения на этот режим. может время проходит? Измерение примерно сек 20. Связь с ПК отваливается ну считайте сразу после какой-либо правки. Теперь следующее. Ребята, чтобы не парились в пустую считайте объявленным своего рода конкурс. Кто первый предоставит рабочие исходники, допускающие правку текстовых строк - получает 100 у.е. Если кто-то предоставит эти исходники до понедельника включительно - получает 200 у.е. Тестирование происходит на реальном железе. Для этого я нахожусь на работе все дни включая выходные с 8-00 до 20-00 по киевскому времени. В особых случаях могу задержаться. Оплату гарантирую вне зависимости от географического положения получателя. Из России в Россию - нет проблем. Из Украины в Украину - нет проблем. Да и вообще вестерн-юнион поможет. Оплата будет однозначно и без обмана. С руководством согласовано. Для этого прикрепляю архив: В архиве: KOL3M003.ASM - файл исходника авторский без правок и изменений; KOL3M003en.ASM - файл с переведенными страницами IHEX_Convertor.exe - конвертор из хекс в бин WinMerge-2.16.2-Setup.exe - программа для сравнения бинарных файлов. Платформа C8051F020 от СиликонЛабс. Компилятор от Keil для C51. В архиве ...3,03 проект по IDE от СиликонЛабс. Если нужно - выложу в закрома. Ну помогайте кто может... Увяз в этом сильно. Без помощи не обойдусь. Спасибо. Характерная страница - ZAS2A: KOLIR.ZIP kolirv3.03.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 22 мая, 2019 Опубликовано 22 мая, 2019 · Жалоба Авторский хекс, скомпилированный до меня: kol3m003.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 27 22 мая, 2019 Опубликовано 22 мая, 2019 · Жалоба 9 minutes ago, smk said: Авторский хекс, скомпилированный до меня: . . . 1. Каким компилятором сделан ? 2. Что навешано на процессор что может хранить параметризацию, контрольные суммы (имеется периферия, вроде 24LC16, RTC памятью EEPROM итп.) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 22 мая, 2019 Опубликовано 22 мая, 2019 · Жалоба 4 минуты назад, k155la3 сказал: 1. Каким компилятором сделан ? 2. Что навешано на процессор что может хранить параметризацию, контрольные суммы (имеется периферия, вроде 24LC16, RTC памятью EEPROM итп.) Компилятор от кейла для С51. Схему прикрепляю. KOLOR3.zip Вообще если открыть проект для силикон_лабс то там все настройки. Да вобщем там их и нет особо. Кейл и без них отлично справляется. Там по сути только пути для линкера и компилятора... Кстати на счет таблицы с аналогичным содержанием. Содержание было с переводом. Не аналогичное. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться