|
Объясните разницу между прерыванием по спадающему фронту и по появлению низкого уровня. |
|
|
3 страниц
1 2 3 >
|
 |
Ответов
(1 - 38)
|
Sep 6 2008, 05:23
|
Частый гость
 
Группа: Участник
Сообщений: 82
Регистрация: 10-07-06
Пользователь №: 18 720

|
Цитата(Зверюга @ Sep 5 2008, 21:45)  Господа, объясните разницу между прерыванием по спадающему фронту и по появлению низкого уровня.
Замутил програмку - по прерыванию включает на 500 мс светодиод. При установке прерывания по спадающему фронту - подключаю INT0 к минусу - диод загорается на полсекунды и гаснет навсегда. При установке прерывания по низкому уровню диод горит всегда. Это как понимать - генерация прерывания происходит непрерывно? Тогда с какой частотой опрашивается INT0? И что, если его навечно замкнуть на землю, то контроллер остановит свою работу и будет вечно обрабатывать прерывание? Насколько я понимаю разница в том, что при спадающем фронте при переходе на 0 произойдет прерывание, выполнится программа расположенная в теле прерывания (загорится светодиод) и в следующий раз это произойдет только после того, как на входе прерывания установится 1, а потом сбросится на 0. При прерывании по низкому уровню, при 0 на входе произойдет прерывание и если 0 будет сохраняться, то оно и будет всегда выполняться (гореть светодиод) не дожидаясь установки 1 на входе.
|
|
|
|
|
Sep 6 2008, 07:25
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Зверюга @ Sep 6 2008, 05:13)  Можете привести практический пример ситуации, в которой этот режим полезен? Какой из двух помянутых "'этот"? Если по уровню, то, например, применение нескольких источников прерывания на одном входе. Если по фронту, то, например, получение периодического прерывания от генератора меандра.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 7 2008, 17:37
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(zltigo @ Sep 6 2008, 11:25)  Если по уровню, то, например, применение нескольких источников прерывания на одном входе. ИМХО, это не главное/первоначальное применение данного типа прерываний. Прерывание по уровню НЕ требует наличия тактового сигнала на mcu, и это основное отличие, проснуться из "глубокого" слипа можно только по уровню... Конечно на последних МК это не совсем так, но принципа это не отменяет...
|
|
|
|
|
Sep 7 2008, 18:12
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(zltigo @ Sep 7 2008, 21:48)  А железо для просыпания и контроллер прерываний вещи разные. А парни то из Атмел и не знали... Note that recognition of falling or rising edge interrupts on INT0 and INT1 requires the presence of an I/O clock, described in “Clock Systems and their Distribution” on page 23. Low level interrupts on INT0/INT1 are detected asynchronously. This implies that these interrupts can be used for waking the part also from sleep modes other than Idle mode. The I/O clock is halted in all sleep modes except Idle mode.Цитата(Сергей Борщ @ Sep 7 2008, 22:02)  А прерывание по уровню было. Казалось бы, зачем? Я ни где не говорил что эноргопотребление это единственное применение...
|
|
|
|
|
Sep 7 2008, 18:21
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(singlskv @ Sep 7 2008, 20:12)  Я ни где не говорил что эноргопотребление это единственное применение... Извите, но не нужно извиваться. Я возражаю против вот этого Вашего утверждения: Цитата ...это не главное/первоначальное применение данного типа прерываний. И вот этого: Цитата Прерывание по уровню НЕ требует наличия тактового сигнала на mcu, Что там сделали в частности "парни" дело десятое.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 7 2008, 18:27
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(zltigo @ Sep 7 2008, 22:21)  Извите, но не нужно извиваться. Я возражаю против вот этого Вашего утверждения: А я возражаю против приведения примеров 20летней давности... Ну поменялось уже значение данного типа прерывания..., но Вы зачем-то все равно спорите... Цитата(zltigo @ Sep 7 2008, 22:21)  Что там сделали в частности "парни" дело десятое. Парни развивающие LPC думают примерно так же...
|
|
|
|
|
Sep 7 2008, 18:50
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(singlskv @ Sep 7 2008, 20:27)  Вы зачем-то все равно спорите... Например, по той простой причине, что сейчас у меня на столе лежит девайс с 32 переферийными чипами подключенными в цепочку на SPI и висящими на одном прерывании LPC2138. И "20 лет назад" тут не причем - ничего не изменилось от того, что кто-то посадил практически параллельно входу еще будильник. Цитата Парни развивающие LPC думают примерно так же... "Парни LPC" нарисовали схемки с которыми может ознакомится каждый желающий в User Manuale: Reset block diagram including the wakeup timer и External interrupt logic. Дабы не предаватся фантазиями.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 7 2008, 19:04
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(zltigo @ Sep 7 2008, 22:50)  Например, по той простой причине, что сейчас у меня на столе лежит девайс с 32 переферийными чипами подключенными в цепочку на SPI и висящими на одном прерывании LPC2138. И "20 лет назад" тут не причем - ничего не изменилось от того, что кто-то посадил практически параллельно входу еще будильник.
"Парни LPC" нарисовали схемки с которыми может ознакомится каждый желающий в User Manuale: Reset block diagram including the wakeup timer и External interrupt logic. Дабы не предаватся фантазиями. Дык у Вас и нет задачек связанных с минимизацией энергопотребления... Вот Вы и не пользуетесь этими прерываниями по "назначению"...(исходя из текущего момента) Еще раз повторюсь, придуманно это все(прерывания по уровню) было для возможности ассинхронной обработки., то есть без тактового сигнала, все остальные применения вторичны и вытекают из первоначального замысла...
|
|
|
|
|
Sep 7 2008, 19:08
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(singlskv @ Sep 7 2008, 21:04)  Еще раз повторюсь... Можете повторить эти фантазии еще несколько раз, но от этого слаще во рту не станет  . Заметьте, что я не утверждаю, что это Ваши фантазии, допускаю, что Вы это где-то на полном серьезе вычитали, но тем не менее это к реальности появления прерываний по уровню отношения не имеет.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 7 2008, 20:37
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(zltigo @ Sep 7 2008, 23:08)  Можете повторить эти фантазии еще несколько раз, но от этого слаще во рту не станет  . Заметьте, что я не утверждаю, что это Ваши фантазии, допускаю, что Вы это где-то на полном серьезе вычитали, но тем не менее это к реальности появления прерываний по уровню отношения не имеет. Вы фсе сказали... ? Специально для любителей контроллеров NXP, приводим выдержки из их даташитов: lpc2377.lpc2378.pdf: 7.25.4.2Sleep mode In Sleep mode, the oscillator is shut down and the chip receives no internal clocks. .... The Sleep mode can be terminated and normal operation resumed by either a Reset or certain specific interrupts that are able to function without clocks. Так про какие фантазии Вы там заикались ... ?
|
|
|
|
|
Sep 7 2008, 21:19
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(singlskv @ Sep 7 2008, 22:37)  Вы фсе сказали... ? Да. И причем в самом первом посте. Потом, когда началась пурга "про Ерему" еще и названия схем из user manual привел. Изучайте, как запускается генератор LPC и как потом прерывние стробируется и обрабатыватся. Заодно поищите системы энергосбережения у контроллеров у которых их отродясь не было, а прерывания по уровню были. Документация на классический контроллер прерываний (именно совсем отдельный контроллер прерываний - дикие времена - начало 80x!!!, микроконтроллеров вообще не было, "зеленых" - тоже ) 8259 вполне доступна - можете легко проверить и там УЖЕ программировались Level/Edge Triggered Mode. В общем, думаю, что что-то еще говорить совершенно излишне. Ну халва-халва-халва можете повторять...
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 7 2008, 21:28
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(zltigo @ Sep 8 2008, 01:19)  Да. И причем в самом первом посте. Тема LPC и их "without clocks" в даташитах почему-то не была раскрыта..., интересно, все Ваши советы нужно воспринимать исходя из элементной базы аля 8080, 8259, итд ? Или может быть все-таки будем говорить о современных мк ?
|
|
|
|
|
Sep 7 2008, 21:38
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(zltigo @ Sep 8 2008, 01:31)  Раскрыта абсолютна, помянутые схемы будем смотреть, или рассчитывать на то, что многократно произнесенная ложь вдруг станет правдой? То есть Вы утверждаете что из PowerDown всегда можно проснуться без тактового сигнала ? так ? используя только фронты конечно...
|
|
|
|
|
Sep 7 2008, 22:49
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(singlskv @ Sep 7 2008, 22:04)  Дык у Вас и нет задачек связанных с минимизацией энергопотребления... Вот Вы и не пользуетесь этими прерываниями по "назначению"...(исходя из текущего момента) Еще раз повторюсь, придуманно это все(прерывания по уровню) было для возможности ассинхронной обработки., то есть без тактового сигнала, все остальные применения вторичны и вытекают из первоначального замысла... Господи.... Да прервания по уровню были придуманы тогда, когда никому и в кошмаре не снилось, что блок процессора может не получать тактового сигнала не в результате поломки. Никакой необходимости снимать такт с тех гробов не было, они и в статике жрали будь-будь. Ни о какой асинхронной обработке и речи не шло, когда на единственный вход прерывания процессора вешались все источники. Запрос прерывания должен был оставаться до тех пор, пока все источники не будут удовлетворены, а это возможно только при "монтажной" логике, только по уровню. Или Вы из "поколения пепси", считающего, что компьютеры начались с IBM PC (причём под этим названием понимающих не собственно IBM PC, и даже не IBM PC/XT, а уже IBM PC/AT)? Так и там никто не снимал такт с процессора, а прерывания по уровню были.
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Sep 8 2008, 14:58
|
Частый гость
 
