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

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

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

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

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

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

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

 
Опции темы
Непрочитано 22.10.2007, 13:41  
dimmich
Почётный гражданин KAZUS.RU
 
Аватар для dimmich
 
Регистрация: 12.05.2006
Адрес: Владимир
Сообщений: 2,797
Сказал спасибо: 2,969
Сказали Спасибо 4,213 раз(а) в 1,187 сообщении(ях)
dimmich на пути к лучшему
По умолчанию 32-разрядные числа в 8-битном PIC

Первый раз столкнулся с математическими вычислениями в PIC. Есть необходимость в PIC16F628 умножать, делить, вычитать и складывать 32-разрядные знаковые числа. Нашел библиотеки только для 16-разрядных чисел. Кто что подскажет?

Число состоит из 4 байт. Вот формат числа:

Ст. бит Старшего байта - знак числа (0 – полож., 1 – отриц.)
Остальные 7 бит этого байта - порядок числа, сдвинутый на 40H (0 кодируется как 40H, 1=41H, -1=3FH, и т.д.)

Остальные три байта - мантисса.

Число кодируется так:
(-1)S*2(P-40H)*M, при этом 0,5=M‹1
S - знак числа
P - порядок числа
M - мантисса

Внимание, число 0 кодируется нулями во всех байтах, это совпадает с форматом Float INTEL, преобразования не требует!

Например, число 3.2:
регистр 1(ст): 42
регистр 2: cc
регистр 3: cc
регистр 4(мл): cd

Например, число –0.25:
регистр 1(ст): bf
регистр 2: 80
регистр 3: 00
регистр 4(мл): 00

Только сегодня узнал как мантисса высчитывается, ну не математик я. На примере первого числа:
Мантисса = CC CC CD (десятичное 13421773)
Делим её на FF FF FF (десятичное 16777215)
Получаем грубо 0,8
Подставляем в ту формулу, получается 3,2
============================================

Люди, в 8-битных контроллерах это реально? Сколько памяти программ потребуется?
Реклама:
dimmich вне форума  
Непрочитано 22.10.2007, 13:58  
DL36
Вид на жительство
 
Регистрация: 06.10.2006
Сообщений: 329
Сказал спасибо: 4
Сказали Спасибо 17 раз(а) в 13 сообщении(ях)
DL36 на пути к лучшему
По умолчанию Re: 32-разрядные числа в 8-битном PIC

Сообщение от dimmich
Первый раз столкнулся с математическими вычислениями в PIC. Есть необходимость в PIC16F628 умножать, делить, вычитать и складывать 32-разрядные знаковые числа. Нашел библиотеки только для 16-разрядных чисел. Кто что подскажет?
Переходи на С и проблем не будет.

На АСМе можно писать только в самом начале пути, для изучения архитектуры, или быть программистом экстра класса и выискивая лишние такты. А во всех остальных случаях это непроизводительная трата времени.
DL36 вне форума  
Непрочитано 22.10.2007, 16:10  
dimmich
Почётный гражданин KAZUS.RU
 
Аватар для dimmich
 
Регистрация: 12.05.2006
Адрес: Владимир
Сообщений: 2,797
Сказал спасибо: 2,969
Сказали Спасибо 4,213 раз(а) в 1,187 сообщении(ях)
dimmich на пути к лучшему
По умолчанию

Это извечный спор, кто на чём пишет, что оптимальней... Я уверен, есть у кого-то такие подпрограммы.
dimmich вне форума  
Непрочитано 22.10.2007, 18:09  
pfgx
Временная регистрация
 
Регистрация: 18.10.2007
Сообщений: 81
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
pfgx на пути к лучшему
По умолчанию

А можно перейти к числам с фиксированной точкой, а не плавающей? Задача существенно упростится.
Можно еще вот это посмотреть http://picfloat.sourceforge.net/
pfgx вне форума  
Непрочитано 22.10.2007, 19:09  
dimmich
Почётный гражданин KAZUS.RU
 
Аватар для dimmich
 
Регистрация: 12.05.2006
Адрес: Владимир
Сообщений: 2,797
Сказал спасибо: 2,969
Сказали Спасибо 4,213 раз(а) в 1,187 сообщении(ях)
dimmich на пути к лучшему
По умолчанию

