roboforum.ru

Технический форум по робототехнике.
Текущее время: 02 дек 2024, 10:06

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 90 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: Re: Преобразования 16 bit to 5 digit ASCII
СообщениеДобавлено: 16 июл 2013, 10:50 
Не в сети
Аватара пользователя

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
у меня студент написал HEX2ASCII для N байтного числа ) ассемблером занимался меньше семестра.. притом с оптимизацией через подобие десятичной коррекции

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразования 16 bit to 5 digit ASCII
СообщениеДобавлено: 16 июл 2013, 11:20 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
А, я ж забыл. Я вообще ленивый, я ж только sprintf-ами пользуюсь :-)))

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразования 16 bit to 5 digit ASCII
СообщениеДобавлено: 16 июл 2013, 11:23 
Не в сети
Аватара пользователя

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
скоро чтоб крутить шаговик понадобится пара ядер и пара гигагерц ))

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразования 16 bit to 5 digit ASCII
СообщениеДобавлено: 17 июл 2013, 00:20 
Не в сети
Аватара пользователя

Зарегистрирован: 15 июл 2013, 15:15
Сообщения: 46
Откуда: г.Москва
прог. языки: ASM
Прошел дебагером в AVR4 не доходя курсором до rcall bin16_ascii число в r16 - 0xE1 (245) все правильно. После прерывания INT1 Back:;(отнять) 0x36 (54),а мне надо 244((((

Добавлено спустя 11 минут 37 секунд:
Я так понял этот код перевода в двоично-десятичное, а мне надо перевод в ASKII.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразования 16 bit to 5 digit ASCII
СообщениеДобавлено: 17 июл 2013, 01:04 
Не в сети
Аватара пользователя

Зарегистрирован: 13 янв 2011, 15:25
Сообщения: 8033
Откуда: Санкт-Петербург
Еще не бросил? :)
Дебагер - штука хорошая для смотрения как работает чужая программа, т.к. обычно, что-либо понять в чужой программе по исходникам трудно.
Жмем пошаговую отладку "f11".
Установка стека - нужная вещь.
Дальше настройка портов, нахненадо для понимания (потом закомментируем, а лучше сделаем jmp на нужную нам функцию).
Дальше идет настройка прерываний и разрешение прерываний. Вот это потом отключим, чтоб прога не дергалась в ненужные места.

Ща, пожру - продолжим, не пишите ничего... :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразования 16 bit to 5 digit ASCII
СообщениеДобавлено: 17 июл 2013, 01:15 
Не в сети
Аватара пользователя

Зарегистрирован: 15 июл 2013, 15:15
Сообщения: 46
Откуда: г.Москва
прог. языки: ASM
Да я азы программирования знаю. Может ближе к делу. )))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразования 16 bit to 5 digit ASCII
СообщениеДобавлено: 17 июл 2013, 01:19 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
Цыц! Ты тут не один :-)

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразования 16 bit to 5 digit ASCII
СообщениеДобавлено: 17 июл 2013, 01:50 
Не в сети
Аватара пользователя

Зарегистрирован: 15 июл 2013, 15:15
Сообщения: 46
Откуда: г.Москва
прог. языки: ASM
:)

Добавлено спустя 27 минут 5 секунд:
dccharacter не выдержал,а я еще жду:)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразования 16 bit to 5 digit ASCII
СообщениеДобавлено: 17 июл 2013, 02:20 
Не в сети
Аватара пользователя

Зарегистрирован: 13 янв 2011, 15:25
Сообщения: 8033
Откуда: Санкт-Петербург
arm-17 писал(а):
Да я азы программирования знаю. Может ближе к делу. )))

Ща доедем, я в онлайне разбираюсь с твоей программой, т.е. не смотрел ее до этого :)

Продолжим:
Доехали до Inf и rjmp Inf, приплыли, хрень, выходим из дебагера :)

Смотрим прогу, видим какой-то Forward:;(ПРИБАВИТь), что как бэ намекает, ок после настройки стека добавляем: rjmp Forward, компилим, запускаем дебагер.
4 раза f11 и мы уже на месте.
Видим "inc temp", ставим курсор на temp и появляется подсказка, что это r16.
На моем скриншоте регистры уже видны при дебаженье, если нет то в view/register.
Кликаем на r16 и записываем туда 23, жмем f11, регистр прибавляет единицу как и положено.
Тут задаем себе вопрос: "если я знаю азы программирования, почему я не могу сам проверить" :)
доезжаем до rcall bin16_ascii.
Жмем f11, еще раз, пипец, еще f11, пипец, еще f11, пипец, разрыв шаблона, ладно жмем дальше, все зациклилось на _bcd4, вручную будет долго, ладно, ставим точку останова после "brcs _bcd4", жмем run (f5), остановились на breakpoint,
какой-то "push temp", какой-то "pop temp". Ладно добираемся до ret, он хоть есть. Опс, вывалились на какой-то "reti ;выход из обработчика", хм, глюк? делаем reset, жмем run ( у нас стоит точка останова в нужном месте). Медленно жмем f11, какой-то "push temp", какой-то "pop temp". Опять reti. Чозанах?
Ага, "Forward:" оказался куском прерывания, и bin16_ascii тож в прерывании вызывается. Ой, они же меняют кучу регистров, а я их нигде не сохранял при вызове прерывания, бедная основная программа, она и не знает, что регистры искажаются в прерывании как хотят :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразования 16 bit to 5 digit ASCII
СообщениеДобавлено: 17 июл 2013, 02:26 
Не в сети
Аватара пользователя