Группа: Новичок
Сообщений: 83
Регистрация: 25-08-08
Пользователь №: 39 801

|
Цитата(Зверюга @ Sep 6 2008, 07:13)  Можете привести практический пример ситуации, в которой этот режим полезен? Ну можно например организовать "пошаговое" выполнение программы. В ковычках потому что в критической секции ( участок программы с глобальным запретом прерываний) быть несколько "шагов" будут выполняться как один "шаг"  Цитата(zltigo @ Sep 7 2008, 22:04)  У 8080 были прерывания по уровню, они тактировались, и что характерно все это было не для "фишек". А у мег оно работает и без тактирования. Именно это и позиционируется как "фишка" в даташите
|
|
|
|
|
Sep 8 2008, 15:29
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Боинг749 @ Sep 8 2008, 16:58)  А у мег оно работает и без тактирования. Именно это и позиционируется как "фишка" в даташите Как это примерно делается в общем случае уже писал, могу чуть конкретизировать. По воздействию на "вход прерывания" отрабатывает подключенный параллельно собственно входу контролера прерываний RS триггрер и будит генератор, если он был выключен. Тактовые импульсы идут на счетчик, который отсчитывает некотрое количество импульсов - задержка для входа генератора в рабочий режим и разрешает тактирование ядра, после чего, естественно, отрабатывает уже при наличии тактовой контроллер прерываний и типа "проснулись". Практически с контроллером прерывания используются только общие входные узлы типа фильтра гличей... Все. Что там маркетологи некоторых производителей пишут о "работе без тактирования" и величайшем "изобретении" Level Triggering дело десятое.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 8 2008, 18:04
|
Частый гость
 
Группа: Новичок
Сообщений: 83
Регистрация: 25-08-08
Пользователь №: 39 801

|
Цитата(zltigo @ Sep 8 2008, 19:29)  Что там маркетологи некоторых производителей пишут о "работе без тактирования" ... Не надо передёргивать. О "работе" процессора без тактирования никто не говорит. Речь о том, что "спящий" процессор в микроконтроллерах ATmega с остановленным тактовым генератором может быть разбужен только преываниями, обнаруживаемыми асинхронно. А такими прерываниями в AVR являются прерывания по уровню. Причём по НИЗКОМУ уровню. Вот и всё. Не более того. Но и не менее.
Сообщение отредактировал Боинг749 - Sep 8 2008, 18:06
|
|
|
|
|
Sep 8 2008, 18:10
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Боинг749 @ Sep 8 2008, 20:04)  ...может быть разбужен только преываниями Жаль только, что Вы так и не поняли, что собственно механизм "прерывания" к выводу из глухой спячки и не причем. Поскольку мне от этого не холодно ни жарко, то можете продолжать повторять цитаты из книжек для конечного пользователя. Цитата Не надо передёргивать. О "работе" процессора без тактирования никто не говорит. "Без тактирования" это Ваши слова по отношению к контроллеру прерывания, никакого расширенного толкования этому я не давал, посему не надо Вам самого себя заводить и бросаться обвинениями.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 8 2008, 20:04
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(Боинг749 @ Sep 8 2008, 21:04)  Речь о том, что "спящий" процессор в микроконтроллерах ATmega с остановленным тактовым генератором может быть разбужен только преываниями, обнаруживаемыми асинхронно. А такими прерываниями в AVR являются прерывания по уровню. Причём по НИЗКОМУ уровню. Речь идёт также о том, что из этого не следует, что прерывания по уровню были придуманы для этого. Кроме того зря так громко при НИЗКИЙ уровень Мега168: Цитата 9.4 Power-down Mode When the SM2..0 bits are written to 010, the SLEEP instruction makes the MCU enter Powerdown mode. In this mode, the external Oscillator is stopped, while the external interrupts, the 2- wire Serial Interface address watch, and the Watchdog continue operating (if enabled). Only an External Reset, a Watchdog System Reset, a Watchdog Interrupt, a Brown-out Reset, a 2-wire Serial Interface address match, an external level interrupt on INT0 or INT1, or a pin change interrupt can wake up the MCU. This sleep mode basically halts all generated clocks, allowing operation of asynchronous modules only. pin change - по любому перепаду. Для PCINT немного изменили схему детектора перепада и она уже работает для побудки и без тактового сигнала.
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Sep 8 2008, 20:19
|
Частый гость
 
Группа: Новичок
Сообщений: 83
Регистрация: 25-08-08
Пользователь №: 39 801

|
Цитата(ReAl @ Sep 9 2008, 00:04)  Речь идёт также о том, что из этого не следует, что прерывания по уровню были придуманы для этого. Я этого и не говорил. Я сказал о нюансах использования прерываний по уровню в AVR. Мы же о AVR говорим? Или я ошибаюсь? Цитата(ReAl @ Sep 9 2008, 00:04)  pin change - по любому перепаду. Для PCINT немного изменили схему детектора перепада и она уже работает для побудки и без тактового сигнала. Вот и ладненько. Спасибо за инфу. Просто я юзаю модели Мег, которые были разработаны более 3-х лет назад. Там такого не было. Как говоритцо, "Век живи - век учись"(с)
|
|
|
|
|
Sep 9 2008, 05:31
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(Боинг749 @ Sep 8 2008, 23:19)  Я этого и не говорил. Я сказал о нюансах использования прерываний по уровню в AVR. Мы же о AVR говорим? Или я ошибаюсь? Мы говорим об особенностях работы прерывания по уровню при постоянно поданном запросе, с 8-го поста - о "первоначальном" предназначении прерываний по уровню, которое "первоначалось" через десятки лет после того, как сами эти прерывания были придуманы. В принципе, всё вышесказанное справедливо и для i80c31. Цитата(Боинг749 @ Sep 8 2008, 23:19)  Вот и ладненько. Спасибо за инфу. Просто я юзаю модели Мег, которые были разработаны более 3-х лет назад. Там такого не было. "мухи времени любят стрелки" :-) Думаю, гораздо больше трёх. avreal поддерживает программирование atmega48-168 уже больше четырёх лет. Ну а если об AVR вообще, то тини26, мега162 уже лет шесть существуют.
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Sep 9 2008, 05:53
|
Частый гость
 
