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

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

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

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

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

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

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

Закрытая тема
Опции темы
Непрочитано 30.01.2012, 09:45   #1
yellow87
Вид на жительство
 
Аватар для yellow87
 
Регистрация: 29.04.2007
Адрес: Иркутск
Сообщений: 311
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
yellow87 на пути к лучшему
По умолчанию Деление съедает ROM

Всем привет!
Понадобилось вычислить два разных отношения.
Память заполнилась на 82%, если закоментировать весь основной код.
А основной код, если закоментировать деление, заполняет память на 25%
В итоге перебор в семь процентов.
Основной код простой, даже оптимизировать нечего.
Кое где даже ассемблерные вставки сделал.
Но всё равно получил 105%
Можно ли как-то почистить получающийся ASM файл в области деления или там всё, прям до единой команды нужное?
Использую PIC12F629 и CCScompiler
Реклама:
yellow87 вне форума  
Непрочитано 30.01.2012, 09:50   #2
putmannn
Гражданин KAZUS.RU
 
Аватар для putmannn
 
Регистрация: 01.02.2011
Адрес: г. Долгопрудный
Сообщений: 996
Сказал спасибо: 339
Сказали Спасибо 95 раз(а) в 91 сообщении(ях)
putmannn на пути к лучшему
По умолчанию Re: деление съедает ROM

Может быть почитать как люди делают деление и для своих целей использовать с небольшими переделками ?
Вы какие числа делите ? возможно не обязательно использовать процедуру деления из Си.
putmannn вне форума  
Непрочитано 30.01.2012, 09:55   #3
yellow87
Вид на жительство
 
Аватар для yellow87
 
Регистрация: 29.04.2007
Адрес: Иркутск
Сообщений: 311
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
yellow87 на пути к лучшему
По умолчанию Re: деление съедает ROM

в первом случае делю
7,28345 на 12,48745
а во втором
27812 на 65535
числа каждый раз разные, кроме последней константы
yellow87 вне форума  
Непрочитано 30.01.2012, 10:05   #4
putmannn
Гражданин KAZUS.RU
 
Аватар для putmannn
 
Регистрация: 01.02.2011
Адрес: г. Долгопрудный
Сообщений: 996
Сказал спасибо: 339
Сказали Спасибо 95 раз(а) в 91 сообщении(ях)
putmannn на пути к лучшему
По умолчанию Re: деление съедает ROM

во втором случае я бы делил как в школе в столбик, умножаем 27812 на 10 и в цикле вычитаем из получившегося произведения 65535 (считаем сколько раз вычли пока не получили отрицательное число), ну и до нужной цифры после запятой домножаем на 10 делимое .. покуда не получим нужную точность.
а в первом случае я бы домножил числа до целого.. на 100000 в Вашем случае и так же вычитал бы.. не претендую на хорошее решение, но примерно так делал бы я... можно почитать как люди делят в таком случае..
Умножение делать сдвигом влево на "чётное" количество и потом сложением добивать до десятичного "круглого"
putmannn вне форума  
Непрочитано 30.01.2012, 10:26   #5
alvadep
Почётный гражданин KAZUS.RU
 
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
alvadep на пути к лучшему
По умолчанию Re: деление съедает ROM

Сообщение от yellow87 Посмотреть сообщение
в первом случае делю
7,28345 на 12,48745
а во втором
27812 на 65535
числа каждый раз разные, кроме последней константы
Какая точность результата (кол-во знаков после запятой) нужна?

P.S. Как вариант избавиться от запятой и использовать соответствующие процедуры.
alvadep вне форума  
Непрочитано 30.01.2012, 10:33   #6
yellow87
Вид на жительство
 
Аватар для yellow87
 
Регистрация: 29.04.2007
Адрес: Иркутск
Сообщений: 311
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
yellow87 на пути к лучшему
По умолчанию Re: деление съедает ROM

нужно три знака после запятой(максимум четыре)
А ассемблер наверное до пятнадцатого знака всё вычисляет?
yellow87 вне форума  
Непрочитано 30.01.2012, 10:37   #7
putmannn
Гражданин KAZUS.RU
 
Аватар для putmannn
 
Регистрация: 01.02.2011
Адрес: г. Долгопрудный
Сообщений: 996
Сказал спасибо: 339
Сказали Спасибо 95 раз(а) в 91 сообщении(ях)
putmannn на пути к лучшему
По умолчанию Re: деление съедает ROM

yellow87, сколько нужно после запятой, столько раз и надо на 10 домножать при вычитании. Хоть стопицот, покуда памяти для результата в контроллере хватит.
putmannn вне форума  
Непрочитано 30.01.2012, 10:41   #8
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: деление съедает ROM

Деление на 65536 равносильно сдвигу вправо на 16 разрядов. Это на много быстрее.
Easyrider83 вне форума  
Непрочитано 30.01.2012, 10:56   #9
putmannn
Гражданин KAZUS.RU
 
Аватар для putmannn
 
Регистрация: 01.02.2011
Адрес: г. Долгопрудный
Сообщений: 996
Сказал спасибо: 339
Сказали Спасибо 95 раз(а) в 91 сообщении(ях)
putmannn на пути к лучшему
По умолчанию Re: деление съедает ROM

Совершенно верно.
putmannn вне форума  
Непрочитано 30.01.2012, 10:58   #10
yellow87
Вид на жительство
 
Аватар для yellow87
 
Регистрация: 29.04.2007
Адрес: Иркутск
Сообщений: 311
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
yellow87 на пути к лучшему
По умолчанию Re: деление съедает ROM

Easyrider83, если любое число меньшее 65536 сдвинуть на 16 разрядов вправо то получится нуль
yellow87 вне форума  
Закрытая тема

Закладки


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Деление многоразрядных чисел MCS-51 angelborn Микроконтроллеры, АЦП, память и т.д 4 16.12.2011 22:22
Деление видео и аудио сигнала neox-neox Видеотехника 3 03.05.2011 22:02
Деление аналогового сигнала на ОУ AndreyVC Электроника - это просто 30 24.01.2011 14:01
Протеус съедает такт - глюк? maxNTF Proteus 1 26.10.2010 23:40
Как переделать cd-rom в dvd-rom wadim1980 Отвлекитесь, эмбеддеры! 16 31.07.2010 19:56


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


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