jenya7 0 2 ноября, 2018 Опубликовано 2 ноября, 2018 · Жалоба кусок кода if (ack == 1) { value = (RxMessage.Data[1] << 8) | RxMessage.Data[0]; Parser_SendInt(COM_USART, value, 1, 0); break; } Если ставлю точку останова на value = (RxMessage.Data[1] << 8) | RxMessage.Data[0]; - получаю правильное значение на выходе. Без точки останова - получаю 0. И не важно value локальная или глобальная переменная. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 2 ноября, 2018 Опубликовано 2 ноября, 2018 · Жалоба А если на Parser_SendInt поставить, что получится? P.S. Думаю, IAR ни при чем, как обычно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 2 ноября, 2018 Опубликовано 2 ноября, 2018 · Жалоба 2 minutes ago, aaarrr said: А если на Parser_SendInt поставить, что получится? P.S. Думаю, IAR ни при чем, как обычно. если на Parser_SendInt поставить - тоже 0. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 2 ноября, 2018 Опубликовано 2 ноября, 2018 · Жалоба Тогда следующий вопрос: как связаны ack и заполнение полей RxMessage? А то очень похоже, что последние заполняются где-нибудь в прерывании уже после того, как был взведен ack. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 2 ноября, 2018 Опубликовано 2 ноября, 2018 (изменено) · Жалоба 5 minutes ago, aaarrr said: Тогда следующий вопрос: как связаны ack и заполнение полей RxMessage? А то очень похоже, что последние заполняются где-нибудь в прерывании уже после того, как был взведен ack. если вставить задержку то все в порядке if (ack == 1) { for (i = 0; i < 10000; i++) ; value = (RxMessage.Data[1] << 8) | RxMessage.Data[0]; Parser_SendInt(COM_USART, value, 1, 0); break; } данные я получаю по КАН. но это не многопоточное приложение. если бы в одном потоке я получал КАН а вдругом запрашивал данные тогда я бы понял. но ack = 1 когда данные уже приняты. Изменено 2 ноября, 2018 пользователем jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 2 ноября, 2018 Опубликовано 2 ноября, 2018 · Жалоба 4 minutes ago, jenya7 said: но ack = 1 когда данные уже приняты. Поведение под отладчиком и с задержкой не наводит на мысль, что это все же не так? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 2 ноября, 2018 Опубликовано 2 ноября, 2018 · Жалоба 5 minutes ago, aaarrr said: Поведение под отладчиком и с задержкой не наводит на мысль, что это все же не так? ох. наводит. еще как наводит. надо как то синхронизироваться с данными. тем не менее IAR все равно меня часто растраивает в последнее время. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Integro 0 2 ноября, 2018 Опубликовано 2 ноября, 2018 · Жалоба 1 hour ago, jenya7 said: IAR все равно меня часто растраивает в последнее время. :) Тогда меняйте, чего мучаться?) Quote Тебе не нравятся кошки!? Ты просто не умеешь их готовить! По делу, похоже на то что флаг выставляется по приему первого байта а при присвоени значения переменной value, второй байт(R xMessage.Data[1]) еще не был принят Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 2 ноября, 2018 Опубликовано 2 ноября, 2018 · Жалоба 5 minutes ago, Integro said: Тогда меняйте, чего мучатся?) я продублировал проект в Атолик. вот сижу размышляю. 7 minutes ago, Integro said: По делу, похоже на то что флаг выставляется по приему первого байта а при присвоени значения переменной value, второй байт(R xMessage.Data[1]) еще не был принят да. КАН не спеша заполняет мэйлбокс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 2 ноября, 2018 Опубликовано 2 ноября, 2018 · Жалоба 15 минут назад, Integro сказал: Тогда меняйте, чего мучатся?) После этого изменятся только топики тем, с "IAR опять глючит", на "XXX опять глючит" ;))) Тут ведь дело не в бобине.... ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 2 ноября, 2018 Опубликовано 2 ноября, 2018 · Жалоба 2 minutes ago, jcxz said: После этого изменятся только топики тем, с "IAR опять глючит", на "XXX опять глючит" ;))) Тут ведь дело не в бобине.... ;) Не уверен. На Атолик нареканий не было. Все работало чики пуки Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 2 ноября, 2018 Опубликовано 2 ноября, 2018 · Жалоба Покажите объявление RxMessage. Подозреваю, что volatile там нет, что и позволяет компилятору отложить запись из регистров в память на момент после записи единицы в ack. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 4 ноября, 2018 Опубликовано 4 ноября, 2018 (изменено) · Жалоба On 11/2/2018 at 4:17 PM, Сергей Борщ said: Покажите объявление RxMessage. Подозреваю, что volatile там нет, что и позволяет компилятору отложить запись из регистров в память на момент после записи единицы в ack. volatile не помог. интересно что флаг ack устанавливается уже после void USB_LP_CAN1_RX0_IRQHandler(void) { can_message_received = 1; CAN_Receive(CAN1, CAN_FIFO0, &RxMessage); } то есть данные уже приняты по идее. ack = 1 только если can_message_received = 1 Изменено 4 ноября, 2018 пользователем jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 29 4 ноября, 2018 Опубликовано 4 ноября, 2018 · Жалоба В 02.11.2018 в 16:21, jenya7 сказал: Не уверен. На Атолик нареканий не было. Все работало чики пуки Есть некоторый опыт переноса с IAR на GCC. Так вот, смею доложить, IAR многое прощает при оптимизации по сравнению с GCC. При использовании -О3 и -Оs не всё с ходу заводится. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 4 ноября, 2018 Опубликовано 4 ноября, 2018 · Жалоба 17 minutes ago, VladislavS said: Есть некоторый опыт переноса с IAR на GCC. Так вот, смею доложить, IAR многое прощает при оптимизации по сравнению с GCC. При использовании -О3 и -Оs не всё с ходу заводится. или! уж я столкнулся с этой проблемой! правда многие товарищи тут пытаются меня убедить что это мои кривые руки. они то кривые но от компайлера за 5 кусков зеленых ждешь чего то большего. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться