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

 
 
> Внешний контроллер прерываний
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
SasaVitebsk
сообщение Mar 6 2007, 20:42
Сообщение #5


Гуру
******

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



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


Собственно спорить я не собираюсь, но так в порядке ответа Чемберлену.

А.Г.Алексенко и др. "Проектирование радио-электронной аппаратуры на микропроцессоре". стр.44.

"...с возможностью маскирования и динамического изменения дисциплины обслуживания. Для перехода к подпрограммам обслуживания прерываний контроллер формирует и подаёт на ШД процессора код команды CALL. Каскадированием БИС ...."

Цитата
Прерываний как раз 8 штук. Я, когда задавал вопрос, в даташите подробно не копаля в 8259, но принцип его работы знал. Плохо, конечно, что он заточен под 8080 и 8086. Про 8259 я упомянул, потому как внешне он красиво смотрится:
1.Наличие 8 линий прерываний
2.Наличие 8-и разрядной шины данных + набор стандартных сигналов (RD/WR/CS)
3.Настройка через внутренние регистры.


Работа ч/з внутренние регистры Вам ничего не даст. То есть удобства не добавит. Это же не внутренняя переферия. Всё равно придётся опрашивать-анализировать-переходить на подвектор. Подвесить 8259A конечно можно, но ещё одна засада. Макс. F=5МГц. smile.gif Ну и в серийное изделие я бы не закладывал. Он будет дороже чем ATMEGA128. smile.gif
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Mar 7 2007, 11:40
Сообщение #6


Гуру
******

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



Цитата(SasaVitebsk @ Mar 6 2007, 21:42) *
Цитата(Dog Pawlowa @ Mar 6 2007, 14:15) *

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

Собственно спорить я не собираюсь, но так в порядке ответа Чемберлену.
А.Г.Алексенко и др. "Проектирование радио-электронной аппаратуры на микропроцессоре". стр.44.
"...с возможностью маскирования и динамического изменения дисциплины обслуживания. Для перехода к подпрограммам обслуживания прерываний контроллер формирует и подаёт на ШД процессора код команды CALL. Каскадированием БИС ...."

Чего не люблю, так это подмены понятий и определений и такого ссылки на якобы авторитетов, которые быть может и с микропроцессорами то не работали. Уровень книжек в те времена был удручающе низкий. Теперь удручает цитирование этих книжек.

Захват шины - это было сказано? Было. Было сказано даже про какой-то запрет ОЗУ. - "На сколько я помню 8259(кр580вн59) и 8259А (кр1810вн59а) банально отключают озу программы и выставляют код команды перехода по прерыванию."
Ну что за бред? Если Вы это тоже вычитали, еще понятно. Но если Вы это помните??!!!

Захват шины - это ситуация, когда вместо основного мастера работает другой. Например, вместо микропроцессора - контроллер прямого доступа. Или сервисный пульт, подключенный к шине.
В процессе передачи вектора от контроллера прерываний в микроконтроллер мастером продолжает являться микроконтроллер. Конечно, "Контроллер формирует и подает", но только под управлением сигнала INTA, приходящего от микропроцессора. То есть захват шины отсутствует напрочь. А уж блокировка ОЗУ... Какая еще блокировка, если в этот момент обращение к ОЗУ не производится, чего его блокировать?
Так что Вы лучше определитесь - или Вы спорите, или что ... Очень не хотелось бы наблюдать тут пропаганду безграмотности.
Успехов smile.gif


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


Гуру
******

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



Цитата(Dog Pawlowa @ Mar 7 2007, 12:40) *
Цитата(SasaVitebsk @ Mar 6 2007, 21:42) *

Цитата(Dog Pawlowa @ Mar 6 2007, 14:15) *

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

Собственно спорить я не собираюсь, но так в порядке ответа Чемберлену.
А.Г.Алексенко и др. "Проектирование радио-электронной аппаратуры на микропроцессоре". стр.44.
"...с возможностью маскирования и динамического изменения дисциплины обслуживания. Для перехода к подпрограммам обслуживания прерываний контроллер формирует и подаёт на ШД процессора код команды CALL. Каскадированием БИС ...."

