Atmega48 ассемблер.

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 11
Зарегистрирован: Пт июл 18, 2014 23:02:53

Сообщение metcal »

Всем привет. Нужна помощь - вытащить несколько функций из хекса для атмеги48. Может кто-то помочь за вознаграждение?
Реклама
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

Лучше всего будет пояснить, что за функции вам нужны. Хекс не всегда полезен.
Контактная информация:
Реклама
Родился
Сообщения: 11
Зарегистрирован: Пт июл 18, 2014 23:02:53

Сообщение metcal »

Математика. Что точно, надо смотреть.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1925
Зарегистрирован: Чт июл 28, 2016 07:58:37
Откуда: Kyiv, UA

Сообщение GoldenAndy »

А не проще ли написать свою математику, нежели заниматься дизассемблированием и догадываться о ходе мысли автора?
Что именно за математика ?

Реализация какого то известного алгоритма или какие то проприетарные вычисления ?
ИзображениеИзображение
Изображение
 
Telegram               Лучшая благодарность ->
[+]
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 11
Зарегистрирован: Пт июл 18, 2014 23:02:53

Сообщение metcal »

Алгоритм работы не известен. А нужен именно он. Обработка данных.
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18676
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15591
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

metcal
А просто прогнать в дебаггере авр студии сапсем влом?
8)
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Напишите подробности мне в личку и приложите хекс.
Docendo discimus
Контактная информация:
Родился
Сообщения: 11
Зарегистрирован: Пт июл 18, 2014 23:02:53

Сообщение metcal »

[uquote="BOB51",url="/forum/viewtopic.php?p=3578791#p3578791"]metcal
А просто прогнать в дебаггере авр студии сапсем влом?
8)[/uquote]

Я с атмелом последний раз лет 12 назад работал. Разбираться с студией времени нет, да и асм плохо знаю.
Друг Кота
Аватара пользователя
Сообщения: 15591
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

ГЫММ...
А что в таком случае даст вычитка ассемблерного кода?...
:?
:dont_know:
Родился
Сообщения: 11
Зарегистрирован: Пт июл 18, 2014 23:02:53

Сообщение metcal »

Алгоритм работы интересует. Договорился с человеком. Всем спасибо.
Родился
Сообщения: 17
Зарегистрирован: Сб фев 25, 2017 07:26:17

Сообщение onwire »

Понимаю что не в тему но в лом искать подходящую, что-то они все закрытые.
Видно АВР совсем не в моде нынче..
Надо стало быстрое деление константы 32767 на переменную 16 бит.
Придумал вот такую делилку.
Она проста, понятна, легко может быть приспособлена под любую разрядность
Для сравнения, делилка 16\16 из АВР аппноты тратит 260 тактов



DivU_TempHL_BT: ; TempH:L делимое (потом здесь будет удвоенный остаток)-
ldi Cnt, 1 ; -Buff:Temp делитель, R1:R0 округленный результат
mov One, Cnt
clr R1 clr R0
mov R2, One ; начальное значение маски для записи единиц в результат-
clr R3 clr Zero ; -она же будет счетчиком в цикле деления
cpi Temp, 128
cpc Buff, Zero
brsh shl
cpi Temp, 32 ; чтоб не повиснуть при делении на 0 :
cpc Buff, Zero
brsh swdv
ldi Temp, 32
swdv:
mov Buff, Temp ; для ускорения работы, если делитель <128-
clr Temp ; -можно сдвинуть делитель влево сразу на 8 бит
mov R3, One ; -и маску тоже
clr R2
shl:
sbrc Buff, 6
rjmp dv
lsl Temp rol Buff ; сделать делитель близким к делимому
lsl R2 rol R3 ; при этом приготовить маску
rjmp shl
dv:
cp Temp_L, Temp ; в цикле, сравнить делимое и делитель
cpc Temp_H, Buff
brlo shr
sub Temp_L, Temp ; если можно то вычесть
sbc Temp_H, Buff
or R1, R3 ; и маской внести единицу в результат
or R0, R2
shr:
lsr R3 ror R2 ; в любом случае, сдвинуть 1 в маске вправо
brcs edv ; (пока она совсем не обнулится, тогда выйти из цикла)
lsr Buff ror Temp ; и сдвинуть вправо делитель
rjmp dv
edv:
lsl Temp_L rol Temp_H ; удвоить остаток
cp Temp, Temp_L ; сравнить его с делителем
cpc Buff, Temp_H
adc R0, Zero ; округлить
adc R1, Zero
ret ; 185 тактов макс. время, мин. время 31 тактов
Модератор
Аватара пользователя
Сообщения: 19055
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

по округлению:
при равенстве делителя и удвоенного остатка у тебя не будет округления (добавки 1 к целой части).
а положено 0,5 округлять до 1.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Родился
Сообщения: 17
Зарегистрирован: Сб фев 25, 2017 07:26:17

Сообщение onwire »

Да, Вы правы, спасибо
Модератор
Аватара пользователя
Сообщения: 19055
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

обычно делается так:
сравнивается удвоенный остаток с делителем - если меньше, то 1 не прибавляется.
либо (больше или равно) - то прибавляется.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Ответить

Вернуться в «AVR»