IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

 
 Ответить  Открыть новую тему 
> Помогите пожалуйста. !
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 3

Репутация: -  0  +


Здравсвуйте!
Мне нужно выставить в последовательный порт
стробический сигнал.
Т.е. выставляем "1 " ждем n-кол-во микро-секунд.,
затем выставляем в порт "0" и опять ждёём.
Вопросы такие:
1. как выставить данные в последовательный порт?
2. как на паскале организовать задержку в 10 микро-секунд? (микро-секунда=10 в -6):;; мили= 10 в -3)
Заранее спасибо всем знатокам !
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 156
Пол: Мужской

Репутация: -  0  +


2) Никак. Стандартная PC поддерживает удовлетворительно задержки лишь больше 10 милисекунд. Если меньше, то нужна специализированная железяка, контроллер...

PS. Можно извратиться и получить задержку в 1..10 милисекунд, но ничего хорошего не получится, погрешности будут очень большие и интервал будет заметно плавать. О более мелких интервалах говорить бесполезно, они меньше интервала системного таймера. Можно использовать тики процессора, но они тоже будут тоже давать погрешности порядка 1000-10000%


--------------------
With the best regards Vit

Все всегда уезжают навсегда. Вернуться невозможно-вместо нас всегда возвращается кто-то другой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 3

Репутация: -  0  +


Ну а как выставить данные в последовательный порт?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4





Группа: Пользователи
Сообщений: 6

Репутация: -  0  +


Пауза в мкс реализована в такой простой процедурке (работает даже под "Форточками"):

PROCEDURE DelayMks(Del:longint);assembler;
asm
mov ah,86h {Функция микросекундной пазуы BIOS}
mov dx,word ptr Del {Del - пауза в мкс}
mov cx,word ptr Del+2
int 15h
end;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5





Группа: Пользователи
Сообщений: 6

Репутация: -  0  +


В дополнение ко вчерашнему (нужно было посмотреть):
Послать через регистр данных строб с такой частотой никак: даже при максимальной скорости это будет 6/115200 ~ 52 мкс. Но можно воспользоваться линиями RTS (7/4 ножки DP-9/25 ) или DTR (4/20 ножки) - они находятся в регистре контроля модема. Это будет выглядеть, примерно, так:

CONST
COM=1; {Например, COM1}
VAR
BaseAddr:array[1..4]of word absolute $0040:$0000;
{массив базовых адресов COM в BIOS}

{Меандр на RTS}
...
repeat
port[BaseAddr+4]:=$09;
DelMKS(10);
port[BaseAddr+4]:=$0B;
DelMKS(10);
until KeyPressed;

Леонид.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6





Группа: Пользователи
Сообщений: 6

Репутация: -  0  +


Уважаемый Алексей, по поводу Ваших вопросов:
1.WORD PTR обозначает только уточнение размерности: Del имеет длину 4 байта, а мы пересылаем его по кускам в 2 байта. Ассемблер, гад, недоверчивый и ему этот момент надо подтвердить.

2. в какое место в программе на паскале можно вставлять эту процедуру?
В любое до первого обращения к ней. Желательно не вкладывать в другую процедуру.

3. и так же прошу более подробного разьяснеия (для полу-чайника) по поводу второй проги.
Извиняюсь, там небольшая плюха:
CONST 
COM=1; {Например, COM1}
VAR
BaseAddr:array[1..4]of word absolute $0040:$0000;
{массив базовых адресов COM в BIOS}

{Меандр на RTS}
...
repeat
port[BaseAddr[COM]+4]:=$09;
DelayMKS(10);
port[BaseAddr[COM]+4]:=$0B;
DelayMKS(10);
until KeyPressed;


Этот фрагмент будет гнать 50 КГц меандр по линии RTS (4 контакт на 25-штырьковом разъеме или 7 на 9-штырьковом) порта COM1, пока не будет нажата какая-либо кнопка. Массив BaseAddr перекрывает системную область памяти (кстати, доступ к ней разрешен и под "Форточками" - селектор 40h открыт для общего доступа), в которой находятся базовые адреса последовательных портов. По смещению 4 находится регистр управления модема, который как раз использует служебные линии COM. Меняя задержки между обращениями к порту, можно получить сигнал любой формы.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7





Группа: Пользователи
Сообщений: 3

Репутация: -  0  +


2 LEO :
Многоуважаемый LEO !
Огромне спасибо за ваши рациональные,
терпеливые ответы!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






апять спасибой все закончилось.....
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 10

Репутация: -  0  +


а чем же ещё это должно было закончиться?!


--------------------
а ничего заумного не дождётесь=)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


...
*****

Группа: Пользователи
Сообщений: 1 347
Пол: Мужской

Репутация: -  3  +


баксы :) :) :))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Пионер
**

Группа: Пользователи
Сообщений: 136
Пол: Мужской

Репутация: -  0  +


Цитата
баксы smile.gif smile.gif smile.gif)

А сами говорите, что надо "помогать ближнему своему" и присём безвозмездно... эх вы... 8)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


...
*****

Группа: Пользователи
Сообщений: 1 347
Пол: Мужской

Репутация: -  3  +


Ха-ха....да шучу я! :)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Пионер
**

Группа: Пользователи
Сообщений: 136
Пол: Мужской

Репутация: -  0  +


Да я блин тоже... ;D
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 




- Текстовая версия 18.12.2017 4:33
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"