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

 
 
 
Reply to this topicStart new topic
> операция сдвига на 28 разрядов для 16-ти разрядного МК, вопрос
addi
сообщение Aug 1 2013, 05:25
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 679
Регистрация: 9-08-06
Пользователь №: 19 422



Здравствуйте, вопрос по тому как лучше написать на Си

Есть MSP430, 16 бит.
Работает с внешней микросхемой по SPI, 8 бит.
У внешней микросхемы все регистры 32 бита.
Значения 32 битных регистров разбиты по 1,2,3,4, итд битам, поэтому удобный доступ можно осуществлить с помощью дефайнов, например

#include <msp430f149.h>
#include "functions.h"

// reg0

#define ANZ_FIRE_0 0x0<<28
#define ANZ_FIRE_1 0x1<<28
#define ANZ_FIRE_2 0x2<<28

Но проблема в том что сдвиг на количество разраядов большее 15 вызывает логичное предупреждение компилятора.
В связи с этим прошу подсказать как можно обойти эту проблему, например будет ли решение через объединение 4 uchar в ulong единственно правильным.

Заранее благодарен

Сообщение отредактировал addi - Aug 1 2013, 05:26
Go to the top of the page
 
+Quote Post
Rst7
сообщение Aug 1 2013, 06:33
Сообщение #2


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Напишите #define ANZ_FIRE_1 0x1UL<<28


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
addi
сообщение Aug 1 2013, 07:04
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 679
Регистрация: 9-08-06
Пользователь №: 19 422



Цитата(Rst7 @ Aug 1 2013, 10:33) *
Напишите #define ANZ_FIRE_1 0x1UL<<28

Спасибо большое за поддержку!

"0x1UL" - не совсем понятное приведение типов, пожалуйста поясните по возможности.

Заранее благодарен
Go to the top of the page
 
+Quote Post
Rst7
сообщение Aug 1 2013, 07:08
Сообщение #4


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Ну int же на Вашем процессоре 16 бит. Так что для такого большого сдвига надо переходить на long.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 20:04
Рейтинг@Mail.ru


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