roboforum.ru

Технический форум по робототехнике.


Преобразования 16 bit to 5 digit ASCII

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Re: Преобразования 16 bit to 5 digit ASCII

Сообщение Dmitry__ » 09 авг 2013, 05:11

Прикольный мануальчик, 3250 стр. :shock:
Интересно, кто их курит? Для меня предел был 1200 стр.
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Преобразования 16 bit to 5 digit ASCII

Сообщение Angel71 » 09 авг 2013, 05:31

читать всё, как обычно не обязательно. в самом начале вводные вещи, а потом как справочник. если всё подряд читать и тем более пытаться запоминать, то голова легко может опухнуть
переходы
JMP Jump
JE/JZ Jump if equal/Jump if zero
JNE/JNZ Jump if not equal/Jump if not zero
JA/JNBE Jump if above/Jump if not below or equal
JAE/JNB Jump if above or equal/Jump if not below
JB/JNAE Jump if below/Jump if not above or equal
JBE/JNA Jump if below or equal/Jump if not above
JG/JNLE Jump if greater/Jump if not less or equal
JGE/JNL Jump if greater or equal/Jump if not less
JL/JNGE Jump if less/Jump if not greater or equal
JLE/JNG Jump if less or equal/Jump if not greater
JC Jump if carry
JNC Jump if not carry
JO Jump if overflow
JNO Jump if not overflow
JS Jump if sign (negative)
JNS Jump if not sign (non-negative)
JPO/JNP Jump if parity odd/Jump if not parity
JPE/JP Jump if parity even/Jump if parity
JCXZ/JECXZ Jump register CX zero/Jump register ECX zero

next instruction. Not supported in 64-bit
mode.
E9 cd JMP rel32 D Valid Valid Jump near, relative, RIP = RIP + 32-bit displacement sign extended to 64-bits
FF /4 JMP r/m16 M N.S. Valid Jump near, absolute indirect, address = zeroextended r/m16. Not supported in 64-bit mode.
FF /4 JMP r/m32 M N.S. Valid Jump near, absolute indirect, address given in r/m32. Not supported in 64-bit mode.
FF /4 JMP r/m64 M Valid N.E. Jump near, absolute indirect, RIP = 64-Bit offset from register or memory
EA cd JMP ptr16:16 D Inv. Valid Jump far, absolute, address given in operand
EA cp JMP ptr16:32 D Inv. Valid Jump far, absolute, address given in operand
FF /5 JMP m16:16 D Valid Valid Jump far, absolute indirect, address given in m16:16
FF /5 JMP m16:32 D Valid Valid Jump far, absolute indirect, address given in m16:32.
REX.W + FF /5 JMP m16:64 D Valid N.E. Jump far, absolute indirect, address given in m16:64.

и ещё так страниц 7-8 только про jmp. :crazy: опухнет, опухнет.
а читают все, кто на низком уровне копается :) у интела громадное количество всякой доки и примеров на различные темы.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: Преобразования 16 bit to 5 digit ASCII

Сообщение Dmitry__ » 09 авг 2013, 06:02

Спасибо тебе добрый человек, пойду выкину асм и застрелюсь :)

Во, я еще на "сцы" умею :oops:
и на vb.
А еще крестиком умею :crazy:
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Преобразования 16 bit to 5 digit ASCII

Сообщение ALS » 09 авг 2013, 07:16

пойду выкину асм и застрелюсь

Не надо, он наше все )
Пока ТС "опухлялся", я на самом деле "написал" и собрал тахометр.
Использовались куски, найденные гуглом по тому самому сочетанию "math routines"...
Точность - 5rpm, диапазон 0-9995rpm, период измерения - 1сек, в качестве датчика - оптопара от принтера, на валу - колесо о 12-ти отверстиях.
PIC16F88, асм, примерно 400 байт кода, времени на "писательство" ушел вечер, на сборку/наладку - еще один.
taho_1sm.jpg
DSC00010.jpg
Аватара пользователя
ALS
 