Чего не люблю, так это подмены понятий и определений и такого ссылки на якобы авторитетов, которые быть может и с микропроцессорами то не работали. Уровень книжек в те времена был удручающе низкий. Теперь удручает цитирование этих книжек.

Захват шины - это было сказано? Было. Было сказано даже про какой-то запрет ОЗУ. - "На сколько я помню 8259(кр580вн59) и 8259А (кр1810вн59а) банально отключают озу программы и выставляют код команды перехода по прерыванию."
Ну что за бред? Если Вы это тоже вычитали, еще понятно. Но если Вы это помните??!!!

Захват шины - это ситуация, когда вместо основного мастера работает другой. Например, вместо микропроцессора - контроллер прямого доступа. Или сервисный пульт, подключенный к шине.
В процессе передачи вектора от контроллера прерываний в микроконтроллер мастером продолжает являться микроконтроллер. Конечно, "Контроллер формирует и подает", но только под управлением сигнала INTA, приходящего от микропроцессора. То есть захват шины отсутствует напрочь. А уж блокировка ОЗУ... Какая еще блокировка, если в этот момент обращение к ОЗУ не производится, чего его блокировать?
Так что Вы лучше определитесь - или Вы спорите, или что ... Очень не хотелось бы наблюдать тут пропаганду безграмотности.
Успехов smile.gif


1) Эта книга является найболее точной, полной, грамотной из всех мной использованной. Это как раз тот редкий случай, когда очевидно, что авторы точно знают о чём пишут. А также они знают как изложить свои знания на бумаге. Ничего лишнего - всё кратко и точно. Тоэтому, прошу, не надо охаивать авторов и книгу, которую вы даже не читали.
2) Формально вы правы. Мы "подменили понятия" с zltigo. Я бы предпочёл выражение "выразились не точно". smile.gif Я имел ввиду то, что они в этот момент сидят на шине данных. Скажем понятие захвата шины действительно более подходит к ПДП. С другой стороны вы тоже осуществляете "тут пропаганду безграмотности". Вот пример: "Сигнал INTA работает как признак, означающий, что контроллеру нужно передать вектор. И микроконтроллер своей логикой сразу после сохранения старого значения счетчика команд помещает этот вектор в счетчик команд". МК не читает вектор, а читает по INTA код команды перехода по вектору. Причём это может быть и код команды RST. Поэтому, я считаю что я выразился точнее.
3) Насчёт блокировки озу и т.п. - я просто уже подзабыл что-то требовалось для ПДП, но не в этом дело. Я просто хотел отметить, что многое там требовалось сделать аппаратно.

Сейчас конечно многое изменилось. Сжемки мои конечно так - баловство. smile.gif Я бы не стал применять более одного, ну максимум двух вспомогательных корпусов. Конечно грамотнее и правильней использовать CPU со встроенной аналогичной ф-ией. Ну и prottoss это понимает, а мы просто по энерции обсуждаем прикольную тему.

Цитата
Кроме того, что будет, если IRQn будет достаточно продолжительным по времени, по сравнению с временем обработки всех прерываний?

Можно поставить разделительные кондёры по входу. smile.gif

Цитата
Все это можно заменить 8 диодами и 1 конденсатором .Я так и делаю.

Никакими кондёрами или диодами нельзя сесть на шину. Это бред. Бывают схемотехники которые на шину данных подключаются ч/з резисторы. Я к их числу не принадлежу.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Mar 7 2007, 16:51
Сообщение #8


Гуру
******

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



