реклама на сайте
подробности

 
 
> Systick STM32 не вызывается прерывание
Vladimir Prokofi...
сообщение Oct 23 2013, 16:03
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 9-03-11
Пользователь №: 63 481



STM32F215, FreeRtos
На одной из плат перестает вызываться прерывание SysTick. При этом на большинстве плат все ок.
Если смотреть регистры, то SysTickSR:
Enable = 1
TickInt = 1
CLKSOURCE = 1
COUNTFLAG = 1
программа идет по самой приоритетной задаче постоянно, прерывание не вызывается, хотя регистр счетчика постоянно меняется и перескакивает через ноль.
Перестают прерывания сыпаться каждый раз на разном значении обработанных прерывания ( тиков операц. системы ) сейчас например отладчик показывает xTickCount = 4050, перед этим было 413.

Сообщение отредактировал Vladimir Prokofiev - Oct 23 2013, 16:04
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 10)
smk
сообщение Oct 23 2013, 17:26
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



А какой таймер использует ОС чтобы переключать задачи? Часом SysTick не зарезервирован как системный ресурс?


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
vlad_new
сообщение Oct 23 2013, 18:20
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 218
Регистрация: 24-06-10
Пользователь №: 58 127



Может где то глобальное прерывание запрещается. Есть реакция на другие прерывания ?
Go to the top of the page
 
+Quote Post
dac
сообщение Oct 24 2013, 04:02
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 600
Регистрация: 27-05-05
Пользователь №: 5 482



QUOTE (Vladimir Prokofiev @ Oct 23 2013, 22:03) *
STM32F215, FreeRtos

а ОС часом не отключает где-нибудь глобальные прерывания?
сталкивался на TNKernel
Go to the top of the page
 
+Quote Post
etoja
сообщение Oct 30 2013, 07:49
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 121
Регистрация: 14-01-05
Из: Москва
Пользователь №: 1 952



Пропаяйте выводи земли и питания.
Go to the top of the page
 
+Quote Post
Vladimir Prokofi...
сообщение Feb 10 2014, 11:00
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 9-03-11
Пользователь №: 63 481



Так и не решилась проблемаsm.gif
Да, Systick переключает задачи. Не вызывется => Задачи не переключаются, что и видно.. Сейчас попробую поймать и посмотреть на другие прерывания..
Go to the top of the page
 
+Quote Post
Thorn
сообщение Feb 10 2014, 14:03
Сообщение #7





Группа: Участник
Сообщений: 7
Регистрация: 5-10-12
Пользователь №: 73 825



Проверьте значения в регистрах PRIMASK, FAULTMASK, BASEPRI.
Go to the top of the page
 
+Quote Post
Vladimir Prokofi...
сообщение Mar 26 2014, 08:38
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 9-03-11
Пользователь №: 63 481



Цитата(Thorn @ Feb 10 2014, 18:03) *
Проверьте значения в регистрах PRIMASK, FAULTMASK, BASEPRI.


PRIMASK=0
FAULTMASK=0
BASEPRI=0xB0

Прерывания другие вызываются, с одного ком-порта на другой данные как шли так и идут.

Ну да вот и ответ sm.gif Спасибо всем. Вобщем, при сбое по i2c, я забыл разрешить прерывания. А весь блок от выставления старта до стопа убран был в критическую секцию. Если происходил сбой то я выходил из функции забыв покнуть критическую секцию

Сообщение отредактировал Vladimir Prokofiev - Mar 26 2014, 09:59
Go to the top of the page
 
+Quote Post
ViKo
сообщение Mar 26 2014, 08:45
Сообщение #9


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Есть понятие "инверсия приоритетов". Возможно, у вас оно случилось.
А до SysTick есть еще с 8 разных прерываний, которые могут перекрыть SysTick.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Mar 26 2014, 09:10
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(ViKo @ Mar 26 2014, 12:45) *
Есть понятие "инверсия приоритетов".

Понятие из другой оперы вроде...
Цитата(ViKo @ Mar 26 2014, 12:45) *
А до SysTick есть еще с 8 разных прерываний, которые могут перекрыть SysTick.

Почему только 8? Периферийные прерывания тоже могут перекрыть SysTick_Handler.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Mar 26 2014, 09:30
Сообщение #11


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(_Артём_ @ Mar 26 2014, 12:10) *
Понятие из другой оперы вроде...

Из области RTOS. Думаю, проблема в ней.
Цитата
Почему только 8? Периферийные прерывания тоже могут перекрыть SysTick_Handler.

Если приоритеты прерываний изменить, то можно. А если не трогать, то как я написал. rolleyes.gif
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 06:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01448 секунд с 7
ELECTRONIX ©2004-2016