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

 
 
> Приоритет прерываний в AVR, что он означет?
777777
сообщение Aug 12 2010, 06:19
Сообщение #1


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

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



В даташитах этот термин есть, но написано лишь что прерывания с меньшим номеров имеют больший приоритет. А что вообще означает это слово? Я считал, что в подобных системах (имеющих лишь один бит в регистре состояния для разрешения/запрещения прерываний) это означает, что если возникнут одновременно два прерывания, то первым будет обрабатываться то, которое имеет больший приоритет. Во во время его обработки бит I сбрасывается, но если выполнить sei, то мы разрешим обработку других прерываний, в том числе и с меньшим приоритетом. Просто потому, что процессор не знает, что он в нанный момент делает - выполняет обработку прерывания или основную программу. Нет у него битов определить это.

Однако сейчас, отлаживая устройство, я обнаружил странную вещь - прерывание таймера не прерывается UART-ом. Обработка UART-а задерживается независимо от того, ставлю ли я sei в начале подпрограммы обработки таймера или не ставлю. Может ли такое быть или у меня глюки? И если может, то как разрешить прерывать таймер во время его обработки?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
alexeyv
сообщение Aug 17 2010, 03:52
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 298
Регистрация: 26-01-09
Из: Пермь
Пользователь №: 43 940



Цитата
Код
adc_rdy_irq:
        SEI
        PUSH    R16
        IN    R16,SREG
        PUSH    R16
        LDI    R16,255
        STS    AdcStruc+48,R16
        POP    R16
        OUT    SREG,R16
        POP    R16
        RETI


Заметил ошибку. Разрешать прерывания в прерываниях надо ТОЛЬКО после сохранения SREG!!!!

Код
adc_rdy_irq:
        PUSH    R16
        IN    R16,SREG
        PUSH    R16
        SEI             ; !!!!!!!!!!!!!!!!!!!!!!!!!!!
        LDI    R16,255
        STS    AdcStruc+48,R16
        POP    R16
        OUT    SREG,R16
        POP    R16
        RETI
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Aug 17 2010, 14:04
Сообщение #3


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(alexeyv @ Aug 17 2010, 08:52) *
Заметил ошибку. Разрешать прерывания в прерываниях надо ТОЛЬКО после сохранения SREG!!!!

В SREG на входе в прерывание I всегда нулевой. На выходе из прерывания RETI всегда I устанавливает в 1.
Отсюда вопрос - почему "после сохранения SREG"?


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Aug 17 2010, 16:15
Сообщение #4


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

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



Цитата(GetSmart @ Aug 17 2010, 18:04) *
В SREG на входе в прерывание I всегда нулевой. На выходе из прерывания RETI всегда I устанавливает в 1.
Отсюда вопрос - почему "после сохранения SREG"?

Вошёл- сохранил temp-"вылетел"- там чего то своё поделала, вернулась , а SREG то уже может быть и другой, я так думаю


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 777777   Приоритет прерываний в AVR   Aug 12 2010, 06:19
- - sKWO   Вы о сохранении и восстановлении SREG -а забываете   Aug 12 2010, 06:29
|- - 777777   Цитата(sKWO @ Aug 12 2010, 10:29) Вы о со...   Aug 12 2010, 07:10
|- - dimka76   Цитата(777777 @ Aug 12 2010, 11:10) Разум...   Aug 12 2010, 07:21
|- - 777777   Цитата(dimka76 @ Aug 12 2010, 11:21) В Wi...   Aug 12 2010, 07:32
|- - dimka76   Цитата(777777 @ Aug 12 2010, 11:32) Ты чт...   Aug 12 2010, 07:45
- - GetSmart   Цитата(777777 @ Aug 12 2010, 11:19) Однак...   Aug 12 2010, 06:56
- - mempfis_   Цитата(777777 @ Aug 12 2010, 09:19) Однак...   Aug 12 2010, 07:02
- - GetSmart   А может таки листинг засветите прологов/эпилогов у...   Aug 12 2010, 07:40
|- - 777777   Цитата(GetSmart @ Aug 12 2010, 11:40) А м...   Aug 12 2010, 07:54
|- - demiurg_spb   Цитата(777777 @ Aug 12 2010, 11:54) Да, е...   Aug 13 2010, 13:10
- - GetSmart   Я всю жизнь думал, что у AVR-ов нет аппаратных при...   Aug 12 2010, 08:14
- - GetSmart   Оно не показано, но оно почти аналогично сделано, ...   Aug 12 2010, 13:50
|- - ILYAUL   Цитата(GetSmart @ Aug 12 2010, 17:50) ......   Aug 12 2010, 16:45
- - 777777   Цитата(alexeyv @ Aug 17 2010, 07:52) Заме...   Aug 17 2010, 10:26
- - GetSmart   Цитата(ILYAUL @ Aug 17 2010, 21:15) Вошёл...   Aug 17 2010, 17:00


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

 


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


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