|
AVR ATmega32 прерывания |
|
|
|
Jun 14 2011, 11:28
|
Группа: Новичок
Сообщений: 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 и затем произойдет переброс в прерывание?
Заранее спасибо.
|
|
|
|
|
 |
Ответов
|
Sep 22 2011, 10:12
|
Знающий
   
Группа: Свой
Сообщений: 624
Регистрация: 15-06-10
Из: Россия
Пользователь №: 57 939

|
Цитата(ILYAUL @ Sep 22 2011, 12:34)  MKdemiurg каким образом такая ситуация может возникнуть? Часы и будильник - строго как-то привязаны к секундам , часы с мигами , да и ещё с установкой на них будильника , я пока не встречал. Считывайте с RTC статусный регистр и проверяйте флаги PCF8563 - можно запустить RTC и таймер. При совпадении будильника или конца счёта таймера - получаете прерывание. Можно активировать оба прерывания. Оба дадут спад в "0". Восстанавливается программно. Теоретически совпасть могут с точностью до миллисекунд. Если я в обработчике установку таймера сделаю... Я вот уже и подумал. Даже если прерывание "пропадёт" я просто в обработчике считаю флаги... Насколько я понял флаг прерывания обнуляется при входе в обработчик. Значит если придёт импульс во время обработки , то после выхода опять сработает прерывание... Как то так...
|
|
|
|
|
Sep 22 2011, 11:23
|

Профессионал
    
Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339

|
QUOTE (MKdemiurg @ Sep 22 2011, 14:12)  PCF8563 - можно запустить RTC и таймер. При совпадении будильника или конца счёта таймера - получаете прерывание. Можно активировать оба прерывания. Оба дадут спад в "0". Восстанавливается программно. Теоретически совпасть могут с точностью до миллисекунд. Если я в обработчике установку таймера сделаю...
Я вот уже и подумал. Даже если прерывание "пропадёт" я просто в обработчике считаю флаги... Насколько я понял флаг прерывания обнуляется при входе в обработчик. Значит если придёт импульс во время обработки , то после выхода опять сработает прерывание... Как то так... Обнуляется флаг Вашего прерывания (MCU) а , данные которые Вы считаете с RTC - останутся до тех пор пока сами не обнулите. Да сработает , если Вы успеете сбросить предыдущее в самой микросхеме , на это у Вас есть секунда т.к если Вы установили , что пришло время прочитать часы , а флага будильника нет , то он может появится только спустя секунду. Вот Ваши биты : QUOTE Table 9 . Value descriptions for bits AF and TF Установлены оба - значит считаете часы и звените.
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
Сообщений в этой теме
MmX12345 AVR ATmega32 прерывания Jun 14 2011, 11:28 _guardianangel Всё зависит от того что в R0. Т.е. что было в SREG... Jun 14 2011, 12:44 demiurg_spb Цитата(MmX12345 @ Jun 14 2011, 15:28) CLI... Jun 14 2011, 18:13 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 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|