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

 
 
> Прерывания
Allregia
сообщение Sep 8 2009, 04:36
Сообщение #1


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

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Если я правильно понял, приоритет прерываний в МСП фиксированный и поменять его нельзя.
У меня в программе используются несколько прерываний - от вотчдога, дух таймеров, УАРТов и АЦП.
Но (!) - прерывание от одного из таймеров должно быть самым приоритетным, остальные не важно, подождут.
Правильно ли будет для этого в процедуре обработки прерывания этого таймера запретить глобально прерывания вообще, а при выходе разрешить? Или в этом есть "подводные камни" ?

т.е.:
Код
#pragma vector=TIMERB0_VECTOR          
__interrupt void TIMERB0_interrupt(){
      __disable_interrupt();

     .........  тут остальной код обработчика прерывания

     __enable_interrupt();
}
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Allregia
сообщение Sep 9 2009, 06:46
Сообщение #2


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

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Еще небольшой вопрос: я привык (по работе с другими МК), все глобальные переменные, используемые в прерывании, всегда обьявлять volatile.
Но IAR не дает обявить "volatile bool".
Или здесь это не нужно ?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 9 2009, 07:00
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Allregia @ Sep 9 2009, 08:46) *
переменные, используемые в прерывании, всегда обьявлять volatile.

Все огульно? Глупость явная sad.gif
Цитата
Но IAR не дает обявить "volatile bool".

bool это вообще отдельная песня и на большинстве платформ (не имеющих битово-адресуемой памяти)никакой пользы окромя вреда от bool нет.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Allregia
сообщение Sep 9 2009, 14:37
Сообщение #4


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

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Цитата(zltigo @ Sep 9 2009, 10:00) *
Все огульно? Глупость явная sad.gif


Если переменная, используется и в прерывании и в программе, то если она не volatile, то при ее использовании в программе могут быть (и часто бывают) глюки.

bool volaltile тоже не работает. Но чуть поразмыслив, я подумал что для битовых это и не нужно.

Цитата
bool это вообще отдельная песня и на большинстве платформ (не имеющих битово-адресуемой памяти)никакой пользы окромя вреда от bool нет.


Мы кажется, говорим здесь об одной, конкретной платформе.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 9 2009, 15:42
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Allregia @ Sep 9 2009, 16:37) *
...в программе могут быть (и часто бывают) глюки.

Вот, ключевое слово "глюки", его употребляют именно тогда, когда не ведают, что творят и вместо этого стучат в бубен и уповают на волшебные слова типа volatile:
Цитата
переменные, используемые в прерывании, всегда обьявлять volatile.

Ну ненужно ВСЕГДА нужно только тогда, когда действительно нужно. Не нужно, когда переменная используется исключительно в обработчике прерывания. Не поможет (а то и помешает) и тогда, когда хоть некая переменная декларирована как volatile к ней несколько раз обращаются за пределами прерывания - волшебное изменение по ходу развития алгоритма тоже не подарок - тут volatile давить и прикрываться, например, критическими секциями.
Цитата
Мы кажется, говорим здесь об одной, конкретной платформе.

Да, ну и как у MSP430 c битовоадресуемой памятью? Зачем ему bool?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Allregia   Прерывания   Sep 8 2009, 04:36
- - MrYuran   Если я чего-то не путаю, вложенные прерывания по у...   Sep 8 2009, 04:48
- - Allregia   Да, я не совсем правильно выразился. Интересует им...   Sep 8 2009, 04:52
- - VAI   А при обработке прерываний глобальные прерывания и...   Sep 8 2009, 05:06
- - Allregia   Всем спасибо.   Sep 8 2009, 06:42
|- - MrYuran   Цитата(Allregia @ Sep 9 2009, 10:46) IAR ...   Sep 9 2009, 06:56
||- - Dog Pawlowa   Цитата(MrYuran @ Sep 9 2009, 09:56) А boo...   Sep 9 2009, 07:36
||- - MrYuran   Цитата(Dog Pawlowa @ Sep 9 2009, 11:36) В...   Sep 9 2009, 07:45
|- - Allregia   Цитата(zltigo @ Sep 9 2009, 18:42) Вот, к...   Sep 9 2009, 15:57
|- - zltigo   Цитата(Allregia @ Sep 9 2009, 17:57) то т...   Sep 9 2009, 16:05
||- - Allregia   Цитата(zltigo @ Sep 9 2009, 19:05) Будет ...   Sep 9 2009, 19:11
||- - zltigo   Цитата(Allregia @ Sep 9 2009, 21:11) Я та...   Sep 9 2009, 19:59
||- - Dog Pawlowa   Цитата(Allregia @ Sep 9 2009, 22:11) Это ...   Sep 9 2009, 20:29
||- - Allregia   Цитата(Dog Pawlowa @ Sep 9 2009, 23:29) Э...   Sep 9 2009, 21:07
||- - zltigo   Цитата(Allregia @ Sep 9 2009, 23:07) О то...   Sep 10 2009, 06:25
||- - Dog Pawlowa   Цитата(Allregia @ Sep 10 2009, 00:07) Это...   Sep 10 2009, 07:28
|- - rezident   Цитата(Allregia @ Sep 9 2009, 21:57) Я в ...   Sep 9 2009, 16:55
- - VAI   Я флаги так делаю: Описываю Кодenum on_off { ...   Sep 10 2009, 06:43
- - Allregia   Кстати о препроцессоре, хотя это немного не в тему...   Sep 12 2009, 10:24
|- - zltigo   Цитата(Allregia @ Sep 12 2009, 12:24) Мож...   Sep 12 2009, 10:30
- - Allregia   Можно использовать и как именнованные: #define P...   Sep 12 2009, 13:44
|- - zltigo   Цитата(Allregia @ Sep 12 2009, 15:44) А т...   Sep 12 2009, 14:04
|- - Allregia   Цитата(zltigo @ Sep 12 2009, 17:04) Тольк...   Sep 12 2009, 15:03
|- - zltigo   Цитата(Allregia @ Sep 12 2009, 17:03) Во ...   Sep 12 2009, 15:19
- - Allregia   Согласен, с тем макросом должно быть просто BIN8(1...   Sep 12 2009, 15:33
- - AHTOXA   Всё больше утверждаюсь во мнении, что High Tech (д...   Sep 12 2009, 15:37


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 04:55
Рейтинг@Mail.ru


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