Сообщения: 803
Зарегистрирован: 24 окт 2011, 23:32
Откуда: Севастополь
прог. языки: асм

Re: Преобразования 16 bit to 5 digit ASCII

Сообщение dccharacter » 09 авг 2013, 08:40

ALS писал(а):
пойду выкину асм и застрелюсь

Не надо, он наше все )
Пока ТС "опухлялся", я на самом деле "написал" и собрал тахометр.
Использовались куски, найденные гуглом по тому самому сочетанию "math routines"...
Точность - 5rpm, диапазон 0-9995rpm, период измерения - 1сек, в качестве датчика - оптопара от принтера, на валу - колесо о 12-ти отверстиях.
PIC16F88, асм, примерно 400 байт кода, времени на "писательство" ушел вечер, на сборку/наладку - еще один.
taho_1sm.jpg
DSC00010.jpg

А это точно период измерения или частота обновления дисплея. Если первое - то ты что делаешь, считаешь количество импульсов в секунду?

forum87/topic10646-345.html?hilit=%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%B8%D1%87%D0%BA%D0%B0#p248509
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Преобразования 16 bit to 5 digit ASCII

Сообщение arm-17 » 09 авг 2013, 15:02

ALS там для пиков куча всякой всячины,а мне надо для AVR,а информацию на LCD.У тебя один инкодер от принтера,а у меня от лифта 2-х канальный.
Аватара пользователя
arm-17
 
Сообщения: 46
Зарегистрирован: 15 июл 2013, 15:15
Откуда: г.Москва
прог. языки: ASM

Re: Преобразования 16 bit to 5 digit ASCII

Сообщение Angel71 » 09 авг 2013, 17:45

Dmitry__, оптимизировать асм вставками какой-то критичный кусок кода очень полезно, но зачем же всё на асме или упереться рогами и кричать "ааааа, все в сад, всё только на высокооуровневом языке"? блин, это как скальпелем рубить деревья или 100 метровым краном строить домик для попугая. примитивные мк и современные мощные процессоры это небо и земля. тем более для очень большого и очень разнообразного зоопарка х86 без глубоких познаний и учёта кучи факторов ваяние ручками на асме может легко и непринуждённо оказаться пустой тратой времени - бабка на двое сказала, где лучше код в итоге получиться. нужно учитывать распределение переменных по регистрам, понимать как оно по вычислительным блокам расспределяется, устранять зависимости по данным и переупорядочивание инструкций что бы конвеер не простаивал, понимать как работает кэш (линии кэша, тайминги доступа, механизмы синхронизации) и т.д. :) если всё на асме писать, то голова опухнет, точно опухнет, особенно при написании многопоточных программ. не обязательно же читать что-то на подобии Intel 64 and IA-32 Architectures Optimization Reference Manual, в зависимости от задачи может легко хватить небольшой статьи или поверхностного понимания, как всё работает. неоптимальная структура или побайтовые "метания" по памяти легко в разы замедлит выполнения кода. увидели, что большую часть времени тратиться на перебор в цикле какого-то массива данных, подумали, можно ли оптимизировать просто развернуть цикл и/или переделать структуры данных. всё, зачем вылизывать 50, 60, 70,... % кода, если их выполнение занимает от нескольких % до максимум десятка-другого? :pardon: за перфекционизм нужно платить, иногда слишком много.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: Преобразования 16 bit to 5 digit ASCII

Сообщение Dmitry__ » 09 авг 2013, 18:21

Ты рассуждаешь как программер настольных компов, а тут ембеддед микроконтроллеры. Я на настольном компе не пишу на асм.
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Преобразования 16 bit to 5 digit ASCII

Сообщение Angel71 » 09 авг 2013, 18:50

