Author |
Message |
masterspammer
Fanat
Joined: 13 Dec 2020 21:11 Posts: 86
|
Теперь осталось найти требуемые микросхемы (и выбрать вариант, конечно же) - вопрос - смогу ли уместиться на левую макетку к процессору (на фото позирует другая микросхема, но Z80 тоже есть) и оставить место для тактового генератора, если нет, то соберу часть, инвариантную к способу снятия сигнала (регистры, шифратор, если он будет), а выходные буферы/триггеры - уже для отдельных прерываний, приходящих извне.
|
31 Jan 2021 00:32 |
|
![](./styles/getaway/theme/images/spacer.gif) |
masterspammer
Fanat
Joined: 13 Dec 2020 21:11 Posts: 86
|
Не решаюсь отредактировать сообщение (был матёрый глюк с их дублированием), нашёл ошибку при перерисовывании схемы - сигнал IB должен браться с инверсного вывода триггера / регистра.
|
01 Feb 2021 23:38 |
|
![](./styles/getaway/theme/images/spacer.gif) |
Alekcandr
Doomed
Joined: 01 Oct 2007 10:30 Posts: 665 Location: Ukraine
|
Интересно. По первой схеме. Если вернутся в начало. За каждое прерывание отвечает один бит (INT1 – 000 0001, INT2 – 000 0010 и т.д.). Вроде нормально пока не прилетит два прерывания одновременно, тогда получится 000 0011 (вектор). И как на этот вектор реагировать программе? При условии, что прерывания подтверждаются сразу аппаратно автоматически на стороне источника (как я понял). А если одновременно прерываний будет 3...7?
_________________Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
|
02 Feb 2021 03:30 |
|
![](./styles/getaway/theme/images/spacer.gif) |
masterspammer
Fanat
Joined: 13 Dec 2020 21:11 Posts: 86
|
Тут надо (по причинам, которые станут понятнее чуть дальше) пихать не с нулевого бита, а, например со второго (точно будет хорошо). Тогда пусть у нас вектор будет 0000 0100 ... 1111 1100, а таблица такая: где INT_1 INT_2 INT_3... - обычные обработчики, а вот необычные - такие: или наоборот - вот именно так (порядком вызова в составных обработчиков) и реализуется любой приоритет без перепайки.. и так далее ...так до 6 прерываний, если поиграть с JR, то можно сделать и 7 (но через ![bye :obye:](./images/smilies/icon_byeicon.gif) ) Думал попробовать с дешифрацией (должно прикольно отщёлкивать триггеры по одному), да не нашёл ИВ1, а заказывать издалека влом.
|
02 Feb 2021 03:53 |
|
![](./styles/getaway/theme/images/spacer.gif) |
masterspammer
Fanat
Joined: 13 Dec 2020 21:11 Posts: 86
|
P.S. Если схему делать без аппаратного снятия сигналов, то вообще простая получается - буфер и логический элемент.
|
02 Feb 2021 04:00 |
|
![](./styles/getaway/theme/images/spacer.gif) |
masterspammer
Fanat
Joined: 13 Dec 2020 21:11 Posts: 86
|
Выше я напутал, глядя на mode 0, на самом деле подаются 7 бит, а в таблице не JP ADDR, а просто ADDR, так что легко получить честные 7 прерываний с софтовым приоритетом.
|
03 Feb 2021 05:20 |
|
![](./styles/getaway/theme/images/spacer.gif) |
Alekcandr
Doomed
Joined: 01 Oct 2007 10:30 Posts: 665 Location: Ukraine
|
Я сообразил ![:)](./images/smilies/icon_smile.gif) , не надо уточнений. Тема у нас ведь "Нетрадиционная обработка прерываний".
_________________Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
|
05 Feb 2021 04:10 |
|
![](./styles/getaway/theme/images/spacer.gif) |
masterspammer
Fanat
Joined: 13 Dec 2020 21:11 Posts: 86
|
![Reply with quote Reply with quote](./styles/getaway/imageset/en/icon_post_quote.gif)
Маленький постскриптум - ради чего это придумывалось (в том числе и в процессе обсуждения)
Во-первых, для возможности аппаратно конфигурировать устройство с шиной - если сделать параллельную шину с разъёмами, примерно как у RC2014, то на неё можно вывесить INT1, INT2... INT_ASK и установить конфигурацию джамперами (привет, ISA); для Daisy Chain надо вставлять устройства в определённой последовательности и замыкать пропуски.
Во-вторых, ради возможности подключать сильно разные источники прерывания; например, что-то Zilogовское, а что-то - самодельное. Делать свою реализацию Daisy Chain почему-то не хочется (будет не сильно проще, причём по экземпляру на устройство). Ограничиваться Zilogовскими контроллерами - тоже.
В третьих для собственно программной установки приоритета.
Что держалось в голове в качестве примерной конфигурации:
Условный COVOX (скорее всего тут максимальный приоритет); пара последовательных портов на Z85C3; параллельный порт на ВВ55; какой-нибудь таймер плюс ещё свободные прерывания на вырост. При этом не хочется заранее делать предположений о приоритетах свободных прерываний, да и те же последовательные порты при работе на разных скоростях имеют разную важность.
---- Где-то там же (скорее всего на буфере шины данных) нужно блокировать выставление вектора контроллером (если я не напутал и это не отключается программно), точнее - не читать ничего с шины данных, когда идёт чтение вектора с регистра ИРчто-то_там.
|
08 Feb 2021 20:07 |
|
![](./styles/getaway/theme/images/spacer.gif) |
apendix
Junior
Joined: 14 Feb 2022 16:22 Posts: 1
|
|
14 Feb 2022 16:29 |
|
![](./styles/getaway/theme/images/spacer.gif) |
masterspammer
Fanat
Joined: 13 Dec 2020 21:11 Posts: 86
|
Пардон, не отследил момент. Тут получилось попасть в два переезда подряд (в сумме всего км. на 20, но два раза это два раза), доперевожу запчасти. Максимум покупал детальки и продумывал логику. Так что актуально, но приторможено.
|
24 Oct 2022 03:18 |
|
|