1-Wire на Lazarus

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

1-Wire на Lazarus

Сообщение VirtUX » 19.05.2008 11:45:35

Кто-нибудь пробовал на Lazarus посать код по работе с 1-Wire через COM-PORT? Есть-ли какие модули по реализации? Как организовать тайм-слоты длятельностью от 1мкс до 480мкс на Pascal? Я кроме GetTickCount и Sleep ничего не знаю, но они реализуют милисек., анужно микросек.
Аватара пользователя
VirtUX
энтузиаст
 
Сообщения: 880
Зарегистрирован: 05.02.2008 10:52:19
Откуда: Крым, Алушта

Re: 1-Wire на Lazarus

Сообщение Attid » 19.05.2008 12:36:48

windows and linux не системы реального времени, так что при загрузке интервалы поползут, мы ставим дополнительные контролеры которые получают команду по 232 а там уже работают с усройствами чуткими ко времени.
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Re: 1-Wire на Lazarus

Сообщение VirtUX » 19.05.2008 12:55:00

Вот схема без дополнительного микроконтролера Изображение
Причем программа написанная разработчиком на Паскале, но библиотека работающая с COM-PORT под Windows и без исходника. http://arvresearch.nm.ru/owdrv/owdriver.dll
Значит на Lazarus есть реально возможность написать код управляющий 1-Wire.

Добавлено спустя 53 минуты 23 секунды:
к стати модуль "synaser" может чем-то помочь?
http://freepascal.ru/wiki/index.php?title=Synaser
Аватара пользователя
VirtUX
энтузиаст
 
Сообщения: 880
Зарегистрирован: 05.02.2008 10:52:19
Откуда: Крым, Алушта

Re: 1-Wire на Lazarus

Сообщение Attid » 19.05.2008 14:50:56

VirtUX писал(а):Значит на Lazarus есть реально возможность написать код управляющий 1-Wire.

есть, но просто знай что это не системы реального времени.

VirtUX писал(а):к стати модуль "synaser" может чем-то помочь?

может, с ним ты сможешь работать с компортом кросплатформенно, прокол общения с твоим устройством уже реализий поверх него.
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Re: 1-Wire на Lazarus

Сообщение Sergei I. Gorelkin » 19.05.2008 15:05:43

Обмен с 1-Wire вполне возможен, если задержки будет определять сам COM порт, а не OC. На http://www.atmel.com есть документ "Application Note AVR318", в котором объясняется этот подход.

Synaser - более выскокоуровневый модуль, но он должен содержать все необходимое для самостоятельной реализации такого обмена (по сути, нужно задавать скорость порта и читать-писать по 1 байту).
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1405
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: 1-Wire на Lazarus

Сообщение VirtUX » 19.05.2008 16:46:13

Sergei I. Gorelkin писал(а):по сути, нужно задавать скорость порта и читать-писать по 1 байту.

Идея такая:
Есть таблетка DS1971, есть интерфейс (схема выше), есть com-port.
Саммый продолжительный тайм-слот = 480 мкс (инициализация ведомого устройства). Далее обмен данными происходит по Битам начиная с младшего тайм-слотами по 120 мкс. При распозновании чтения "1" с таблетки нужно определить напряжение в промежутке с 13-ой мкс до 15-ой мкс в одном тайм-слоте. Или при использовании Synaser я могу не беспокоиться за это и использовать просто SendByte и RecvByte? 1 бод = чему?
PS. EnableRTSToggle(true); - переводит в полудуплекс?
Аватара пользователя
VirtUX
энтузиаст
 
Сообщения: 880
Зарегистрирован: 05.02.2008 10:52:19
Откуда: Крым, Алушта

Re: 1-Wire на Lazarus

Сообщение Sergei I. Gorelkin » 19.05.2008 17:58:24

Все ж написано в application note:

Порт настраивается на режим 8 бит, 1 стоп-бит, без паритета.
При записи/чтении скорость = 115200 бод, для записи единичного бита посылается значение 0xFF (длительность низкого уровня равна длине старт-бита), для записи нулевого бита - 0x00 (низкий уровень на время 9 бит). Для чтения также записывается 0xFF,при этом принятое значение 0xFF означает "единицу", а любое другое - "ноль" (и никого не парит, на какой микросекунде шина переключилась).
Сброс делается на скорости 9600 бод, передается байт 0xF0, при этом принятое значение 0xF0 означает отсутствие ответа, а любое другое значение - его наличие.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1405
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: 1-Wire на Lazarus

Сообщение VirtUX » 20.05.2008 08:59:39

Sergei I. Gorelkin огромное спасибо за детальное объяснение!
Если честно я такого application note ни где не видел :(
Еще раз всем спасибо!
Аватара пользователя
VirtUX
энтузиаст
 
Сообщения: 880
Зарегистрирован: 05.02.2008 10:52:19
Откуда: Крым, Алушта

Re: 1-Wire на Lazarus

Сообщение VirtUX » 21.05.2008 12:32:42

Sergei I. Gorelkin писал(а):Все ж написано в application note
А где это можно почитать в полном объеме?
Аватара пользователя
VirtUX
энтузиаст
 
Сообщения: 880
Зарегистрирован: 05.02.2008 10:52:19
Откуда: Крым, Алушта

Re: 1-Wire на Lazarus

Сообщение Sergei I. Gorelkin » 21.05.2008 13:59:42

Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1405
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 45

Рейтинг@Mail.ru