реклама на сайте
подробности

 
 
> Свой драйвр для COM
Timofey
сообщение Dec 14 2010, 02:06
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 119
Регистрация: 3-07-06
Пользователь №: 18 528



В силу ряда причин пишу свой драйвер для встроенных в материнку COM портов. Возникло несколько вопросов:
1. Читал, что через биос можно узнать адреса стандартных портов, путем чтения данных по адресу 0040h. Читаю от туда данные, а они постоянно меняются. Верен ли адрес? Где вобще можно узнать адреса стандартных портов?
2. В системе есть один порт с ресурсами 0x3F8-0x3FE, читаю эти адреса, а там одни фф. Получается порт не исправен? Или он на самом деле лежит по другим адресам? Запись других значений ничего не дает, там по прежнему лежат ФФ. Может это из-за того, что порт на самой плате внутри корпуса на разъем выведен (не сзади системника стандартный ДБ9) и он все таки по другим адресам в памяти?
3. На домашнем компе при выполнении пункта 2 вижу нормальные, адыкватные числа. Порт настраивается. Теперь хочу перехватить прерывание. В каких то случаях получается прерывание настроить на свою программу, в каких то нет, возвращается ошибка параметров. Удачный перехват происходит только если в диспетчере задач выключить порт и снова включить. тогда без проблем. до следующей перезагрузки. Можно ли как то этого избежать?

Сообщение отредактировал Timofey - Dec 14 2010, 02:51
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
firstvald
сообщение Dec 15 2010, 15:54
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 580
Регистрация: 3-06-08
Пользователь №: 38 041



Посылайте всех нах.

Документ: Modbus_over_serial_line_V1_02 (это хелпик к одному из приборов, я там и спецификации пристегнул)
пункт 2.5.1.1.

Remark :
The implementation of RTU reception driver may imply the management of a lot of interruptions due to the t1.5 and t3.5 timers. With
high communication baud rates, this leads to a heavy CPU load. Consequently these two timers must be strictly respected when the
baud rate is equal or lower than 19200 Bps. For baud rates greater than 19200 Bps, fixed values for the 2 timers should be used: it is
recommended to use a value of 750μs for the inter-character time-out (t1.5) and a value of 1.750ms for inter-frame delay (t3.5).

Для скоростей превышающих 19200 два фиксированных значения ДОЛЖНЫ быть использованы : рекомендуется использовать для межсимвольного тайм аута значение 750 мкс в качестве t1.5 и значение 1.75 для межкадровой задержки (t3.5).

А на практике в компьюторе никто время считать не умеет. Крепко теоретически можно завести мультемедийный таймер и сдвинуть процессу максимальный приоритет, но в компе есть сетка 1 мс временных интервалов и все. А уж заставить винду каждую миллисекунду чего-то делать - сизифов труд. Это все глупости. При приеме RTU можно воспользоваться без особого гемора возможностями UART, он от рождения аппаратно отслеживает 3.5 временные интервалы между байтами. Но точно сделать вы врядли сможете.

В том же документ указано: по мньшей мере 3.5 мс.

Мы в своих приборах в руководстве приводим табличку в которой пишем вменяемые цифры межкадрового временного интервала.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Timofey   Свой драйвр для COM   Dec 14 2010, 02:06
- - V_G   Если упоминается диспетчер задач, стало быть, под ...   Dec 14 2010, 03:22
- - Timofey   Да, под винду ХР СП2 пишу.   Dec 14 2010, 03:25
- - adnega   Может в Вашем случае и не обязательно обращаться в...   Dec 14 2010, 03:51
- - Timofey   Все дело в том, что программа будет стоять на комп...   Dec 14 2010, 03:56
|- - XVR   Цитата(Timofey @ Dec 14 2010, 06:56) Все ...   Dec 14 2010, 08:01
|- - singlskv   Цитата(Timofey @ Dec 14 2010, 09:56) з.ы....   Dec 17 2010, 19:25
|- - Timofey   В модбасе конец посылки обозначает пауза 1,5 байта...   Dec 18 2010, 02:02
|- - firstvald   Цитата(Timofey @ Dec 18 2010, 08:02) В мо...   Dec 18 2010, 11:33
|- - singlskv   ЦитатаRS-485 с аппаратным RTSЕсли с аппаратным RTS...   Dec 18 2010, 20:28
- - Demeny   Цитата(Timofey @ Dec 14 2010, 05:06) 1. Ч...   Dec 14 2010, 04:39
|- - Timofey   Цитата(Demeny @ Dec 14 2010, 09:39) Адрес...   Dec 14 2010, 04:46
- - Timofey   Да я знаю, что очень точно время считать все равно...   Dec 14 2010, 13:38
|- - _Pasha   Цитата(Timofey @ Dec 14 2010, 16:38) Да я...   Dec 14 2010, 13:43
- - Timofey   я такого в инете не нашел, но начальство сказало с...   Dec 14 2010, 13:44
- - firstvald   Если уж взялись за modbus RTU, то используйте об...   Dec 15 2010, 11:18
- - Timofey   Таймауты там задаются в мс, мне же надо аж мксек в...   Dec 15 2010, 12:43
- - Timofey   В ТЗ есть ремарка, что мол да, это противоречит ст...   Dec 16 2010, 04:04
- - firstvald   Ха! Не удивляюсь. Даже разработчики модбаса ...   Dec 16 2010, 07:32
- - Timofey   Прога будет стоять на мониторе, где крутится Windo...   Dec 16 2010, 07:38
- - firstvald   Смотрите. Прежде всего устройство должно уметь в ...   Dec 16 2010, 08:56
- - Timofey   В этой системе уже стоят 20 устройств, одно из кот...   Dec 16 2010, 09:56
|- - _Pasha   Цитата(Timofey @ Dec 16 2010, 16:56) Сейч...   Dec 16 2010, 15:17
- - firstvald   Да там такую хрень замутили, что все чихать потом ...   Dec 17 2010, 06:19
- - XVR   В принципе на уровне драйвера можно обеспечить тре...   Dec 17 2010, 06:27
- - firstvald   Так мне и рекламация такая была: а чё музыку низзя...   Dec 17 2010, 11:49


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 04:37
Рейтинг@Mail.ru


Страница сгенерированна за 0.04324 секунд с 7
ELECTRONIX ©2004-2016