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

 
 
> Прерывания в AVR
archi2000
сообщение Nov 12 2006, 17:09
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 38
Регистрация: 30-09-05
Пользователь №: 9 098



Хочу уточнить правильно ли я понял.
Если запрещены внешние прерывания, но случается несколько событий, то флаг прерывания устанавливается только один раз. Разрешаем прерывания и этот флаг сбрасывается и выполняется код прерывания по соответствующему вектору?
Теперь еще хочу такое запрограммировать - в соответсвующих регистрах ядра тоже запретить внешние прерывания, а не только коммандой CLI - флаг внешнего прерывания выставляется? Как долго этот флаг существует? Пока я его сам не сброшу или не выполнится вектор прерывания?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
archi2000
сообщение Nov 14 2006, 15:29
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 38
Регистрация: 30-09-05
Пользователь №: 9 098



Хочу такое запрограммировать - программный одновибратор 100 мсек.
Начало.
Внешние прерывания запрещаем в регистре GICR.
Разрешаем прерывания от таймеров.
Разрешаем прерывания глобально.
Задержка 100 мсек.
Разрешаем внешние прерывания.
Если за эти 100 мсек внешие события были, то флаги int0 и int1 должны присутствовать и добавляем в теле прерывания к переменной единичку.
Запрещаем внешние прерывания.
Выполняем несколько комманд основной программы с проверкой различных условий.
Переходим на начало.

Так как в даташите написано, что флаг постоянно сбрасывается если прерывание по уровню, а я не хочу мгновенно это событие обрабатывать, то вот и не знаю будет ли этот алгоритм работать.
Где еще прочитать или ставить эксперименты?
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Nov 15 2006, 16:57
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(archi2000 @ Nov 14 2006, 18:29) *
Хочу такое запрограммировать - программный одновибратор 100 мсек.
Начало.
Внешние прерывания запрещаем в регистре GICR.
Разрешаем прерывания от таймеров.
Разрешаем прерывания глобально.
Задержка 100 мсек.
Разрешаем внешние прерывания.
Если за эти 100 мсек внешие события были, то флаги int0 и int1 должны присутствовать и добавляем в теле прерывания к переменной единичку.
Запрещаем внешние прерывания.
Выполняем несколько комманд основной программы с проверкой различных условий.
Переходим на начало.

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


Я не вижу проблем в Вашем алгоритме, но боюсь что не совсем понимаю его. Вы лучше опишите что хотите сделать, а мы предложим Вам варианты.

Можно в прерывании смотреть фронт а можно, например каждый раз менять фронт и по разному обрабатывать. Можно отложить обработку прерывания, только надо учесть, что при запрете прерывания флаг выставится только один раз. Остальные будут потеряны. Лучше, как предлагает, Dog Pawlowa прерывания обрабатывать всегда. А если Вы не хочете увеличивать объём вычислений в прерывании, то в прерывании только сохранять очередь. А обрабатывать эту очередь в голове.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- archi2000   Прерывания в AVR   Nov 12 2006, 17:09
- - bodja74   Цитата(archi2000 @ Nov 12 2006, 20:09) Хо...   Nov 12 2006, 17:25
- - archi2000   Понимаю я может и правильно, но не правильно задал...   Nov 12 2006, 17:39
- - bodja74   Совершенно правильно . Но с подобными маневрами не...   Nov 12 2006, 17:54
- - archi2000   Спасибо, но я сам хочу задать время обработки этих...   Nov 12 2006, 18:02
|- - SasaVitebsk   Цитата(archi2000 @ Nov 12 2006, 21:02) Сп...   Nov 13 2006, 00:50
- - bodja74   Если я правильно понял принцип,то есть другой спос...   Nov 12 2006, 18:17
- - archi2000   Таймера и приоритетность прерываний у меня использ...   Nov 12 2006, 18:35
- - bodja74   Ну все очень просто. 1 Пошел сигнал от датчика ,по...   Nov 12 2006, 18:44
|- - Nanobyte   Цитата(bodja74 @ Nov 12 2006, 22:44) ... ...   Nov 12 2006, 21:29
- - archi2000   Так оно примерно сейчас и работает, таймер меряет ...   Nov 12 2006, 18:51
- - archi2000   Еще прошу помощи - даташит на неродном языке. Проц...   Nov 14 2006, 14:47
- - Pyku_He_oTTyda   ЦитатаПочему для сброса флага нужно записывать лог...   Nov 14 2006, 14:53
- - archi2000   Спасибо, я сам также думал, что когда там 1, то 1+...   Nov 14 2006, 14:58
- - GetSmart   Прерывание по уровню вызывается мгновенно при прис...   Nov 14 2006, 15:18
|- - klop   Цитата(GetSmart @ Nov 14 2006, 18:18) Нас...   Nov 14 2006, 16:33
|- - xemul   Цитата(GetSmart @ Nov 14 2006, 18:18) Нас...   Nov 14 2006, 17:41
- - GetSmart   Инициализируете нужное прерывание по фронту (или с...   Nov 14 2006, 16:16
- - GetSmart   Цитата(xemul)ЦитатаThe external interrupts are tri...   Nov 14 2006, 18:54
|- - _Bill   Цитата(GetSmart @ Nov 14 2006, 21:54) Цит...   Nov 15 2006, 07:10
|- - IgorKossak   Цитата(GetSmart @ Nov 14 2006, 20:54) Цит...   Nov 15 2006, 07:36
- - Diusha   «А жаль. Лучше бы софтовые прерывания вызывать мен...   Nov 15 2006, 04:23
- - GetSmart   Ну все тут прямо знатоки аглицкого как я погляжу. ...   Nov 15 2006, 09:25
- - Dog Pawlowa   Как по мне, то любая неочевидная логика работы уст...   Nov 15 2006, 11:27


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

 


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


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