|
Прерывания AVR |
|
|
|
 |
Ответов
|
Nov 3 2009, 09:56
|

Частый гость
 
Группа: Участник
Сообщений: 183
Регистрация: 28-01-05
Пользователь №: 2 272

|
после возврата из прерывания следующее прерывание начинает обрабатываться не сразу это говорит о том что подготовка к переходу на прерывание существует (видимо одна команда) если в момент обнуления TIMSK (в момент исполнения этой команды или за одну команду до неё) начнёт обрабатываться запрос на прерывание по таймеру то он будет обработан проще конечно не гадать а на время обнуления TIMSK запретить все прерывания cli а потом разрешить _CLI(); TIMSK=0; _SEI(); наверное ... ??? Цитата(Duhas @ Nov 3 2009, 12:29)  время выполнения команды... по идее.. т.е. если выполняется двухтактовая команда.. на первом такте пришло прерывание.. команда довыполнится и начнется обработчик.. т.е. одного nop достаточно видимо.
Сообщение отредактировал Пришелец - Nov 3 2009, 09:55
|
|
|
|
|
Nov 3 2009, 10:05
|

Частый гость
 
Группа: Участник
Сообщений: 183
Регистрация: 28-01-05
Пользователь №: 2 272

|
Цитата(Xenia @ Nov 3 2009, 12:59)  Тогда, следуя вашей логике, надо и после CLI ставить нопы  , поскольку CLI точно так же стирает маску, как и TIMSK=0 (только в другом регистре масок - в SREG). И по своей аппаратной реализации ничем не отличается. После CLI не надо я думаю эти два механизма по разному работают.
|
|
|
|
|
Nov 3 2009, 23:02
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(Пришелец @ Nov 3 2009, 12:05)  я думаю эти два механизма по разному работают. Проц __заканчивает выполнение текущей комады__, после чего если есть хотя бы одно активное прерывание, осуществляет неявную команду JMP на соответвующий активному прерыванию вектор. Спите спокойно, после команды TIMSK = 0 активных прерываний от таймера не будет, но следует отметить, что сишное выражение TIMSK = 0; скорее всего разобъется на две команды, например ldi Rd, 0 out TIMSK, Rd После ldi - прерывание от таймера еще может случиться, а после out - однозначно нет.
|
|
|
|
Сообщений в этой теме
Пришелец Прерывания AVR Nov 3 2009, 09:15 Duhas время выполнения команды... по идее.. т.е. если вы... Nov 3 2009, 09:29 chief_olimp вы хоть сами то поняли что написали? TIMSK=0 запре... Nov 3 2009, 09:36 Xenia Цитата(Пришелец @ Nov 3 2009, 12:15) по и... Nov 3 2009, 09:42   Xenia Цитата(Пришелец @ Nov 3 2009, 13:05) я ду... Nov 3 2009, 10:20    501-q Цитата(defunct @ Nov 4 2009, 04:02) ldi ... Nov 4 2009, 04:15 Палыч Цитата(Пришелец @ Nov 3 2009, 12:56) посл... Nov 3 2009, 10:19 777777 Цитата(Пришелец @ Nov 3 2009, 12:56) если... Nov 4 2009, 05:55 chief_olimp по моему это обсуждение не имеет смысла. Я на прим... Nov 3 2009, 10:23 Пришелец про cli явно написано что после него не выполнится... Nov 3 2009, 10:26 Vetal-Soft ))) Даже если допустить, что произойдет так, что с... Nov 3 2009, 10:30 Пришелец сдаюсь
согласен
убедили
Спасибо. Nov 3 2009, 10:32 bekas Товарищи специалисты, у меня тоже есть вопрос отно... Nov 25 2009, 14:02 SysRq Цитата(bekas @ Nov 25 2009, 17:02) ...мож... Nov 25 2009, 14:23 Duhas мб разрешить прерывания глобально? SEI... Nov 25 2009, 14:24 bekas не помогает, следующеедействие после команды SEI ... Nov 25 2009, 21:06 ILYAUL Цитата(bekas @ Nov 26 2009, 00:06) не пом... Nov 25 2009, 21:18 smac Цитата(bekas @ Nov 26 2009, 00:06) не пом... Nov 25 2009, 21:24  ILYAUL Цитата(smac @ Nov 26 2009, 00:24) Вот пок... Nov 25 2009, 21:36 bekas Да, были разрешены внешние прерывания, по умолчани... Nov 25 2009, 22:02 bekas Появился ещё один вопрос: после обработки прерыван... Dec 11 2009, 14:52 defunct Цитата(bekas @ Dec 11 2009, 16:52) Для на... Dec 11 2009, 15:04
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|