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

 
 
> IAR AVR4.30, Проблема с union
KSN
сообщение Jun 18 2009, 04:07
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 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 все работает нормально. Подтвердите, это глюк компилятора?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
KSN
сообщение Jun 18 2009, 09:15
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 404
Регистрация: 3-12-04
Из: Новосибирск
Пользователь №: 1 304



Прилагаю файлы iar430a.7z и iar520.7z
В первом листинг, map, файл исходника с функцией main.c и *.xcl файл.
Во втором только листинг и map.Прикрепленный файл  Iar430a.7z ( 28.07 килобайт ) Кол-во скачиваний: 130
Прикрепленный файл  Iar520.7z ( 24.56 килобайт ) Кол-во скачиваний: 156

Прикрепленные файлы
Прикрепленный файл  Iar430a.7z ( 28.07 килобайт ) Кол-во скачиваний: 17
 
Go to the top of the page
 
+Quote Post



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

 


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


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