0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 120
|
|
1 | |
Режим захвата12.01.2013, 23:33. Показов 7097. Ответов 16
Метки нет (Все метки)
Подскажите, пожалуйста, доступен ли модуль захвата при работе Таймера1 (атмега328р)?
Будет ли верхняя граница = OCR1x? Или таймер должен работать только в 4 или 12 режиме (СТС)?
0
|
12.01.2013, 23:33 | |
Ответы с готовыми решениями:
16
Режим захвата таймера таймер1 непонятный режим! (режим 8) stm32f4 режим захвата stm32f4 режим захвата |
oordvork
|
|
13.01.2013, 10:04 | 2 |
Сообщение от Momstir
Доступностью модуля? Раз есть, значит, доступен. Возможностью указания верхней границы с помощью 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_); } Как быть в этом случае?
0
|
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
|
|
14.01.2013, 02:38 | 7 |
Вы разрешили вложенные прерывания Выключилось питанием или сработал BOD Подошёл идиот - нажал кнопку RESIT После обработки прерывания и по выполнению одной команды основного цикла , проц снова уйдёт на обработку следующего прерывания - по приоритету.
0
|
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 120
|
|
14.01.2013, 02:54 | 8 |
Сообщение от YTYOUT
Если у меня НИГДЕ в коде не использована эта инструкция - прерывание более низкоприоритетного обработчика более высокоприоритетным невозможна до окончания кода обработчика и выхода из него? Ну затем в порядке приоритетов обрабатываем дальше очередь...
0
|
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
|
|
14.01.2013, 03:10 | 9 |
Т.к. вызов самой программы обработчика происходит не мгновенно , а имеет некоторую предпоследовательность , на которую мы тоже повлиять не можем никак. И зависит от модели проца. Не буду расписывать , сие не очень важно , если не делается очень точная по времени выполнения обработка прерывания.
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 | |
16.01.2013, 02:18 | |
Помогаю со студенческими работами здесь
17
STM32F051R8T6 - Режим захвата Режим захвата таймера Таймер счетчик, режим захвата Таймер режим захвата помогите разобраться Таймер в режиме захвата Таймер в режиме захвата Альтернативное имя захвата микроконтроллера Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |