Radiohobby Forum

Интернет конференция журнала "Радиохобби"

Вы не вошли.

Объявление

Подписка на новые материалы от Николая Сухова - ролики, схемы, модели, онлайн конференции, консультации, чат.

Внимание! Почта в доменах Яндекс и Mail.ru не будет работать в профилях форумчан, из-за введённых правительством Украины санкций против этих компаний. Всем, кто ранее использовал подобную почту, для сохранения прежней функциональности форума, рекомендуется её поменять.

Огромная просьба, заливать тематические картинки и файлы в личные файловые каталоги на форуме, чтобы они не потерялись, со временем!

Ссылка "Загрузки" находится справа внизу формы набора сообщения.

Подписка на журнал "Радиохобби" прекращена. Подробности. Форум же - продолжает свою работу.

#121 22.09.2006 09:52:04

Liv
Ветеран
Откуда: Минск
Здесь с 08.02.2004
Сообщений: 1,233

Re: AVR для "чайников"

Jaxon пишет:

потом переходит по приоритету

Вы путаете понятия "приоритет прерываний" и "последовательность обслуживания прерываний, поступивших одновременно". Если прерывание более приоритетно, оно в состоянии прервать обработчик менее приоритетного прерывания. В AVR такого нет.

Вне форума

#122 22.09.2006 12:03:28

Vasil
Ветеран
Откуда: близ Киева
Здесь с 23.01.2004
Сообщений: 1,199

Re: AVR для "чайников"

2 Liv про приоритеты прерываний попадалось утверждение (последний абзац):
sub.chipdoc.ru/html.cgi/txt/doc/micros/ … htm?fid=41
но вот более подрбно про усторйство interrupt unit не встречал.

Вне форума

#123 22.09.2006 12:07:38

Jaxon
радиолюбовник
Откуда: Николаев
Здесь с 22.01.2004
Сообщений: 3,058

Re: AVR для "чайников"

Liv пишет:

Вы путаете понятия "приоритет прерываний" и "последовательность обслуживания прерываний, поступивших одновременно". Если прерывание более приоритетно, оно в состоянии прервать обработчик менее приоритетного прерывания. В AVR такого нет.

тоесть, пока у меня выполняеться прерывание с меньшим приоритетом поступает прерывание более приоритетное прерывание.
но процессор выполняет  его до конца, потом переходит  к более приоритетному.
но если они поступили одновременно- тогда выполняеться в первую очередь более приоритетное.
так я понимаю?

Вне форума

#124 22.09.2006 12:12:44

Dmitry
Забанен
Откуда: Запорожье
Здесь с 03.02.2004
Сообщений: 3,105
Сайт

Re: AVR для "чайников"

Матроскин пишет:

...Дело в том, что идет управление одним объектом, просто в разных случаях нужны разные задержки..

Почитайте про слово PWM, возможно Вам оно окажется ПОЛЕЗНЕЕ,чем таймер мучать...

Vasil пишет:

.. допустим, что контроллер находится внутри обработчика прерывания, скажем, по INT0 (достаточно длинном). В это время наступает условие преывания, к примеру по перепад...?

За АВР не отвечу. Но возможно. что в них так же, как и в ПИК-ах - нсть ФЛАГИ собітий, вызвавших (разрешенные) прерывания.
В ПИК-е в описанной ситуации получится следующее:

1. закончится обработка прерывания инт0.
1а. перепад выставит ФЛАГ того, что "был перепад".
2. проц выйдет из обработчика ИНТ0 и восстановит (разрешит) прерывания (которые точно также были запрещены, как и у АВР-а, как писал Лив).
3. Ввиду того, что выставлен ФЛАГ "перепад был" проц снова уйдет в прерывание.

А там уже - как прописан Ваш обработчик....

(оффтопик)

Liv пишет:

Приоритетов прерываний у AVR нет вообще..

у 18-х пиков есть


Почему когда мы нарушаем, нас штрафуют, а когда всё делаем правильно, с нас берут налоги?....

Вне форума

#125 22.09.2006 12:15:33

Jaxon
радиолюбовник
Откуда: Николаев
Здесь с 22.01.2004
Сообщений: 3,058

Re: AVR для "чайников"

"... The lower the address , the higter the priority level..."
а это что?

Вне форума

#126 22.09.2006 12:56:29

Liv
Ветеран
Откуда: Минск
Здесь с 08.02.2004
Сообщений: 1,233

Re: AVR для "чайников"

Ну вот, загнали в угол smile Неправильно это называть приоритетами. В AVR нет полноценного контроллера прерываний с поддержкой приоритетов. Это просто порядок обработки прерываний при их ОДНОВРЕМЕННОМ поступлении.

Вот, например у MCS-51 есть приоритеты прерываний. Там так же, как и в AVR, порядок обработки одновременно поступивших прерываний задан адресом вектора, но кроме того, каждому прерыванию при настройке можно задать высокий или низкий приоритет. Прерывание с более высоким приоритетом может прервать обработчик менее приоритетного прерывания, но не может такого же, или с более низким приоритетом.

В AVR все прерывания имеют одинаковый приоритет и не могут прерывать друг друга, так в начале выполнения обработчика любого прерывания бит глобального разрешения прерывания "I" в регистре SREG сбрасывается аппаратно и устанавливается вновь при выполнении команды "reti". Тем не менее, прерывания с низким приоритетом могут быть сделаны "ручками" путём использования команды "sei" в теле обработчика прерывания.

Пусть использование слова "приоритет" останется на совести у Atmel. Вот определение приоритета прерываний из Wikipedia:

"The interrupt priority level (IPL) is a part of the current system interrupt state, which indicates the interrupt requests that will currently be accepted. The IPL may be indicated in hardware by the registers in a Programmable Interrupt Controller, or in software by a bitmask or integer value."

А у AVR, когда идет обработка любого прерывания, даже прерывание с вектором по меньшему адресу обслужено не будет. Это означает, что все прерывания имеют одинаковый приоритет.

Вне форума

#127 22.09.2006 12:57:50

Dmitry
Забанен
Откуда: Запорожье
Здесь с 03.02.2004
Сообщений: 3,105
Сайт

Re: AVR для "чайников"

Давайте напишу разъяснения поподробнее про ПИК, а в АВР-ах поищите аналогии

INT0F - Флаг (причем, если быть абсолютно точным, то флаг СОБЫТИЯ, а не прерывания). Показывает, что условие ПРОИСХОДИЛО! Устанавливается автоматически. Сбрасывается только програмно (в смысле - сброс его должен присутствовать в програме-обработчике. ВАЖНО- появление флага НЕ ОЗНАЧАЕТ автоматического перехода на адрес проги-обработчика. Переход (или не переход) - определяется следующим битом (ниже).

INT0E - Enable - разрешение ПЕРЕХОДА процессора на адрес (т.н. вектор прерывания) обработчика прерывания. Если переход запрещен, то прошествие события ТОЛЬКО ВЫСТАВЛЯЕТ ФЛАГ, а проц где был. там и трудится. Если разрешено, то проц при ПОЯВЛЕНИИ ФЛАГА сразу же бросает выполнявшуюся программу, и переходит на адрес обработчика прерываний.

INT0P - Priority (приоритет). Как раз ОНО - приоритет прерывания для данного события, определяет две вещи:
а). во-первых адрес, куда поедет проц при возникновении данного события. У ПИК-а ДВА вектора прерываний - для прерываний высокго уровня (адрес - 0Х0008) и для прерываний низкого уровня (адрес 0Х0018). То есть, разделив прерывания по приоритетам, нужно написать два обработчика прерываний.
б). прерыванияотнесенные к числу "высоких" могут прервать обработку преываний, отнесенных к числу "низких....


Почему когда мы нарушаем, нас штрафуют, а когда всё делаем правильно, с нас берут налоги?....

Вне форума

#128 22.09.2006 21:54:59

Vasil
Ветеран
Откуда: близ Киева
Здесь с 23.01.2004
Сообщений: 1,199

Re: AVR для "чайников"

Вобщем, в том то и проблема, -что там в голове у того Programmable Interrupt Controller, вместе с атмелем. Формально то и RESET помещен в "таблицу векторов прерываний" но бит I на него не действует ( я не беру во внимание последние навороты вроде RSTDISBL в фузах или переназначение адресов векторов)

Отредактировано Vasil (22.09.2006 21:56:07)

Вне форума

#129 23.09.2006 00:03:14

Liv
Ветеран
Откуда: Минск
Здесь с 08.02.2004
Сообщений: 1,233

Re: AVR для "чайников"

Dmitry пишет:

INT0F - Флаг (причем, если быть абсолютно точным, то флаг СОБЫТИЯ, а не прерывания). Показывает, что условие ПРОИСХОДИЛО! Устанавливается автоматически. Сбрасывается только програмно (в смысле - сброс его должен присутствовать в програме-обработчике. ВАЖНО- появление флага НЕ ОЗНАЧАЕТ автоматического перехода на адрес проги-обработчика. Переход (или не переход) - определяется следующим битом (ниже).

Этот флаг называется флагом запроса прерывания. Установка флага не означает выполнение обработчика, это всего лишь запрос. В AVR эти флаги сбрасываются автоматически при осуществлении перехода на обработчик прерывания.

Dmitry пишет:

INT0E - Enable - разрешение ПЕРЕХОДА процессора на адрес (т.н. вектор прерывания) обработчика прерывания. Если переход запрещен, то прошествие события ТОЛЬКО ВЫСТАВЛЯЕТ ФЛАГ, а проц где был. там и трудится. Если разрешено, то проц при ПОЯВЛЕНИИ ФЛАГА сразу же бросает выполнявшуюся программу, и переходит на адрес обработчика прерываний.

В AVR всё аналогично, только существуют биты разрешения отдельных прерываний и еще бит глобального разрешения прерываний. Обработка прерывания может произойти только в том случае, если оба они установлены.

Dmitry пишет:

INT0P - Priority (приоритет). Как раз ОНО - приоритет прерывания для данного события, определяет две вещи:
а). во-первых адрес, куда поедет проц при возникновении данного события. У ПИК-а ДВА вектора прерываний - для прерываний высокго уровня (адрес - 0Х0008) и для прерываний низкого уровня (адрес 0Х0018). То есть, разделив прерывания по приоритетам, нужно написать два обработчика прерываний.
б). прерыванияотнесенные к числу "высоких" могут прервать обработку преываний, отнесенных к числу "низких....

Второе говорит о том, что приоритеты прерываний у ПИКа есть. Это хорошо. Но все прерывания свалены в кучу (вернее, в две кучи - на два вектора). Это плохо.

Вне форума

#130 23.09.2006 00:06:08

Liv
Ветеран
Откуда: Минск
Здесь с 08.02.2004
Сообщений: 1,233

Re: AVR для "чайников"

Vasil пишет:

Вобщем, в том то и проблема, -что там в голове у того Programmable Interrupt Controller

Был бы в AVR этот самый контроллер, было бы сложнее. А так всё как грабли.

Вне форума

Сейчас в этой теме пользователей: 0, гостей: 1
[Bot] ClaudeBot

Подвал форума

Под управлением FluxBB
Модифицировал Visman

[ Сгенерировано за 0.058 сек, 7 запросов выполнено - Использовано памяти: 626.11 Кбайт (Пик: 676.48 Кбайт) ]