Страница 24 из 59
Re: Всё по DS18(B/S)20.
Добавлено: Вт мар 19, 2013 18:29:35
ibiza11
Спойлер
ахахахаха DS18B20, такой DS18B20
подпись к картинке - огонь!!!
Re: Всё по DS18(B/S)20.
Добавлено: Ср мар 20, 2013 12:31:24
Аlex
Мдя... Вот оно, доверие криворуким студентам, делающим всё за "бутылку пиво". И не дай бог в такие руки попадётся разработка какого-нибудь регулятора для опасного объекта

Re: Всё по DS18(B/S)20.
Добавлено: Вт мар 26, 2013 09:58:24
Coldheart
Долго уже читаю эту ветку.. Возник один вопрос..
А что, на Асме еще никто не пытался DS18B20 приручить?
Re: Всё по DS18(B/S)20.
Добавлено: Вт мар 26, 2013 09:59:56
Gudd-Head
Coldheart писал(а):А что, на Асме еще никто не пытался DS18B20 приручить?
Почему никто?

Да и какая, по-большому счёту разница, СИ или АСМ?
Re: Всё по DS18(B/S)20.
Добавлено: Вт мар 26, 2013 10:03:40
Gerik_PP
Умею только на Асме.
Re: Всё по DS18(B/S)20.
Добавлено: Вт мар 26, 2013 10:24:06
akl
Как
вариант, правда с "паразитным" питанием.
Re: Всё по DS18(B/S)20.
Добавлено: Вт мар 26, 2013 10:37:02
Аlex
В сети полно примеров с DS на АСМ. Вот, как вариант, библиотека 1-wire на АСМе, с примером чтеня температуры -
дынс
Re: Всё по DS18(B/S)20.
Добавлено: Вт мар 26, 2013 12:05:03
Coldheart
Gudd-Head писал(а):Да и какая, по-большому счёту разница, СИ или АСМ?
Для меня ближе и приятней Асм(на данном этапе изучения МК).
Даташтину перечитал раз 5, данный раздел форума тоже пересмотрел.
Как работает - понятно, как обращаться - тоже.
А откуда ноги растут у алгоритма работы с датчком не совсем понятно, тем более на Асме.
А здесь в основном примеры на СИ.
Re: Всё по DS18(B/S)20.
Добавлено: Вт мар 26, 2013 12:10:23
Gudd-Head
Coldheart писал(а):А откуда ноги растут у алгоритма работы с датчком не совсем понятно, тем более на Асме.
Опять же, какая разница? Даёте ресет, посылаете адресную команду и исполняемую команду. При необходимости принимаете байты. Например:
Код: Выделить всё
rcall OneWire_reset;
rcall OneWire_SkipROM;
rcall OneWire_ConvertT;
rcall OneWire_reset;
rcall OneWire_SkipROM;
rcall OneWire_ReadScratchpad;
rcall OneWire_read_byte;
...
Re: Всё по DS18(B/S)20.
Добавлено: Вт мар 26, 2013 12:35:44
IM1
Coldheart писал(а):Для меня ближе и приятней Асм(на данном этапе изучения МК).
Даташтину перечитал раз 5, данный раздел форума тоже пересмотрел.
Вот, посмотрите рабочий проект на TINY-13 с подробными комментариями. Все функции, включая подсчет КС. Правда на ЖК индикаторе от кассового аппарата, но для изучения датчика роли большой не играет. Если интересно, то могу выложить весь проект в 4 студии со схемами и картинками.
ПС
На вопросы отвечу.
Re: Всё по DS18(B/S)20.
Добавлено: Ср мар 27, 2013 18:53:12
Chelovek
Помогите разобраться с датчиком DS18b20. Ничего понять не могу. Как организовать связь между МК avr и датчиком на ассемблере? Я понял только то , что для начала нужно проверить подключен ли датчик, а дальше идет чтение, если подключен один датчик это команда чтения, если несколько то поиск. Но так же можно менять разрешение температуры, имеются регистры которые следят за максимальным и минимальным значением температуры. Дальше что делать я не знаю.
Re: Всё по DS18(B/S)20.
Добавлено: Ср мар 27, 2013 19:35:41
RoboC
А что на пост выше это не к АВР асм?Там и коменты вроде есть

