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

 
 
> Странная проблема при оптимизации
Jenya7
сообщение Sep 28 2018, 09:29
Сообщение #1


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

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Есть такой код
Код
uint32_t master_ack;  //global
master_ack = CAN_RX_Master();      
if (master_ack == 1)
{
      //пришел сюда если optimization = Low
}
else //no response
{    //пришел сюда если optimization = High
}
master_ack равен 1. при optimization = High я попадаю в else. при optimization = Low я попадаю в if.
Все? Сливаем IAR?

Сообщение отредактировал Jenya7 - Sep 28 2018, 09:31
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Sep 28 2018, 10:05
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



CAN_RX_Master() покажите. Предполагаю, что оптимизатор видит ее тело, находит в нем только один возможный результат и выкидывает все условие.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Sep 28 2018, 10:18
Сообщение #3


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

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(Сергей Борщ @ Sep 28 2018, 16:05) *
CAN_RX_Master() покажите. Предполагаю, что оптимизатор видит ее тело, находит в нем только один возможный результат и выкидывает все условие.


CODE
uint32_t CAN_RX_Master(void){
uint32_t mot_num;
uint32_t opcode;
uint32_t pos;
uint32_t ack = 0;

if (can_params.message_received)
{
can_params.message_received = 0;

mot_num = (RxMessage.ExtId & 0xFF) - BASE_MOTOR_ID;
if (mot_num > MAX_MOTORS)
return 0;

opcode = (RxMessage.ExtId >> 8) & 0xFF;

switch (opcode)
{
case CAN_COM_GET_ALL :

motor_rt_params[mot_num].current = ((RxMessage.Data[1]<<8) | RxMessage.Data[0]);
motor_rt_params[mot_num].speed = ((RxMessage.Data[3]<<8) | RxMessage.Data[2]);
motor_rt_params[mot_num].position = ((RxMessage.Data[5]<<8) | RxMessage.Data[4]);
ack = 1;
break;

case CAN_COM_I_AM :
motor_rt_params[mot_num].ena = 1;
motor_rt_params[mot_num].mot_id = BASE_MOTOR_ID + mot_num;
ack = 1;
break;

case CAN_COM_IGET :
motor_rt_params[mot_num].current = ( RxMessage.Data[1]<<8) | RxMessage.Data[0]);
pos = CAN_IGET_POS;
ack = 1;
break;

case CAN_COM_PGET :
motor_rt_params[mot_num].position = (( RxMessage.Data[1]<<8) | RxMessage.Data[0]);
pos = CAN_PGET_POS;
ack = 1;
break;

case CAN_COM_VGET :
motor_rt_params[mot_num].speed = (( RxMessage.Data[1]<<8) | RxMessage.Data[0]);
pos = CAN_VGET_POS;
ack = 1;
break;
}

if (ack)
motor_rt_params[mot_num].rx_flags |= (1<<pos);

return ack;
}
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Jenya7   Странная проблема при оптимизации   Sep 28 2018, 09:29
- - scifi   Грабли обычно одни и те же: volatile и гонки. Цит...   Sep 28 2018, 09:50
|- - Jenya7   Цитата(scifi @ Sep 28 2018, 15:50) Грабли...   Sep 28 2018, 09:55
|- - scifi   Цитата(Jenya7 @ Sep 28 2018, 12:55) volat...   Sep 28 2018, 10:08
- - scifi   Процитирую себя: Цитата(scifi @ Sep 28 2018, ...   Sep 28 2018, 10:24
|- - Jenya7   Цитата(scifi @ Sep 28 2018, 16:24) Процит...   Sep 28 2018, 10:27
|- - scifi   Цитата(Jenya7 @ Sep 28 2018, 13:27) у мен...   Sep 28 2018, 10:28
|- - Jenya7   Цитата(scifi @ Sep 28 2018, 16:28) Да не ...   Sep 28 2018, 10:40
|- - VladislavS   Цитата(Jenya7 @ Sep 28 2018, 13:40) объяв...   Sep 28 2018, 10:42
|- - scifi   Цитата(Jenya7 @ Sep 28 2018, 13:40) объяв...   Sep 28 2018, 10:43
- - E.V.G.   Либо mot_num становится отрицательным из-за (RxMes...   Sep 28 2018, 10:50
|- - Jenya7   Цитата(E.V.G. @ Sep 28 2018, 16:50) Либо ...   Sep 28 2018, 11:12
|- - scifi   Цитата(Jenya7 @ Sep 28 2018, 14:12) в нач...   Sep 28 2018, 11:27
||- - Jenya7   Цитата(scifi @ Sep 28 2018, 17:27) Кстати...   Sep 28 2018, 12:58
|||- - scifi   Цитата(Jenya7 @ Sep 28 2018, 15:58) да но...   Sep 28 2018, 13:06
||- - kolobok0   Цитата(scifi @ Sep 28 2018, 14:27) Кстати...   Sep 28 2018, 16:26
|- - scifi   Цитата(Jenya7 @ Sep 28 2018, 14:12) О...   Sep 28 2018, 18:40
- - Сергей Борщ   Теперь покажите объявление can_params. Ее член mes...   Sep 28 2018, 11:04


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

 


RSS Текстовая версия Сейчас: 11th August 2025 - 13:24
Рейтинг@Mail.ru


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