Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.53/30: Рейтинг темы: голосов - 30, средняя оценка - 4.53
Momstir
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 120
1

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

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

Подскажите, пожалуйста, доступен ли модуль захвата при работе Таймера1 (атмега328р)?
Будет ли верхняя граница = OCR1x?
Или таймер должен работать только в 4 или 12 режиме (СТС)?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2013, 23:33
Ответы с готовыми решениями:

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

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

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

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

PIC24FJ64. Режим сна
а подскажите как отправить pic24 в сон по изменению уровня сигнала CN а потом...

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

Возможно, в этой комбинации из трех вопросов скрыт более глубокий смысл. В таком случае случае мои поздравления ТС: по крайней мере я увяз далеко на подступах к разгадке. Но не все еще потеряно - экстрасенсы обязательно подтянутся.
0
Momstir
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
Momstir
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 120
13.01.2013, 11:05 5
В качестве ТОР меня более чем устраивает 0xFFFF либо OCRnx. :)
0
Momstir
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
YTYOUT
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
14.01.2013, 02:38 7
Может ли в процессе вызова/выполнения обработчика произойти запрос на обработку захвата.
Как только проц начинает выполнение обработки запроса на прерывание, он тут же "гасит" флаг I в SREG. C этого момента ничто и никак не сможет повлиять на выполнение обработки прерывания , кроме случаев:
Вы разрешили вложенные прерывания
Выключилось питанием или сработал BOD
Подошёл идиот - нажал кнопку RESIT
После обработки прерывания и по выполнению одной команды основного цикла , проц снова уйдёт на обработку следующего прерывания - по приоритету.
0
Momstir
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 120
14.01.2013, 02:54 8
Цитата Сообщение от YTYOUT
Вы разрешили вложенные прерывания
Для этого надо в начале прерывания (или не в начале) вызвать sei(); ?
Если у меня НИГДЕ в коде не использована эта инструкция - прерывание более низкоприоритетного обработчика более высокоприоритетным невозможна до окончания кода обработчика и выхода из него? Ну затем в порядке приоритетов обрабатываем дальше очередь...
0
YTYOUT
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
14.01.2013, 03:10 9
Для этого надо в начале прерывания (или не в начале) вызвать sei(); ?
В начале ОБРАБОТЧИКА прерывания или где угодно внутри него.
Т.к. вызов самой программы обработчика происходит не мгновенно , а имеет некоторую предпоследовательность , на которую мы тоже повлиять не можем никак. И зависит от модели проца.
Не буду расписывать , сие не очень важно , если не делается очень точная по времени выполнения обработка прерывания.
Если у меня НИГДЕ в коде не использована эта инструкция - прерывание более низкоприоритетного обработчика более высокоприоритетным невозможна до окончания кода обработчика и выхода из него? Ну затем в порядке приоритетов обрабатываем дальше очередь...
Ага
0
Momstir
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 120
14.01.2013, 13:32 10
Благодарю, использование капчи дало заметно более точный расчет скорости одного из колес (в МК один 16-битный таймер с капчей):

Использование атмеги 640/1280/2560 решит задачу и с остальными 3 колесами (там 4 нужных таймера).
0
Momstir
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
YTYOUT
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
15.01.2013, 20:50 12
Вернуть плату . Купить монтажку , необходимые комплект. на сэкономленные деньги - пива
0
Momstir
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 120
15.01.2013, 22:27 13
Цитата Сообщение от YTYOUT
Вернуть плату . Купить монтажку , необходимые комплект. на сэкономленные деньги - пива
Спасибо за совет.
Но все хочется знать как можно принудительно вызвать прерывание.
П.С. Запись в бит порта ICPx значения (зависит куда он притянут) инициирует событие для прерывания.
0
YTYOUT
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
15.01.2013, 22:42 14
У меня нет DS Мега2560 , посмотрите возможна установка необходимых Вам флагов программо, если да , то проблем нет
0
Momstir
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 120
16.01.2013, 00:56 15
Форсированный вызов прерываний возможен только для "сравнения".
Других флагов принудилова нет. :(
0
YTYOUT
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
16.01.2013, 01:42 16
Судя по схеме на Вашу плату на ней не распаян только ICP3 . Уж придумайте куда его пихнуть проводком
0
Momstir
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 120
16.01.2013, 02:18 17
И ICP1 (PD4, 46 нога) тоже...
Думаю завтра напаяюсь на них.
0
16.01.2013, 02:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.01.2013, 02:18

PIC18F4550. Режим sleep
Нужна программа с использованием режимов(sleep, idle) в микроконтроллере...

АЦП режим с усилением
Подскажите пожалуйста, никто не пользовался режимом АЦП с усилением. Насколько...

Матрица и режим сна ?
К мк подключена матрица как здесь, за одним исключением: сканирующий порт...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru