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

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


Местный
***

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



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

Замутил програмку - по прерыванию включает на 500 мс светодиод. При установке прерывания по спадающему фронту - подключаю INT0 к минусу - диод загорается на полсекунды и гаснет навсегда.
При установке прерывания по низкому уровню диод горит всегда. Это как понимать - генерация прерывания происходит непрерывно? Тогда с какой частотой опрашивается INT0? И что, если его навечно замкнуть на землю, то контроллер остановит свою работу и будет вечно обрабатывать прерывание?
Go to the top of the page
 
+Quote Post
3 страниц V   1 2 3 >  
Start new topic
Ответов (1 - 38)
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
rv3dll(lex)
сообщение Sep 7 2008, 18:30
Сообщение #16


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

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



чего то я в 8080 не помню разницы в прерываниях уровен фронт помню про то что вектор через жопу задавался на шине данных - но это давно совсем было чтото около 86РК
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 7 2008, 18:50
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
singlskv
сообщение Sep 7 2008, 19:04
Сообщение #18


дятел
*****

Группа: Свой
Сообщений: 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.
Дабы не предаватся фантазиями.
Дык у Вас и нет задачек связанных с минимизацией энергопотребления...
Вот Вы и не пользуетесь этими прерываниями по "назначению"...(исходя из текущего момента)
Еще раз повторюсь, придуманно это все(прерывания по уровню) было для
возможности ассинхронной обработки., то есть без тактового сигнала, все остальные применения
вторичны и вытекают из первоначального замысла...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 7 2008, 19:08
Сообщение #19


Гуру
******

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



Цитата(singlskv @ Sep 7 2008, 21:04) *
Еще раз повторюсь...

Можете повторить эти фантазии еще несколько раз, но от этого слаще во рту не станет smile.gif. Заметьте, что я не утверждаю, что это Ваши фантазии, допускаю, что Вы это где-то на полном серьезе вычитали, но тем не менее это к реальности появления прерываний по уровню отношения не имеет.


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


дятел
*****

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



Цитата(zltigo @ Sep 7 2008, 23:08) *
Можете повторить эти фантазии еще несколько раз, но от этого слаще во рту не станет smile.gif. Заметьте, что я не утверждаю, что это Ваши фантазии, допускаю, что Вы это где-то на полном серьезе вычитали, но тем не менее это к реальности появления прерываний по уровню отношения не имеет.
Вы фсе сказали... ?
Специально для любителей контроллеров 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.

Так про какие фантазии Вы там заикались ... ?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 7 2008, 21:19
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
singlskv
сообщение Sep 7 2008, 21:28
Сообщение #22


дятел
*****

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



Цитата(zltigo @ Sep 8 2008, 01:19) *
Да. И причем в самом первом посте.

Тема LPC и их "without clocks" в даташитах почему-то не была раскрыта...,
интересно, все Ваши советы нужно воспринимать исходя из
элементной базы аля 8080, 8259, итд ?
Или может быть все-таки будем говорить о современных мк ?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 7 2008, 21:31
Сообщение #23


Гуру
******

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



Цитата(singlskv @ Sep 7 2008, 23:28) *
Тема LPC и их "without clocks" в даташитах почему-то не была раскрыта...,

Раскрыта абсолютна, помянутые схемы будем смотреть, или рассчитывать на то, что многократно произнесенная ложь о "изобретении" Level Trigger для выхода из сна вдруг станет правдой?
Не станет smile.gif


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


дятел
*****

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



Цитата(zltigo @ Sep 8 2008, 01:31) *
Раскрыта абсолютна, помянутые схемы будем смотреть, или рассчитывать на то, что многократно произнесенная ложь вдруг станет правдой?
То есть Вы утверждаете что из PowerDown всегда можно проснуться без
тактового сигнала ? так ?
используя только фронты конечно...
Go to the top of the page
 
+Quote Post
ReAl
сообщение Sep 7 2008, 22:49
Сообщение #25


Нечётный пользователь.
******

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



Цитата(singlskv @ Sep 7 2008, 22:04) *
Дык у Вас и нет задачек связанных с минимизацией энергопотребления...
Вот Вы и не пользуетесь этими прерываниями по "назначению"...(исходя из текущего момента)
Еще раз повторюсь, придуманно это все(прерывания по уровню) было для
возможности ассинхронной обработки., то есть без тактового сигнала, все остальные применения
вторичны и вытекают из первоначального замысла...
Господи....
Да прервания по уровню были придуманы тогда, когда никому и в кошмаре не снилось, что блок процессора может не получать тактового сигнала не в результате поломки. Никакой необходимости снимать такт с тех гробов не было, они и в статике жрали будь-будь. Ни о какой асинхронной обработке и речи не шло, когда на единственный вход прерывания процессора вешались все источники. Запрос прерывания должен был оставаться до тех пор, пока все источники не будут удовлетворены, а это возможно только при "монтажной" логике, только по уровню.

