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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Счетчик на 2313, счетчик импульсов
vik0
сообщение Nov 27 2008, 08:57
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 381
Регистрация: 27-07-08
Из: теплые края
Пользователь №: 39 233



Цитата(mempfis_ @ Nov 27 2008, 10:50) *
В одних случаях код вообще не меняется,

А вы оптимизацию включите smile.gif
Цитата
а в других появляются сообщения типа:
Warning[Pa082]: undefined behavior: the order of volatile accesses is undefined in this statement
когда пытаюсь передать volatile глобальную переменную как параметр функции.

Кусок кода привели бы...
Цитата
Почему компилятор считает что эта глобальная переменная "в соответствии с volatile-доступом неопределена в этом выражении"?

Нет. "порядок доступа к volatile переменным не определен в данном выражении"
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Nov 27 2008, 10:28
Сообщение #17


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

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Цитата
А вы оптимизацию включите

Подобное предупреждение выскакивает при любых уровнях оптимизации

Цитата
Кусок кода привели бы...


Полный код привести не могу (он очень большой)
Работает он приблизительно так как приведено ниже (только проверок внутри State1, State2 больше):

Код
#define time1 10
#define time2 20
unsigned int timer;

#define state1 0
#define state2 1

//прерывание от ТС1 по совпадению с автосбросом
#pragma vector=TIMER1_COMPA_vect
__interrupt void TIMER1_COMPA_IRQ(void)
{
  //сканирование кнопки
  Button_Scun();
}

void GoToState1(unsigned int t)
{
SaveLog(t);
timer = 0;
state = state1;
}

void GoToState2(unsigned int t)
{
SaveLog(t);
timer = 0;
state = state2;
}

void State1(void)
{
timer++;
if(timer > time1) GoToState2(timer);
}

void State2(void)
{
timer++;
if(timer > time2) GoToState1(timer);
}

void main(void)
{
state = state1;
timer=0;

for(;;)
{
__watchdog_reset();
__enable_interrupt();
__sleep();

switch(state)
{
case state_1: State1();
break;

case state_2: State2();
break;
}

}

}



Цитата
Нет. "порядок доступа к volatile переменным не определен в данном выражении"

Сорри быстро и невнимательно прочитал smile.gif
Go to the top of the page
 
+Quote Post
Aesthete Animus
сообщение Nov 27 2008, 17:35
Сообщение #18


Местный
***

Группа: Свой
Сообщений: 222
Регистрация: 9-06-07
Пользователь №: 28 317



Цитата(mempfis_ @ Nov 27 2008, 13:28) *
Подобное предупреждение выскакивает при любых уровнях оптимизации
Полный код привести не могу (он очень большой)
Работает он приблизительно так как приведено ниже (только проверок внутри State1, State2 больше)

Извините, но из того куска кода, что Вы показали, я (видимо не я один) не понял, как он должен работать и уж тем более что в нем не работает. Тем более не ясно, как это вообще связано с volatile.
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Nov 28 2008, 08:32
Сообщение #19


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

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Цитата(Aesthete Animus @ Nov 27 2008, 21:35) *
Извините, но из того куска кода, что Вы показали, я (видимо не я один) не понял, как он должен работать и уж тем более что в нем не работает. Тем более не ясно, как это вообще связано с volatile.

Изначально я просто поинтересовался в чём суть volatile и вы и vik0 всё доступно разъяснилиsmile.gif Код у меня рабочий но привести его не могу из-за размеров (ну ещё из-за того что это коммерческий проект smile.gif). В моём коде используется много глобальных переменных (без volatile). Некоторые из них спокойно переносят присваивание им квалификатора volatile, а для некоторых появляется ошибка приведённая выше (а именно у тех которые передаются как параметры в функции). Но в любом случае hex-файл прошивки получается один в один что с volatile что без smile.gif
Спасибо всем ответившим на мой вопрос.
Думаю стоит помоч топикстартеру с реализацией его идеи.
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Nov 28 2008, 08:32
Сообщение #20


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

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



""

Сообщение отредактировал mempfis_ - Nov 28 2008, 08:36
Go to the top of the page
 
+Quote Post

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

 


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


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