Например TDA7294

Форум РадиоКот • Просмотр темы - Ассемблер (ASM) для AVR в вопросах и ответах
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вс июн 29, 2025 01:16:32

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


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 7952 ]     ... , , , 91, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн июн 13, 2011 19:30:16 
Друг Кота
Аватар пользователя

Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 19675
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
DX168B писал(а):
Спасибо. :beer:

Пжалста. Вот и я грю, порой без поллитра не обойтись и самые элементарные вещи кажутся чем-то невероятным. :beer:
Кстати, вопрос по таймерам. Есть ли такой режим типа мультивибратора — чтобы один раз протикал от 0 до FF (00) и остановился? Или единственный выход — принудительно останавливать его в прерывании (по флагу), т.к. если выбран источник тактирования, то таймер по-любому тикает?

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн июн 13, 2011 19:33:06 
Друг Кота
Аватар пользователя

Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 19675
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
DX168B писал(а):
Очень извратно, но работает. Позже подумаю об оптимизации.

Можно без умножения: 100 + 10 + 10 + 10 + 8. Цикл сложения на счётчиках :wink:

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн июн 13, 2011 19:36:42 
Друг Кота
Аватар пользователя

Карма: 25
Рейтинг сообщений: 99
Зарегистрирован: Вс янв 24, 2010 19:19:52
Сообщений: 4468
Откуда: Главный Улей России (Moscow)
Рейтинг сообщения: 0
Кажись, нет. Наверное можно остановить в прерывании по переполнению. Но на вход в прерывание уходит несколько тактов, так что без подделителя возможны погрешности на пару тиков. Хотя можно прерывание немного раньше вызвать, по сравнению с регистром OCR.
Мы в какой-то теме решали эту задачу.

А на счёт умножения. Мне п\программа умножения будет нужна и в других местах программы для других целей. По этому уже с умножением сделаю.

_________________
I am DX168B and this is my favourite forum on internet!


Последний раз редактировалось DX168B Пн июн 13, 2011 19:39:05, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн июн 13, 2011 19:38:31 
Друг Кота
Аватар пользователя

Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 19675
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
DX168B писал(а):
Но на вход в прерывание уходит несколько тактов, так что без подделителя возможны погрешности на пару тиков.

Для определения скорости вращения энкодера: 1) палюбасу нужен будет предделитель, 2) пара тиков не существенны.
DX168B писал(а):
Мне п\программа умножения будет нужна и в других местах программы для других целей. По этому уже с умножением сделаю.

Какой камень? У меги есть аппаратное умножение (правда, ни разу ещё им не пользовался :oops: ).

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?


Последний раз редактировалось Gudd-Head Пн июн 13, 2011 19:42:28, всего редактировалось 2 раз(а).

Вернуться наверх
 
Выбираем индустриальные и медицинские источники питания MEAN WELL в открытом исполнении

Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн июн 13, 2011 19:40:46 
Друг Кота
Аватар пользователя

Карма: 25
Рейтинг сообщений: 99
Зарегистрирован: Вс янв 24, 2010 19:19:52
Сообщений: 4468
Откуда: Главный Улей России (Moscow)
Рейтинг сообщения: 0
tiny2313. В мегах ясное дело, что есть команды MUL и её производные. Результаты вроде помещаются в r0:r1.

_________________
I am DX168B and this is my favourite forum on internet!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн июн 13, 2011 19:42:02 
Друг Кота
Аватар пользователя

Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 19675
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
DX168B писал(а):
tiny2313.

Гы :))) У меня макетка с энкодером тоже на 2313!

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн июн 13, 2011 19:47:07 
Друг Кота
Аватар пользователя

Карма: 25
Рейтинг сообщений: 99
Зарегистрирован: Вс янв 24, 2010 19:19:52
Сообщений: 4468
Откуда: Главный Улей России (Moscow)
Рейтинг сообщения: 0
Да вот недавно набрал кучку 2313х и мег 32х. Для ознакомления и отточения навыков.
Замок тоже на 2313й тине делаю, так как у 26й тиньки уже нехватает ног и UARTа нет, а он мне нужен там. Хочу, чтобы замком по UART можно было управлять и конфигурировать не только с клавы, но и с ПК. Программу для ПК написал, вот для МК осталось добить.

_________________
I am DX168B and this is my favourite forum on internet!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн июн 13, 2011 19:58:24 
Модератор
Аватар пользователя