Или Вы из "поколения пепси", считающего, что компьютеры начались с IBM PC (причём под этим названием понимающих не собственно IBM PC, и даже не IBM PC/XT, а уже IBM PC/AT)?
Так и там никто не снимал такт с процессора, а прерывания по уровню были.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
Боинг749
сообщение Sep 8 2008, 14:58
Сообщение #26


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

Группа: Новичок
Сообщений: 83
Регистрация: 25-08-08
Пользователь №: 39 801



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

Ну можно например организовать "пошаговое" выполнение программы. В ковычках потому что в критической секции ( участок программы с глобальным запретом прерываний) быть несколько "шагов" будут выполняться как один "шаг" smile.gif

Цитата(zltigo @ Sep 7 2008, 22:04) *
У 8080 были прерывания по уровню, они тактировались, и что характерно все это было не для "фишек".

А у мег оно работает и без тактирования. Именно это и позиционируется как "фишка" в даташите
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 8 2008, 15:29
Сообщение #27


Гуру
******

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



Цитата(Боинг749 @ Sep 8 2008, 16:58) *
А у мег оно работает и без тактирования. Именно это и позиционируется как "фишка" в даташите

Как это примерно делается в общем случае уже писал, могу чуть конкретизировать.
По воздействию на "вход прерывания" отрабатывает подключенный параллельно собственно входу контролера прерываний RS триггрер и будит генератор, если он был выключен. Тактовые импульсы идут на счетчик, который отсчитывает некотрое количество импульсов - задержка для входа генератора в рабочий режим и разрешает тактирование ядра, после чего, естественно, отрабатывает уже при наличии тактовой контроллер прерываний и типа "проснулись". Практически с контроллером прерывания используются только общие входные узлы типа фильтра гличей... Все.
Что там маркетологи некоторых производителей пишут о "работе без тактирования" и величайшем "изобретении" Level Triggering дело десятое.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Боинг749
сообщение Sep 8 2008, 18:04
Сообщение #28


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

Группа: Новичок
Сообщений: 83
Регистрация: 25-08-08
Пользователь №: 39 801



Цитата(zltigo @ Sep 8 2008, 19:29) *
Что там маркетологи некоторых производителей пишут о "работе без тактирования" ...

Не надо передёргивать. О "работе" процессора без тактирования никто не говорит.

Речь о том, что "спящий" процессор в микроконтроллерах ATmega с остановленным тактовым генератором может быть разбужен только преываниями, обнаруживаемыми асинхронно. А такими прерываниями в AVR являются прерывания по уровню. Причём по НИЗКОМУ уровню.

Вот и всё.

Не более того.

Но и не менее.

Сообщение отредактировал Боинг749 - Sep 8 2008, 18:06
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 8 2008, 18:10
Сообщение #29


Гуру
******

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



Цитата(Боинг749 @ Sep 8 2008, 20:04) *
...может быть разбужен только преываниями

Жаль только, что Вы так и не поняли, что собственно механизм "прерывания" к выводу из глухой спячки и не причем. Поскольку мне от этого не холодно ни жарко, то можете продолжать повторять цитаты из книжек для конечного пользователя.
Цитата
Не надо передёргивать. О "работе" процессора без тактирования никто не говорит.

"Без тактирования" это Ваши слова по отношению к контроллеру прерывания, никакого расширенного толкования этому я не давал, посему не надо Вам самого себя заводить и бросаться обвинениями.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
ReAl
сообщение Sep 8 2008, 20:04
Сообщение #30


Нечётный пользователь.
******

Группа: Свой
Сообщений: 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 немного изменили схему детектора перепада и она уже работает для побудки и без тактового сигнала.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
Боинг749
сообщение Sep 8 2008, 20:19
Сообщение #31


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

Группа: Новичок
Сообщений: 83
Регистрация: 25-08-08
Пользователь №: 39 801



Цитата(ReAl @ Sep 9 2008, 00:04) *
Речь идёт также о том, что из этого не следует, что прерывания по уровню были придуманы для этого.

Я этого и не говорил. Я сказал о нюансах использования прерываний по уровню в AVR. Мы же о AVR говорим? Или я ошибаюсь?


Цитата(ReAl @ Sep 9 2008, 00:04) *
pin change - по любому перепаду.
Для PCINT немного изменили схему детектора перепада и она уже работает для побудки и без тактового сигнала.

Вот и ладненько. Спасибо за инфу. Просто я юзаю модели Мег, которые были разработаны более 3-х лет назад. Там такого не было.

Как говоритцо, "Век живи - век учись"(с)
smile.gif
Go to the top of the page
 
