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

 
 
> Обычная переменная для ISR и volatile для всех остальных, как лучше реализовать?
sonycman
сообщение Jan 24 2009, 15:32
Сообщение #1


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Что-то вот задумался над одной мелочью, в принципе.
Есть переменная таймера, которая объявлена как volatile, так как модифицируется в обработчике прерывания.

Всё бы хорошо, да только хотелось бы, чтобы эта переменная была volatile для всех, кроме самого обработчика прерываний, так как лишние сохранения/загрузки в нём - это совершенно лишнее. smile.gif

Есть мысля сделать так:
Код
union {
dword isr_timer;
volatile dword timer;
}

и в ISR юзать isr_timer, а в других местах - просто timer.

Что скажете?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
kimstik
сообщение Jan 25 2009, 17:31
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 46
Регистрация: 4-02-05
Из: Москва
Пользователь №: 2 430



точно не помню sad.gif но нарывался уже на непонимание анонимного union, и вроде как даже не в одном месте. И это был С без плюсов.
zltigo: вам виднее,и спорить не хочется. мне лично две длинные переменные вместо одной короткой - лишняя сущность (по оккаму).
Тем не менее хочется отметить что вы везунчик - у вас есть выбор как минимум из 3х подходов реализации задачи smile.gif
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jan 25 2009, 18:48
Сообщение #3


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(kimstik @ Jan 25 2009, 21:31) *
точно не помню sad.gif но нарывался уже на непонимание анонимного union, и вроде как даже не в одном месте. И это был С без плюсов.

Но разве безымянные объединения не являются фичей исключительно C++?
Go to the top of the page
 
+Quote Post
singlskv
сообщение Jan 25 2009, 19:50
Сообщение #4


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(sonycman @ Jan 25 2009, 21:48) *
Но разве безымянные объединения не являются фичей исключительно C++?
Не только.
Насколько я ничего не помню, в С безымянные структуры могут быть,
но они должны обязательно включаться в конечном итоге в именованные структуры или объединения.
типа:
Код
struct
{
  union
  {
    int a;
    char c[2];
  };
  int b;
} w;

только с безымянными объединениями нужно в любом случае быть очень аккуратными...
Go to the top of the page
 
+Quote Post
singlskv
сообщение Jan 25 2009, 21:08
Сообщение #5


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



И раз уж зашла речь о безымянных обединениях и структурах, вот такой пример:
Код
volatile union
{
  struct
  {
    int a;
    union
    {
      int a;
      int b;
    };
  };
  int b;
  int c;
} t;

volatile int A, B, C;

int main()
{
  t.a = 1;
  t.b = 2;
  t.c = 3;

  A = t.a;
  B = t.b;
  C = t.c;

  return 0;
}
Чему будут равны A,B,C в конце main ?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 25 2009, 21:19
Сообщение #6


Гуру
******

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



Цитата(singlskv @ Jan 26 2009, 00:08) *
Чему будут ...

Для начала эта мусорная структура не должна откомпилироваться.


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

Сообщений в этой теме
- sonycman   Обычная переменная для ISR и volatile для всех остальных   Jan 24 2009, 15:32
- - kimstik   ISR сделай в отдельном файле и используй как dword...   Jan 24 2009, 16:43
|- - sonycman   Цитата(kimstik @ Jan 24 2009, 20:43) ISR ...   Jan 24 2009, 17:47
|- - ReAl   Цитата(sonycman @ Jan 24 2009, 19:47) А я...   Jan 24 2009, 20:39
- - Сергей Борщ   Цитата(sonycman @ Jan 24 2009, 17:32) Что...   Jan 24 2009, 18:33
|- - sonycman   Цитата(Сергей Борщ @ Jan 24 2009, 22:33) ...   Jan 24 2009, 19:51
- - singlskv   А я вот чего-то совсем не припоминаю из стандарта ...   Jan 24 2009, 18:55
|- - Сергей Борщ   Цитата(singlskv @ Jan 24 2009, 20:55) А я...   Jan 24 2009, 19:39
|- - singlskv   Цитата(Сергей Борщ @ Jan 24 2009, 22:39) ...   Jan 24 2009, 19:53
|- - sonycman   Цитата(singlskv @ Jan 24 2009, 23:53) Без...   Jan 24 2009, 19:55
- - zltigo   Цитата(sonycman @ Jan 24 2009, 18:32) Что...   Jan 24 2009, 19:04
- - sonycman   Хм, спасибо! Если будут проблемы с extern, то ...   Jan 24 2009, 22:12
- - kimstik   Я стараюсь union реже использовать - это одна из с...   Jan 25 2009, 11:43
|- - sonycman   Цитата(kimstik @ Jan 25 2009, 15:43) Я ст...   Jan 25 2009, 12:42
|- - zltigo   Цитата(kimstik @ Jan 25 2009, 14:43) Длин...   Jan 25 2009, 13:21
|- - 777777   А ты не пробовал объявлять ее вообще без volatile?...   Jan 26 2009, 07:51
|- - Сергей Борщ   Цитата(777777 @ Jan 26 2009, 09:51) А ты ...   Jan 26 2009, 08:20
||- - 777777   Цитата(Сергей Борщ @ Jan 26 2009, 11:20) ...   Jan 26 2009, 17:45
||- - sonycman   Цитата(777777 @ Jan 26 2009, 21:45) Но с ...   Jan 26 2009, 18:56
||- - Сергей Борщ   Цитата(777777 @ Jan 26 2009, 19:45) А так...   Jan 26 2009, 19:18
|- - sonycman   Цитата(777777 @ Jan 26 2009, 11:51) А ты ...   Jan 26 2009, 11:38
|- - _Pasha   Цитата(sonycman @ Jan 26 2009, 14:38) Код...   Jan 26 2009, 11:55
|- - Сергей Борщ   Цитата(_Pasha @ Jan 26 2009, 13:55) Порти...   Jan 26 2009, 13:24
|- - sonycman   Цитата(_Pasha @ Jan 26 2009, 15:55) Пусть...   Jan 26 2009, 14:02
|- - _Pasha   Цитата(sonycman @ Jan 26 2009, 18:02) Тог...   Jan 26 2009, 14:40
|- - Сергей Борщ   Цитата(_Pasha @ Jan 26 2009, 16:40) Согла...   Jan 26 2009, 15:20
|- - _Pasha   Цитата(Сергей Борщ @ Jan 26 2009, 18:20) ...   Jan 26 2009, 15:40
|- - singlskv   Цитата(zltigo @ Jan 26 2009, 00:19) Для н...   Jan 25 2009, 21:40
|- - zltigo   Цитата(singlskv @ Jan 26 2009, 00:40) тол...   Jan 25 2009, 21:51
|- - singlskv   Цитата(zltigo @ Jan 26 2009, 00:51) Что б...   Jan 25 2009, 22:10
|- - zltigo   Цитата(singlskv @ Jan 26 2009, 01:10) Vis...   Jan 25 2009, 22:33
|- - singlskv   Цитата(zltigo @ Jan 26 2009, 01:33) Ну фи...   Jan 25 2009, 22:39
|- - zltigo   Цитата(singlskv @ Jan 26 2009, 01:39) Стр...   Jan 25 2009, 22:42
- - kimstik   живодеры!! вот увидете - перестанет компил...   Jan 25 2009, 21:53


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

 


RSS Текстовая версия Сейчас: 25th July 2025 - 01:54
Рейтинг@Mail.ru


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