Группа: Свой
Сообщений: 116
Регистрация: 2-03-07
Из: Украина
Пользователь №: 25 826

|
Цитата(Зверюга @ Sep 6 2008, 06:13)  Можете привести практический пример ситуации, в которой этот режим полезен? Это полезно тогда, когда МК может пропустить фронт/спад сигнала готовности от устройства и никогда его не обработать ( при включении питания, при сбросе). Ситуация когда устройство обрабатывается по прерыванию и признаком его готовности является переход в лог. ноль. и если МК пропустил этот переход (по разным причинам) так устройство и будет висеть не обработанное вечно, а при прерывании по нулю зависа не будет т.к. прерывание будет висеть до тех пор пока устройство не будет обработано.
|
|
|
|
Guest_Цыкетчик_*
|
Sep 24 2008, 13:24
|
Guests

|
Недавно узнал, что оказывается прерывания процессора по сигналам на линиях INT можно сгенерировать и программно. Достаточно запрограммировать пины INTх на вывод и выставить на них '0' командой OUT
|
|
|
|
|
Sep 25 2008, 05:13
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(Tolyaha @ Sep 9 2008, 09:53)  Это полезно тогда, когда МК может пропустить фронт/спад сигнала готовности от устройства и никогда его не обработать ( при включении питания, при сбросе). Ситуация когда устройство обрабатывается по прерыванию и признаком его готовности является переход в лог. ноль. и если МК пропустил этот переход (по разным причинам) так устройство и будет висеть не обработанное вечно, а при прерывании по нулю зависа не будет т.к. прерывание будет висеть до тех пор пока устройство не будет обработано. Вот этот ответ самый близкий. Если в подпрограмме обработки прерываний сделан запрет на обработку прерываний более низкого уровня (неважно как сделан - аппаратно или программно), то фронт поступающий на запрос прерывания низкого уровня может быть пропущен. А вот уровень - нет. Поэтому, для медленных систем, т.е в которых мало запросов и их пропуск не критичен, можно делать обработку по фронту, а для систем, где пропуск запроса критичен - только по уровню... Но при этом, запрос по уровню может быть обслужен позже, чем по фронту из-за того, что он может быть задержен обработкой запросов более верхнего уровня. Вот и вся разница. Такая система работает с первых интеловских контроллеров и до сих пор. Про DEC (Электроника 60) не пишу, там распределенный арбитр и пропустить прерывание в принципе невозможно.... Удачи!
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Sep 25 2008, 06:17
|

Полное ничтожество
    
Группа: Banned
Сообщений: 1 991
Регистрация: 20-03-07
Из: Коломна
Пользователь №: 26 354

|
Цитата(iosifk @ Sep 25 2008, 09:13)  Вот этот ответ самый близкий. Если в подпрограмме обработки прерываний сделан запрет на обработку прерываний более низкого уровня (неважно как сделан - аппаратно или программно), то фронт поступающий на запрос прерывания низкого уровня может быть пропущен. А вот уровень - нет. Поэтому, для медленных систем, т.е в которых мало запросов и их пропуск не критичен, можно делать обработку по фронту, а для систем, где пропуск запроса критичен - только по уровню... Но при этом, запрос по уровню может быть обслужен позже, чем по фронту из-за того, что он может быть задержен обработкой запросов более верхнего уровня. Вот и вся разница. Такая система работает с первых интеловских контроллеров и до сих пор. Про DEC (Электроника 60) не пишу, там распределенный арбитр и пропустить прерывание в принципе невозможно.... Удачи! ха если придёт несколько фронтов от одного устройства то и так потеряется несколько прерываний. кстати если на один фход несколько прерываний то следующее может забить предыдущее. я в сигнальниках с этим сталкивался
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|