реклама на сайте
подробности

 
 
> Внешний контроллер прерываний
prottoss
сообщение Mar 5 2007, 17:11
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Hi All!

Есть ли в природе внешние контроллеры прерываний типа 8259, только, может, более современные. Есть необходимость использовать таковой с ATmega128, т.к. практически все внешние линии INTx прерываний задействованны под другие функции


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SasaVitebsk
сообщение Mar 6 2007, 12:28
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(prottoss @ Mar 6 2007, 12:27) *
Хотелось бы иметь девайс, который бы генерил прерывание и хранил бы в своих регистрах номер прерывания etc. Обработчик прерывания в МК обращался бы к контроллеру, считывал бы спокойно что ему надо из внутренних регистров и решал бы, что делать дальше.


Плис в данном случае не нужна. Вот схема обрабатывающая 8 каналов прерывания по срезу. Регистр типа ИР23 или ИР37. Вы получаете Int0 и можете с порта (если сигнал /RD постоянно в 0) прочитать источник. Если свободных портов нет, то вы можете повесить всё это на шину данных параллельно внешнему ОЗУ к примеру. В этом случае надо добавить ещё схему И или дешифратор адреса(к примеру на ИД7) для формирования обращения к устройству. Таким образом данная схема ног занимать не будет и будет читаться как внешняя ячейка памяти, расположенная по определённому адресу.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
prottoss
сообщение Mar 6 2007, 12:49
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(SasaVitebsk @ Mar 6 2007, 16:28) *
Плис в данном случае не нужна. Вот схема обрабатывающая 8 каналов прерывания по срезу.
Угу... Только если придут два прерывания подряд с периодом, меньшим, чем время реакции МК на прерывание, то про первое можно забыть, так как второе его затрет


--------------------
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Mar 6 2007, 13:15
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Про захват шины загнули, конечно...
Сигнал INTA работает как признак, означающий, что контроллеру нужно передать вектор.
И микроконтроллер своей логикой сразу после сохранения старого значения счетчика команд помещает этот вектор в счетчик команд.
При использовании неподдерживающего этот режим микроконтроллера все нужно реализовывать программно - прочитать вектор, и ручками перейти по этому адресу. Время, затраченное на вызов прерывания, будет намного больше независимо от того, на чем контроллер делать - на ПЛИС, использовать старый из мусорки или что-то еще.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
_Bill
сообщение Mar 7 2007, 17:12
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219



Цитата(Dog Pawlowa @ Mar 6 2007, 13:15) *
Про захват шины загнули, конечно...
Сигнал INTA работает как признак, означающий, что контроллеру нужно передать вектор.
И микроконтроллер своей логикой сразу после сохранения старого значения счетчика команд помещает этот вектор в счетчик команд.

В порядке уточнения. Вектором прерывания принято называть любую информацию от периферийного устройства, которая позволяет идентифицировать источник запроса на прерывание. В частности, такой информацией может быть специальная инструкция типа RST или CALL, которая действительно может быть передана в счетчик команд процессора. Именно эти команды выдает контроллер прерываний типа 8259 в ответ на выдачу процессором сингнала подтверждения прерывания INTA.
В других случаях, в качестве вектора прерывания может быть использовано смещение относительно начала таблицы векторов прерывания. В этих случаях в счетчи команд заносится соответсвующи адрес, выбираемый из таблицы векторов.
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Mar 7 2007, 21:49
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Последним постом вы сами себя и опровергаете. Команда CALL и команда RST (RST0-RST7 кстати).

Цитата(_Bill @ Mar 7 2007, 18:12) *
В порядке уточнения. Вектором прерывания принято называть любую информацию от периферийного устройства, которая позволяет идентифицировать источник запроса на прерывание. В частности, такой информацией может быть специальная инструкция типа RST или CALL, которая действительно может быть передана в счетчик команд процессора. Именно эти команды выдает контроллер прерываний типа 8259 в ответ на выдачу процессором сингнала подтверждения прерывания INTA.
В других случаях, в качестве вектора прерывания может быть использовано смещение относительно начала таблицы векторов прерывания. В этих случаях в счетчи команд заносится соответсвующи адрес, выбираемый из таблицы векторов.


Не надо передёргивать. НИКОГДА КОМАНДА НЕ ЯВЛЯЛАСЬ ВЕКТОРОМ. Действительно не плодите безграмотность. Вдумайтесь что вы пишете:
Цитата
...инструкция типа RST или CALL, которая действительно может быть передана в счетчик команд процессора