Зарегистрирован: 15 июл 2013, 15:15
Сообщения: 46
Откуда: г.Москва
прог. языки: ASM
Да точно искажаются. может push temp1
temp2
temp3 ПОМОЖЕТ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразования 16 bit to 5 digit ASCII
СообщениеДобавлено: 17 июл 2013, 02:57 
Не в сети
Аватара пользователя

Зарегистрирован: 13 янв 2011, 15:25
Сообщения: 8033
Откуда: Санкт-Петербург
Так у тебя в bin16_ascii используется куча регистров:R17, R16, R20, R18, R19, R17, R16 и она вызывается в прерывании, соотв. все эти регистры искажаются в основной прогр.
Пока у тебя основная программа использует только temp1, но это бред так размазывать регистры в прерывании. В прерывании должно быть только обработка кнопок, событий, после чего выставить флаг, который проверит основная программа и запустит этот bin16_ascii.
Тут как бы понятно, надо переделать, но сам bin16_ascii смешной какой-то до ужаса, можно разобраться конечно, но не стоит. Лучше скопипастить из ссылки выше
http://electroclub.fatal.ru/RusAVR/Doc/Examples/BINBCD/BINBCDapp2.htm
и прогнать его в дебагере. Вручную заводить числа, прогнать и сравнить результат с калькулятором. Если все ок, то сложить этот алгоритм себе в копилку и больше не возвращаться к этому вопросу.
По поводу двоичнодесятичного и ascii кода. Двоичнодесятичный код - это цифры от 0 до 9 в 2-х тетрадах байта, т.е. один байт = 99. Чтоб это превратить в ascii, надо к ascii коду "0" (0x30) прибавить нужную тетраду и все. Т.е. Берем младшую тетраду байта, обнуляем старшие 4 бита байта, прибавляем "0" отсылаем на индикатор, берем старшую тетраду свапаем ее в младшую тетраду, обнуляем старшие 4 бита байта, прибавляем "0", otsylaem na indikator.
Не совсем понятна задача, но если кроме счетчика ничего не будет, то можно вообще крутить счетчик в ascii коде.
Inc будет: прибавить единицу к младшему разряду, если младший разряд меньше или = "9" (в ascii коде), то выход, иначе: младший разряд = "0" и прибавляем единицу к след. разряду. Если текущий разряд меньше или = "9", то выход, и.т.д.
Но этот способ ущербный, т.к. когда программа начнет разрастаться это будет жуткий расход ресурсов.
Но, так пишут программы, вот тут я срал кирпичами по этому поводу :)
http://roboforum.ru/forum2/topic10252.html


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразования 16 bit to 5 digit ASCII
СообщениеДобавлено: 17 июл 2013, 03:49 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
хех, а ведь давно уже можно было и с си немного освоиться, сделать и забыть про этот простенький конвертер. в варианте для ленивых, просто позаимствовать код.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразования 16 bit to 5 digit ASCII
СообщениеДобавлено: 17 июл 2013, 04:04 
Не в сети
Аватара пользователя

Зарегистрирован: 13 янв 2011, 15:25
Сообщения: 8033
Откуда: Санкт-Петербург
Говорилось уже, в 2313 всего 1к слов программы. Вот сейчас с отключенными всеми функциями программа занимает 8%. Да и не добрались мы еще до самого алгоритма. Выпиливаем общие ошибки.
Доверять библиотекам и не знать двоичной системы счисления - это как минимум нельзя себя называть программистом :wink:
Ну уж точно embedded программистом, а вы знаете алгоритм десятичной коррекции? А вы себя называете программистом? :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразования 16 bit to 5 digit ASCII
СообщениеДобавлено: 17 июл 2013, 04:43 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
да, но не упоминалось, что нельзя взять другой чип. про daa и das, пардон это неудачная шутка.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразования 16 bit to 5 digit ASCII
СообщениеДобавлено: 17 июл 2013, 04:59 
Не в сети
Аватара пользователя

Зарегистрирован: 13 янв 2011, 15:25
Сообщения: 8033
Откуда: Санкт-Петербург
Не поверишь, я так и думал, что ты так ответишь :D

Добавлено спустя 1 минуту 34 секунды:
Angel71 писал(а):
про daa и das, пардон это неудачная шутка.

Не понял, про что это?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 90 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.

Часовой пояс: UTC + 4 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO