|
|
|
|
У меня тинька 2313. Боюсь только, что придется ее менять. В ходе экспериментов выяснилось, что кусок кода отвечающий за датчики отъедат от тиньковской памяти >70%. И это без какой-либо ее обработки, только считывание температуры! А еще переслать по модбасу надо... DIKLER, а где это датчики по 46 руб? Может там и все остально подешевле Я брал в Платане |
|
|
gan, Сергей К, спасибо, но с пиками я вообще дела не имел Хотелось бы, конечно, применительно к avr-кам |
|
|
Прораб счастья: кусок кода отвечающий за датчики отъедат от тиньковской памяти >70%. На асме должен поместиться. Алгоритм описан в даташите на датчик. http://invent-systems.narod.ru/_pdf/DS18B20_RU.pdf |
|
|
На сайте maxima есть APPLICATION NOTE 2420 "1-Wire Communication with a Microchip PICmicro Microcontroller" Достаточно подробно и понятно расписано. Использовал для DS1990 и DS1821. |
|
|
Прораб счастья: а где это датчики по 46 руб? Может там и все остально подешевле Я брал в Платане Ну платан это тоже чип-дип только вид с боку Я последнее время покупаю тут http://comlark.ru/ , единственное лучше позвонить и уточнить наличие. |
|
|
smg123, Sun525: Спасибо, эти доки у меня есть. Я думал, может уже у кого-нить есть рабочий код в точности (ну или очень) подходящий к моей задаче. Мне не лень самому разобраться. Проблема в другом: моя работа не связана с электроникой. После работы совсем немного времени остается на изучение. В выходные можно выкроить пару-тройку часов на это. И при условии, что опыта у меня мало, я буду разбираться с этими датчиками пару месяцев! Отсюда и желание разбираться с уже готовым и работающем устройством DIKLER: Я последнее время покупаю тут Спасибо! Посмотрю.
|
|
|
Прораб счастья: кусок кода отвечающий за датчики отъедат от тиньковской памяти >70% ОЗУ или ПЗУ? Если ОЗУ, то она освободится после отработки функции. Да и слишком много это.... или там (МК) памяти так мало? Собственно физическая работа предельно проста: Настриваем ногу на вход: получаем в линии +5В. Записываем в ногу "0" и настраиваем на выход - притягиваем линию к 0В (т.е. получаем лог. "0" в линии). Чтение - линия отпущена (нога на входе, естественно), смотрим логический уровень на этом входе (ноге) P.S. Линия подтягивается к +5В с помощью сопротивления 4,7к Все управляется одной ногой. Дальше просто смотрим на картинки с таймингами и переключаем ногу вход/выход Удачи |
|
|
Сергей К: Настриваем ногу на вход... Насколько я понял - речь не совсем об этом. Процедуры работы с одним устройством на шине просты и известны. Человеку нужен хотя бы кусок кода, осуществляющий поиск подключённых к шине устройств, запись в память их ID номеров и уже потом чтение данных со всех из найденных. |
|
|
Сергей К: Все управляется одной ногой Только нога должна быть с ОС. smg123: поиск подключённых к шине устройств Вроде бы, в протоколе 1-Wire существует команда последовательной выдачи ID от датчиков. Но лично я не видел, что бы кто-то с нею разобрался и применял на практике. Ну, можете ответить хотя бы на самый первый вопрос, как понять, какой именно датчик ответил? Поэтому используют обычную команду "считать ID". На неё отвечают все 1-Wire устройства на шине, поэтому использовать её можно только по очереди подключая датчики. Практическая реализация, видел только два пути: 1. Тупо, на стороннем девайсе считать ID датчика и вставить в программу (наиболее распространён). 2. Усложнять программу, вводя в неё алгоритмы считывания, но, опять-таки, необходимо последовательно, по очереди, подключать по одному датчику. Тут недавно, как-раз делал програмку для холодильника (правда для DS18S20). Выбрал второй пункт (кстати, тайминги организовал по прерываниям таймера, чего, в распространённых программах не встречал), так программа разрослась, "мама не горюй". |
|
|
Gregory: Только нога должна быть с ОС не обязательно. В моем примере я указал: в нормальном состоянии нога находится "на вход" (линия отпущенна), когда нужно притянуть линию к "0" переключаем ее на выход, при этом в защелку этой ноги должно быть занесенно лог. "0". Т.е. управляем линией переключением ноги на вход/выход а не подаем на нее 0/1. Gregory: тайминги организовал по прерываниям таймера не вижу смысла. Только таймер потерять. У меня все задерржки командами вроди delay_us(15) (задержка в 15 мкс). Gregory: Вроде бы, в протоколе 1-Wire существует команда последовательной выдачи ID от датчиков можно подключить один датчик к линии и спросить у него свой номер. Затем, по очереди, подключать остальные и сохранять эти номера. |
|
|
|
|