Контроллер маскируемых прерываний

Документация, FAQ-и

Postby TS-Labs » Mon, 16.12.2013 06:32:05

В TS-Conf можно запрограммировать несколько источников маскируемого прерывания. Среди них:

- кадровый (frame, индекс 0),
- строчный (line, индекс 1),
- окончание DMA транзакции (dma, индекс 2).

Источник frame срабатывает, когда значение счетчиков растра совпадает с регистрами HSINT и VSINT. Источник line срабатывает в каждой строке, когда горизонтальный счетчик растра равен 0. Источник dma срабатывает после окончания любой транзакции DMA.

Каждый источник прерывания формирует сигнал ~INT и выставляет собственный байт D[7:0] на ШД в цикле ~IORQ || ~M1.

- $FF - кадровый,
- $FD - строчный,
- $FB - DMA.

В случае прихода нескольких событий одновременно, сначала обработается прерывание с меньшим индексом. При завершении ISR инструкциями EI : RET сразу произойдет обработка следующего по порядку ~INT, который разпознается в последнем машцикле инструкции RET.

Регистр конфигурации INTMask содержит биты разрешения индивидуального источника маскируемого прерывания, 0 - запрещен / 1 - разрешен. По ~RESET туда записывается значение $01: разрешен frame, все остальные запрещены. Если из ISR прерывания с меньшим приоритетом записать 0 в соответствующий бит маски источника прерывания, ожидающего в данный момент обработки, то произойдет его сброс и прерывание обработано не будет. Запись 1 не влияет на состояние ожидающего прерывания. Структура INTMask следующая:

бит 0, FRAME - разрешение источника frame,
бит 1, LINE - разрешение источника line,
бит 2, DMA - разрешение источника dma,
биты 3-7 - не используются, записывать 0.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby g0blinish » Mon, 16.12.2013 07:55:49

В натуре rocketscience :bang:
[x] No Screenshot
User avatar
g0blinish
Упырь говнофорума
 
Posts: 3641
Joined: Tue, 18.06.2013 10:59:01

Postby Sergey78 » Mon, 16.12.2013 09:07:18

Когда будет во всех кинотеатрах в анриле?
Sergey78
 
Posts: 422
Joined: Wed, 05.09.2012 20:04:40

Postby TS-Labs » Mon, 16.12.2013 09:11:58

Будет )
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby Grey » Mon, 16.12.2013 14:49:54

а с внешних устройств можно будет вектор выставлять ?
например NeoGS ?
Grey
 
Posts: 104
Joined: Fri, 29.11.2013 15:58:02

Postby TS-Labs » Mon, 16.12.2013 15:40:15

А вот думаю...

---

Докладаю: для начала, на NeoGS линия ~INT не заведена на хзбас. :1tooth:

---

Докладаю №2:
в канонічной прошиве для пентевы, как и в тсконфе, ~INT на фпга работает на вывод. Отсюда два вывода:
1. Альтера никак не опрашивает инт от внешних уст-в и не знает о нем.
2. Оба инта могут прийти одновременно, как и одновременное выставление вектора на ШД от ус-ва и из фпга - факап.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby LessNick » Mon, 16.12.2013 15:54:28

TS-Labs wrote:Докладаю: для начала, на NeoGS линия ~INT не заведена на хзбас.


физически (я имею ввиду недоработку ZXBUS) или идеологически, то есть дорожка есть, но не задействована?

TS-Labs wrote:Альтера никак не опрашивает инт от внешних уст-в и не знает о нем.


Я конечно понимаю, что это уже попахивает писизмом, но сделать можно? :)

TS-Labs wrote:Оба инта могут прийти одновременно, как и одновременное выставление вектора на ШД от ус-ва и из фпга - факап.


таки думаю приоритет должен быть у устройства, иначе проёб данных.
(∩。•o•。)っ.゚☆。・ TS-Conf для PentEvo — это классический Pentagon 128k для тех кто хочет больше!
User avatar
LessNick
грей сашу — сашу грей
 
Posts: 975
Joined: Thu, 26.07.2012 15:00:53
WEBSITE: http://fishbone.untergrund.net/

Postby TS-Labs » Mon, 16.12.2013 15:56:16

Физически не разведена.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby ZEK » Mon, 16.12.2013 22:37:09

TS-Labs wrote:~INT на фпга работает на вывод.

там пулапп есть, поэтому его можно как bidir настраивать
KOE сказал заработает, значит заработает. Он кандидат наук, а не радиолюбитель. (c) alone
User avatar
ZEK
 
Posts: 174
Joined: Mon, 10.06.2013 13:51:07

Postby TS-Labs » Mon, 16.12.2013 22:52:12

Я знаю, но это не решает проблему коллизий внутреннего и внешнего интов.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby amixgris » Thu, 03.04.2014 14:58:51

1.
TS-Labs wrote:сначала обработается прерывание с меньшим приоритетом

