Какие приоритеты прерываний AVR микроконтроллеров?

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
РадиоЛоматель
Мудрый кот
Сообщения: 1733
Зарегистрирован: Чт авг 21, 2008 22:03:30
Откуда: Одесса(Украина)
Контактная информация:

Re: Какие приоритеты прерываний AVR микроконтроллеров?

Сообщение РадиоЛоматель »

ploop писал(а):Хотя я так и не могу придумать пример, где бы они пригодились...
Я тоже. Приучил себя к хорошему стилю. Но скажем так: вероятность того, что прерывание произойдет во время обработки другого прерывания, обработчик которого состоит из нескольких команд, есть всегда. :) Хотя и ничтожная.
(*tmp) &= ~( ( (param1 & (1<<PARAM1_BIT6)) || ((param2==PARAM2_TRUE)&&(--param3)) ) ? (param1 & (~param2)) : (Func1() | FUNC1_FLAGS) );
Люблю Си...
Реклама
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Какие приоритеты прерываний AVR микроконтроллеров?

Сообщение ploop »

Я бы сказал совсем не ничтожная.
Например - куча программных таймеров, основанных на одном прерывании аппаратного. Он молотит довольно часто, а мы инициируем приём данных по UART. Почти 100% что прерывания наложатся.

Просто при быстром обработчике, через несколько тактов всё равно уйдём на обработку следующего прерывания, не потеряв его ценность (не прозевав данные по UART в этом примере). Стоит замешкаться - и каюк...
Реклама
Аватара пользователя
Леонид Иванович
Друг Кота
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск
Контактная информация:

Re: Какие приоритеты прерываний AVR микроконтроллеров?

Сообщение Леонид Иванович »

Действительно, вложенные прерывания нужны редко. Например, если в системе есть длинный обработчик (что, конечно, само по себе плохо), то чтобы уменьшить interrupt latency для остальных прерываний, можно разрешить прерывания внутри. Как пример - программная генерация звука. Малейший джиттер, вызванный другими рперываниями, слышен. Вложенные прерывания спасают. Ну или какие-то специальные случаи. Всего несколько раз приходилось прибегать к таким прерываниям, зато страдал, пока в IAR не появилось ключевое слово __nested.
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Re: Какие приоритеты прерываний AVR микроконтроллеров?

Сообщение МитяРа »

Вложенные прерывания не так уж и редки, но всё зависит от конкретной задачи и способа её решения..
И ясен мышь, от конкретного семейства МК..
Вот ploop не может придумать пример, т.к. в AVR-ах, как мя понял это и не просто сделать..
У МК51 с его развитой системой многоуровневых прерываний, где можно задавать их приоритеты и назначать более "низким" прерываниям более "высокий приоритет"..
В качестве примера:
МК осуществляет сбор данных, их обработку и управление внешними устройствами /ШИМ/, при этом есть связь с компом, который выполняет настроечно-наблюдательные функции..
Реализация с точки зрения "главности" процессов и настройки прерываний: /меньший номер - самый главный../
1. Внутренний таймер ШИМ - должен обрабатываться всегда, без перерывов и задержек..
2. Ввод данных с АЦП - может подождать обработку ШИМ..
3. USART - этот вообще может сколько угодно подождать..
0. Прерывание по аварии или защите - должно выполняться всегда, даже поперёд ШИМа.. /обычно мя его завожу на "сброс"../
А сама программа - выполняет математику и логику..
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
wellcom
Нашел транзистор. Понюхал.
Сообщения: 190
Зарегистрирован: Чт фев 24, 2011 13:00:49

Re: Какие приоритеты прерываний AVR микроконтроллеров?

Сообщение wellcom »

