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

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

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

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

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

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


 
Опции темы
Непрочитано 30.07.2013, 10:23  
nahimovv
Заблокирован
 
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
nahimovv на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Ну так и проверьте/обработайте сначала оба события, а потом уже гасите пендинги перед выходом из прерывания.
И гасите их как
EXTI-›PR = 1‹‹PinSet2;
Реклама:
nahimovv вне форума  
Непрочитано 30.07.2013, 14:59  
TAutomatic
Временная регистрация
 
Регистрация: 18.07.2012
Сообщений: 73
Сказал спасибо: 4
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
TAutomatic на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от nahimovv Посмотреть сообщение
Ну так и проверьте/обработайте сначала оба события, а потом уже гасите пендинги перед выходом из прерывания.
И гасите их как
EXTI-›PR = 1‹‹PinSet2;
Как вывернуться, я смогу придумать. Но выворачиваться стоит, когда что-то работает неправильно. Вопрос - а работает точно неправильно? И что именно: мой код или ошибка контроллера? Я сомневаюсь, что это ошибка контроллера, но и мой код настолько маленький, где тут можно ошибку допустить. Все же вопрос остается открытым - там же битовое управление флагами источников прерываний, как может очистка одного флага очищать и другой.
TAutomatic вне форума  
Непрочитано 30.07.2013, 16:40  
_Артём_
Гражданин KAZUS.RU
 
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
_Артём_ на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от TAutomatic Посмотреть сообщение
Добрый день, коллеги.
Есть опасность потерять необработанное прерывание. В еррате ничего про это не сказано, ни с чем подобным ранее не сталкивался. Прошу подсказки.
Еррата тут не причём. Строкой
Код:
EXTI-›PR |= 1‹‹PinSet1;
вы сбрасываете флаги остальных сработавших входов, как и написано в мануале.
Лучше так:
Код:
void EXTI9_5_IRQHandler(void)
{ 
  
uint32_t int_flags=EXTI-›PR;
EXTI-›PR=int_flags;

if (int_flags & (1‹‹PinSet1))
  {
   .................
   ChangeModeStatus = 1;
  }		

if (int_flags & (1‹‹PinSet2))		  	
  {
   ..................
   ChangeModeStatus = 1;
   }
}
P.S.Ещё и работать будет быстрее.
_Артём_ вне форума  
Непрочитано 30.07.2013, 20:53  
TAutomatic
Временная регистрация
 
Регистрация: 18.07.2012
Сообщений: 73
Сказал спасибо: 4
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
TAutomatic на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от _Артём_ Посмотреть сообщение
Код:
void EXTI9_5_IRQHandler(void)
{ 
  
uint32_t int_flags=EXTI-›PR;
EXTI-›PR=int_flags;

if (int_flags & (1‹‹PinSet1))
  {
   .................
   ChangeModeStatus = 1;
  }		

if (int_flags & (1‹‹PinSet2))		  	
  {
   ..................
   ChangeModeStatus = 1;
   }
}
P.S.Ещё и работать будет быстрее.
Код нормальный, возражение нет - спасибо.
Но я все равно не нашел, как Вы пишите, в мануале, что сброс бита конкретной линии сбрасывает флаги остальных линий.
Я пользуюсь документом Doc ID 16188 Rev 4
Написано на стр 138:
[HTML]
PRx: Pending bit
0: No trigger request occurred
1: selected trigger request occurred
This bit is set when the selected edge event arrives on the external interrupt line. This bit is
cleared by writing a 1 into the bit or by changing the sensitivity of the edge detector.
[/HTML]
Речь идет об установке или сбросе конкретного бита. Всю жизнь думал, что я могу правильно читать тексты на английском....
Тем не менее, за подсказку еще раз спасибо.
TAutomatic вне форума  
Непрочитано 30.07.2013, 21:05  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от TAutomatic Посмотреть сообщение
не нашел, как Вы пишите, в мануале, что сброс бита конкретной линии сбрасывает флаги остальных линий
Не сброс, а установка, и не всех остальных, а одной единственной, о чем и написали выше.
Возьмите блокнот и карандаш и проверьте по шагам, что происходит при выполнении оператора типа:
Код:
EXTI-›PR |= 1‹‹PinSet1;
Сразу всё и всплывёт.
__________________
There's always more than one way to skin a cat.

