|
IAR AVR4.30, Проблема с union |
|
|
|
Jun 18 2009, 04:07
|
Местный
  
Группа: Свой
Сообщений: 404
Регистрация: 3-12-04
Из: Новосибирск
Пользователь №: 1 304

|
Пишу загрузчик для AT90CAN128 и столкнулся с проблемой. Далее привожу часть кода, которая вызывает ошибку. __C_task main(void) { // обявил переменную sum union { unsigned char b[4]; unsigned int w[2]; unsigned long dw; }sum; unsigned long data32; sum.dw = (unsigned long)0x00011278; // далее посыдаю побайтно sum.b[0], sum.b[1],sum.b[2],sum.b[3] в CAN data32 = (unsigned long)0x00011278; // далее посыдаю побайтно (unsigned char)data32, (unsigned char)(data32>>8), // (unsigned char)(data32>>16),(unsigned char)(data32>>24) в CAN }
В результате вижу по CAN: 1-ая посылка: 0x78, 0x12, 0x12, 0x00 2-ая: 0x78, 0x12, 0x01, 0x00 В чем глюк понять не могу. Это клюк компилятора или я что-то не так делаю? Уровень оптимизации стоит максимальный по объему кода. P.S. Скомпилировал проект под IAR AVR 5.20 все работает нормально. Подтвердите, это глюк компилятора?
|
|
|
|
|
 |
Ответов
|
Jun 18 2009, 07:43
|

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

|
Цитата(plombir @ Jun 18 2009, 09:46)  Потом, все сдвиги заменил макросами. Можно об этом подробнее? KSN: показывайте листинги.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jun 18 2009, 14:30
|
Частый гость
 
Группа: Участник
Сообщений: 99
Регистрация: 14-12-05
Пользователь №: 12 191

|
Цитата(Сергей Борщ @ Jun 18 2009, 11:43)  Можно об этом подробнее? Во глюканул, но это я хорошо разделил  Делить нужно, соответственно, на 256, 65536, 16777216
|
|
|
|
Сообщений в этой теме
KSN IAR AVR4.30 Jun 18 2009, 04:07 Sanya_kv А в чем глук? у тебя все правильно работает.
А где... Jun 18 2009, 06:06 KSN 1. Глюк в том, что получаю 0x78,0x12,0x12,0x00 ВМЕ... Jun 18 2009, 06:21 Sanya_kv Цитата// далее посыдаю побайтно sum.b[0], sum.b[1]... Jun 18 2009, 06:31 MrYuran ЦитатаP.S. Скомпилировал проект под IAR AVR 5.20 в... Jun 18 2009, 06:31 KSN Прилагаю файлы iar430a.7z и iar520.7z
В первом лис... Jun 18 2009, 09:15 Сергей Борщ Цитата(KSN @ Jun 18 2009, 12:15) Прилагаю... Jun 18 2009, 10:54 KSN TX_SET8 это макрос, вот его код
#define TX_SET8(a... Jun 19 2009, 03:02 Сергей Борщ Цитата(KSN @ Jun 19 2009, 06:02) TX_SET8 ... Jun 19 2009, 08:48 KSN Я правильно понял, это то что Вы просили?
Jun 19 2009, 10:22 Сергей Борщ Цитата(KSN @ Jun 19 2009, 13:22) Я правил... Jun 19 2009, 10:41
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|