Всё по DS18(B/S)20.
- Реклама
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Всё по DS18(B/S)20.
Мдя... Вот оно, доверие криворуким студентам, делающим всё за "бутылку пиво". И не дай бог в такие руки попадётся разработка какого-нибудь регулятора для опасного объекта 

- Coldheart
- Прорезались зубы
- Сообщения: 244
- Зарегистрирован: Пт сен 10, 2010 20:39:32
- Откуда: Украина Луганская обл.
Re: Всё по DS18(B/S)20.
Долго уже читаю эту ветку.. Возник один вопрос..
А что, на Асме еще никто не пытался DS18B20 приручить?
А что, на Асме еще никто не пытался DS18B20 приручить?
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Всё по DS18(B/S)20.
Coldheart писал(а):А что, на Асме еще никто не пытался DS18B20 приручить?
Почему никто?
Да и какая, по-большому счёту разница, СИ или АСМ?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Gerik_PP
- Открыл глаза
- Сообщения: 59
- Зарегистрирован: Вт ноя 07, 2006 14:14:16
- Откуда: пос. Правдинский
- Контактная информация:
Re: Всё по DS18(B/S)20.
Умею только на Асме.
- Реклама
Re: Всё по DS18(B/S)20.
Как вариант, правда с "паразитным" питанием.
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Всё по DS18(B/S)20.
В сети полно примеров с DS на АСМ. Вот, как вариант, библиотека 1-wire на АСМе, с примером чтеня температуры - дынс
- Coldheart
- Прорезались зубы
- Сообщения: 244
- Зарегистрирован: Пт сен 10, 2010 20:39:32
- Откуда: Украина Луганская обл.
Re: Всё по DS18(B/S)20.
Gudd-Head писал(а):Да и какая, по-большому счёту разница, СИ или АСМ?
Для меня ближе и приятней Асм(на данном этапе изучения МК).
Даташтину перечитал раз 5, данный раздел форума тоже пересмотрел.
Как работает - понятно, как обращаться - тоже.
А откуда ноги растут у алгоритма работы с датчком не совсем понятно, тем более на Асме.
А здесь в основном примеры на СИ.
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Всё по DS18(B/S)20.
Coldheart писал(а):А откуда ноги растут у алгоритма работы с датчком не совсем понятно, тем более на Асме.
Опять же, какая разница? Даёте ресет, посылаете адресную команду и исполняемую команду. При необходимости принимаете байты. Например:
Код: Выделить всё
rcall OneWire_reset;
rcall OneWire_SkipROM;
rcall OneWire_ConvertT;
rcall OneWire_reset;
rcall OneWire_SkipROM;
rcall OneWire_ReadScratchpad;
rcall OneWire_read_byte;
...[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- IM1
- Грызет канифоль
- Сообщения: 268
- Зарегистрирован: Вт фев 16, 2010 12:10:38
- Откуда: Воронеж, Россия
Re: Всё по DS18(B/S)20.
Вот, посмотрите рабочий проект на TINY-13 с подробными комментариями. Все функции, включая подсчет КС. Правда на ЖК индикаторе от кассового аппарата, но для изучения датчика роли большой не играет. Если интересно, то могу выложить весь проект в 4 студии со схемами и картинками.Coldheart писал(а):Для меня ближе и приятней Асм(на данном этапе изучения МК).
Даташтину перечитал раз 5, данный раздел форума тоже пересмотрел.
ПС
На вопросы отвечу.
- Вложения
-
- ter1.asm
- (11.79 КБ) 245 скачиваний
Re: Всё по DS18(B/S)20.
Помогите разобраться с датчиком DS18b20. Ничего понять не могу. Как организовать связь между МК avr и датчиком на ассемблере? Я понял только то , что для начала нужно проверить подключен ли датчик, а дальше идет чтение, если подключен один датчик это команда чтения, если несколько то поиск. Но так же можно менять разрешение температуры, имеются регистры которые следят за максимальным и минимальным значением температуры. Дальше что делать я не знаю.
- RoboC
- Мудрый кот
- Сообщения: 1795
- Зарегистрирован: Ср апр 04, 2012 09:55:53
- Откуда: Северодонецк
- Контактная информация:
Re: Всё по DS18(B/S)20.
А что на пост выше это не к АВР асм?Там и коменты вроде есть
. В сети есть русское описание датчика.
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
Re: Всё по DS18(B/S)20.
Читал я описание датчика. Там есть команды и их описание, но как их использовать я не понял. Для начала нужно найти датчик, определить что он подключен. Но как?
- IM1
- Грызет канифоль
- Сообщения: 268
- Зарегистрирован: Вт фев 16, 2010 12:10:38
- Откуда: Воронеж, Россия
Re: Всё по DS18(B/S)20.
Читайте асм файл. Все работает, честное слово. Не надо искать датчик, если он один. Разрядность по умолчанию 12 бит, тоже ничего делать не надо. Стартуйте. Читайте датчик. Проверяйте КС, можете не проверять, но это не есть хорошо. Потом преобразуйте результат из двоичной формы в десятичную и на экран. Все.Chelovek писал(а):Читал я описание датчика. Там есть команды и их описание, но как их использовать я не понял. Для начала нужно найти датчик, определить что он подключен. Но как?
- Вложения
-
- Вид изнутри.jpg
- (44.15 КБ) 421 скачивание
-
- Термометр.jpg
- (25.5 КБ) 263 скачивания
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Всё по DS18(B/S)20.
Кто какой малый подтягивающий резистор ставил вместо 4,7 кОм? Тут вроде про 680 Ом говорили?...
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Всё по DS18(B/S)20.
Не могу я разобраться. Пересмотрел код раз 10. Что обозначает CRC? По описанию какой-то контроль избыточности. Какая последовательность действий при работе?
1) Прочитать значение с датчика
2) узнать + или -
3) обработка целой и дробной части
4) вывод на индикацию
1) Прочитать значение с датчика
2) узнать + или -
3) обработка целой и дробной части
4) вывод на индикацию
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Всё по DS18(B/S)20.
Я 680 Ом ставил. Работает уже год, вроде проблем нет никаких.Gudd-Head писал(а):Кто какой малый подтягивающий резистор ставил вместо 4,7 кОм? Тут вроде про 680 Ом говорили?...
- RoboC
- Мудрый кот
- Сообщения: 1795
- Зарегистрирован: Ср апр 04, 2012 09:55:53
- Откуда: Северодонецк
- Контактная информация:
Re: Всё по DS18(B/S)20.
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 Ом - чтоб просто подогреть датчик
Последний раз редактировалось RoboC Пт мар 29, 2013 08:28:29, всего редактировалось 1 раз.
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
- IM1
- Грызет канифоль
- Сообщения: 268
- Зарегистрирован: Вт фев 16, 2010 12:10:38
- Откуда: Воронеж, Россия
Re: Всё по DS18(B/S)20.
Вам все пытаемся объяснить, что нет ничего сложного. Вот и RoboC расписал по пунктам. Собственно вот этот кусок ассемблера делает все в бесконечном цикле:Chelovek писал(а):Не могу я разобраться. Пересмотрел код раз 10.
Код: Выделить всё
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Спрашивайте лучше прямо по строкам, что непонятно. Так продуктивнее будет.
Re: Всё по DS18(B/S)20.
RoboC писал(а):передаем команды Skip Rom, Convert T
Ждем 1.1Сек(это зависит от установленной разрядности в ДС18Б20)
Команды Skip Rom, Read Scratchpad
вполне достаточно 750 миллисекунд ожидания. хотя, существует мнение, что чем реже читать - тем меньше датчик будет нагреваться от этого самого чтения.
и перед "Skip Rom, Read Scratchpad" еще один "reset pulse".