Цитата(SasaVitebsk @ Mar 7 2007, 14:21) *
1) Эта книга является найболее точной, полной, грамотной из всех мной использованной. Это как раз тот редкий случай, когда очевидно, что авторы точно знают о чём пишут. А также они знают как изложить свои знания на бумаге. Ничего лишнего - всё кратко и точно. Тоэтому, прошу, не надо охаивать авторов и книгу, которую вы даже не читали.
2) Формально вы правы. Мы "подменили понятия" с zltigo. Я бы предпочёл выражение "выразились не точно". smile.gif Я имел ввиду то, что они в этот момент сидят на шине данных. Скажем понятие захвата шины действительно более подходит к ПДП. С другой стороны вы тоже осуществляете "тут пропаганду безграмотности". Вот пример: "Сигнал INTA работает как признак, означающий, что контроллеру нужно передать вектор. И микроконтроллер своей логикой сразу после сохранения старого значения счетчика команд помещает этот вектор в счетчик команд". МК не читает вектор, а читает по INTA код команды перехода по вектору. Причём это может быть и код команды RST. Поэтому, я считаю что я выразился точнее.

Я в те годы заказывал и читал все книги, относящиеся к микроконтроллерам, и эта книга действительно не самая плохая. Были гораздо хуже. В которых, как сейчас помню, писалось про "программируемый контроллер системной шины". В этой просто размытость понятий. По себе знаю - человек или пишет книги, или же непосредственно работает, и ему не до книг wink.gif

Что касается Вашей поправки... Мы о каком контроллере прерываний говорим? 8259 или 8259A? В каком режиме?
Действительно, все начиналось с 8080 и 8259, сигнал INTA варабатывался в течение трех циклов шины, и первым кодом был код 0CDh - код команды вызова подпрограммы. Потом появился процессор 8086, с другой системой команд, и появился контроллер 8259A. Разработчики исключили первый байт из последовательности получения вектора прерывания в режиме 8086, поскольку он не информативен и никогда не был информативен(микропроцессор и так знает, что он делает - получает вектор прерывания). Он, вероятно, был введен для упрощения структуры микроконтроллера. Быть может, какие-то извращенцы и использовали его для передачи в микроконтроллер других команд. Если Вы настаиваете на значимости этого факта, и найдете случаи такого использования, не буду с Вами спорить. smile.gif


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


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

Группа: Свой
Сообщений: 192
Регистрация: 23-03-05
Из: Украина. Днепропетровск
Пользователь №: 3 626



Цитата(Dog Pawlowa @ Mar 7 2007, 15:51) *
Быть может, какие-то извращенцы и использовали его для передачи в микроконтроллер других команд.
А это как? CD (CALL), вроде как аппаратно было впендюрено в ВН59, или путаю чего?
Go to the top of the page
 
+Quote Post
_Bill
сообщение Mar 7 2007, 17:52
Сообщение #10


Местный
***

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



Цитата(Alex_Pol @ Mar 7 2007, 17:22) *
А это как? CD (CALL), вроде как аппаратно было впендюрено в ВН59, или путаю чего?

Вся информация заносится в контроллер программно. Во-первых, задается вид вектора прерываний: RST или CALL. Во-вторых, адресная часть инструкций CALL заносится в контроллер прерывания, опять же, по программе. Ведь 8259 не зря же называется программируемым.
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
|||- - m16   Цитата(Alex_Pol @ Mar 7 2007, 17:22) А эт...   Mar 7 2007, 17:31
||- - 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   Цитата(Dog Pawlowa @ Mar 6 2007, 13:15) П...   Mar 7 2007, 17:12
|- - SasaVitebsk   Последним постом вы сами себя и опровергаете. Кома...   Mar 7 2007, 21:49
|- - _Bill   Цитата(SasaVitebsk @ Mar 7 2007, 21:49) П...   Mar 9 2007, 17:03
|- - SasaVitebsk   Цитата(_Bill @ Mar 9 2007, 18:03) Цитата(...   Mar 9 2007, 22:59
|- - mse   Цитата(SasaVitebsk @ Mar 9 2007, 22:59) Т...   Mar 10 2007, 13:15
|- - _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 Текстовая версия Сейчас: 23rd July 2025 - 08:08
Рейтинг@Mail.ru


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