Пожалуйся на linuxfocus.org что бы всякой старье не писали. А то понимаешь ли новость была аж 3 октября 2001 года , а они в ноябре 2003 статью опубликовали. Да , и свои координаты оставь, что бы в следующий раз перед публикацией спрашивали у тебя, старье это или нет :)
Интереснее выцепить с DIMMки SMBus (ака i2c) и на нее прицепить i2c-шный датчик. Тогда можно будет с ним работать через линуховое i2c-шное API.
Кстати, в одном из Evaluation Board-ов Analog Devices на какой-то ихний i2c-шный чип так и было сделано. В комплекте шла DIMM-планка без микросхем. С нее шли провода с i2c и питанием.
> а кто-нить скажет, вот эту даллосовскую шину через что юзать? всмысле физически откуда ее в хомпе взять?
Нужен 1-wire контроллер. Например поддерживается usb контроллер DS9490. Можно еще организовать bit-banging через GPIO, но патчи для этого вроде как в дерево еще не вошли.
И чего там упростили-то? Мультимастер убрали? Так он и так редко используется. (Я - ни разу). Так-что я бы сказал SmBus - это и есть i2c.
На счет контроллера: По ссылке новости как раз и есть схема контроллера 1-wire через COM.
Про bit banging через GPIO: Не знаю, где у PC GPIO, но работать через него - хреново. Тормозить будет. Там на существенное время нужно прерывания запрещать.
Ладно, немного некорректно выразился. Множество команд smbus -- подмножество команд (вернее сочетаний команд) i2c.
> Так-что я бы сказал SmBus - это и есть i2c
smbus контроллер не может выдавать i2c команды, наоборот -- да.
> Про bit banging через GPIO: Не знаю, где у PC GPIO
Оооо, это вы зря ;-) Если хорошенько поискать, gpio контроллеры прилагаются в нагрузку ко многим чипам.
Например упомянутый уже товарищ Поляков использовал для своих опытов
gpio контроллер на видео-карте Matrox ;-)
> Тормозить будет. Там на существенное время нужно прерывания запрещать
Если читать температуру раз в секунду, то вполне сносно. А для быстрой полевой шины оно все равно не годится.
Нда.
Новость.
У меня 4 таких датчика на шине в комплекте с digitemp уже года полтора как температуру мониторят. За бортом, в администраторской,серверной и аккумуляторной. И через ИК передатчик из проекта LIRC на основе этих данных ведется управление кондиционерами.
> Про bit banging через GPIO: Не знаю, где у PC GPIO, но работать через него - хреново. Тормозить будет. Там на существенное время нужно прерывания запрещать.
Существуют драйвера для w1 over bttv GPIO, w1 over SuperIO GPIO, но в дерево они еще не вошли, как было выше подмечено.
Как это ни странно, но ничего не тормозит, во-первых, можно использовать lockless дизайн, во-вторых, можно использовать другие взаимоисключающие примитивы.
> во-первых, можно использовать lockless дизайн, во-вторых, можно использовать другие взаимоисключающие примитивы
Да не, там фишка в другом. Если случится прерывание посреди
выдачи 1-wire команды, тайминги поплывут, и устройство может
просто не понять команду.
Поэтому во время каждой команды надо запрещать все прерывания.
А так как команды там неспешные, то если их выдавать много и часто,
система будет долго находится в состоянии запрещенных прерываний,
что не очень хорошо скажется на ее общей производительности.
О чем собственно товарищ и хотел сказать.
Вообще, должен сказать, что такой способ подключения шины 1-Wire является пожалуй самым ненадежным и опасным.И уж конечно, ни на какие 300 метров это работать не будет. Вернее, не будет работать оно уже где-то на 10-20 метрах. Это первое.
Теперь второе. На самом деле, третий пин 18S20 саавсем не unused, а питание. Без него все сильно хуже и, опять-таки, расстояние и помехоустойчивость при использовании нормального питания сильно увеличивается.
Оптимальным на мой взгляд является использование конвертора RS-232 <-> 1-Wire, с ним у меня получалось оттянуть самое дальное устройство на 60 метров без сбоев в условиях к тому-же нестабильного питания. Всего устройств на шине было 9 штук.
При попытке использовать аналогичную схему возникал "звон" из-за емкости кабеля.
Отсутствеие запрета прерываний обусловлено тем, что протокол позволяет весьма широко варьировать любые временные задержки(а уж что вытворяет далласовская библиотека...), так что если прерывание случится во время непосредсвенно смены уровня сигнала, то отложенная смена не повлияет на протокол, если оно случится во время весьма длительного периода удержания линии, то тем более.
Конечно, это все предполагает, что никакой обработчик прерывания не будет отнимать время, сравнимое с длительностью команды( а это десятки микросекунд). Практика показала, что это верное предположение. Практика использования userspace библиотеки от Dallas показала это повторно.
В России _только_ контора "Платан" доставила мне образцы, но в полученном мною вскрытом конверте не были _ничего_ кроме бумаги от Dallas, в которой указывалось, что в этом конверте когда-то было.
Так что это только теоретический способ получения из-за границы в холодной России чего-то бесплатно.
>>Если хорошенько поискать, gpio контроллеры прилагаются в нагрузку ко многим чипам.
>А, вы про эти. Ну так это нестандартно. На одих компах одни чипы, на других другие. Лучше уж 1-wire over RS-232C ;)
А с каких пор регистры IDE контроллера стали стандартны для всех устройств?
Для каждого GPIO устройства можно написать драйвер мастера шины w1.
Так и сделано для SuperIO чипов(чьи интерфейсы/регистры описываются стандартом), но драйвер для SuperIO системы дожидается включения kernel connector, и для matrox DDC пинов, которые реализованы на GPIO.
w1 over RS-232, USB, LPT - это все в толй или иной степени надстройки над неким абстрактным GPIO, поддерживающим только определенный набор "команд", которые его "пины" могут выдавать.
"Платан" довольно-таки нормально прислал мне семплы 2490, 9490 и термометров. Причем От заказа через WWW до доставки мелкосхемы и градусников прошло где-то три недели, а до доставки готового девайса - около пяти недель.