Страница 23 из 59

Re: Всё по DS18(B/S)20.

Добавлено: Ср мар 06, 2013 23:22:05
Gerik_PP
IM1 писал(а):Почитайте ради интереса руководства по применению от Максим. Там много чего интересного, вот например: о линиях до 600м.
Спасибо, действительно интересно! Наконец-то хоть что-то толковое на русском почитать можно.

Re: Всё по DS18(B/S)20.

Добавлено: Вс мар 10, 2013 13:31:49
rain27
подскажите, есть у кого пример функции для расчета CRC что то поиском ничего похожего немогу найти

Re: Всё по DS18(B/S)20.

Добавлено: Вс мар 10, 2013 13:41:13
Аlex
что то поиском ничего похожего немогу найти
http://yandex.ru/yandsearch?clid=9582&t ... 2+CRC&lr=5
Куча ссылок...

Re: Всё по DS18(B/S)20.

Добавлено: Пн мар 11, 2013 11:20:02
wellcom
Нужны ваши идеи :idea: по поиску неисправности/бага.
Устанавливаю по серийнику 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. //читаю память. но читаются только единицы :shock:

Из другой ф-ции чтения (везде одинаковы) после сброса видно что разрешение установилось, вопрос - почему я сразу не могу его прочитать?????

Re: Всё по DS18(B/S)20.

Добавлено: Пн мар 11, 2013 11:23:45
Gudd-Head
wellcom писал(а):Из другой ф-ции чтения (везде одинаковы) после сброса видно что разрешение установилось
Опишите подробней последовательность, где вы ресеты делаете.

Re: Всё по DS18(B/S)20.

Добавлено: Пн мар 11, 2013 11:41:32
wellcom
В ф-ции чтения температуры я тоже читаю всю память 18В20 по такому алгоритму
1. //сброс 1wire
2. MATCH_ROM; //и отправляю серийник
3. READ_SCRATCHPAD //попытка прочитать память
4. //читаю память, пров CRC - все ок.
А когда я меняю разрешение, то после этого сразу память не могу прочитать, и не пойму в чем дело. В итоге ресет только в начале каждой ф-ции чтения/записи 18В20

Re: Всё по DS18(B/S)20.

Добавлено: Пн мар 11, 2013 11:45:57
Gudd-Head
Бля, ну неужели так сложно посмотреть ДШ и сделать всё как там?
СпойлерИзображение
Это почти то, что вам нужно. А вообще, для кого в ДШ нарисована диаграмма Commands Flowchart (это оттуда выдержка)?

Re: Всё по DS18(B/S)20.

Добавлено: Пн мар 11, 2013 11:55:05
wellcom
Gudd-Head писал(а):Бля, ну неужели так сложно посмотреть ДШ и сделать всё как там?
Не тяжело, если бы знал английский. Чичал переведенный даташит, там такой таблицы нет, зато написано что после подачи серийника, все 18В20 откл до след ресета и работает только тот к которому мы обратились., т.е. я понял это так - после выдачи серийника и до сброса я могу слать/читать все что угодно но только с указанным 18В20. Теперь ясно, без сброса и очередного чтения ничего не выйдет. спасибо что ткнули носом.

Re: Всё по DS18(B/S)20.

Добавлено: Пн мар 11, 2013 11:59:04
Gudd-Head
wellcom писал(а):после выдачи серийника и до сброса я могу слать/читать все что угодно но только с указанным 18В20
Да, всё так. Но! Только одну команду. Для подачи следующей надо снова выдавать серийник.

Работайте с оригинальными документами, английского тут (в технической документации) не так уж много, можно выучить.

Re: Всё по DS18(B/S)20.

Добавлено: Пн мар 11, 2013 12:06:21
uldemir
В конце-концов, не понимаете английский - разглядывайте картинки. Там есть диаграмма "Figure 11. ROM Commands Flowchart" на два листа. Ходить можно только по стрелочкам.

Re: Всё по DS18(B/S)20.

Добавлено: Пн мар 11, 2013 12:07:57
Gudd-Head
Знать бы ещё что в прямоугольниках и ромбиках написано :)))

Re: Всё по DS18(B/S)20.

Добавлено: Пн мар 11, 2013 12:14:17
wellcom
Gudd-Head писал(а):Знать бы ещё что в прямоугольниках и ромбиках написано :)))
:)

Re: Всё по DS18(B/S)20.

Добавлено: Вс мар 17, 2013 09:20:04
Aid1992
Ребята, помогите плиз по языку Си. Изучал проект Цифрового термометра ATMega8+DS18B20. Никак не могу понять, процедуру считывания температуры с датчика.

Код: Выделить всё

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); //записываем в массив для вывода на экран температуру
Что значит строчка если датчик выдает больше 1000, то его отнимаем от 4096, и записываем как отрицательную температуру. Объясните поподробнее плиз.

Re: Всё по DS18(B/S)20.

Добавлено: Вс мар 17, 2013 09:40:33
ChipKiller
Объясните поподробнее плиз.
... самое подробное "объяснение" можно получить скачав datasheet на DS18b20, который есть даже с русским переводом, и посмотреть формат хранения температуры....

Re: Всё по DS18(B/S)20.

Добавлено: Вс мар 17, 2013 10:14:26
Aid1992
ChipKiller писал(а):
Объясните поподробнее плиз.
... самое подробное "объяснение" можно получить скачав datasheet на DS18b20, который есть даже с русским переводом, и посмотреть формат хранения температуры....
Спасибо. Сейчас почитаю.

Re: Всё по DS18(B/S)20.

Добавлено: Вс мар 17, 2013 11:10:18
Aid1992
ChipKiller писал(а):... самое подробное "объяснение" можно получить скачав datasheet на DS18b20, который есть даже с русским переводом, и посмотреть формат хранения температуры....
Все равно не понял ничего. Прошу на пальцах объяснить.

Re: Всё по DS18(B/S)20.

Добавлено: Вс мар 17, 2013 13:12:42
ILYAUL
Чего не поняли? Каждое десятичное число можно представить в двоичном коде и наоборот. Тогда смотрите перевод из одной системы счисления в другую.

Re: Всё по DS18(B/S)20.

Добавлено: Вс мар 17, 2013 13:17:49
shads
Aid1992 писал(а):Все равно не понял ничего. Прошу на пальцах объяснить.
Тут почитай.....
http://www.digit-el.com/files/open/ds18x20/ds18x20.html

Re: Всё по DS18(B/S)20.

Добавлено: Вс мар 17, 2013 13:30:48
Аlex
Тоже никогда не понимал эти условия, вычитания, ... Датчик отдаёт температуру в нормальном виде, уложив которую побайтно в int16, получаем нормальное знаковое значение температуры, умноженное на 16 (при 12-ти битах). Остаётся только поделить её на 16 и получим температуру с десятыми.

Re: Всё по DS18(B/S)20.

Добавлено: Пн мар 18, 2013 14:36:45
Gudd-Head
Оффтоп в тему: :)
СпойлерИзображение