Всё дело в том, что мне нужно иметь возможность подключать разное количество датчиков к устройству и чтобы оно само определяло сколько их и т.д.
Я хочу использовать команду Search ROM (0xF0), но не знаю как... Если кто знает, подскажите. Буду очень признателен!
[/quote]
Спасибо, но я не это имел ввиду. К сожалению с англоязычного даташита я толком ничё не понял, что представляет собой алгоритм вычисления количества датчиков и их серийников. Может у кого есть русскоязычная версия?
Спасибо, но я не это имел ввиду. К сожалению с англоязычного даташита я толком ничё не понял, что представляет собой алгоритм вычисления количества датчиков и их серийников.
а чего там понимать? там исходник программы на Си прилагается - пожалуйста, разбирайтесь или просто скопируйте и пользуйтесь
Последний раз редактировалось ARV Вт мар 17, 2009 12:42:31, всего редактировалось 1 раз.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Baloo ds18b20_init(&rom_code[i++][0],20,30,DS18B20_12BIT_RES)
вместо &rom_code[i++] ьщжно поставить число. и это будит номер датчика, допустим если тебе нужно переставить 2-ой датчик на 9 бит то можно написать ds18b20_init(1,20,30,DS18B20_9BIT_RES); если у тебя всего 1 датчик то 0 да и в этом случае нет необходимости искать датчики на линии. вобщем открой файл библиотеки для ds18b20 думаю поймешь что к чему.
IPS devices=w1_search(0xf0,rom_code); при этой ф-ции devices=количеству датчиков. а дальше как написал выше можно переводить на любой режим любой датчик. опрашивать температуру соотвественно temp=ds18b20_temperature(&rom_code[i][0]); где i номер вашего датчика. rom_code - массив где хроняться номера датчиков
rom_code[0][0] -первый
rom_code[1][0] - второй
rom_code[2][0] - третий
...
это мои наблюдения..может гдето не прав, но работает ))
Спасибо, друзья! Но я наверное не очень правильно объяснил Я не пишу на Си, а только на Ассемблере!!! Поэтому встроенные функции мне не подходят. Меня интересует "голая" теория о методе вычисления. В даташите есть алгоритм, но он не так прост, чтобы не владея английским, понять его описание...[/code][/quote]
В этой статье ни слова нет о вычислении количества датчиков и их серийников при помощи универсального метода, так как он довольно сложен и требует отдельной статьи!
Baloo писал(а):А почему-бы не перейти на Си? По-моему писать легче!
Писать легче, но привычка - вторая натура Я люблю на Ассемблере писать. Оптимальнее кода никогда не получишь на любом другом языке. Да и памяти в ATtiny2313 маловато, чтобы ею разбрасываться.
В этой статье ни слова нет о вычислении количества датчиков и их серийников при помощи универсального метода, так как он довольно сложен и требует отдельной статьи!
Возможно здесь найдете алгоритм определения серийников:
http://ibutton.ru/ p.s. все на "нашенском"
господи, ну неужели почитать даташит - непосильная задача?! просто надо результат 12-битовый поделить на 16 - и будет вам дробное значение температуры... и с десятыми, и с сотыми...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
А что неправильно в моем решении? Температуру кипящей воды получил 99,9. Свою померил - 36,4
Это если я правильно понял задачу, т.е. вывод на 7-сегментные индикаторы.
delay писал(а):А что неправильно в моем решении? Температуру кипящей воды получил 99,9. Свою померил - 36,4 Это если я правильно понял задачу, т.е. вывод на 7-сегментные индикаторы.
во-первых, вас устраивает? - значит, щастье пришло!
во-вторых, место вывода (7-сегментник или что-то иное), как мне кажется, решающей роли не играет...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...