Карма: 68
Рейтинг сообщений: 424
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Сообщений: 13490
Откуда: Тамбовская обл.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Ща тиньки не выгодно набирать. Мега48 по той-же цене. А возможности сами знаете... и ноги :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн июн 13, 2011 20:34:31 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 878
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 6006
Откуда: Minsk
Рейтинг сообщения: 0
DX168B писал(а):

Очень извратно, но работает.


С первым тезисом согласен безоговорочно. Налицо и своеобразный стиль программирования. Никаких комментариев ( чтоб супостата запутать ) А то понаписывают некоторые:

; ----------
; Целочисленное беззнаковое умножение.
; R1 * R2 -> R25,R24
; Множители сохраняются.
; ----------
MUL: ..... и т. п.

Краткость - сестра таланта. Это чтобы вернувшись к задаче через месяц ( полгода ) чесать репу : "И какой идиот это накорябал! ... Да это ж я..."

Судя по тому, что умножение на 8 достигается троекратным сдвигом влево, идентификатор
MUL_8 обозначает в данном случае нечто совершенно иное и тоже призван запутать вероятного противника .


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн июн 13, 2011 20:41:04 
Друг Кота
Аватар пользователя

Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 19675
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Jack_A писал(а):
MUL_8 обозначает в данном случае нечто совершенно иное и тоже призван запутать вероятного противника .

Это умножение 8-ми битных чисел :)

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн июн 13, 2011 20:55:31 
Друг Кота
Аватар пользователя

Карма: 25
Рейтинг сообщений: 99
Зарегистрирован: Вс янв 24, 2010 19:19:52
Сообщений: 4468
Откуда: Главный Улей России (Moscow)
Рейтинг сообщения: 0
Это я и имел в виду. Умножение восьмибитных чисел. А результат может быть и 16-битным, в зависимости от самих умножаемых чисел. Умножитель я взял из Атмеловского аппноута по делениям\умножениям. Только имена регистров и меток подправил под себя. :)
А комменты я позже напишу, иначе на самом деле, позже и забыть можно. А на счёт изврата, я заранее предусмотрел ограничения, так что за пределы восьми бит никак не выйдет. Да и к скорости и оптимизации, будущая девайсина совсем не критична. (это будет применяться в некоторых пунктах меню настроек.)

_________________
I am DX168B and this is my favourite forum on internet!


Последний раз редактировалось DX168B Вт июн 14, 2011 12:33:53, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн июн 13, 2011 21:09:35 
Друг Кота
Аватар пользователя

Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 19675
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
DX168B писал(а):
А комменты я позже напишу, иначе на самом деле, позже и забыть можно.

Да-да-да. Тож так думаю, потом напишу, а то лень на русский переключаться. А потом хрен поймёшь что понаписал :)))

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Сб июл 02, 2011 15:47:28 
Друг Кота
Аватар пользователя

Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 19675
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Опять я в ступоре, на этот раз более глубоком :(
В общем, имеется двухбайтное число (счётчик) в 2-х соседних регистрах. Необходимо сделать процедуру его уменьшения/увеличения на 1/10/100 (в зависимости от состояния 3-х флагов) таким образом, чтобы оно не выходило за произвольные нижнюю и верхнюю границы.
Если более подробно, то один флаг (Т) отвечает за направление счёта, два других (А и Б) за величину счёта (100 если А=Б=0; 1 если Б=1; и 10 если А=1_и_Б=0). Хотелось бы решить задачу в общем виде, т.е. чтобы пороги МАКС и МИН можно было задать любые (МАКС>МИН).
Сейчас это сделано только для инкремента/декремента на единицу, да и то коряво: перед соотв. действием текущее значение счётчика побайтно сравнивается с порогом. Например, если верхний порог МАКС равен $ABCD, то инкремент будет выглядеть
Код:
clr zeroreg;
ldi onesreg, 1;
...
cpi count_H, 0xAB;   сравниваем старший байт с порогом
brlo PC+3;            если меньше, то сразу переходим к вычислению
cpi count_L, 0xCD;   сравниваем младший байт с порогом
brsh PC+3;            если больше или равно, то пропускаем вычисление
add count_L, onesreg;   инкремент младшего байта на единицу
adc count_H, zeroreg;   прибавляем значение флага переноса к старшему байту
...

Самое простое было зациклить это на соотв. число циклов (1/10/100), однако время выполнения в таком случае может достигать 1000 тактов, что недопустимо.
Наверняка можно как-то компактно дополнить этот код.
Например, прибавляем 1. Проверяем флаг Б, если Б=0 то прибавляем ещё 9. Проверяем флаг А, если А=0 то прибавляем ещё 90. Но вот как проверить то, что после прибавления не будет превышен порог (при прибавлении чисел больше 1)? С учётом возможных ошибочных переходов $FFFF -> $0000 для порогов, близких к $FFFF.

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Сб июл 02, 2011 16:27:47 
Сверлит текстолит когтями
Аватар пользователя

Карма: 4
Рейтинг сообщений: 30
Зарегистрирован: Ср янв 05, 2011 16:25:15
Сообщений: 1163
Рейтинг сообщения: 0
Gudd-Head писал(а):
...Необходимо сделать процедуру его уменьшения/увеличения на 1/10/100 (в зависимости от состояния 3-х флагов) таким образом, чтобы оно не выходило за произвольные нижнюю и верхнюю границы.
.. а что мешает перед вычитанием/увеличением делать проверку? (пишете отдельную ветку для уменьшения и увеличения - есть заем/перенос -> выход за границу ...)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Сб июл 02, 2011 19:47:14 
Друг Кота
Аватар пользователя

Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 19675
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
ChipKiller писал(а):
.. а что мешает перед вычитанием/увеличением делать проверку? (пишете отдельную ветку для уменьшения и увеличения - есть заем/перенос -> выход за границу ...)

В том-то и дело, не допираю как сделать проверку :oops:

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Сб июл 02, 2011 20:19:27 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18398
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
имхо, решение в общем виде таково:
1. сохранили во временном месте значение текущего числа
2. увеличили/уменьшили его на заданное приращение
3. проверили на максимум/минимум
4 если есть выход за пределы - восстановили прежнее значение (или что-то там еще сделали)
все просто... и для любых приращений и пределов - алгоритм единый :)

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вс июл 03, 2011 16:56:07 
Друг Кота
Аватар пользователя

Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 19675
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
ARV писал(а):
2. увеличили/уменьшили его на заданное приращение
3. проверили на максимум/минимум
4 если есть выход за пределы - восстановили прежнее значение (или что-то там еще сделали)

Ага... Допустим, предел $FFFF, а текущее значение — $FFEF. Увеличили на 100 — получили $0053, что меньше порога, и благополучно проглотили.
UPD: Ладно, дополню сам себя: помимо сравнения двух байт счётчика с порогом, дополнительно проверить флаг С (после его прибавки к старшему байту) чтобы не получилось то, что я только что описал?..

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вс июл 03, 2011 21:23:44 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 13
Рейтинг сообщений: 24
Зарегистрирован: Сб ноя 15, 2008 10:09:56
Сообщений: 2029
Откуда: г. Тула
Рейтинг сообщения: 0
Я вот тут подумал, что если границы будут задаваться свои, то как вариант можно сделать такую проверку:

Для сложения:
Выполняем операцию: Правая граница - Текущее значение
Получившееся значение сравниваем со слагаемым - если меньше слагаемого, то прибавлять нельзя. (Вычитаем из результата слагаемое. Если флаг C после этого стоит, то складывать нельзя)

Для вычитания:
Выполняем операцию: Текущее значение - Левая граница
И далее тоже самое, только вместо слагаемого будет вычетаюшее число.

Оригинальное значение мы, естественно, сохраняем, например, в стек и достаём обратно после проверки.
Ну, как вариант. Не претендую на элегантность. :)

_________________
Изображение
/dev/urandom - гигабайты информации.

OS: openSUSE 13.2 (x86_64)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн июл 04, 2011 08:26:05 
Вымогатель припоя

Карма: 1
Рейтинг сообщений: 101
Зарегистрирован: Ср фев 24, 2010 19:16:07
Сообщений: 680
Рейтинг сообщения: 0
Очень нуждаюсь в алгоритме рисовании линии на ассемблере..

на Си не заморачивался и делал через мат. формулу... на асм переписать такое конечно можно, но думаю есть другой алгоритм..

ткните носом пожалуйста... в принципе мне достаточно алгоритма...
интересует алгоритм расчета координат точек линии.. процедура рисования точек есть :-)

p.s. сам придумал пару алгоритмов -но они не всегда дают правильный результат :-(((


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн июл 04, 2011 08:34:04 
Друг Кота
Аватар пользователя

Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 19675
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
ВитГо писал(а):
Очень нуждаюсь в алгоритме рисовании линии на ассемблере.

Интересно, конечно, где вы её (линию) будете рисовать — на бумаге? :)
А так — формула линии из алгебры 5-го класса: y = k*x + b, т.е. реализовать на АСМе умножение и сложение, потом подставлять вместо х нужный диапазон точек.

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 7952 ]     ... , , , 91, , , ...  

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


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y