информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Атака на InternetСтрашный баг в WindowsПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор 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 11:36  Число просмотров: 1537
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
<"чистая" ссылка>
> ФИФО на прерывания никак не влияет насколько мне известно
> (в том смысле, что отличие только в размере буфера 1 байт и
> 16). Влияет только регистр IER (interrupt enable register)
> и бит OUT2 в MCR (modem control register).

Я почему про ФИФО подумал - я ведь точно не знаю как оно работает, потому что документация под руки не попадалась. Думал, что наступает ситуация, когда должно возникнуть прерывание, но первое еще не обработано. Оно (второе) встает в очередь. После обработки первого нужно проверить очередь на наличие в нем отложенного прерывания, а я этого не делаю - не знаю как. Завершаю обработку первого и выхожу из обработчика. Все остальные сигналы продолжают вставать в очередь за вторым...

> Но. Возможно ты неправильно обрабатываешь само прерывание.
> Прерывание срабатывает только один раз и пока не будет
> обработано - следующее такое не придет. А в сочетании с
Подтверждение контроллеру посылаю. Если прерывание от изменения состояния порта - читаю регистр состояния, прерывание по получению данных - считываю их....
> приоритезацией прерываний, возможно ты обрабатываешь только
> самое высокоприоритетное прерывание и выходишь из
> обработчика. Бит 0 (No Interrupt Pending) в IIR (interrupt
> identification register) остается в 0 и прерывание не
> приходит, так как считается, что до сих пор обрабатывается
> старое.

А вот здесь чуть поподробнее.

> А вообще, опиши подробнее, что ты вообще делаешь - будет
> легче понять что ты делаешь не так.

Задача была следующая:
==================================================================
Нужен микропроцессорный контроллер. Два логических входа, один логический выход. На выход выставляется логическая единица при обнаружении логической единицы с первого логического входа. Время, в течение которого на выходе присутствует логическая единица, прямо пропорционально зависит от частоты сигналов на втором логическом входе.
Полезно иметь возможность менять микрокод перепрошивкой ПЗУ (флэш-память желательно). Так же полезно иметь возможность менять параметры: минимальное время присутствия логической единицы на логическом выходе и соотношение частоты логических сигналов на втором логическом входе и времени присутствия логической единицы на логическом выходе.
Минимальный интервал сигналов на первом входе ~5 миллисекунд, на втором ~1 миллисекунда. Максимальная дискретность выходных сигналов ~1 микросекунда. Минимальная частота обработки 1 мегагерц.
Предусмотреть выключение питания, стабилизатор питания от сети постоянного тока 12 вольт, сохранение работоспособности при питающем напряжении в диапазоне от 8 до15 вольт.
Интерфейс: Выход – напряжение питания, ток 3 ампера (до 5 ампер - уточняется), индуктивная нагрузка. Первый вход – 12 вольт активное состояние, управление по фронту, предусмотреть фильтрацию помехи (уточняется). Второй вход потребует усиление до ТТЛ, индуктивный датчик или слаботочный датчик, напряжение милливольты, ток микроамперы.
Возможен вариант: Время логической единицы на выходе имеет фиксированную величину (тоже предусмотреть возможность изменения), если сигнал с третьего логического входа имеет активное состояние, которое равно логическому нулю (замкнут на «землю»).
==================================================================
Перед тем как железяку делать, хотелось бы на писюке отладить.
Взял СОМпорт - есть два сигнала на вход, которые вызывают прерывание, два на выход, хотя хватает одного.
Перепрограммировал таймер под бОльшую частоту. Разумеется во столько же раз реже передаю таймерное прерывание старому обработчику. Ведется свой счетчик. При прерывании от СОМпорта вычитаю разницу счетчиков. В основной программе вывожу эту разницу - сколько раз тикнуло между прерываниями от СОМ порта. На СОМпорт подал сигнал от датчика вращения кулера (как раз 12 вольт и частота нормальная). Примерно в течение секунды чиселки на экране бегут (изменяются около какого-то значения), потом не изменяются ни на единичку.
<programming> Поиск 






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


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