[an error occurred while processing this directive]
[an error occurred while processing this directive]
Ёщё одно западло от Микрософта
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive]
[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Отправлено
Вовка 27 февраля 2002 г. 07:22
|
|
|
|
Напомню: обсуждалась проблема зависания ОС (у меня стоит Вынь98) при восстановлении регистров COM-порта. Вот чё тут обнаружил:
1. По регистрам читаются все единицы, когда читаешь не по тому адресу. Типа задан COM1, а COM2 несуществует, дык вот по COM2 одни единички и читаются.
2. Кроме регистров COM-порта писать приходится и в контроллер прерываний, чтобы их (прерывания) разрешить. И вот тут-то гноем и полито! Далее события расписаны по шагам:
<запуск программы>
a) общий запрет прерываний.
b) сохраняю старые регистры COM-порта (все его прерывания запрещены).
c) устанавливаю свои.
d) в контроллере прерываний разрешаю прерывания заданного IRQ.
e) общее разрешение прерываний.
далее крутится терминальная прога, и вот чё на этапе выхода:
a) общий запрет прерываний.
b) восстанавливаю старые регистры COM-порта (все его прерывания запрещены).
d) в контроллер прерываний пишу его старое значение маски, где прерывание заданного IRQ ЗАПРЕЩЕНЫ.
СРАЗУ ПОСЛЕ ЭТОЙ ЗАПИСИ В РЕГИСТРЕ +1 COM-порта ВСТАЁТ БИТИК "РАЗРЕШЕНИЕ ПРЕРЫВАНИЯ ПРИЁМНИКУ"!!!
Какая сука это делает - можно только догадываться. Под ДОСей ЭТОГО не происходит.
Fix: надо СНАЧАЛА писать старую маску в контроллер прерываний, а ПОТОМ восстанавливать старые значения регистров COM-порта.
P.S. Господи! Какое у#бище это Intel и система команд его! Уму непостижимо! Зато 2 Гигагерца.
Составить ответ
|||
Конференция
|||
Архив
Ответы
- Программер упал в воду и тонет: "F1, F1! Esc!!! Ctrl+Alt+Del!!!!!!" — Xan (28.02.2002 12:28, пустое)
- Ответ: А может прежде чем ломать систему, стоит все-таки узнать, как она работает ? — trainer (27.02.2002 22:23, пустое)
- А у меня P3+Win2000. Отлично пашут Keil, COM, LPT, VB, VC++, IE и т.д. Грех жаловаться ! — User (27.02.2002 13:41, пустое)
- Да, тут Вовчик увлекся... — Sanders (27.02.2002 11:21, 534 байт)
- Ответ: Вы не совсем правы... — pacemaker (27.02.2002 10:03, 434 байт)
- Под виндой COM-порты программируются через API, то есть средствами самой системы. А вы про какие-то регистры и контроллер прерываний толкуете... — Elektronik (27.02.2002 10:03, пустое)
- Ну хорошо, раз у некоторых руки растут откуда надо, расскажите мне, почему ДОС приложения под W2K жутко тормозят — Castle (27.02.2002 09:32, пустое)
- все не так, просто руки у тебя из жопы растут — tyna (27.02.2002 09:27, пустое)
- Вопрос: — Vallav (27.02.2002 09:05, 325 байт)
- Да у пиков система команд лучшее!!! — Xan (28.02.2002 08:35, 47 байт)
- Так что же это за система команд, которая лучше INTEL?: — Vallav (27.02.2002 20:51, 170 байт)
- одновременно с 8086 появился 68000 - не нужно быть собаководом, чтобы почуствовать разницу — yes (27.02.2002 12:17, 531 байт)
- А вроде бы, когда делали первую писишку, 8088 был далеко не самым лучшим поцессором... ИБМ сделала удачную (откытую) архитектуру, а за этим все потянулось... И насчет ОС - У Маков гафический интерфейс был изначально и удобней Вин. А программы - крутой нелинейный видеомонтаж на паре дискет? Или Фотошоп на стольких же... — ZAlex (27.02.2002 10:28, 321 байт)
- подавляющее большинстВО! — Вовка (27.02.2002 10:17, 1472 байт)
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru