информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медГде водятся OGRыАтака на Internet
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Microsoft прикрывает Visual Studio... 
 Умер Кевин Митник 
 Массовое внедрение вредоносного... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Варианты 22.09.03 20:04  Число просмотров: 1422
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> 2. Я свою первую прогу для СОМ порта написал только 4
> месяца назад - со всеми вытекающими отсюда ....
> Но кое-какие проблемы могу осветить:
> - была ситуация, когда не шли прерывания , если не очищать
> FIFO-буфер перед началом (я себе это так представил).
> Сюжет примерно следующий - сначала загружается прога,
> работающая с СОМ-портом без прерываний, а затем моя (с
> прерываниями) - прерывания у меня не шли. Причем если после
> перезагрузки загрузить первой мою прогу ,- прерывания шли
> нормально.
Возможно прерывания были просто запрещены. А если разрешены, то например FIFO был заполнен (или в случае отключенного FIFO - регистр RBR), и прерывание, сигнализирующее о приеме данных уже и так pend-илось и не срабатывало повторно (это я уже написал в другом посте). В виндовых дриверах, чтобы перезапустить пендящиеся прерывания используется следующий метод (рекомендую к использованию в собственных разработках):

ЗАПРЕТИТЬ ВСЕ ПРЕРЫВАНИЯ
РАЗРЕШИТЬ ВСЕ ПРЕРЫВАНИЯ

При разрешении запускаются прерывания, которые ждут обработки. Запрещение/разрешение производится через регистр IER (Interrupt Enable Register).

> - была ситуация, когда при одной разводке кабеля ("без
> готовности") программа работала, а при другой нет ("с
> готовностью") ,- не шли прерывания на прием.
А тут возможно не шли не прерывания, а сами данные. Не могу сказать точно, но если есть DTR-DSR или RTS-CTS и при этом приемник показывает что он не готов, то большинство передатчиков просто не будут посылать данные. И ясное дело не будет никаких прерываний. Возможно нужно было поднять DTR и CTS.

> 3. Я полностью в работе порта не разбирался (заработало у
> меня и ладно) + теоретик из меня никудышный ... ,- благо
> есть amirul, который и мне в свое время помог с СОМ портом
> разобраться.
Дык, я тоже не особо заморачивался - почитал Михаила Гука "Энциклопедия периферийных устройств PC" - там все понятно написано, хотя и сжато.
<programming> Поиск 






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2023 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach