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

 
 
> Запрет/Разрешение прерываний в кольцевых буферах, Как правильно и оптимально?
Smallday
сообщение Jun 18 2008, 03:11
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 18-06-07
Пользователь №: 28 506



Пожалуйста, подскажите как правильно и оптимально Запрешать/Разрешать прерывания при работе с программыми буферами устройств. Попробовал несколько вариантов:
1)
cpsr=DisableIRQ();

.... // работа с буфером

RestoreIRQ(cpsr);
2)
VICIntEnClr = 1 << UART0_INT;

.... // работа с буфером

VICIntEnable = 1 << UART0_INT;
3)
cpsr=DisableIRQ();
U0IER &= ~UIER_ETBEI;
RestoreIRQ(cpsr);

.... // работа с буфером

cpsr=DisableIRQ();
U0IER |= UIER_ETBEI;
RestoreIRQ(cpsr);

Второй случай давал сбои и зависание на LPC2138, а вот на LPC2368 работаспособен..

Сообщение отредактировал Smallday - Jun 18 2008, 03:18
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sensor_ua
сообщение Jun 18 2008, 05:29
Сообщение #2


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

Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387



запрет источника прерывания приводит к потере запроса прерывания, возникшего во время запрета. При глобальном запрещении прерываний запросы прерываний взводят флаги, и если они не сброшены до глобального разрешения прерываний, то после разрешения срабатывает логика контроллера прерваний и вызываются соответствующие обработчики в установленном этой логикой порядке (логика зависит от типа контроллера прерываний или конкретного решения конкретного микроконтроллера, а общий механизм един для процессорных систем). Так что второй вариант не годится.
ИМХО, в русском техническом языке существуют как минимум такие понятия как источник прерывания, запрос прерывания, контроллер прерывания, обработчик прерывания, а вот само слово прерывание в разных контекстах обозначает разное сочетание этих понятий (к моему сожалению всё чаще русскоязычные словосочетания забываются и с английского переводится без учёта контекста). А глобальное разрешение прерываний грубо относится к "кнопке" управления контроллера прерываний со стороны процессора (ядра), которая в случае запрета на время как бы придерживает выдачу запроса прерывания от контроллера прерывания к ядру (в случае с ARM это, например, IRQ со своим запретом и FIQ со своим запретом).
Что касается буферов, то они бывают разными и есть варианты построения и дисциплины работы, не требующие запрета прерываний.
Что касается вариантов 1 и 3, то существуют разные подходы в части использования и способов входа/выхода в/из критических секций и это отдельный вопрос, по которому на форуме было достаточно много обсуждений.


--------------------
aka Vit
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Smallday   Запрет/Разрешение прерываний в кольцевых буферах   Jun 18 2008, 03:11
|- - tag   Цитата(sensor_ua @ Jun 18 2008, 09:29) за...   Jun 18 2008, 05:53
|- - aaarrr   Цитата(sensor_ua @ Jun 18 2008, 09:29) за...   Jun 18 2008, 06:44
- - sensor_ua   Цитата...Вы уверены? Абсолютно. Толко я чуть ошибс...   Jun 18 2008, 06:13
|- - tag   Цитата(sensor_ua @ Jun 18 2008, 10:13) Чи...   Jun 18 2008, 06:19
- - sensor_ua   ЦитатаПосмотрите хотя бы картинку Interrupt reques...   Jun 18 2008, 07:19
|- - aaarrr   Цитата(sensor_ua @ Jun 18 2008, 11:19) См...   Jun 18 2008, 07:30
- - Rst7   ЦитатаЧто касается буферов, то они бывают разными ...   Jun 18 2008, 09:56
|- - tag   Цитата(Rst7 @ Jun 18 2008, 13:56) А можно...   Jun 18 2008, 11:37
- - Rst7   Цитата..вот пример кольцевого буфера не требующего...   Jun 18 2008, 12:02
|- - defunct   Цитата(Rst7 @ Jun 18 2008, 15:02) >...   Jun 18 2008, 21:16
|- - tag   Цитата(Rst7 @ Jun 18 2008, 16:02) Да, так...   Jun 19 2008, 05:20
|- - tag   ...скажу даже больше, так реализован обмен с модем...   Jun 19 2008, 05:26
- - rezident   Для кольцевых буферов я лично использую два индекс...   Jun 18 2008, 14:21
- - Rst7   А можно пример кода?   Jun 18 2008, 16:37
- - mdmitry   Идея кольцевых буферов и код есть в avr-lib. У мен...   Jun 18 2008, 16:50
- - Rst7   ЦитатаИдея кольцевых буферов и код есть в avr-lib ...   Jun 18 2008, 17:11
- - AHTOXA   Цитата(rezident @ Jun 18 2008, 20:21) Для...   Jun 18 2008, 17:38
- - Rst7   ЦитатаЭто еще почему?! Еще как будет работать....   Jun 19 2008, 05:25


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 10:13
Рейтинг@Mail.ru


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