с одной стороны да, с другой это очень даже касается и мк. набор команд авр, пиков, различных армов,... очень сильно отличается, копипастить асм код в принципе ничем хорошим не грозит. а допустим, чем будет отличаться смена типа для одной переменной, допустим с байта на инт, которая в куче мест используется? на си может быть достаточно и правки объявление переменной. на си эту оптимизированную ф-ю преобразования числа в текст вполне можно написать + её потом можно будет копипастить для разных мк. то, что на другом мк этот код может оказаться не оптимальным это другой вопрос, но он хотя бы имеет шанс откомпилироваться и работать. и т.д. писать весь код на асме без необходимости плохая затея + перфекционизм штука дорогая.
:oops: а эмбеддед это просто коняшка в вакууме - одно дело железка на тини12, совсем другое железка с 1..n ядерным армом, с десятками/сотнями метров или парой гиг озу и т.д., на котором линух или какая другая ось крутиться.
Последний раз редактировалось Angel71 09 авг 2013, 19:16, всего редактировалось 1 раз.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: Преобразования 16 bit to 5 digit ASCII

Сообщение Duhas » 09 авг 2013, 19:15

Angel71 писал(а):копипастить асм код в принципе ничем хорошим не грозит

ИМХАется мне что копипастить код в принципе ничем хорошим не грозит, даже свой собственный. исключая функции с фиксированным набором параметров вход/выход.
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: Преобразования 16 bit to 5 digit ASCII

Сообщение Dmitry__ » 09 авг 2013, 20:13

Я не понимаю этой боязни асма. асм пика - это 35 команд, на одной стр. помещается. У авр асм не поддается нормальному запоминанию (если только не сидеть плотно только на них), и я не стараюсь запомнить ущербную мнемонику асма авр, во время программирования держу pdf-ку с командами авра, pdf индексированная, в сводной табличке команд все кликабельно. Надо сложение чего-то с чем-то, посмотрел в табличку, если не понятно - кликнул по нужной команде, почитал подробнее, все. И так я поступаю со всеми асмами всех микроконтроллеров. Изучение нового контроллера всегда начинаю с си, но в 80% скатываюсь на асм, ты не представляешь как может коробить от созерцания кода сгенерированного компилятором.
Angel71 писал(а): а допустим, чем будет отличаться смена типа для одной переменной, допустим с байта на инт, которая в куче мест используется? на си может быть достаточно и правки объявление переменной. и т.д.

Вот это и есть рассуждения программера настольного компа, такое может понадобиться в написании какой-нибудь базы данных. Но такой глюк представить в embedded я не могу. Асм тем и хорош, что он работает потом как простая логика. Написал - забыл. Нет тебе глюков от переполнения стеков и всякого такого. Вот лично я, никогда не буду писать программу на си для лифта, потому что потом будет ссыкотно в нем ездить. А как тебе такая переносимость на асме:
Большой проект на pic. Копипастю асм код в ide авр. Блочной заменой меняю близкие команды pic на авр. Корректирую не заменяемое, разбираюсь с переферией (это надо делать на любом языке) и вуаля. Это намек на быструю замену типа переменной. Кста, в асме нет типа данных :) Если тебе надо сменить точность вычисления, то ты меняешь алгоритм одной подпрограммы.
Angel71 писал(а):одно дело железка на тини12, совсем другое железка с 1..n ядерным армом, с десятками/сотнями метров или парой гиг озу и т.д., на котором линух или какая другая ось крутиться.

Ну вот ты и сказал все правильно: асм тиньке, все остальное для OS. Кста, я в своем ardrone2.0 выкинул плату с линукс и поставил микроконтроллер с асм. Вот не могу обьяснить почему. Но, покупной дрон был абсолютно не юзабелен. :pardon:

Добавлено спустя 51 минуту 28 секунд:
Во, давно, давно, когда дискеты были большими, а программы маленькими, хотел поиграться с исходниками простой игры под венды на асм. Но так руки и не дошли, о чем жалею. Но, блин, оцени что на асме делают :)
http://www.sources.ru/asm/asm_xo.shtml
Исходник с екзешником, 25 кб. :D
Нашел поиском. Вполне вероятно, что это не та игра...
Это не реклама асма :) Под комп я пишу на vb...
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Преобразования 16 bit to 5 digit ASCII

Сообщение Angel71 » 09 авг 2013, 23:13

