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

Вернуться   Форум Микро-Чип > Вопросы начинающих

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

Ответ
 
Опции темы Опции просмотра
Старый 11.05.2017, 08:16   #1
YarPv14
Junior Member
 
Регистрация: 05.08.2015
Возраст: 34
Сообщений: 22
Вес репутации: 206/9
YarPv14 has a spectacular aura aboutYarPv14 has a spectacular aura aboutYarPv14 has a spectacular aura about
По умолчанию volatile в структурах

Здравствуйте!

Есть сомнение по поводу следующего:

Код:
typedef volatile struct
{
    unsigned char  MyVar1;
    unsigned int   MyVar2;
} T_MY_STRUCT;

// это, как я понимаю, эквивалентно

typedef struct
{
    volatile unsigned char  MyVar1;
    volatile unsigned int   MyVar2;
} T_MY_STRUCT;
Нужно ли в объявлении переменной типа T_MY_STRUCT использовать квалификатор volatile?
Код:
T_MY_STRUCT MyStuct1;
// или
volatile T_MY_STRUCT MyStuct1;
?
YarPv14 вне форума   Ответить с цитированием
Старый 11.05.2017, 10:37   #2
Driver
Senior Member
 
Регистрация: 25.02.2007
Адрес: picping.lg.ua
Возраст: 50
Сообщений: 190
Вес репутации: 1073/49
Driver has much to be proud ofDriver has much to be proud ofDriver has much to be proud ofDriver has much to be proud ofDriver has much to be proud ofDriver has much to be proud ofDriver has much to be proud ofDriver has much to be proud of
Отправить сообщение для Driver с помощью ICQ Отправить сообщение для Driver с помощью Skype™
По умолчанию Re: volatile в структурах

Как я понимаю , квалификатор volatile говорит компилятору бережно обращаться с этой переменной, например если эта же переменная может использоваться в прерывании то в основной программе все действия с этой переменной будут производиться с реальным значением в озу, а без него часть действий может происходить в регистрах процессора, без обновления данных в озу. В результате данные могут быть некорректны при вызове прерывания одновременно с обработкой в основной программе. Особенно это актуально со включенной оптимизацией.
Так же указатель на переменную volatile тоже должен быть volatile.
Если поставить volatile на обычную переменную, которая нигде более не вызывается, то этот участок наверно не будет оптимизироваться и код будет поболее и помедленнее.
__________________
Все, что нельзя запрограммировать на ассемблере,приходится паять...
Driver на форуме   Ответить с цитированием
Старый 11.05.2017, 13:55   #3
YarPv14
Junior Member
 
Регистрация: 05.08.2015
Возраст: 34
Сообщений: 22
Вес репутации: 206/9
YarPv14 has a spectacular aura aboutYarPv14 has a spectacular aura aboutYarPv14 has a spectacular aura about
По умолчанию Re: volatile в структурах

Эх, не так я вопрос задал, извиняюсь...

У меня уже есть структура, в которой все поля должны быть с volatile.
Код:
typedef struct
{
    volatile unsigned char  MyVar1;
    volatile unsigned int   MyVar2;
} T_MY_STRUCT;
Вопрос в том, когда я объявляю переменную типа T_MY_STRUCT, нужно ли ещё в объявлении указывать volatile? По идее не нужно (даже нежелательно, т.к. в этом случае все поля структуры будут volatile, вне зависимости от того, как они прописаны в структуре).
YarPv14 вне форума   Ответить с цитированием
Старый 11.05.2017, 14:23   #4
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 30
Сообщений: 1,318
Вес репутации: 2634/57
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: volatile в структурах

YarPv14
нужно ли ещё в объявлении указывать volatile - нет.
besogon вне форума   Ответить с цитированием
Старый 22.05.2017, 07:54   #5
YarPv14
Junior Member
 
Регистрация: 05.08.2015
Возраст: 34
Сообщений: 22
Вес репутации: 206/9
YarPv14 has a spectacular aura aboutYarPv14 has a spectacular aura aboutYarPv14 has a spectacular aura about
По умолчанию Re: volatile в структурах

Всем спасибо!
YarPv14 вне форума   Ответить с цитированием
Ответ


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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
HI-TECH: переход с PIC18F4620 на PIC18F26K22 diman891 Инструментарий 6 06.11.2012 13:46
Правильное использование volatile maxNTF Продукция MICROCHIP 4 15.12.2011 18:22
Оптимизация програмного кода??? NeoKlin Общетехнические вопросы 76 26.11.2010 20:55
запись во flash pic24fj64ga004 inna Продукция MICROCHIP 14 09.11.2010 19:38
PIC+Сдвиговый регистр mx400 Вопросы начинающих 17 07.02.2009 13:04


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


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