. В сети есть русское описание датчика.
Re: Всё по DS18(B/S)20.
Добавлено: Ср мар 27, 2013 19:46:51
Chelovek
Читал я описание датчика. Там есть команды и их описание, но как их использовать я не понял. Для начала нужно найти датчик, определить что он подключен. Но как?
Re: Всё по DS18(B/S)20.
Добавлено: Чт мар 28, 2013 11:34:03
IM1
Chelovek писал(а):Читал я описание датчика. Там есть команды и их описание, но как их использовать я не понял. Для начала нужно найти датчик, определить что он подключен. Но как?
Читайте асм файл. Все работает, честное слово. Не надо искать датчик, если он один. Разрядность по умолчанию 12 бит, тоже ничего делать не надо. Стартуйте. Читайте датчик. Проверяйте КС, можете не проверять, но это не есть хорошо. Потом преобразуйте результат из двоичной формы в десятичную и на экран. Все.
Re: Всё по DS18(B/S)20.
Добавлено: Чт мар 28, 2013 14:58:52
Gudd-Head
Кто какой малый подтягивающий резистор ставил вместо 4,7 кОм? Тут вроде про 680 Ом говорили?...
Re: Всё по DS18(B/S)20.
Добавлено: Чт мар 28, 2013 16:49:50
Chelovek
Не могу я разобраться. Пересмотрел код раз 10. Что обозначает CRC? По описанию какой-то контроль избыточности. Какая последовательность действий при работе?
1) Прочитать значение с датчика
2) узнать + или -
3) обработка целой и дробной части
4) вывод на индикацию
Re: Всё по DS18(B/S)20.
Добавлено: Чт мар 28, 2013 17:20:41
Аlex
Gudd-Head писал(а):Кто какой малый подтягивающий резистор ставил вместо 4,7 кОм? Тут вроде про 680 Ом говорили?...
Я 680 Ом ставил. Работает уже год, вроде проблем нет никаких.
Re: Всё по DS18(B/S)20.
Добавлено: Чт мар 28, 2013 20:30:38
RoboC
Chelovek писал(а):Не могу я разобраться. Пересмотрел код раз 10. Что обозначает CRC? По описанию какой-то контроль избыточности. Какая последовательность действий при работе?
Сначала делаем это( reset):
На шине должно быть одно ведущее устройство (master-ВАШ МК) и одно или несколько ведомых (slave- DS18B20). При начале обмена данных, ведущий должен проверить наличие на шине хоть кого-то. Для этого мастер на протяжении 480мкс должен удержать логический ноль на шине (так называемый Reset pulse), «отпустить» шину минимум на 60мкс и посмотреть какой уровень присутствует на линии данных. Если это низкий уровень – на шине есть устройство 1-wire. Если высокий – шина пуста.
Пусто - входим, не пусто дальше делаем это:
Далее следует передать байт-команду устройствам. Для этого ознакомимся с принципом передачи данных по 1-Wire. Передача байта разбита на так называемые временные слоты (60-120мкс), один временной слот служит для передачи одного бита. Данные передаются последовательно, начиная с младшего бита.
передаем команды Skip Rom, Convert T
Ждем 1.1Сек(это зависит от установленной разрядности в ДС18Б20)
Добавлено:делаем еше раз Reset pulse
Команды Skip Rom, Read Scratchpad
Читаем 9 байт первые 2 -байты температуры, последний- контрольная сумма(КС или
CRC)
Считаем КС полученых байт(кроме последнего) и сравниваем с контрольной суммой(последний байт)
Если сошлось - обрабатываем 2 байта температуры и выводим на индикацию.
680 Ом - чтоб просто подогреть датчик

?
Re: Всё по DS18(B/S)20.
Добавлено: Чт мар 28, 2013 20:53:23
IM1
Chelovek писал(а):Не могу я разобраться. Пересмотрел код раз 10.
Вам все пытаемся объяснить, что нет ничего сложного. Вот и
RoboC расписал по пунктам. Собственно вот этот кусок ассемблера делает все в бесконечном цикле:
Код: Выделить всё
iii4:
; Работа:
rcall Init1wire
ldi outByte, 0xcc ; Skip Rom
rcall rw_byte
ldi outByte, 0x44 ; Convert T
rcall rw_byte
; задержка 1,3 сек
iii5:
tst count1
brne iii5
rcall Init1wire
ldi outByte, 0xcc ; Skip Rom
rcall rw_byte
ldi outByte, 0xbe ; Read Scratchpad
clr crc
rcall rw_byte
rcall rd_byte ; T LSB
mov r6, outByte
rcall do_crc ; вычисляем crc
rcall rd_byte ; T MSB
mov r7, outByte
rcall do_crc ; вычисляем crc
ldi temp2, 7
iii6:
rcall rd_byte
rcall do_crc ; вычисляем crc
dec temp2
brne iii6
tst crc
brne err
rcall cel
rcall mem_ind
ldi yl, 0x60
rcall ind_mem ; выводим память на индикатор
ldi temp, time
mov count1, temp ; заряжаем счетчик
rjmp iii4
Единственное отличие у меня от канонического, я не проверяю наличие датчика на линии (ответ устройства), т.к. Контрольная Сумма не совпадет в случае обрыва датчика и вместо температуры на индикаторе будет "Error". Что, по моему понятию, достаточно.
Спрашивайте лучше прямо по строкам, что непонятно. Так продуктивнее будет.
Re: Всё по DS18(B/S)20.
Добавлено: Пт мар 29, 2013 08:02:58
a_skr
RoboC писал(а):передаем команды Skip Rom, Convert T
Ждем 1.1Сек(это зависит от установленной разрядности в ДС18Б20)
Команды Skip Rom, Read Scratchpad
вполне достаточно 750 миллисекунд ожидания. хотя, существует мнение, что чем реже читать - тем меньше датчик будет нагреваться от этого самого чтения.
и перед "Skip Rom, Read Scratchpad" еще один "reset pulse".