Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту


 
Опции темы

Прерывания таймера tim3 stm32f429--disco

Непрочитано 16.02.2016, 06:36  
Alex_golubev
Прописка
 
Регистрация: 07.02.2016
Сообщений: 136
Сказал спасибо: 4
Сказали Спасибо 1 раз в 1 сообщении
Alex_golubev на пути к лучшему
По умолчанию Прерывания таймера tim3 stm32f429--disco

Здравствуйте.
Столкнулся с проблемой разного времени выхода на вектор прерывания. В cube установил высокий приоритет HAL_NVIC_SetPriority(TIM3_IRQn, 0, 0); у всех остальных HAL_NVIC_SetPriority(x, 0, 1);
Вот код void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){
counter_time ++;
switch (counter_time)
{
case 1:
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_RESET);
break;

case 2: HAL_GPIO_WritePin(GPIOE, GPIO_PIN_2, GPIO_PIN_SET); flag_1 = 1; break;

case 3: HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, GPIO_PIN_SET); break;

case 4: HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, GPIO_PIN_RESET); counter_time =0;break;

}
}

void MX_TIM3_Init(void)
{

TIM_ClockConfigTypeDef sClockSourceConfig;
TIM_MasterConfigTypeDef sMasterConfig;

htim3.Instance = TIM3;
htim3.Init.Prescaler = 83;
htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
htim3.Init.Period = 20;
htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
HAL_TIM_Base_Init(&htim3);

sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig);

sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig);

}


Смотрел осциллографом GPIO_PIN_3 stm32f429. Все болтается (разное время между импульсами. Разница составляет 2,5 мкс ) такое ощущение что что-то выполняет какие то операции и не дает сразу перейти на вектор но что не понятно. Подскажите что делать ?
Реклама:
Alex_golubev вне форума  
Непрочитано 16.02.2016, 09:15  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Прерывания таймера tim3 stm32f429--disco

http://infocenter.arm.com/help/topic...4_r0p0_trm.pdf
Цитата:
3.9.1 Exception handling
The processor implements advanced exception and interrupt handling, as described in the
ARMv7-M Architecture Reference Manual.
To reduce interrupt latency, the processor implements both interrupt late-arrival and interrupt
tail-chaining mechanisms, as defined by the ARMv7-M architecture:
• There is a maximum of a 12 cycle latency from asserting the interrupt to execution of the
first instruction of the ISR when the memory being accessed has no wait states being
applied. The first instruction to be executed is fetched in parallel to the stack push.
• Returns from interrupts similarly take twelve cycles where the instruction being returned
to is fetched in parallel to the stack pop.
• Tail chaining requires 6 cycles when using zero wait state memory. No stack pushes or
pops are performed and only the instruction for the next ISR is fetched.
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 16.02.2016, 10:37  
Alex_golubev
Прописка
 
Регистрация: 07.02.2016
Сообщений: 136
Сказал спасибо: 4
Сказали Спасибо 1 раз в 1 сообщении
Alex_golubev на пути к лучшему
По умолчанию Re: Прерывания таймера tim3 stm32f429--disco

Я сейчас возможно задам глупый вопрос. Но как мне это исправить?
Alex_golubev вне форума  
Непрочитано 16.02.2016, 11:19  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: Прерывания таймера tim3 stm32f429--disco

А никак, в обшем случае! И дело тут не в АРМ. На более простых ПИК и АВР это тоже проблема. Логичнее будет не юзать прерывания для текущей задачи, юзать только хардварные фишки таймера и железа, или юзать под прелоад таймера, но это уже по задаче.
STM32F0 вне форума  
Непрочитано 16.02.2016, 11:32  
Alex_golubev
Прописка
 
Регистрация: 07.02.2016
Сообщений: 136
Сказал спасибо: 4
Сказали Спасибо 1 раз в 1 сообщении
Alex_golubev на пути к лучшему
По умолчанию Re: Прерывания таймера tim3 stm32f429--disco

И не как не нельзя сделать программную опору временную ?
Alex_golubev вне форума  
Непрочитано 16.02.2016, 11:39  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Прерывания таймера tim3 stm32f429--disco

Таймер и есть опора. Значение таймера все время меняется. Вот его и используйте. Зачем по прерыванию таймера поднимать флаг в прерывании, если в основном цикле можно просто сравнивать значения?
Easyrider83 вне форума  
Непрочитано 16.02.2016, 11:50  
Alex_golubev
Прописка
 
Регистрация: 07.02.2016
Сообщений: 136
Сказал спасибо: 4
Сказали Спасибо 1 раз в 1 сообщении
Alex_golubev на пути к лучшему
По умолчанию Re: Прерывания таймера tim3 stm32f429--disco

Я это понимаю, хотел сначала так сделать но посчитал, что на прерываниях будет лучше сейчас понимаю что нет. Или что-то делаю с прерываниями не так.
Alex_golubev вне форума  
Непрочитано 16.02.2016, 12:13  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: Прерывания таймера tim3 stm32f429--disco

Сообщение от Alex_golubev Посмотреть сообщение
И не как не нельзя сделать программную опору временную ?
Да можно, как угодно можно. Вопрос в точности, а в большинстве случаев она и не нужна.
Сообщение от Alex_golubev Посмотреть сообщение
хотел сначала так сделать но посчитал, что на прерываниях будет лучше сейчас понимаю что нет.
Хуже , лучше, зависит от задачи.
Сообщение от Alex_golubev Посмотреть сообщение
Или что-то делаю с прерываниями не так.
В данном случае явно что-то не так, сильно большой разлёт. Но для большинства задач это даже и незаметно.
STM32F0 вне форума  
Непрочитано 16.02.2016, 12:21  
Alex_golubev
Прописка
 
Регистрация: 07.02.2016
Сообщений: 136
Сказал спасибо: 4
Сказали Спасибо 1 раз в 1 сообщении
Alex_golubev на пути к лучшему
По умолчанию Re: Прерывания таймера tim3 stm32f429--disco

dosikus пишите про 12 циклов задержки. Это точно не 2,5 мкс. Кроме контролера nvic нужно еще что-то настраивать ?
Alex_golubev вне форума  
Непрочитано 16.02.2016, 12:26  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Прерывания таймера tim3 stm32f429--disco

Пробуйте без HAL и SPL, все настраивается и работает на ура.
__________________
Осторожно , злой кот
dosikus вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AT89C5131 прием и передача данных по USB rihkov AVR 14 15.11.2012 08:16
PIC16 TMR0 и TMR2 Slava-martyn Микроконтроллеры, АЦП, память и т.д 10 06.12.2011 01:58
Прерывания таймера radistor Микроконтроллеры, АЦП, память и т.д 7 01.12.2010 12:29
Обработка прерывания таймера T0 ATtiny2313 DimanVIP Микроконтроллеры, АЦП, память и т.д 10 03.06.2010 11:54
Вход в прерывания для PIC микроконтроллеров dimmich Микроконтроллеры, АЦП, память и т.д 4 06.12.2009 17:17


Часовой пояс GMT +4, время: 05:26.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.