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

 
 
> Странная проблема при оптимизации
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
Ответов
E.V.G.
сообщение Sep 28 2018, 10:50
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 31-01-10
Из: Арзамас
Пользователь №: 55 175



Либо mot_num становится отрицательным из-за (RxMessage.ExtId & 0xFF) < BASE_MOTOR_ID, либо opcode не соответствует перечню команд в switch.
Копайте в этом направлении.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Sep 28 2018, 11:12
Сообщение #3


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

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



Цитата(E.V.G. @ Sep 28 2018, 16:50) *
Либо mot_num становится отрицательным из-за (RxMessage.ExtId & 0xFF) < BASE_MOTOR_ID, либо opcode не соответствует перечню команд в switch.
Копайте в этом направлении.


так в любом случае return ack; ack - oн всегда будет определен.

Цитата(Сергей Борщ @ Sep 28 2018, 17:04) *
Теперь покажите объявление can_params. Ее член message_received меняется в прерываниии?


я заменил флаг can_params.message_received на volatile uint32_t can_message_received; и он устанавливается в прерывании
Код
void USB_LP_CAN1_RX0_IRQHandler(void)
{
  can_params.fifo_num = CAN_FIFO0;
  
  can_message_received = 1;

  CAN_Receive(CAN1, CAN_FIFO0, &RxMessage);
}


ради эксперемента сделал /*master_ack = */ CAN_RX_Master(); и в начале функции опроса жестко поставил master_ack = 1; - все равно заходит в else.

О! Только после того как определил static volatile uint32_t master_ack; - все стало на свои места. отдельно static или отдельно volatile не работает.

Сообщение отредактировал Jenya7 - Sep 28 2018, 11:43
Go to the top of the page
 
+Quote Post
scifi
сообщение Sep 28 2018, 18:40
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Jenya7 @ Sep 28 2018, 14:12) *
О! Только после того как определил static volatile uint32_t master_ack; - все стало на свои места. отдельно static или отдельно volatile не работает.

Пляски с бубном. Отключите оптимизацию, Вы к ней явно не готовы.
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
- - Сергей Борщ   CAN_RX_Master() покажите. Предполагаю, что оптимиз...   Sep 28 2018, 10:05
|- - Jenya7   Цитата(Сергей Борщ @ Sep 28 2018, 16:05) ...   Sep 28 2018, 10:18
- - 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
|- - 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
- - Сергей Борщ   Теперь покажите объявление can_params. Ее член mes...   Sep 28 2018, 11:04


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

 


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


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