Duhas писал(а):ИМХАется мне что копипастить код в принципе ничем хорошим не грозит, даже свой собственный. исключая функции с фиксированным набором параметров вход/выход.

почти в любом проекте есть что скопипастить и адаптировать под свой проект. не, есть похоже поправки на ветер в виде кто как код пишет или что до этого никто такого не писал. в соседней ветке упоминался tgy и openbldc, какая разница, как назвать заимствование кода, частичным/полным копипастом, подключение файлов/библиотек или открытие проекта и допиливанием под себя? :wink: слабо вериться, что из прям почти ничего из своих других проектов не используется или что не заимствуете свой/чужой код.
:) а с типами это больше вопрос доступных ресурсов вычислялки, конкретной задачи и возможностей компилятора/языка/библиотек. когда есть возможность использовать дженерики или возможность во время исполнения исследовать по ссылочке любой класс и подклассы до любого уровня вложенности, узнавая всё необходимое (приватные и защищённые в том числе) о типах, интерфейсах или методах, то вся эта бла-бла о типах гроша ломаного не стоит.
Dmitry__, это не боязнь, а констатация факта, что время дороже го... кусочка силикона. сам же начинаешь изучение камня не с асма, а с си и только потом начинаешь углубляться. вот всё тоже самое, только + "люблю удобные плюшки и частенько готов за это платить ресурсами камня" + "оптимизация только когда это действительно нужно, а не когда просто не нравиться сгенереный код". повторюсь, оптимизация ради оптимизации - это или исскуство или тараканы в голове.
чего там ценить? несчастные крестики-нолики на целых 40кб? что-то очень много. :oops: фу, кака. :crazy: :D ещё давным давно было такое явление, как "демосцена". в 100 байт комовского файла влезала 3д рендерилка красивостей + миди музычка играла. под винду позже стали делать чудные 3д демки с чудной музычкой, лезло это всё в очень смешные размеры.

Добавлено спустя 8 минут 39 секунд:
демосцена таки до сих пор жива http://habrahabr.ru/post/188930/
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: Преобразования 16 bit to 5 digit ASCII

Сообщение ALS » 10 авг 2013, 18:01

dccharacter писал(а):А это точно период измерения или частота обновления дисплея. Если первое - то ты что делаешь, считаешь количество импульсов в секунду?
Да, считаю импульсы в секунду. За счет того, что в диске есть 12 отверстий, результат умножаю на 5. Это дает и нормальную скорость обновления информации на дисплее (та же самая одна секунда), и приемлемую (для меня) точность.

arm-17 писал(а):ALS там для пиков куча всякой всячины,а мне надо для AVR,а информацию на LCD.У тебя один инкодер от принтера,а у меня от лифта 2-х канальный.
Поверьте, это все очень... эээ... малозначительные нюансы.
Аватара пользователя
ALS
 
Сообщения: 803
Зарегистрирован: 24 окт 2011, 23:32
Откуда: Севастополь
прог. языки: асм

Re: Преобразования 16 bit to 5 digit ASCII

Сообщение dccharacter » 10 авг 2013, 21:56

ALS писал(а):Да, считаю импульсы в секунду. За счет того, что в диске есть 12 отверстий, результат умножаю на 5. Это дает и нормальную скорость обновления информации на дисплее (та же самая одна секунда), и приемлемую (для меня) точность.

Ну не, 1 секунда для рефреш-рейта - это ужас. Надо хотя бы 3 раза в секунду.
Хотя нет, для фиксированного энкодера - 1Гц это ок. А вот если тахометр на отражение и им надо куда-то "попасть", то с 1Гц измучаешься.
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Преобразования 16 bit to 5 digit ASCII

Сообщение arm-17 » 18 авг 2013, 23:15

Тема закрыта СПАСИБО Dmitry__
Аватара пользователя
arm-17
 
Сообщения: 46
Зарегистрирован: 15 июл 2013, 15:15
Откуда: г.Москва
прог. языки: ASM

Пред.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 15