реклама на сайте
подробности

 
 
> Умножение дробных чисел
golovin
сообщение May 29 2007, 05:39
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 13-04-07
Пользователь №: 27 012



Добрый день!

Необходимо разделить число на 5, т.е. умножить на 0,2. Но я не могу получить ровно 0,2 при переводе числа в дробное по методу ATMEL (Appl. Note 201).

Погрешность которая получается не устраивает, т.к. числа, которые необходимо делить на 5 находятся в диапазоне 1..100, соответственно набегает ошибка около 35.

Есть ли какой-то выход из этой ситуации ?

Спасибо
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
golovin
сообщение May 29 2007, 08:06
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 13-04-07
Пользователь №: 27 012



Т.е. любая мега сможет поделить на 5 или умножить на 0,2 программно за 16 тактов ?
Не подскажите, где можно найти такой код ? И точность не подскажите?

Цитата(ae_ @ May 29 2007, 12:04) *
Умножение выполняется всего за 2 такта, о какой медлительности идёт речь?
Код
LDI DELIMOE, 100
LDI DELITEL, 256/5
MUL DELIMOE, DELITEL

В регистре R1 будет результат 100/5=20


Я вроде писал о ПРОГРАММНОМ умножении, а не АППАРАТНОМ

А приведённый код даст следующее :

Delitel = $33 = 51

Результат : R1 = $13, R2 = $EC

Сообщение отредактировал golovin - May 29 2007, 08:11
Go to the top of the page
 
+Quote Post
ae_
сообщение May 29 2007, 08:21
Сообщение #3


Участник
***

Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695



Цитата(golovin @ May 29 2007, 17:06) *
Т.е. любая мега сможет поделить на 5 или умножить на 0,2 программно за 16 тактов ?
Не подскажите, где можно найти такой код ? И точность не подскажите?
Я вроде писал о ПРОГРАММНОМ умножении, а не АППАРАТНОМ

А приведённый код даст следующее :

Delitel = $33 = 51

Результат : R1 = $13, R2 = $EC

Результат R1=19 (целая часть), R0(не R2)=236/256=0,921875 - дробная часть. Точность равна единице млашего разряда =1/256 при условии, что делитель точный. У вас делитель =51 вместо 51.2, так что точность будет меньше. Если такая точность не устраивает, в формате 8.8, используйте 8.16. В этом случае надо умножать делимое на 65336/5, результат будет 3-х байтный, старший байт - целая часть, два младших - дробная.
Go to the top of the page
 
+Quote Post
mse
сообщение May 29 2007, 08:25
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693



Цитата(ae_ @ May 29 2007, 12:21) *
Результат R1=19 (целая часть), R0(не R2)=236/256=0,921875 - дробная часть. Точность равна единице млашего разряда =1/256 при условии, что делитель точный. У вас делитель =51 вместо 51.2, так что точность будет меньше. Если такая точность не устраивает, в формате 8.8, используйте 8.16. В этом случае надо умножать делимое на 65336/5, результат будет 3-х байтный, старший байт - целая часть, два младших - дробная.

Будет то-же самое, только вид сбоку. ;О) надо множить на 256/5+1. На худой конец, к старшему дробному байту мона прибавлять 0х80, а к результату, с переносом, 0х0. Но это фигня лишняя.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- golovin   Умножение дробных чисел   May 29 2007, 05:39
- - mse   Цитата(golovin @ May 29 2007, 09:39) Есть...   May 29 2007, 06:10
- - Диm   Цитата(golovin @ May 29 2007, 11:39) Добр...   May 29 2007, 06:15
|- - mse   Цитата(Диm @ May 29 2007, 10:15) лично я ...   May 29 2007, 06:20
|- - Диm   Цитата(mse @ May 29 2007, 12:20) Не надо ...   May 29 2007, 06:25
- - golovin   В App.Note как раз описана технология перевода дро...   May 29 2007, 06:18
- - golovin   К сожалению программное умножение/деление не подхо...   May 29 2007, 07:43
|- - Dog Pawlowa   Цитата(golovin @ May 29 2007, 10:43) К со...   May 29 2007, 07:50
|- - mse   Цитата(golovin @ May 29 2007, 11:43) К со...   May 29 2007, 08:00
|- - ae_   Цитата(golovin @ May 29 2007, 16:43) К со...   May 29 2007, 08:04
|- - mse   Цитата(golovin @ May 29 2007, 12:06) Т.е....   May 29 2007, 08:18
- - golovin   to mse: по поводу программного и аппаратного это я...   May 29 2007, 08:31
|- - mse   Цитата(golovin @ May 29 2007, 12:31) В то...   May 29 2007, 08:43
|- - ae_   Цитата(mse @ May 29 2007, 17:43) Никакой ...   May 29 2007, 10:31
|- - mse   Цитата(ae_ @ May 29 2007, 14:31) У меня п...   May 29 2007, 10:46
- - golovin   А можно поподробней про число 0х3334 ?   May 29 2007, 08:50
|- - mse   Цитата(golovin @ May 29 2007, 12:50) А мо...   May 29 2007, 08:56
- - golovin   to mse: БОЛЬШОЕ спасибо   May 29 2007, 09:44
- - defunct   Есть такой интересный алгоритм деления на 10: Для...   May 29 2007, 15:55
|- - m16   Цитата(defunct @ May 29 2007, 19:55) Есть...   May 30 2007, 08:56
- - golovin   Спасибо за интересные мысли !   May 30 2007, 11:07
- - umup   Вот, может подойдет - для 8 и 16 битных чисел. Пер...   Jun 1 2007, 02:17


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 9th August 2025 - 00:33
Рейтинг@Mail.ru


Страница сгенерированна за 0.01412 секунд с 7
ELECTRONIX ©2004-2016