Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Микроконтроллеры других производителей

Микроконтроллеры других производителей Все, что касается микроконтроллеров и НЕ подошло в раздел Microchip.

Ответ
 
Опции темы Опции просмотра
Старый 26.08.2020, 19:47   #1
Pasha_Bi
Senior Member
 
Регистрация: 24.07.2009
Адрес: г. Иваново
Возраст: 46
Сообщений: 328
Вес репутации: 640/50
Pasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to all
По умолчанию STM32F4 почему то не работает барьер __ISB();

У меня в прерывании минимум кода:
Код:
TIM8->SR&=~TIM_SR_UIF;
TIM1->EGR=TIM_EGR_TRG;
В прерывание стал попадать дважды. Механизм понятен, поставил инструкцию __ISB(); перед выходом из прерывания и ничего не изменилось. Если несколько инструкций добавить, двойного попадания в прерывание не происходит. Я был уверен, что __ISB(); гарантированно исправит ситуацию. Я значит что то не понимаю?
Pasha_Bi вне форума   Ответить с цитированием
Старый 26.08.2020, 20:14   #2
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 1,921
Вес репутации: 923/57
SergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to behold
По умолчанию Re: STM32F4 почему то не работает барьер __ISB();

Цитата:
Сообщение от Pasha_Bi Посмотреть сообщение
У меня в прерывании минимум кода:
Код:
TIM8->SR&=~TIM_SR_UIF;
TIM1->EGR=TIM_EGR_TRG;
В прерывание стал попадать дважды. Механизм понятен,
хм.. дык если понятно, то нужно поправить, чтобы дважды не влетать...
SergP01 вне форума   Ответить с цитированием
Старый 26.08.2020, 20:18   #3
Pasha_Bi
Senior Member
 
Регистрация: 24.07.2009
Адрес: г. Иваново
Возраст: 46
Сообщений: 328
Вес репутации: 640/50
Pasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to all
По умолчанию Re: STM32F4 почему то не работает барьер __ISB();

"Дык" вставил я эту инструкцию и не изменилось ничего.
Pasha_Bi вне форума   Ответить с цитированием
Старый 26.08.2020, 20:32   #4
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 1,921
Вес репутации: 923/57
SergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to behold
По умолчанию Re: STM32F4 почему то не работает барьер __ISB();

Цитата:
Сообщение от Pasha_Bi Посмотреть сообщение
"Дык" вставил я эту инструкцию и не изменилось ничего.
я не про то...
если понятно- почему влетаешь... надо поправить
SergP01 вне форума   Ответить с цитированием
Старый 26.08.2020, 21:15   #5
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 33
Сообщений: 2,455
Вес репутации: 4677/100
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: STM32F4 почему то не работает барьер __ISB();

Pasha_Bi
https://www.keil.com/support/docs/3928.htm
если коротко - запишите что-нибудь безвредное в эту периферию.
besogon вне форума   Ответить с цитированием
Старый 26.08.2020, 21:17   #6
Pasha_Bi
Senior Member
 
Регистрация: 24.07.2009
Адрес: г. Иваново
Возраст: 46
Сообщений: 328
Вес репутации: 640/50
Pasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to all
По умолчанию Re: STM32F4 почему то не работает барьер __ISB();

Спасибо. Завтра попробую. Отпишусь.
Pasha_Bi вне форума   Ответить с цитированием
Старый 27.08.2020, 06:18   #7
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 1,921
Вес репутации: 923/57
SergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to behold
По умолчанию Re: STM32F4 почему то не работает барьер __ISB();

всё равно не понятно...
если яне по делу в прерывание попадаю, то нужно проге руки выкрутить, чтобы правильно работала.
SergP01 вне форума   Ответить с цитированием
Старый 27.08.2020, 08:24   #8
Pasha_Bi
Senior Member
 
Регистрация: 24.07.2009
Адрес: г. Иваново
Возраст: 46
Сообщений: 328
Вес репутации: 640/50
Pasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to all
По умолчанию Re: STM32F4 почему то не работает барьер __ISB();

"Прога" то тут не при чем. Это особенности архитектуры. Уважаемый Besogon очень хорошую ссылочку дал, спасибо ему большое. Почему то плюсик не получается поставить.
Pasha_Bi вне форума   Ответить с цитированием
Старый 27.08.2020, 08:33   #9
Pasha_Bi
Senior Member
 
Регистрация: 24.07.2009
Адрес: г. Иваново
Возраст: 46
Сообщений: 328
Вес репутации: 640/50
Pasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to all
По умолчанию Re: STM32F4 почему то не работает барьер __ISB();

Код:
// Переменная для предотвращения двойного попадания в прерывание.
// https://www.keil.com/support/docs/3928.htm
static volatile unsigned char Nu;
...
Nu++;
Все работает, еще раз спасибо Besogon-у!
Pasha_Bi вне форума   Ответить с цитированием
Старый 27.08.2020, 08:35   #10
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 1,921
Вес репутации: 923/57
SergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to behold
По умолчанию Re: STM32F4 почему то не работает барьер __ISB();

я с подобной фишкой на ADSP сталкивался... там NOP помогал...
это то что с конвейером связано....
SergP01 вне форума   Ответить с цитированием
Старый 27.08.2020, 08:59   #11
Pasha_Bi
Senior Member
 
Регистрация: 24.07.2009
Адрес: г. Иваново
Возраст: 46
Сообщений: 328
Вес репутации: 640/50
Pasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to allPasha_Bi is a name known to all
По умолчанию Re: STM32F4 почему то не работает барьер __ISB();

Я про эту особенность архитектуры давно знал. Но я был уверен, что инструкция __ISB() все решит. Оказалось что нет.
Pasha_Bi вне форума   Ответить с цитированием
Старый 29.08.2020, 19:38   #12
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: Московская область
Возраст: 61
Сообщений: 3,336
Вес репутации: 4234/123
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: STM32F4 почему то не работает барьер __ISB();

Цитата:
Сообщение от Pasha_Bi Посмотреть сообщение
У меня в прерывании минимум кода:
Код:
TIM8->SR&=~TIM_SR_UIF;
TIM1->EGR=TIM_EGR_TRG;
Следовало бы добавить if перед сбросом флага. Хотя бы для общего случая. Заодно и код станет длиннее...
Марк вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чем/как отлаживать код написаный на Си в WinAVR Yokel Микроконтроллеры других производителей 49 30.09.2014 09:48
Питание pic18f25k80 ( не работает от 5В ) taraserker Продукция MICROCHIP 23 27.06.2014 16:56
SIM900 не работает с симкой мегафона Sergey Cетевые протоколы и технологии 3 31.01.2013 20:42
Присоветуйте тип и способ управления MOSFETом "верхнего" плеча dr_Sash Источники питания и силовая электроника 37 08.09.2012 18:50
Почему не неправильно работает прерывание TMR0(+) neptun23 Продукция MICROCHIP 17 04.12.2007 17:19


Часовой пояс GMT +3, время: 11:13.


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