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

 
 
5 страниц V  « < 3 4 5  
Reply to this topicStart new topic
> Внешний контроллер прерываний
prottoss
сообщение Mar 8 2007, 15:58
Сообщение #61


Гуру
******

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



Цитата(SasaVitebsk @ Mar 7 2007, 17:21) *
2) Формально вы правы. Мы "подменили понятия" с zltigo. Я бы предпочёл выражение "выразились не точно". smile.gif
Добавлю что кроме "подменили понятия" zltigo просто побрызгал слюной smile.gif Наверное не может забыть тот спор, где я массив запихал в функцию в качестве аргумента smile.gif

Цитата(SasaVitebsk @ Mar 7 2007, 17:21) *
Я имел ввиду то, что они в этот момент сидят на шине данных. Скажем понятие захвата шины действительно более подходит к ПДП.
Если Вы имели ввиду, что КП в это время сидит на шине, тогда и про внешнюю память можно сказать, что она захватывает шину smile.gif . ИМХО захват шины, это когда устройство захватывает не саму шину, а УПРАВЛЕНИЕ шиной


--------------------
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Mar 8 2007, 16:37
Сообщение #62


Гуру
******

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



Цитата(prottoss @ Mar 8 2007, 16:58) *
Цитата(SasaVitebsk @ Mar 7 2007, 17:21) *
Я имел ввиду то, что они в этот момент сидят на шине данных. Скажем понятие захвата шины действительно более подходит к ПДП.
Если Вы имели ввиду, что КП в это время сидит на шине, тогда и про внешнюю память можно сказать, что она захватывает шину smile.gif . ИМХО захват шины, это когда устройство захватывает не саму шину, а УПРАВЛЕНИЕ шиной


Согласен с критическими высказываниями в мой адрес.

Но надо понимать суть ощущений. Учитывая уже описанное, контроллер прерываний как бы подменял память данных в момент прерывания. Как будто после выставления запроса, вместо RD выставлялся INTA, - и всё. Такие ощущения были повсюду при работе с комплектом. Конечно при переходе на 1810 всё значительно изменилось. И 8259А(8259) и 8237(8257) и 8250(8251) и 8254(8253). Всё это были значительные шаги вперёд. В это время устанавливались понятия и комплекты. Ну и мы вмести с ними. Сейчас это уже классика. Многие из этих разработок угадываются в МК. smile.gif
Go to the top of the page
 
+Quote Post
upc2
сообщение Mar 9 2007, 08:49
Сообщение #63


Знающий
****

Группа: Свой
Сообщений: 506
Регистрация: 29-09-05
Из: Донецк
Пользователь №: 9 063



Цитата(beer_warrior @ Mar 7 2007, 12:55) *
Цитата
Все это можно заменить 8 диодами и 1 конденсатором .Я так и делаю.

А как вы различаете источник?


8 линий сигналов прерываний на регистр , а оттуда диодами на вход INT.
По любому прерыванию, читается регистр и определяется источник ,и запускается
соответствующая функция обработки.

Считаю не разумно в контроллерах связываться с 59.


Цитата(Alex_Pol @ Mar 7 2007, 15:03) *
Я бы решал так. Тинька 2313. В цикле опрашиваю порт В, если что то изменилось - байт состояния порта через УАРТ в главный контроллер, и пусть он с ним разбирается.


Вот это решение мне больше нравится.
Go to the top of the page
 
+Quote Post
tag
сообщение Mar 9 2007, 10:20
Сообщение #64


Частый гость
**

Группа: Свой
Сообщений: 151
Регистрация: 21-02-06
Пользователь №: 14 561



[quote name='tag' post='220658' date='Mar 7 2007, 17:26'] ...а если еще внимательнее почитать и посмотреть, то... есть режим опроса, в этом случае на процессор заводится от контроллера сигнал INT, шина данных/адреса и все управляющие кроме подтверждения запроса контроллера от процессора. Когда на контроллере возникает прерывание, контроллер генерирует его для процессора, процессор не подтверждает (в этом случае захвата шины не происходит), а переводит контроллер в режим опроса и считывает номер прерывания на контроллере... [/quote] Что то я это выпустил... И, хотя, опять поправлю Вас, что НЕТУ ТО ЗАХВАТА ШИНЫ НУ НИ КАК!!!, обязательно изучу это...



PS: В дорогом магазине радиокомпонентов в моем городе 82С59 от Winbond стоит 59 рублей 96 копеек в розницу
[/quote]


...я выразился словами своего оппонента вот и все. Я создавал схему и успешно обкатал наш аналог этого контроллера + 1816ВЕ31 (разновидность I8051)...
Go to the top of the page
 
+Quote Post
_Bill
сообщение Mar 9 2007, 17:03
Сообщение #65


Местный
***

Группа: Участник
Сообщений: 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
Сообщение #66


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #67


Знающий
****

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



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

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


Местный
***

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



Цитата(SasaVitebsk @ Mar 9 2007, 22:59) *
Вы привязались к моей терминологии, я вам указал на вашу.

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

Так определитесь наконец ИНСТРУКЦИЯ или ВЕКТОР.

RST или CALL - это инструкции, а вектором в них является АДРЕСНАЯ часть. Сама инструкция передается процессору, который интерпретирует ее соответствующим образом. И если быть до конца точным, то иструкция записывается в регистр команд, а в счетчик команд заносится адресная часть инструкции (ВЕКТОР) в процессе выполнения соответствующей команды.
Я думаю, теперь мы пришли к консенсусу. Или нет?
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Mar 10 2007, 19:44
Сообщение #69


Гуру
******

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



Так об этом и был спор. Дело в том, что уже в 8259А есть режим (для 8086) прямой передачи вектора. Это и делалось впоследствии для других процессоров. Никаких инструкций при этом не передавалось.

Кстати таким макаром, как 8259 в принципе можно работать и с другими МП. По крайней мере с 8951. Для этого надо (привожу пример для 8951 или для AVR с внешней памятью программ)
1) Внешний самодельный контроллер выставляет Int0
2) По прерыванию (Int0) МК переходит на отсутствующий адрес (Скажем FFF0).
3) По чтению с адреса контроллера (FFF0) выставляется код команды JMP xxx на вектор перехода.
4) Прерывание сбрасывается спец. обращением к контроллеру.

Таким образом можно реализовать расширенные прерывания. Время реакции будет увеличено на 2 команды JMP.

smile.gif

Хотя конечно это из разряда ПДП для AVR

http://elm-chan.org/docs/avr/avrdma_e.html
Go to the top of the page
 
+Quote Post

5 страниц V  « < 3 4 5
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 04:35
Рейтинг@Mail.ru


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