10.10.2014, 08:57
|
|
Вид на жительство
Регистрация: 29.04.2007
Адрес: Иркутск
Сообщений: 311
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
|
ds18b20 изменить точность измерения
Всем привет!
MPLAB + PIC CCS
Температуру датчики измеряют правильно и выводят на экран.
А вот изменить точность измерения не получается.
Точность всегда 12 бит.
Делаю так:
Код:
|
///////////////////////
void main(void)
{
.............
SetSpeed(0x1F);
......
}
////////////////////////
void SetSpeed(int b)
{
DS_Reset();
DS_Write(0xCC);
DS_Write(0x4E);
for(i=0; i‹3; i++) DS_Write(b);
//DS_Reset();
//DS_Write(0xCC);
//DS_Write(0x48);
} |
|
|
|
|
10.10.2014, 12:46
|
|
Прописка
Регистрация: 04.02.2007
Адрес: Украина
Сообщений: 126
Сказал спасибо: 44
Сказали Спасибо 29 раз(а) в 20 сообщении(ях)
|
Re: ds18b20 изменить точность измерения
Должно работать.
Может с датчиком что?
Я делал так:
Код:
|
DS_Reset();
DS_Write(0xCC);
DS_Write(0x4E);
DS_Write(0x00);
DS_Write(0x00);
DS_Write(0x1F); |
|
|
|
|
10.10.2014, 16:37
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,528
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
|
Re: ds18b20 изменить точность измерения
Если не принципиально время преобразования, то проще округлить данные.
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
|
|
|
|
10.10.2014, 17:42
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,504
Сказал спасибо: 401
Сказали Спасибо 2,217 раз(а) в 1,315 сообщении(ях)
|
Re: ds18b20 изменить точность измерения
Так ведь если верить документам, то независимо от того, какая разрядность измерений выбрана, данные все равно будут содержать 2 полных байта. Младшие биты при меньшей разрядности будут иметь неопределенное значение и их не нужно будет учитывать.
"For 11-bit resolution, bit 0 is undefined. For 10-bit resolution, bits 1 and 0 are undefined..."
|
|
|
|
13.10.2014, 02:59
|
|
Вид на жительство
Регистрация: 29.04.2007
Адрес: Иркутск
Сообщений: 311
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
|
Re: ds18b20 изменить точность измерения
Я читал русское руководство по работе с датчиком. Там написано, что при понижении дискретности все биты сдвигаются вправо. То есть если нулевой байт имел точность 2^-4 то то будет 2^-3
А время преобразования длительностью в 750 мсек меня не устраивает. Вот и хочу точность понизить-время уменьшить.
Ivan такой же код привёл как и у меня. Почему же у меня не работает? Непонятно.
Я уже два новых датчика проверил. Толку нет : - (
|
|
|
|
13.10.2014, 07:24
|
|
Почётный гражданин KAZUS.RU
Регистрация: 29.12.2012
Адрес: Питер
Сообщений: 982
Сказал спасибо: 131
Сказали Спасибо 230 раз(а) в 157 сообщении(ях)
|
Re: ds18b20 изменить точность измерения
Сообщение от yellow87
|
Ivan такой же код привёл как и у меня.
|
Не совсем. Своим циклом вы пишите
DS_Reset();
DS_Write(0xCC);
DS_Write(0x4E);
DS_Write(0x1F);
DS_Write(0x1F);
DS_Write(0x1F);
|
|
|
|
13.10.2014, 08:41
|
|
Вид на жительство
Регистрация: 29.04.2007
Адрес: Иркутск
Сообщений: 311
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
|
Re: ds18b20 изменить точность измерения
Циклом-не циклом: смысл один. Уставки температур меня не интересуют.
Решил проверить считать температуру после 100-милисекундной паузы.
И что интересно: всё работает нормально. Значит вычисленные биты никуда, всётаки, не сдвигаются, а просто не вычисляются.
То есть протокол разный на разные партии датчиков? Тоже странно как-то...
Скорее это мой источник инфы меня подвёл
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 13:13.
|
|