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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Объясните разницу между прерыванием по спадающему фронту и по появлению низкого уровня.
Зверюга
сообщение Sep 5 2008, 18:45
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 413
Регистрация: 15-12-06
Пользователь №: 23 563



Господа, объясните разницу между прерыванием по спадающему фронту и по появлению низкого уровня.

Замутил програмку - по прерыванию включает на 500 мс светодиод. При установке прерывания по спадающему фронту - подключаю INT0 к минусу - диод загорается на полсекунды и гаснет навсегда.
При установке прерывания по низкому уровню диод горит всегда. Это как понимать - генерация прерывания происходит непрерывно? Тогда с какой частотой опрашивается INT0? И что, если его навечно замкнуть на землю, то контроллер остановит свою работу и будет вечно обрабатывать прерывание?
Go to the top of the page
 
+Quote Post
SysRq
сообщение Sep 5 2008, 19:12
Сообщение #2


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



Да, прерывание вызывается постоянно.
Но между выполнениями кода обработчика прерывания будет исполняться по одной ассемблерной команде остального кода. Таким образом, основная программа будт выполняться, но медленно smile.gif

Сообщение отредактировал SysRq - Sep 5 2008, 19:14
Go to the top of the page
 
+Quote Post
Зверюга
сообщение Sep 6 2008, 03:13
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 413
Регистрация: 15-12-06
Пользователь №: 23 563



Можете привести практический пример ситуации, в которой этот режим полезен?

Сам пытался пофантазировать, но всегда приходил к выводу что есть иной способ решения.
Go to the top of the page
 
+Quote Post
Tiny
сообщение Sep 6 2008, 05:23
Сообщение #4


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

Группа: Участник
Сообщений: 82
Регистрация: 10-07-06
Пользователь №: 18 720



Цитата(Зверюга @ Sep 5 2008, 21:45) *
Господа, объясните разницу между прерыванием по спадающему фронту и по появлению низкого уровня.

Замутил програмку - по прерыванию включает на 500 мс светодиод. При установке прерывания по спадающему фронту - подключаю INT0 к минусу - диод загорается на полсекунды и гаснет навсегда.
При установке прерывания по низкому уровню диод горит всегда. Это как понимать - генерация прерывания происходит непрерывно? Тогда с какой частотой опрашивается INT0? И что, если его навечно замкнуть на землю, то контроллер остановит свою работу и будет вечно обрабатывать прерывание?

Насколько я понимаю разница в том, что при спадающем фронте при переходе на 0 произойдет прерывание, выполнится программа расположенная в теле прерывания (загорится светодиод) и в следующий раз это произойдет только после того, как на входе прерывания установится 1, а потом сбросится на 0.
При прерывании по низкому уровню, при 0 на входе произойдет прерывание и если 0 будет сохраняться, то оно и будет всегда выполняться (гореть светодиод) не дожидаясь установки 1 на входе.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 6 2008, 07:25
Сообщение #5


Гуру
******

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



Цитата(Зверюга @ Sep 6 2008, 05:13) *
Можете привести практический пример ситуации, в которой этот режим полезен?

Какой из двух помянутых "'этот"? Если по уровню, то, например, применение нескольких источников прерывания на одном входе. Если по фронту, то, например, получение периодического прерывания от генератора меандра.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
rv3dll(lex)
сообщение Sep 6 2008, 07:42
Сообщение #6


Полное ничтожество
*****

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



если прочитать описание контроллера прерывания любого контроллера там буквально пишут следующее

прерывания подразделяются на прерывания по фронту/срезу или по уровню

при прерываниях по фронту подпрограмма обработки прерывания вызывается 1 раз если длительность фрониа/среза не превышает ХХХ

по уровню будет вызываться непрерывно до тех пор пока уровень не перейдёт в неактивный или
"основной вариант" когда подпрограмма обработчик прерываний воздействием на модуль который генерирует прерывание не сбросит его.
Go to the top of the page
 
+Quote Post
SysRq
сообщение Sep 6 2008, 10:41
Сообщение #7


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



Цитата(Зверюга @ Sep 6 2008, 07:13) *
Можете привести практический пример ситуации, в которой этот режим полезен?

Не могу представить чтобы это было основным режимом работы. Скорее, контроллер всегда сидящий в прерывании - это или нештатная ситуация, или может быть попытка решения какой-то задачи на непредназначенном для этого оборудовании, изначально спроектрованным для чего-то еще.
Go to the top of the page
 
+Quote Post
singlskv
сообщение Sep 7 2008, 17:37
Сообщение #8


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(zltigo @ Sep 6 2008, 11:25) *
Если по уровню, то, например, применение нескольких источников прерывания на одном входе.
ИМХО, это не главное/первоначальное применение данного типа прерываний.
Прерывание по уровню НЕ требует наличия тактового сигнала на mcu, и это основное отличие,
проснуться из "глубокого" слипа можно только по уровню...
Конечно на последних МК это не совсем так, но принципа это не отменяет...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 7 2008, 17:48
Сообщение #9


Гуру
******

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



Цитата(singlskv @ Sep 7 2008, 19:37) *
Конечно на последних МК это не совсем так, но принципа это не отменяет...

Это совсем не так было уже на 8080 чипсете - прерывание по любому сэмплируется. А железо для просыпания и контроллер прерываний вещи разные.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
singlskv
сообщение Sep 7 2008, 17:51
Сообщение #10


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(zltigo @ Sep 7 2008, 21:48) *
Это совсем не так было уже на 8080 чипсете -
А у 8080 были фишки для уменьшения
энергопотребления ? Чего-то не помню... smile.gif
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Sep 7 2008, 18:02
Сообщение #11


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(singlskv @ Sep 7 2008, 20:51) *
А у 8080 были фишки для уменьшения энергопотребления ?
А прерывание по уровню было. Казалось бы, зачем?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 7 2008, 18:04
Сообщение #12


Гуру
******

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



Цитата(singlskv @ Sep 7 2008, 19:51) *
А у 8080 были фишки для уменьшения
энергопотребления ? Чего-то не помню... smile.gif

У 8080 были прерывания по уровню, они тактировались, и что характерно все это было не для "фишек".


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
singlskv
сообщение Sep 7 2008, 18:12
Сообщение #13


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(zltigo @ Sep 7 2008, 21:48) *
А железо для просыпания и контроллер прерываний вещи разные.
А парни то из Атмел и не знали... smile.gif
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) *
А прерывание по уровню было. Казалось бы, зачем?
Я ни где не говорил что эноргопотребление это единственное применение...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 7 2008, 18:21
Сообщение #14


Гуру
******

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



Цитата(singlskv @ Sep 7 2008, 20:12) *
Я ни где не говорил что эноргопотребление это единственное применение...

Извите, но не нужно извиваться. Я возражаю против вот этого Вашего утверждения:
Цитата
...это не главное/первоначальное применение данного типа прерываний.

И вот этого:
Цитата
Прерывание по уровню НЕ требует наличия тактового сигнала на mcu,

Что там сделали в частности "парни" дело десятое.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
singlskv
сообщение Sep 7 2008, 18:27
Сообщение #15


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



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


Цитата(zltigo @ Sep 7 2008, 22:21) *
Что там сделали в частности "парни" дело десятое.
Парни развивающие LPC думают примерно так же...
Go to the top of the page
 
+Quote Post

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

 


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


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