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

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

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

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

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

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


 
Опции темы
Непрочитано 16.02.2016, 06:36  
Alex_golubev
Прописка
 
Регистрация: 07.02.2016
Сообщений: 139
Сказал спасибо: 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
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
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
Сообщений: 139
Сказал спасибо: 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
Сообщений: 139
Сказал спасибо: 4
Сказали Спасибо 1 раз в 1 сообщении
Alex_golubev на пути к лучшему
По умолчанию Re: Прерывания таймера tim3 stm32f429--disco

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

Таймер и есть опора. Значение таймера все время меняется. Вот его и используйте. Зачем по прерыванию таймера поднимать флаг в прерывании, если в основном цикле можно просто сравнивать значения?
Easyrider83 вне форума  
Непрочитано 16.02.2016, 11:50  
Alex_golubev
Прописка
 
Регистрация: 07.02.2016
Сообщений: 139
Сказал спасибо: 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
Сообщений: 139
Сказал спасибо: 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
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
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, время: 03:34.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot