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

 
 
 
Reply to this topicStart new topic
> Расчёт DS18B20, Методы статьи
ILYAUL
сообщение Dec 24 2012, 12:59
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Всем , здравствуйте!

Как на asm посчитать температуру до 4-го знака после запятой? Т.е с коэффициентом 0,0625. Чего-то ничего в голову не лезет и найти не могу.


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
polyname
сообщение Dec 24 2012, 16:58
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 147
Регистрация: 18-05-12
Пользователь №: 71 915



не асм, но для затравки (до 0.1°):
Код
// convert 12-bit temperature data of ds18b20 to signed celsius fixed-point (with tenth)
S16 ds1w_12bit2tenth(U16 value) {
    U8 value_sign = (value >> 8) & 0x80; // remember sign of value
    if (value_sign) value = 0 - value;   // convert to absolute value
    value = (value >> 1) + (value >> 3); // convert from 12-bit to fixed point
    if (value_sign) value = 0 - value;   // restore sign of result
    return value;
}
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Dec 24 2012, 17:56
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Собственно цена деления 0,0625 . Младшие 4 дадут максимально 0,9375. Посему достаточно отделить младшие и их значение умножить на 625. Что и даст искомые 4 разряда после запятой. Вот , чего надумал. Осталось написать.
Пока лень.


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 29th July 2025 - 13:03
Рейтинг@Mail.ru


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