Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

Закрытая тема
Опции темы
Непрочитано 19.03.2008, 22:50   #1
karuzus
Частый гость
 
Регистрация: 05.08.2006
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
karuzus на пути к лучшему
По умолчанию Подпрограммы деления (32/32) для AVR, PIC и 51

Я часто использую в своих прогах эти подпроги(32/32), но они очень длительные(стандартные).
Занимает она до 1000 циклов, в зависимости от делимого и делителя. Т.е. от 16 Мгц AVR ничего не остается...
Есть ли более эффективные (м.б. нестандартные)подпрограммы?
Реклама:
karuzus вне форума  
Непрочитано 19.03.2008, 23:45   #2
karuzus
Частый гость
 
Регистрация: 05.08.2006
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
karuzus на пути к лучшему
По умолчанию

Кстати, интересно было бы сравнить разные архитектуры 8-ми битных контроллеров в этом отношении: какие контроллеры быстрее всех справляются с делением 32/32? AVR, MSP430, PIC or SI51?
karuzus вне форума  
Непрочитано 20.03.2008, 00:18   #3
assaodu
Частый гость
 
Регистрация: 24.04.2007
Сообщений: 48
Сказал спасибо: 20
Сказали Спасибо 8 раз(а) в 7 сообщении(ях)
assaodu на пути к лучшему
По умолчанию

Я раньше тоже использовал подпрограммы деления чисел, когда писал на асме. Деление целого очисла 32768 на 1 занимало 0,107 сек. И это при минимуме команд и 10 MIPS
(PIC18F452).
Какое было мое удивление, когда, написанная на С, программа
for (x=0;x‹6.28;x=x+0.0157)
.........................
massiv [j]=sin(x)*k/i;
...........................
выполнилась ,по данным МПЛАБ, за 0,15 секунд.

Аппаратно не проверял, может и глюк среды.
Если это так, то вполне возможно, что деление 32 х разрядных чисел лучше написать на С.
assaodu вне форума  
Непрочитано 20.03.2008, 12:30   #4
karuzus
Частый гость
 
Регистрация: 05.08.2006
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
karuzus на пути к лучшему
По умолчанию

Не совсем понял, 0.107 сек или мсек? AVR с помощью используемых мной подпрограмм делит 32762 на 1 за 0.00008 сек (=0.08 мсек)т.е. в 1200 раз быстрее. А указанный Вами массив вычисляется примерно за (0.08+0.01)*(6.28/0.0157)=36мс т.е. 0.036 сек.(конечно если sin табличный.
Я имею ввиду подпрограммы более продвинутые. Си здесь кажется не выручит. Но может действительно есть на Си что-то крутое?
karuzus вне форума  
Непрочитано 20.03.2008, 12:38   #5
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: Подпрограммы деления (32/32) для AVR, PIC и 51

Сообщение от karuzus
Есть ли более эффективные (м.б. нестандартные)подпрограммы?
На electronix.ru поищи, там было.
tempora вне форума  
Непрочитано 21.03.2008, 09:52   #6
nokazus
Вид на жительство
 
Регистрация: 05.09.2006
Сообщений: 360
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
nokazus на пути к лучшему
По умолчанию

В тех случаях, когда нужно делить на константу, я заменяю деление умножением. Зачем, например, делить на 345, если можно умножить на 1/345? Или умножить на 190 и разделить на 65536 . А уж разделить на 65536 быстро я думаю знаете как. Я думаю идея понятна.
Удачи.
nokazus вне форума  
Закрытая тема

Закладки


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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MCS-51, asm, алгоритм деления слова на слово? joogorden Микроконтроллеры, АЦП, память и т.д 3 26.07.2007 17:45
Схема включения LCD панели от Motorola StarTAC для AVR/PIC Gobsek Микроконтроллеры, АЦП, память и т.д 0 11.03.2007 17:44
Алгоритм деления kviper Микроконтроллеры, АЦП, память и т.д 5 03.01.2007 15:15
Проблема деления целых чисел с заданной точностью на AVR KiberBOSS Микроконтроллеры, АЦП, память и т.д 8 16.02.2006 16:35


Часовой пояс GMT +4, время: 01:41.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot