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

 
 
> AVR ATmega32 прерывания
MmX12345
сообщение Jun 14 2011, 11:28
Сообщение #1





Группа: Новичок
Сообщений: 4
Регистрация: 13-03-11
Пользователь №: 63 572



Добрый день.
Подскажите, пожалуйста, как будет вести себя микроконтроллер в вледущей ситуации:

...
+000000A8: 94F8 CLI Global Interrupt Disable - запретить прерывания
(Установка флага прерывания...)
+000000A9: BF9E OUT 0x3E,R25 Out to I/O location - запись старшего байта в указателя стека
+000000AA: BE0F OUT 0x3F,R0 Out to I/O location - восстановить SREG
+000000AB: BF8D OUT 0x3D,R24 Out to I/O location - запись младшего байта в указателя стека
...

Вопрос вот в чем. Какая будет последовательность выполнения команд.
Выполнятся ли все три инструкции до прерывания, или может быть такое, что выполнятся только 2 и затем произойдет переброс в прерывание?

Заранее спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
demiurg_spb
сообщение Jun 14 2011, 18:13
Сообщение #2


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(MmX12345 @ Jun 14 2011, 15:28) *
CLI // запретить прерывания
OUT 0x3E,R25 // запись старшего байта в указателя стека
OUT 0x3F,R0 // восстановить SREG
OUT 0x3D,R24 // запись младшего байта в указателя стека
Вся эта последовательность инструкций выполнится атомарно (при запрещённых прерываниях) в любом случае. Две последние инструкции поменяны местами с целью выиграть время (быстрее разрешить прерывания). Ибо архитектура AVR устроена таким образом, что после разрешения прерываний, даже при активном запросе на прерывание от любой периферии, ядро гарантировано выполнит одну инструкцию до обработки запроса на прерывание. И этой инструкцией в вашем случае будет OUT 0x3D,R24.
Это сделано насколько я понимаю с целью чтобы фоновая программа не зависла вусмерть при каком-то "залипшем" источнике прерываний.

Цитата(_guardianangel @ Jun 14 2011, 16:44) *
Всё зависит от того что в R0.
Ошибаетесь. Никак не зависит от содержимого R0.
Цитата
время реакции на прерывание 4 такта.
Снова ошибаетесь. Время реакции на прерывание никак не связано с вопросом. Пусть хоть 44 такта или 1 такт. Время реакции на прерывание - это то сколько тактов нужно процессору с момента запроса прерывания до начала выполнения обработчика прерывания. И всё это время процессор уже не выполняет фоновую программу как вы подумали, а помещает в стек адрес возврата и совершает переход на вектор прерывания. И только. Хотя мог бы и регистр статуса сохранить аппаратно, да и регистровые пары некоторые, а нет...


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- MmX12345   AVR ATmega32 прерывания   Jun 14 2011, 11:28
- - _guardianangel   Всё зависит от того что в R0. Т.е. что было в SREG...   Jun 14 2011, 12:44
- - element   при доступе к CPU_SPL проц аппаратно запрещает пре...   Sep 21 2011, 13:20
|- - Палыч   Цитата(element @ Sep 21 2011, 17:20) Чита...   Sep 21 2011, 15:16
|- - ILYAUL   QUOTE (Палыч @ Sep 21 2011, 19:16) Людей ...   Sep 21 2011, 15:42
|- - demiurg_spb   Цитата(ILYAUL @ Sep 21 2011, 19:42) И воо...   Sep 22 2011, 05:36
|- - ILYAUL   QUOTE (demiurg_spb @ Sep 22 2011, 09:36) ...   Sep 22 2011, 06:04
|- - demiurg_spb   Вы не поняли. Нет разницы Cи или асм. Нужен времен...   Sep 22 2011, 06:12
|- - ILYAUL   QUOTE (demiurg_spb @ Sep 22 2011, 10:12) ...   Sep 22 2011, 06:23
|- - demiurg_spb   Цитата(ILYAUL @ Sep 22 2011, 10:23) Так ....   Sep 22 2011, 08:02
||- - ILYAUL   QUOTE (demiurg_spb @ Sep 22 2011, 12:02) ...   Sep 22 2011, 09:34
||- - demiurg_spb   Цитата(ILYAUL @ Sep 22 2011, 13:34) Ничег...   Sep 22 2011, 11:26
|- - zombi   Цитата(ILYAUL @ Sep 22 2011, 09:23) срочн...   Sep 22 2011, 08:31
|- - kolobok0   Цитата(zombi @ Sep 22 2011, 12:31) ...Не ...   Sep 22 2011, 08:48
||- - zombi   Цитата(kolobok0 @ Sep 22 2011, 11:48) Ваш...   Sep 22 2011, 09:16
||- - demiurg_spb   Цитата(zombi @ Sep 22 2011, 13:16) Опять ...   Sep 22 2011, 11:01
|- - demiurg_spb   Цитата(zombi @ Sep 22 2011, 12:31) Или я ...   Sep 22 2011, 09:12
|- - zombi   Цитата(demiurg_spb @ Sep 22 2011, 12:12) ...   Sep 22 2011, 11:07
|- - demiurg_spb   Цитата(zombi @ Sep 22 2011, 15:07) Т.е. г...   Sep 22 2011, 11:21
- - MKdemiurg   Чтоб не создавать новую тему спрошу тут( всё равно...   Sep 22 2011, 07:12
|- - Палыч   Цитата(MKdemiurg @ Sep 22 2011, 11:12) Чт...   Sep 22 2011, 08:53
- - MKdemiurg   Цитата(ILYAUL @ Sep 22 2011, 12:34) MKdem...   Sep 22 2011, 10:12
|- - ILYAUL   QUOTE (MKdemiurg @ Sep 22 2011, 14:12) PC...   Sep 22 2011, 11:23
- - zombi   Цитата(demiurg_spb @ Sep 22 2011, 14:21) ...   Sep 22 2011, 12:21
- - demiurg_spb   Цитата(zombi @ Sep 22 2011, 16:21) А заче...   Sep 23 2011, 04:48
- - zombi   Цитата(demiurg_spb @ Sep 23 2011, 07:48) ...   Sep 23 2011, 15:26


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 12:46
Рейтинг@Mail.ru


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