pyzh_man писал(а):Читаем выдержку из даташита.
перечитавши все вышеизложенное, я все таки не нашел четкого внятного ответа на всой вопрос, кроме как кучи "воды"...точнее "пива" :))
Вот так перевелась гуглом выдержка из етого самого даташита:
AVR обеспечивает несколько различных источников прерываний. Эти прерывания и отдельные векторные сброса каждого отдельного векторные программы в памяти программой. Все прерывания назначены индивидуальные биты разрешения, которое должно быть записано логика одна совместно с Глобальным бит разрешения прерываний в регистре состояния, с тем чтобы прервать.
Низкие адреса в памяти программ по умолчанию определяются как сброс и векторы прерываний. Полный список векторов показано на "прерывания" на стр. 40. В список также определяет приоритетные уровни различных прерываний. Ниже адрес выше уровень приоритета. RESET, имеет самый высокий приоритет, и дальше, INT-0 внешнего запроса прерывания 0.
, когда происходит прерывание, глобальные разрешения прерываний я-битных очищается и все прерывания отключены. пользователь программного обеспечения может написать логику один я-битных чтобы вложенные прерывания. все включено прерывания могут прервать текущую прерывания. я-бит автоматически устанавливается при возвращении из прерывания обучения - RETI - будет выполнена.

..однако и здесь я не нашел ответа на свой вопрос, возможно, я вопрос не правильно формулировал.

И так вопрос: Если во время обработки прерывания TIMER 0 появиться еще два, сначала USART0, RX и позже INT1, после завершения обработки прерывания TIMER0, какое из прерываний USART0, RX или INT1 будет выполнено в первую очередь?
возможные ответы:
а).....то, у которого приоритет самый высокий, и оно выполниться первым из дух, независимо от того, кто первым запросил обработку, т.е INT1;
б).....то, которое запросило обработку первым - USART0, RX;
в).....то, которое пришло на обработку последним - INT1;
г).....другой вариант
какие мысли по етому поводу?....только по существу пожалуйста :roll:
:solder: 32-х ядерный процессор из П213В
Реклама
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Какие приоритеты прерываний AVR микроконтроллеров?

Сообщение pyzhman »

Вариант а.
Docendo discimus
Реклама
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Какие приоритеты прерываний AVR микроконтроллеров?

Сообщение ploop »

"А" однозначно.
Аватара пользователя
РадиоЛоматель
Мудрый кот
Сообщения: 1733
Зарегистрирован: Чт авг 21, 2008 22:03:30
Откуда: Одесса(Украина)
Контактная информация:

Re: Какие приоритеты прерываний AVR микроконтроллеров?

Сообщение РадиоЛоматель »

И я того же мнения. "А" :))
(*tmp) &= ~( ( (param1 & (1<<PARAM1_BIT6)) || ((param2==PARAM2_TRUE)&&(--param3)) ) ? (param1 & (~param2)) : (Func1() | FUNC1_FLAGS) );
Люблю Си...
Аватара пользователя
coredumped
Опытный кот
Сообщения: 838
Зарегистрирован: Вт апр 12, 2011 18:38:19
Откуда: с Земли

Re: Какие приоритеты прерываний AVR микроконтроллеров?

Сообщение coredumped »

ploop писал(а): Хотя я так и не могу придумать пример, где бы они пригодились...
Например, для обработки критических по времени событий. Хотя такая практика, без надлежащей тщательности реализации, может привести к дэдлокам.
Все будет только лучше, в крайнем случае - хуже.
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Какие приоритеты прерываний AVR микроконтроллеров?

Сообщение ploop »

Например, для обработки критических по времени событий.
Опять же, что приходит на ум: есть одно прерывание, которое должно отработать в любом случае и в любой момент времени. Тогда внутри всех остальных включаем флаг "I", что в принципе приведёт к вложенности всех остальных прерываний, но при продуманном использовании не страшно.

А вот уже сделать нормальные приоритеты (как описал Митяра) не получится...
Аватара пользователя
wellcom
Нашел транзистор. Понюхал.
Сообщения: 190
Зарегистрирован: Чт фев 24, 2011 13:00:49

Re: Какие приоритеты прерываний AVR микроконтроллеров?

Сообщение wellcom »

теперь все более менее прояснилось. спасибо. :solder:
:solder: 32-х ядерный процессор из П213В
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»