+Quote Post
ReAl
сообщение Sep 9 2008, 05:31
Сообщение #32


Нечётный пользователь.
******

Группа: Свой
Сообщений: 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 уже лет шесть существуют.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
Tolyaha
сообщение Sep 9 2008, 05:53
Сообщение #33


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

Группа: Свой
Сообщений: 116
Регистрация: 2-03-07
Из: Украина
Пользователь №: 25 826



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


Это полезно тогда, когда МК может пропустить фронт/спад сигнала готовности от устройства и никогда его не обработать ( при включении питания, при сбросе).
Ситуация когда устройство обрабатывается по прерыванию и признаком его готовности является переход в лог. ноль. и если МК пропустил этот переход (по разным причинам) так устройство и будет висеть не обработанное вечно, а при прерывании по нулю зависа не будет т.к. прерывание будет висеть до тех пор пока устройство не будет обработано.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Sep 9 2008, 07:14
Сообщение #34


Гуру
******

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



Цитата(Tolyaha @ Sep 9 2008, 08:53) *
Ситуация когда устройство обрабатывается по прерыванию и признаком его готовности является переход в лог. ноль.
Я бы сказал так: Тогда и только тогда, когда процессор может сообщить устройству, что запрос обработан и этим заставить устройство снять запрос. Чаще всего это нужно, как уже писали, когда на один вход заведено несколько источников. Тогда запрос будет висеть до тех пор, пока процессор не обработает (и в процессе обработки не снимет) все запросы.


--------------------
На любой вопрос даю любой ответ
"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
Guest_Цыкетчик_*
сообщение Sep 24 2008, 13:24
Сообщение #35





Guests






Недавно узнал, что оказывается прерывания процессора по сигналам на линиях INT можно сгенерировать и программно. Достаточно запрограммировать пины INTх на вывод и выставить на них '0' командой OUT
Go to the top of the page
 
+Quote Post
rv3dll(lex)
сообщение Sep 25 2008, 04:53
Сообщение #36


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

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



прерывания по уровню предназначены только для того чтобы процессор в любой ситуации знал что оно пришло и ему это грозит и предпринял действия чтобы его снять. при этом гарантировано что то устройство которое это дело выдаёт знает обработано его прерывание или нет.

а энергосбережение тут точно не причём)))
Go to the top of the page
 
+Quote Post
iosifk
сообщение Sep 25 2008, 05:13
Сообщение #37


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Tolyaha @ Sep 9 2008, 09:53) *
Это полезно тогда, когда МК может пропустить фронт/спад сигнала готовности от устройства и никогда его не обработать ( при включении питания, при сбросе).
Ситуация когда устройство обрабатывается по прерыванию и признаком его готовности является переход в лог. ноль. и если МК пропустил этот переход (по разным причинам) так устройство и будет висеть не обработанное вечно, а при прерывании по нулю зависа не будет т.к. прерывание будет висеть до тех пор пока устройство не будет обработано.

Вот этот ответ самый близкий. Если в подпрограмме обработки прерываний сделан запрет на обработку прерываний более низкого уровня (неважно как сделан - аппаратно или программно), то фронт поступающий на запрос прерывания низкого уровня может быть пропущен. А вот уровень - нет.
Поэтому, для медленных систем, т.е в которых мало запросов и их пропуск не критичен, можно делать обработку по фронту, а для систем, где пропуск запроса критичен - только по уровню...
Но при этом, запрос по уровню может быть обслужен позже, чем по фронту из-за того, что он может быть задержен обработкой запросов более верхнего уровня.
Вот и вся разница. Такая система работает с первых интеловских контроллеров и до сих пор. Про DEC (Электроника 60) не пишу, там распределенный арбитр и пропустить прерывание в принципе невозможно....
Удачи!


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
rv3dll(lex)
сообщение Sep 25 2008, 06:17
Сообщение #38


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

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



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


ха если придёт несколько фронтов от одного устройства то и так потеряется несколько прерываний.

кстати если на один фход несколько прерываний то следующее может забить предыдущее. я в сигнальниках с этим сталкивался
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Sep 25 2008, 14:56
Сообщение #39


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



А у вас тут весело.Фронт,спад,уровень......Просто красота.А если взглянуть на процесс на осциллографе,а не в описании?Любому уровню ВСЕГДА предшествует перепад.Те говорить об срабатывании по низкому уровню и не вспомнить о предшествующему ему,уровню,срезу(спаду) сигнала неправильно. smile.gif Кстати высказывание тов БОИНГа о переходе из спячки по НИЗКОМУ уровню не совсем справедливо,можно также сказать о пробуждении по срезу и будет тоже правильно.
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 Текстовая версия Сейчас: 23rd July 2025 - 05:36
Рейтинг@Mail.ru


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