Последний раз редактировалось tempora; 30.07.2013 в 21:10.
tempora вне форума  
Непрочитано 30.07.2013, 21:42  
TAutomatic
Временная регистрация
 
Регистрация: 18.07.2012
Сообщений: 73
Сказал спасибо: 4
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
TAutomatic на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от tempora Посмотреть сообщение
Не сброс, а установка, и не всех остальных, а одной единственной, о чем и написали выше.
Возьмите блокнот и карандаш и проверьте по шагам, что происходит при выполнении оператора типа:
Код:
EXTI-›PR |= 1‹‹PinSet1;
Сразу всё и всплывёт.
Я не совсем понимаю, что Вы мне посоветовали? Мне нужен сброс бита, коллега _Артём_ тоже пишет о сбросе флагов, в мануале написано -
This bit is cleared, Вы пишите об установке. Чего? Что вы имели ввиду?
TAutomatic вне форума  
Непрочитано 30.07.2013, 21:50  
nahimovv
Заблокирован
 
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
nahimovv на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Открываем референс, находим Pending register (EXTI_PR).
В полях битов написано rc_w1. Запускаем поиск по даташиту и находим:

1.1 List of abbreviations for registers

read/clear (rc_w1) Software can read as well as clear this bit by writing 1. Writing ‘0’ has
no effect on the bit value.
Вуаля!
nahimovv вне форума  
Непрочитано 30.07.2013, 22:03  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от nahimovv Посмотреть сообщение
Вуаля!
Ещё нет, у него есть и другая проблема.
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Непрочитано 31.07.2013, 03:21  
_Артём_
Гражданин KAZUS.RU
 
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
_Артём_ на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от TAutomatic Посмотреть сообщение
Мне нужен сброс бита, коллега _Артём_ тоже пишет о сбросе флагов, в мануале написано -
Дело в том, что
Цитата:
PRx: Pending bit
....
This bit is cleared by writing a 1 into the bit
Такой код
Код:
EXTI-›PR |= 1‹‹PinSet1;
считывает содержимое EXTI-›PR, делает операцию OR с числом (1‹‹PinSet1) и пишет результат в EXTI-›PR (чтение-модификация-запись). В результате сбрасываются не только бит с номером PinSet1, но и остальные биты не равные 0 (так как они - is cleared by writing a 1 - сбрасываются записью 1 ).
Такой код:
Код:
EXTI-›PR = 1‹‹PinSet1;
сбрасывает только бит с номером PinSet1, так как запись 0 не может сбросить бит в регистре EXTI-›PR, если он равен 1.
_Артём_ вне форума  
Сказали "Спасибо" _Артём_
TAutomatic (31.07.2013)
Непрочитано 31.07.2013, 08:43  
TAutomatic
Временная регистрация
 
Регистрация: 18.07.2012
Сообщений: 73
Сказал спасибо: 4
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
TAutomatic на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от _Артём_ Посмотреть сообщение
Такой код:
Код:
EXTI-›PR = 1‹‹PinSet1;
сбрасывает только бит с номером PinSet1, так как запись 0 не может сбросить бит в регистре EXTI-›PR, если он равен 1.
Да, действительно, бегло прочитал и не увидел эту разницу. Это правильно. Спасибо.
TAutomatic вне форума  
 

Закладки
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Школа АRMрестлинга Uragan90 Микроконтроллеры, АЦП, память и т.д 54 22.08.2011 16:13
ARM Cortex M3 + Linux SiMiLya Микроконтроллеры, АЦП, память и т.д 10 17.06.2011 17:20
Помогите с STM32 - очень нужно... yakuzaa Микроконтроллеры, АЦП, память и т.д 60 04.08.2010 11:04
Как добавить поддержку для STM32 SFHK Микроконтроллеры, АЦП, память и т.д 11 18.12.2009 18:09


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


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