1-Wire на Lazarus
Модератор: Модераторы
1-Wire на Lazarus
Кто-нибудь пробовал на Lazarus посать код по работе с 1-Wire через COM-PORT? Есть-ли какие модули по реализации? Как организовать тайм-слоты длятельностью от 1мкс до 480мкс на Pascal? Я кроме GetTickCount и Sleep ничего не знаю, но они реализуют милисек., анужно микросек.
- Attid
- долгожитель
- Сообщения: 2588
- Зарегистрирован: 27.10.2006 17:29:15
- Откуда: 44°32′23.63″N 41°2′25.2″E
- Контактная информация:
Re: 1-Wire на Lazarus
windows and linux не системы реального времени, так что при загрузке интервалы поползут, мы ставим дополнительные контролеры которые получают команду по 232 а там уже работают с усройствами чуткими ко времени.
Re: 1-Wire на Lazarus
Вот схема без дополнительного микроконтролера 
Причем программа написанная разработчиком на Паскале, но библиотека работающая с COM-PORT под Windows и без исходника. http://arvresearch.nm.ru/owdrv/owdriver.dll
Значит на Lazarus есть реально возможность написать код управляющий 1-Wire.
Добавлено спустя 53 минуты 23 секунды:
к стати модуль "synaser" может чем-то помочь?
http://freepascal.ru/wiki/index.php?title=Synaser

Причем программа написанная разработчиком на Паскале, но библиотека работающая с COM-PORT под Windows и без исходника. http://arvresearch.nm.ru/owdrv/owdriver.dll
Значит на Lazarus есть реально возможность написать код управляющий 1-Wire.
Добавлено спустя 53 минуты 23 секунды:
к стати модуль "synaser" может чем-то помочь?
http://freepascal.ru/wiki/index.php?title=Synaser
- Attid
- долгожитель
- Сообщения: 2588
- Зарегистрирован: 27.10.2006 17:29:15
- Откуда: 44°32′23.63″N 41°2′25.2″E
- Контактная информация:
Re: 1-Wire на Lazarus
VirtUX писал(а):Значит на Lazarus есть реально возможность написать код управляющий 1-Wire.
есть, но просто знай что это не системы реального времени.
VirtUX писал(а):к стати модуль "synaser" может чем-то помочь?
может, с ним ты сможешь работать с компортом кросплатформенно, прокол общения с твоим устройством уже реализий поверх него.
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
Re: 1-Wire на Lazarus
Обмен с 1-Wire вполне возможен, если задержки будет определять сам COM порт, а не OC. На http://www.atmel.com есть документ "Application Note AVR318", в котором объясняется этот подход.
Synaser - более выскокоуровневый модуль, но он должен содержать все необходимое для самостоятельной реализации такого обмена (по сути, нужно задавать скорость порта и читать-писать по 1 байту).
Synaser - более выскокоуровневый модуль, но он должен содержать все необходимое для самостоятельной реализации такого обмена (по сути, нужно задавать скорость порта и читать-писать по 1 байту).
Re: 1-Wire на Lazarus
Sergei I. Gorelkin писал(а):по сути, нужно задавать скорость порта и читать-писать по 1 байту.
Идея такая:
Есть таблетка DS1971, есть интерфейс (схема выше), есть com-port.
Саммый продолжительный тайм-слот = 480 мкс (инициализация ведомого устройства). Далее обмен данными происходит по Битам начиная с младшего тайм-слотами по 120 мкс. При распозновании чтения "1" с таблетки нужно определить напряжение в промежутке с 13-ой мкс до 15-ой мкс в одном тайм-слоте. Или при использовании Synaser я могу не беспокоиться за это и использовать просто SendByte и RecvByte? 1 бод = чему?
PS. EnableRTSToggle(true); - переводит в полудуплекс?
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
Re: 1-Wire на Lazarus
Все ж написано в application note:
Порт настраивается на режим 8 бит, 1 стоп-бит, без паритета.
При записи/чтении скорость = 115200 бод, для записи единичного бита посылается значение 0xFF (длительность низкого уровня равна длине старт-бита), для записи нулевого бита - 0x00 (низкий уровень на время 9 бит). Для чтения также записывается 0xFF,при этом принятое значение 0xFF означает "единицу", а любое другое - "ноль" (и никого не парит, на какой микросекунде шина переключилась).
Сброс делается на скорости 9600 бод, передается байт 0xF0, при этом принятое значение 0xF0 означает отсутствие ответа, а любое другое значение - его наличие.
Порт настраивается на режим 8 бит, 1 стоп-бит, без паритета.
При записи/чтении скорость = 115200 бод, для записи единичного бита посылается значение 0xFF (длительность низкого уровня равна длине старт-бита), для записи нулевого бита - 0x00 (низкий уровень на время 9 бит). Для чтения также записывается 0xFF,при этом принятое значение 0xFF означает "единицу", а любое другое - "ноль" (и никого не парит, на какой микросекунде шина переключилась).
Сброс делается на скорости 9600 бод, передается байт 0xF0, при этом принятое значение 0xF0 означает отсутствие ответа, а любое другое значение - его наличие.
Re: 1-Wire на Lazarus
Sergei I. Gorelkin огромное спасибо за детальное объяснение!
Если честно я такого application note ни где не видел
Еще раз всем спасибо!
Если честно я такого application note ни где не видел
Еще раз всем спасибо!
Re: 1-Wire на Lazarus
А где это можно почитать в полном объеме?Sergei I. Gorelkin писал(а):Все ж написано в application note
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