Здесь всё правильно? :)

2. Объясните, пожалуйста, в чём выгода от 8 векторов в пулле? Ведь для изменения обработчика прервываний, достаточно занести новый адрес в один единственный вектор: ld (vector),rp.
А для изменения обработчика с помощью выбора другого вектора, нужно сделать запись в порт: ld bc,port : out (c),r , что расточительней и по татктам и по байтам.

Может, если лишнее убрать, то высвободится логика для чего-нибудь более полезного, например NMI?
User avatar
amixgris
 
Posts: 161
Joined: Mon, 30.07.2012 03:22:48
LOCATION: Самара

Postby TS-Labs » Thu, 03.04.2014 16:46:51

amixgris wrote:Здесь всё правильно?

С меньшим индексом приоритета. Т.е. 0 раньше чем 1.
amixgris wrote:Объясните, пожалуйста, в чём выгода от 8 векторов в пулле? Ведь для изменения обработчика прервываний, достаточно занести новый адрес в один единственный вектор: ld (vector),rp.

В том, что 8 адресов могут быть забиты в таблицу, надо только поменять выбор одного из 8. Альтернатива: 1 адрес на источник, менять адрес в таблице. 2-е сейчас тоже работает.
amixgris wrote:А для изменения обработчика с помощью выбора другого вектора, нужно сделать запись в порт: ld bc,port : out (c),r , что расточительней и по татктам и по байтам.

Ну в общем да. Возможно, пул выпилю, если не понадобится.
amixgris wrote:Может, если лишнее убрать, то высвободится логика для чего-нибудь более полезного

Посмотрим.
amixgris wrote:например NMI

Какие идеи насчет NMI?
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Wed, 16.04.2014 07:34:15

amixgris: применил твою рацуху + пофиксал бред про приоритеты в мануалах :1tooth:
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby amixgris » Thu, 17.04.2014 11:53:18

TS-Labs wrote:amixgris: применил твою рацуху + пофиксал бред про приоритеты в мануалах

Еа! :pank:
User avatar
amixgris
 
Posts: 161
Joined: Mon, 30.07.2012 03:22:48
LOCATION: Самара

Postby amixgris » Thu, 17.04.2014 11:56:46

TS-Labs wrote:Какие идеи насчет NMI?

Я бы мог, сказать, что, например для какого-нибудь теневого суперотладчика. Но я точно знаю, что я его не напишу.
User avatar
amixgris
 
Posts: 161
Joined: Mon, 30.07.2012 03:22:48
LOCATION: Самара

Postby AndyD » Tue, 28.07.2015 10:17:45

amixgris wrote:Я бы мог, сказать, что, например для какого-нибудь теневого суперотладчика.

Да если просто STS прикрутить на NMI уже очень не плохо было бы.
User avatar
AndyD
 
Posts: 280
Joined: Thu, 21.05.2015 21:32:38

Postby TS-Labs » Tue, 28.07.2015 16:47:41

Можно. Я в децтве сто раз так делал =)
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby g0blinish » Tue, 28.07.2015 18:44:37

TS-Labs wrote:Можно. Я в децтве сто раз так делал =)

а я с помощью теневого ПЗУ:)
[x] No Screenshot
User avatar
g0blinish
Упырь говнофорума
 
Posts: 3641
Joined: Tue, 18.06.2013 10:59:01

Postby AndyD » Tue, 28.07.2015 21:30:40

g0blinish wrote:а я с помощью теневого ПЗУ:)

А я на скорпионе в децтве теневеком пользовался и про другие отладчики даже не думал,привык тогда к хорошему,сейчас мучаюсь ,подскажите как к ТС конфе прикрутить STS на NMI? с помощью теневого ПЗУ ,можно подробнее.
User avatar
AndyD
 
Posts: 280
Joined: Thu, 21.05.2015 21:32:38

Postby TS-Labs » Tue, 28.07.2015 22:56:57

Для начала я должен прикрутить НМИ к клавише - сейчас его нет.
Еще надо ввести какой то режим пейджинга, чтоб включалась нужная страница (необязательно из 0-3 ПЗУ) и могла потом выключаться назад.
Короче, приветствуются идеи. Как решим, так сразу зогпилю =)
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby idxi » Sat, 19.08.2017 23:35:05

Одно из возможных применений NMI, например, могла бы быть "удаленная" загрузка кода прямо в память и его старт, к примеру, посредством ZiFi (например, через инет..) и его запуск..

Второе "одно из" применений NMI могло бы быть, например, в виде как независимое программируемое прерывание NMI с разными тиками (таймеры, события.. ?(типа как в контроллерах :) )...?
User avatar
idxi
 
Posts: 179
Joined: Mon, 03.07.2017 16:54:54


Return to Manuals

Who is online

Users browsing this forum: No registered users and 0 guests

cron

x