Моя задача собрать и обработать данные с разных устройств производства других фирм, преобразовать их разные выходные данные в одинаковый вид, и передать эти даные дальше, на более высокий уровень (на комп, в базу данных). Было решено преобразование форматов делать именно на уровне моего контроллера, а не путаться в разных принятых форматах данных в компе (сейчас так реализовано). Тут спорить нет смысла: шеф дал Т.З. - я делаю

За ссылку спасибо! Буду долго разбираться...
Упс... там на C написано, а я на асме пишу...
dimmich вне форума  
Непрочитано 22.10.2007, 19:33  
urry
Почётный гражданин KAZUS.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию

Шеф - бестолочь. В том же мускуле - данные преобразовать..как 2 байта об асфальт.. что-то совсем не вижу проблемы в том, чтобы данные от контроллера выдать в серверную БД.
urry вне форума  
Непрочитано 22.10.2007, 20:10  
DL36
Вид на жительство
 
Регистрация: 06.10.2006
Сообщений: 329
Сказал спасибо: 4
Сказали Спасибо 17 раз(а) в 13 сообщении(ях)
DL36 на пути к лучшему
По умолчанию

Сообщение от dimmich
Это извечный спор, кто на чём пишет, что оптимальней... Я уверен, есть у кого-то такие подпрограммы.
На сийте микрочипа очень много библиотек в том числе и необходимая, ищите.
DL36 вне форума  
Непрочитано 22.10.2007, 20:15  
pfgx
Временная регистрация
 
Регистрация: 18.10.2007
Сообщений: 81
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
pfgx на пути к лучшему
По умолчанию

Да там и асм есть, только все на макросах.
В документе AN575 "IEEE 754 Compliant Floating Point Routines" от Microchip чистый асм.
pfgx вне форума  
Непрочитано 22.10.2007, 22:01  
dimmich
Почётный гражданин KAZUS.RU
 
Аватар для dimmich
 
Регистрация: 12.05.2006
Адрес: Владимир
Сообщений: 2,797
Сказал спасибо: 2,969
Сказали Спасибо 4,213 раз(а) в 1,187 сообщении(ях)
dimmich на пути к лучшему
По умолчанию

Сообщение от pfgx
AN575 "IEEE 754 Compliant Floating Point Routines"
Наиболее подходящий формат в AN575 - это "IEEE 754" (всего там 3 формата чисел поддерживается). Всё нравица! Но там старший бит мантиссы для какой-то своей цели используется, не в качестве значения мантиссы. Просматривать, переделывать исходник? Нихоца. Ну если не будет других предложений...

Кстати, видимо моя программа уже не помещается с AN575 в память PIC16F628. Когда допишу код, наверное придётся перепаять контроллер на другой, с бОльшим флэшем. Рассмотрю: PIC16F648, PIC16F87, PIC18F1320
dimmich вне форума  
Непрочитано 22.10.2007, 23:00  
FreeTramp
Прописка
 
Аватар для FreeTramp
 
Регистрация: 24.12.2006
Сообщений: 167
Сказал спасибо: 9
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
FreeTramp на пути к лучшему
По умолчанию Re: 32-разрядные числа в 8-битном PIC

Сообщение от dimmich
Первый раз столкнулся с математическими вычислениями в PIC. Есть необходимость в PIC16F628 умножать, делить, вычитать и складывать 32-разрядные знаковые числа. Нашел библиотеки только для 16-разрядных чисел. Кто что подскажет?
Посмотри еще это:
http://massmind.org/techref/microchi...frtomath32.asm
FreeTramp вне форума  
 

Закладки
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Большие отрицательные числа и АВР ua_gruzin Микроконтроллеры, АЦП, память и т.д 7 31.01.2009 11:41
Ввод/вывод дробного (десятичного) числа на семисегментник nigvil TTL и CMOS логика 27 03.01.2009 22:23
Положительные и отрицательные числа в Си day177 Микроконтроллеры, АЦП, память и т.д 54 30.01.2008 16:03
преобразование числа для занесения его в регистр на PIC16F84 CERGEI1982 Микроконтроллеры, АЦП, память и т.д 9 11.01.2007 17:47
Числа с плавающей запятой 32бит Tcom Микроконтроллеры, АЦП, память и т.д 1 01.03.2006 17:37


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


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