Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
04.07.2007, 18:03
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Работа с DS1621
Люди объясните этот код
signed int read_low_temp() { // Returns degrees F (-67 to 127)
signed int datah, datal;
signed long data;
i2c_start();
i2c_write(0x90);
i2c_write(0xaa);
i2c_start();
i2c_write(0x91);
datah=i2c_read();
datal=i2c_read(0);
i2c_stop();
data=datah;
data=data*9;
if(bit_test(datal,7))
{
if(data ‹ 0)
data -= 4;
else
data += 4;
}
data = (data / 5) + 32;
if(data › 127)
data = 127;
return((int)data);
}
Не пойму к чему это преобразование,свой код написал не работает.Делал так считывал старший байт температуры,если он отрицательный инвертиловал его и прибавлял единицу,если положительный то оставлял без изменений.В протеусе все работает нормально.Но собрал в железе показывает 267 градус,когда в комнате примерно 25 градусов,если прикладываеш палец,начинает увеличиватся последняя цифра,значит работает,но подсчет не правельный.Попробую написать как в билиотеке и попробывать,но хотелось бы знать что к чему.
|
|
|
|
04.07.2007, 19:45
|
|
Гражданин KAZUS.RU
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
|
стандартный ответ: проект в студию...
|
|
|
|
04.07.2007, 19:59
|
|
Вид на жительство
Регистрация: 22.06.2006
Адрес: Украина
Сообщений: 308
Сказал спасибо: 19
Сказали Спасибо 32 раз(а) в 24 сообщении(ях)
|
Напишите в каком формате 1621 выдает температуру и Вам предложат несколько вариантов красивых преобразований ... просто кто давно с ними работал - не хочет возится и искать данные, а алгоритмы .. они в голове "постоянно"
По красивым преобразованиям идея и статейка ... в конце топика
|
|
|
|
05.07.2007, 13:48
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Кто просил проект? (делал в протеусе 7.1 SP2)
Прикрепленный файл: 1022714.rar
|
|
|
|
05.07.2007, 13:50
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Сообщение от AndryG
|
Напишите в каком формате 1621 выдает температуру и Вам предложат несколько вариантов красивых преобразований ... просто кто давно с ними работал - не хочет возится и искать данные, а алгоритмы .. они в голове "постоянно"
|
Да мне само преобразование надо с DS1621,чтоб подсчитал в двоичный результат,а дальше сам переведу в двоично-десятичный.Да и чтоб минус сохранялся в отдельной переменый,чтоб передавать функции индикатора его.
|
|
|
|
05.07.2007, 14:15
|
|
Вид на жительство
Регистрация: 22.06.2006
Адрес: Украина
Сообщений: 308
Сказал спасибо: 19
Сказали Спасибо 32 раз(а) в 24 сообщении(ях)
|
Вот я и говорю ... напишите ... в каком виде таймер дает температуру .. типа что там и где в считанных байтах ... а мы Вам поведаем как преобразовать в нужный Вам вид ... кстати .. в Каком виде Вам нужно получить температуру?
Меня, например, устраивало unsigned int "в десятых градуса"
|
|
|
|
05.07.2007, 14:47
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Сообщение от AndryG
|
Вот я и говорю ... напишите ... в каком виде таймер дает температуру .. типа что там и где в считанных байтах ... а мы Вам поведаем как преобразовать в нужный Вам вид ... кстати .. в Каком виде Вам нужно получить температуру?
Меня, например, устраивало unsigned int "в десятых градуса"
|
Я ж писал уже,что считываю только старший байт,а младший откидываю,без всяких сотых,только целое число,к чему мне такая точность.
|
|
|
|
05.07.2007, 15:11
|
|
Вид на жительство
Регистрация: 22.06.2006
Адрес: Украина
Сообщений: 308
Сказал спасибо: 19
Сказали Спасибо 32 раз(а) в 24 сообщении(ях)
|
РРРРРРРРРРрррррррррррррррррр!
Вчитайтесь в мои слова ... "в каком формате считывается температура с датчика?" Я работал с 18в21 -- там младший нибл младшего байта - дробная часть температуры ... старший нибл младшего байта и младший нибл старшего - целая часть .... старший нибл старшего байта - указывает знак.
Имя такие данные можно думать о преобразовании.
Если Вам трудно прицепить картинку с даташита к сообщению, то я вообще не хочу искать этот даташит.
|
|
|
|
05.07.2007, 15:26
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Только без нервов
Вот чтение с ds1621
-- Прилагается рисунок: --
|
|
|
|
05.07.2007, 15:28
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
А вот так температура в двоичном измерении(также как ты описал с датчиком 18b21)
-- Прилагается рисунок: --
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 21:09.
|
|