На экзамене за такое ставят 2 бала без дополнительных вопросов. Вы вообще себе счётчик команд представляете? Если представляете зачем пишете ахинею?

Цитата
Быть может, какие-то извращенцы и использовали его для передачи в микроконтроллер других команд. Если Вы настаиваете на значимости этого факта, и найдете случаи такого использования, не буду с Вами спорить.

Я настаиваю на значимости данного факта. Это вполне увязывается с моими постами о примитивности построения данного микропроцессорного комплекта. Я не пробовал подсовывать МП другие команды. Но думаю, что они бы выполнились.
Ещё раз повторяю, что остальные базовые микросхемы комплекта (речь идёт о 8080) оставляли такое же ощущение. (Простоты решения)
Go to the top of the page
 
+Quote Post
_Bill
сообщение Mar 9 2007, 17:03
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219



Цитата(SasaVitebsk @ Mar 7 2007, 21:49) *
Последним постом вы сами себя и опровергаете. Команда CALL и команда RST (RST0-RST7 кстати).

Не надо передёргивать. НИКОГДА КОМАНДА НЕ ЯВЛЯЛАСЬ ВЕКТОРОМ. Действительно не плодите безграмотность. Вдумайтесь что вы пишете:
Цитата

...инструкция типа RST или CALL, которая действительно может быть передана в счетчик команд процессора

На экзамене за такое ставят 2 бала без дополнительных вопросов. Вы вообще себе счётчик команд представляете? Если представляете зачем пишете ахинею?


На самом деле все именно так, как я написал. Команда RST N или команда CALL ISR_N как раз и являются векторами прерывания. Эти команды выдаются контроллером прерывания в ответ на сигнал INTA от процессора. И если говорить об I8080 (I8086), то система прерываний у него была сделана таким образом, что при получении сигнала запроса на прерывание процессор вместо выборки очередной команды (обращения к памяти) процессор входит в цикл прерывания, ожидая от внешнего контроллера соответствующей инструкции.
Хочу добавить, что до появления контроллера 8259 существовал контроллер прерываний I3014 (наш аналог - 589ИК14). В отличие от 8259 он не был программируемым и мог выдавать только инструкции RST N, причем значение N было жестко связано с уровнем прерывания. Приоритеты прерываний были жестко фиксированы и не могли быть изменены. 8259 был уже программируемым. Программно можно задавать не только тип генерируемой команды (RST или CALL), но и менять динамически менять уровни запросов на прерывания, маскировать отдельные запросы и т.д. и т.п.
Насчет счетчика команд. Когда выполняется инструкция типа call или jmp, то их основное назначение изменить последовательность выполнения программы. Разница состоит лишь в том, что при выполнении call старое значение счетчика команд запоминается для последующего возврата в текущую точку. А в счетчик команд записывается новый адрес, по которому передается управление в программе. Если Вы не знаете этих элементарных вещей, то советую прочитать литературу по принципам работы компьютеров или хотя бы для конкретного процессора. Ниже привожу цитату из документа doc0856.pdf фирмы Atmel:
Цитата
CALL - Long Call to a subroutine
Description:
Calls to a subroutine within the entire Program memory. The return address (to the instruction after CALL) will be stored onto the Stack. (See also RCALL).
....
Operation:
PC <- K
....
Syntax:
CALL K

Здесь PC - Program Counter (программный счетчик, он же счетчик команд). И вообще, читайте книги - источник знаний.
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Mar 9 2007, 22:59
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(_Bill @ Mar 9 2007, 18:03) *
Цитата(SasaVitebsk @ Mar 7 2007, 21:49) *

Не надо передёргивать. НИКОГДА КОМАНДА НЕ ЯВЛЯЛАСЬ ВЕКТОРОМ. Действительно не плодите безграмотность. Вдумайтесь что вы пишете:

...инструкция типа RST или CALL, которая действительно может быть передана в счетчик команд процессора


Вы привязались к моей терминологии, я вам указал на вашу.

Инструкция не может быть передана в счётчик команд! Это приведёт к вылету! В счётчик команд может быть передан только АДРЕС (то бишь вектор)!!! Это разные вещи! Принципиально разные!

Здесь можно было бы употребить термин, - инструкция типа ... выполняется микропроцессором.

Дело в том, что если вы не видете разницы, то я её вижу. Если можно ещё сослаться, что при исполнении инструкции CALL, МП пропускает код команды, а адрес записывает в счётчик команд, то с инструкцией RST - этот номер не проходит. Так как вектор закодирован в коде команды. Пусть и несложно. Любой здравомыслящий - это ясно видит.

