Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/35: Рейтинг темы: голосов - 35, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 120
1

Режим захвата

12.01.2013, 23:33. Показов 7097. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите, пожалуйста, доступен ли модуль захвата при работе Таймера1 (атмега328р)?
Будет ли верхняя граница = OCR1x?
Или таймер должен работать только в 4 или 12 режиме (СТС)?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.01.2013, 23:33
Ответы с готовыми решениями:

Режим захвата таймера
Здравствуйте, уважаемые форумчане! Прошу вашей помощи разобратся с режимом таймера по захвату (от...

таймер1 непонятный режим! (режим 8)
Этот код реализует сигнал длительностью по уровням 170 и 100 микросекунд (примерно) //...

stm32f4 режим захвата
Включил режим захвата таймера. Частоту ставил на 16MHz, хочу измерить период и частоту сигнала, но...

stm32f4 режим захвата
Привет всем, хочу определить частоту и период сигнала от другой ножки микроконтроллера через режим...

16
oordvork
13.01.2013, 10:04 2
Цитата Сообщение от Momstir
Подскажите, пожалуйста, доступен ли модуль захвата при работе Таймера1 (атмега328р)?
Будет ли верхняя граница = OCR1x?
Или таймер должен работать только в 4 или 12 режиме (СТС)?
Из поставленных вопросов непонятно, чем же конкретно озабочен топикстартер?
Доступностью модуля? Раз есть, значит, доступен.
Возможностью указания верхней границы с помощью OCR1x? Разрешено, по крайней мере, отчасти (режимы 4,9,11,15).
Возможностью работы в каком-либо ином режиме кроме 4 или 12? Да сколько угодно - хоть в первом, хоть в пятнадцатом.

Возможно, в этой комбинации из трех вопросов скрыт более глубокий смысл. В таком случае случае мои поздравления ТС: по крайней мере я увяз далеко на подступах к разгадке. Но не все еще потеряно - экстрасенсы обязательно подтянутся.
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 120
13.01.2013, 10:38 3
Простого 0 (нормального) режима достаточно. Но нужен аппаратный копир момента события на ICP1 в ICR1.
0
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 3,097
13.01.2013, 10:46 4
Input Capture работает во всех режимах таймера, кроме тех где ICR1 используется как TOP.
0
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 120
13.01.2013, 11:05 5
В качестве ТОР меня более чем устраивает 0xFFFF либо OCRnx. :)
0
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 120
14.01.2013, 00:53 6
Всё заработало. Но попутно возник вопрос...
Может ли в процессе вызова/выполнения обработчика (момент входа в оный до инкремента переполнений):
Код
ISR(TIMER1_OVF_vect)
{
++Timer1_OverFlow_Counter;
}
...произойти запрос на обработку захвата (захват имеет больший приоритет, чем переполнение счетчика):
Код
ISR(TIMER1_CAPT_vect)
{
uint32_t ICR1_temp;
ICR1_temp=ICR1;
AL_Timing_=AL_Timing;
AL_Timing=(uint32_t)(((uint32_t)Timer1_OverFlow_Counter<<(uint32_t)15)+((uint32_t)ICR1_temp>>(uint32_t)1));
AL_Interval=(AL_Timing-AL_Timing_);
}
...что повлечет некорректный расчет AL_Timing?
Как быть в этом случае?
0
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
14.01.2013, 02:38 7
Может ли в процессе вызова/выполнения обработчика произойти запрос на обработку захвата.
Как только проц начинает выполнение обработки запроса на прерывание, он тут же "гасит" флаг I в SREG. C этого момента ничто и никак не сможет повлиять на выполнение обработки прерывания , кроме случаев:
Вы разрешили вложенные прерывания
Выключилось питанием или сработал BOD
Подошёл идиот - нажал кнопку RESIT
После обработки прерывания и по выполнению одной команды основного цикла , проц снова уйдёт на обработку следующего прерывания - по приоритету.
0
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 120
14.01.2013, 02:54 8
Цитата Сообщение от YTYOUT
Вы разрешили вложенные прерывания
Для этого надо в начале прерывания (или не в начале) вызвать sei(); ?
Если у меня НИГДЕ в коде не использована эта инструкция - прерывание более низкоприоритетного обработчика более высокоприоритетным невозможна до окончания кода обработчика и выхода из него? Ну затем в порядке приоритетов обрабатываем дальше очередь...
0
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
14.01.2013, 03:10 9
Для этого надо в начале прерывания (или не в начале) вызвать sei(); ?
В начале ОБРАБОТЧИКА прерывания или где угодно внутри него.
Т.к. вызов самой программы обработчика происходит не мгновенно , а имеет некоторую предпоследовательность , на которую мы тоже повлиять не можем никак. И зависит от модели проца.
Не буду расписывать , сие не очень важно , если не делается очень точная по времени выполнения обработка прерывания.
Если у меня НИГДЕ в коде не использована эта инструкция - прерывание более низкоприоритетного обработчика более высокоприоритетным невозможна до окончания кода обработчика и выхода из него? Ну затем в порядке приоритетов обрабатываем дальше очередь...
Ага
0
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 120
14.01.2013, 13:32 10
Благодарю, использование капчи дало заметно более точный расчет скорости одного из колес (в МК один 16-битный таймер с капчей):

Использование атмеги 640/1280/2560 решит задачу и с остальными 3 колесами (там 4 нужных таймера).
0
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 120
15.01.2013, 16:03 11
Для получения желаемых 4 таймеров с капчами вчера купил Ардуин Мега2560.
Но радость была недолгой, т.к. ноги ICP1/ICP3 оказались нераспаянными на плате.
Довольствоваться при отладке 2 вместо требуемых 4 волшебных ног нет желания и возник вопрос как решить сие недоразумение:
1) напаяться на нераспаянные 2 ноги и вывести колодкой на 2 пина то, чего не хватает;
2) собрать без пайки, а события (вызвавшие прерывания) с ног ICP1/ICP3 "обманным образом" (софтово) пустить из обработчиков INT0/INT1 поднятием флагов прерываний (TIFR1|=(1<<ICF1)) либо записью в соотв-е порты на соотв-е ноги логических единиц (которые или тут же, или в обработчиках капчей сбрасывать руками).
Как быть, посоветуйте плиз выход. Оч не хочется ничего паять на Ардуине (релиз девайса разумеется будет уже с разведенными как надо ногами и софтовые заглушки будут убраны).
0
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
15.01.2013, 20:50 12
Вернуть плату . Купить монтажку , необходимые комплект. на сэкономленные деньги - пива
0
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 120
15.01.2013, 22:27 13
Цитата Сообщение от YTYOUT
Вернуть плату . Купить монтажку , необходимые комплект. на сэкономленные деньги - пива
Спасибо за совет.
Но все хочется знать как можно принудительно вызвать прерывание.
П.С. Запись в бит порта ICPx значения (зависит куда он притянут) инициирует событие для прерывания.
0
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
15.01.2013, 22:42 14
У меня нет DS Мега2560 , посмотрите возможна установка необходимых Вам флагов программо, если да , то проблем нет
0
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 120
16.01.2013, 00:56 15
Форсированный вызов прерываний возможен только для "сравнения".
Других флагов принудилова нет. :(
0
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
16.01.2013, 01:42 16
Судя по схеме на Вашу плату на ней не распаян только ICP3 . Уж придумайте куда его пихнуть проводком
0
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 120
16.01.2013, 02:18 17
И ICP1 (PD4, 46 нога) тоже...
Думаю завтра напаяюсь на них.
0
16.01.2013, 02:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.01.2013, 02:18
Помогаю со студенческими работами здесь

STM32F051R8T6 - Режим захвата
Ранее была реализована процедуры обработки посылки по &quot;воздуху&quot; от датчика, при помощи базового...

Режим захвата таймера
Здравствуйте, начал изучать библиотеку CMSIS, нахожусь в самом начале пути, так что не судите...

Таймер счетчик, режим захвата
Здравствуйте, помогите решить задачку. Настраиваю таймер 3 на захват микросекунд, работает отлично....

Таймер режим захвата помогите разобраться
Здравствуйте! В общем хоть подать шим сигнал на вход МК, но если честно не могу понять как...

Таймер в режиме захвата
Доброго времени суток! Написал программу для захвата сигнала для stm32f103. Измеряю ширину...

Таймер в режиме захвата
Пытаюсь запустить таймер в режиме захвата. Так как железа нету пока пользуюсь протеусом/иаром для...

Альтернативное имя захвата микроконтроллера
Готовлюсь к экзаменам и не могу найти ответ на данный вопрос: Выбрать альтернативное имя входа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru