Спасибо, действительно интересно! Наконец-то хоть что-то толковое на русском почитать можно.IM1 писал(а):Почитайте ради интереса руководства по применению от Максим. Там много чего интересного, вот например: о линиях до 600м.
Всё по DS18(B/S)20.
- Gerik_PP
- Открыл глаза
- Сообщения: 59
- Зарегистрирован: Вт ноя 07, 2006 14:14:16
- Откуда: пос. Правдинский
- Контактная информация:
Re: Всё по DS18(B/S)20.
- Реклама
Re: Всё по DS18(B/S)20.
подскажите, есть у кого пример функции для расчета CRC что то поиском ничего похожего немогу найти
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Всё по DS18(B/S)20.
http://yandex.ru/yandsearch?clid=9582&t ... 2+CRC&lr=5что то поиском ничего похожего немогу найти
Куча ссылок...
Re: Всё по DS18(B/S)20.
Нужны ваши идеи
по поиску неисправности/бага.
Устанавливаю по серийнику 18В20 разрешение в 11 бит и сохраняю в EEPROM. После, сразу пытаюсь прочитать регистры, но датчик не отвечает (читаю все время единицы).
Использую следующую последовательность команд
1. //сброс
2. MATCH_ROM; //и отправляю серийник
3. WRITE_SCRATCHPAD
4. _TH; //пишем в регистр TH
5. _TL //пишем в регистр TL
6. _RES //пишем в регистр конфигурации
7. COPY_SCRATCHPAD
-пробовал ставить здесь задержки - не помогают.
8. READ_SCRATCHPAD //попытка прочитать память
9. //читаю память. но читаются только единицы
Из другой ф-ции чтения (везде одинаковы) после сброса видно что разрешение установилось, вопрос - почему я сразу не могу его прочитать?????
Устанавливаю по серийнику 18В20 разрешение в 11 бит и сохраняю в EEPROM. После, сразу пытаюсь прочитать регистры, но датчик не отвечает (читаю все время единицы).
Использую следующую последовательность команд
1. //сброс
2. MATCH_ROM; //и отправляю серийник
3. WRITE_SCRATCHPAD
4. _TH; //пишем в регистр TH
5. _TL //пишем в регистр TL
6. _RES //пишем в регистр конфигурации
7. COPY_SCRATCHPAD
-пробовал ставить здесь задержки - не помогают.
8. READ_SCRATCHPAD //попытка прочитать память
9. //читаю память. но читаются только единицы
Из другой ф-ции чтения (везде одинаковы) после сброса видно что разрешение установилось, вопрос - почему я сразу не могу его прочитать?????
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Всё по DS18(B/S)20.
Опишите подробней последовательность, где вы ресеты делаете.wellcom писал(а):Из другой ф-ции чтения (везде одинаковы) после сброса видно что разрешение установилось
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Реклама
Re: Всё по DS18(B/S)20.
В ф-ции чтения температуры я тоже читаю всю память 18В20 по такому алгоритму
1. //сброс 1wire
2. MATCH_ROM; //и отправляю серийник
3. READ_SCRATCHPAD //попытка прочитать память
4. //читаю память, пров CRC - все ок.
А когда я меняю разрешение, то после этого сразу память не могу прочитать, и не пойму в чем дело. В итоге ресет только в начале каждой ф-ции чтения/записи 18В20
1. //сброс 1wire
2. MATCH_ROM; //и отправляю серийник
3. READ_SCRATCHPAD //попытка прочитать память
4. //читаю память, пров CRC - все ок.
А когда я меняю разрешение, то после этого сразу память не могу прочитать, и не пойму в чем дело. В итоге ресет только в начале каждой ф-ции чтения/записи 18В20
Последний раз редактировалось wellcom Пн мар 11, 2013 11:47:30, всего редактировалось 1 раз.
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Всё по DS18(B/S)20.
Бля, ну неужели так сложно посмотреть ДШ и сделать всё как там?
Это почти то, что вам нужно. А вообще, для кого в ДШ нарисована диаграмма Commands Flowchart (это оттуда выдержка)?
Спойлер
- Вложения
-
- Безымянный.GIF
- (40.61 КБ) 833 скачивания
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Всё по DS18(B/S)20.
Не тяжело, если бы знал английский. Чичал переведенный даташит, там такой таблицы нет, зато написано что после подачи серийника, все 18В20 откл до след ресета и работает только тот к которому мы обратились., т.е. я понял это так - после выдачи серийника и до сброса я могу слать/читать все что угодно но только с указанным 18В20. Теперь ясно, без сброса и очередного чтения ничего не выйдет. спасибо что ткнули носом.Gudd-Head писал(а):Бля, ну неужели так сложно посмотреть ДШ и сделать всё как там?
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Всё по DS18(B/S)20.
Да, всё так. Но! Только одну команду. Для подачи следующей надо снова выдавать серийник.wellcom писал(а):после выдачи серийника и до сброса я могу слать/читать все что угодно но только с указанным 18В20
Работайте с оригинальными документами, английского тут (в технической документации) не так уж много, можно выучить.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Всё по DS18(B/S)20.
В конце-концов, не понимаете английский - разглядывайте картинки. Там есть диаграмма "Figure 11. ROM Commands Flowchart" на два листа. Ходить можно только по стрелочкам.
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Всё по DS18(B/S)20.
Знать бы ещё что в прямоугольниках и ромбиках написано 
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Всё по DS18(B/S)20.
Gudd-Head писал(а):Знать бы ещё что в прямоугольниках и ромбиках написано
Re: Всё по DS18(B/S)20.
Ребята, помогите плиз по языку Си. Изучал проект Цифрового термометра ATMega8+DS18B20. Никак не могу понять, процедуру считывания температуры с датчика.
Что значит строчка если датчик выдает больше 1000, то его отнимаем от 4096, и записываем как отрицательную температуру. Объясните поподробнее плиз.
Код: Выделить всё
while(devices>0) //если датчики найдены, то бесконечный цикл запускается
{
temp=ds18b20_temperature(0); //считываем температуру с датчика
if(temp>1000){ //если датчик выдает больше 1000
temp=4096-temp; //отнимаем от данных 4096
temp=-temp; //и ставим знак "-"
}
//sprintf(lcd_buffer,"t=%i.%u\xdfC",temp,temp%1); //записываем в массив для вывода на экран температуру- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: Всё по DS18(B/S)20.
... самое подробное "объяснение" можно получить скачав datasheet на DS18b20, который есть даже с русским переводом, и посмотреть формат хранения температуры....Объясните поподробнее плиз.
Re: Всё по DS18(B/S)20.
Спасибо. Сейчас почитаю.ChipKiller писал(а):... самое подробное "объяснение" можно получить скачав datasheet на DS18b20, который есть даже с русским переводом, и посмотреть формат хранения температуры....Объясните поподробнее плиз.
Re: Всё по DS18(B/S)20.
Все равно не понял ничего. Прошу на пальцах объяснить.ChipKiller писал(а):... самое подробное "объяснение" можно получить скачав datasheet на DS18b20, который есть даже с русским переводом, и посмотреть формат хранения температуры....
Re: Всё по DS18(B/S)20.
Чего не поняли? Каждое десятичное число можно представить в двоичном коде и наоборот. Тогда смотрите перевод из одной системы счисления в другую.
Re: Всё по DS18(B/S)20.
Тут почитай.....Aid1992 писал(а):Все равно не понял ничего. Прошу на пальцах объяснить.
http://www.digit-el.com/files/open/ds18x20/ds18x20.html
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Всё по DS18(B/S)20.
Тоже никогда не понимал эти условия, вычитания, ... Датчик отдаёт температуру в нормальном виде, уложив которую побайтно в int16, получаем нормальное знаковое значение температуры, умноженное на 16 (при 12-ти битах). Остаётся только поделить её на 16 и получим температуру с десятыми.
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Всё по DS18(B/S)20.
Оффтоп в тему:

Спойлер

[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]