Я прекрасно знаю принципы, не приводите разные документы себе в оправдание.
Вы сами пишете
Цитата
процессор входит в цикл прерывания, ожидая от внешнего контроллера соответствующей инструкции.


Так определитесь наконец ИНСТРУКЦИЯ или ВЕКТОР.
Go to the top of the page
 
+Quote Post
mse
сообщение Mar 10 2007, 13:15
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693



Цитата(SasaVitebsk @ Mar 9 2007, 22:59) *
Так определитесь наконец ИНСТРУКЦИЯ или ВЕКТОР.

Инструкцыя, инструкцыя...;О) Вместо текущей команды по ШД подсовывалась ИНТх, либо, как в 59безА, CALLxxxx.
Билл имел в виду, что команда ИНТх имела фиксированные вектора в памяти. А 59 можно было программаровать куды хош.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- prottoss   Внешний контроллер прерываний   Mar 5 2007, 17:11
- - Alex_Pol   Цитата(prottoss @ Mar 5 2007, 16:11) Hi A...   Mar 5 2007, 17:36
|- - prottoss   Цитата(Alex_Pol @ Mar 5 2007, 21:36) Цита...   Mar 5 2007, 17:39
- - GDI   Новые меги имеют прерывания на ВСЕХ ногах, наприме...   Mar 5 2007, 19:08
|- - Dopler   Цитата(GDI @ Mar 5 2007, 19:08) Новые мег...   Mar 5 2007, 19:15
|- - prottoss   Цитата(GDI @ Mar 5 2007, 23:08) Новые мег...   Mar 5 2007, 19:16
- - zltigo   Цитата(prottoss @ Mar 5 2007, 16:11) Есть...   Mar 5 2007, 20:10
|- - prottoss   Цитата(zltigo @ Mar 6 2007, 00:10) Цитата...   Mar 5 2007, 20:43
|- - prottoss   Цитата(zltigo @ Mar 6 2007, 00:10) Цитата...   Mar 5 2007, 20:58
||- - SasaVitebsk   Цитата(prottoss @ Mar 5 2007, 21:58) Цита...   Mar 5 2007, 23:58
||- - prottoss   Цитата(SasaVitebsk @ Mar 6 2007, 03:58) П...   Mar 6 2007, 11:27
|- - tag   Цитата(zltigo @ Mar 5 2007, 20:10) Цитата...   Mar 7 2007, 13:26
- - bomick   Цитата(prottoss @ Mar 5 2007, 17:11) Hi A...   Mar 5 2007, 21:46
- - Alex_Pol   Вот описания работы программируемого контроллера п...   Mar 5 2007, 22:41
|- - Nanobyte   Цитата(Alex_Pol @ Mar 5 2007, 22:41) ... ...   Mar 6 2007, 00:01
|- - SasaVitebsk   Цитата(Nanobyte @ Mar 6 2007, 01:01) Да п...   Mar 6 2007, 00:14
|- - Alex_Pol   Цитата(Nanobyte @ Mar 5 2007, 23:01) Да п...   Mar 6 2007, 04:43
|- - prottoss   Цитата(Dog Pawlowa @ Mar 6 2007, 17:15) П...   Mar 6 2007, 14:01
|- - muravei   Цитата(Dog Pawlowa @ Mar 6 2007, 13:15) И...   Mar 6 2007, 15:06
||- - m16   Цитата(muravei @ Mar 6 2007, 15:06) А бер...   Mar 6 2007, 15:15
|||- - Dog Pawlowa   Цитата(m16 @ Mar 6 2007, 16:15) Цитата(mu...   Mar 6 2007, 15:59
|||- - Nanobyte   Цитата(Dog Pawlowa @ Mar 6 2007, 15:59) ....   Mar 6 2007, 17:00
||- - prottoss   Цитата(muravei @ Mar 6 2007, 19:06) Цитат...   Mar 6 2007, 15:30
||- - Alex_Pol   Цитата(prottoss @ Mar 6 2007, 14:30) Пода...   Mar 6 2007, 16:22
|- - SasaVitebsk   Цитата(Dog Pawlowa @ Mar 6 2007, 14:15) П...   Mar 6 2007, 20:42
||- - Dog Pawlowa   Цитата(SasaVitebsk @ Mar 6 2007, 21:42) Ц...   Mar 7 2007, 11:40
||- - SasaVitebsk   Цитата(Dog Pawlowa @ Mar 7 2007, 12:40) Ц...   Mar 7 2007, 13:21
||- - Dog Pawlowa   Цитата(SasaVitebsk @ Mar 7 2007, 14:21) 1...   Mar 7 2007, 16:51
|||- - Alex_Pol   Цитата(Dog Pawlowa @ Mar 7 2007, 15:51) Б...   Mar 7 2007, 17:22
|||- - m16   Цитата(Alex_Pol @ Mar 7 2007, 17:22) А эт...   Mar 7 2007, 17:31
|||- - _Bill   Цитата(Alex_Pol @ Mar 7 2007, 17:22) А эт...   Mar 7 2007, 17:52
||- - prottoss   Цитата(SasaVitebsk @ Mar 7 2007, 17:21) 2...   Mar 8 2007, 15:58
||- - SasaVitebsk   Цитата(prottoss @ Mar 8 2007, 16:58) Цита...   Mar 8 2007, 16:37
|- - _Bill   Цитата(SasaVitebsk @ Mar 9 2007, 22:59) В...   Mar 10 2007, 14:48
- - kv_addr   Если существует определенная детерминированность и...   Mar 6 2007, 16:59
|- - prottoss   Цитата(kv_addr @ Mar 6 2007, 20:59) Если ...   Mar 6 2007, 17:22
|- - kv_addr   Цитата(prottoss @ Mar 6 2007, 18:22) Прер...   Mar 6 2007, 18:21
|- - prottoss   Цитата(kv_addr @ Mar 6 2007, 22:21) Цитат...   Mar 6 2007, 18:39
- - GDI   Так а чем тогда мега 1280/1281/... не катит?   Mar 6 2007, 18:52
|- - prottoss   Цитата(GDI @ Mar 6 2007, 22:52) Так а чем...   Mar 6 2007, 19:01
- - aesok   Цитата(prottoss @ Mar 5 2007, 17:11) Hi A...   Mar 6 2007, 18:54
- - kamedi_clab   Цитата(prottoss @ Mar 5 2007, 17:11) Hi A...   Mar 6 2007, 19:19
|- - prottoss   Цитата(kamedi_clab @ Mar 6 2007, 23:19) м...   Mar 6 2007, 19:33
- - SasaVitebsk   Критикуйте.   Mar 6 2007, 21:49
|- - =GM=   Цитата(SasaVitebsk @ Mar 6 2007, 18:49) К...   Mar 7 2007, 02:10
|- - upc2   Цитата(SasaVitebsk @ Mar 6 2007, 21:49) К...   Mar 7 2007, 12:33
- - Alex_Pol   Дык, ног свободных у prottossа, в смысле, у его ме...   Mar 7 2007, 00:20
|- - aesok   Чего-то я prottossа не понимаю. Вместо 128 меги по...   Mar 7 2007, 00:31
||- - Dopler   Цитата(aesok @ Mar 7 2007, 00:31) Чего-то...   Mar 7 2007, 08:22
||- - prottoss   Цитата(aesok @ Mar 7 2007, 04:31) Чего-то...   Mar 7 2007, 14:53
||- - klop   Цитата(prottoss @ Mar 7 2007, 14:49) Я во...   Mar 7 2007, 15:01
||- - Dopler   Цитата(prottoss @ Mar 7 2007, 14:53) Во п...   Mar 7 2007, 16:09
||- - tag   [quote name='tag' post='220658' da...   Mar 9 2007, 10:20
|- - SasaVitebsk   Цитата(Alex_Pol @ Mar 7 2007, 01:20) Дык,...   Mar 7 2007, 00:33
- - beer_warrior   ЦитатаСамая дешевая (и маленькая) плис Altera буде...   Mar 7 2007, 10:28
- - beer_warrior   ЦитатаВсе это можно заменить 8 диодами и 1 конденс...   Mar 7 2007, 12:55
|- - upc2   Цитата(beer_warrior @ Mar 7 2007, 12:55) ...   Mar 9 2007, 08:49
- - Alex_Pol   Я бы решал так. Тинька 2313. В цикле опрашиваю пор...   Mar 7 2007, 15:03
|- - klop   Цитата(Alex_Pol @ Mar 7 2007, 15:03) Я бы...   Mar 7 2007, 15:05
|- - Alex_Pol   Цитата(klop @ Mar 7 2007, 14:05) Довольно...   Mar 7 2007, 15:21
- - SasaVitebsk   Так об этом и был спор. Дело в том, что уже в 8259...   Mar 10 2007, 19:44


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 17:33
Рейтинг@Mail.ru


Страница сгенерированна за 0.03126 секунд с 7
ELECTRONIX ©2004-2016